[nco] 01/04: New upstream version 4.6.9

Bas Couwenberg sebastic at debian.org
Tue Sep 19 06:04:21 UTC 2017


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

sebastic pushed a commit to branch master
in repository nco.

commit 72faae3a574ed1514ac0a8581d3d3c6d01043597
Author: Bas Couwenberg <sebastic at xs4all.nl>
Date:   Tue Sep 19 07:51:47 2017 +0200

    New upstream version 4.6.9
---
 .gitignore                                 |    5 +
 .travis.yml                                |    2 +-
 CMakeLists.txt                             |  827 ++++++++++++++---
 bld/Makefile                               |   34 +-
 bld/nco.spec                               |   11 +-
 bld/nco_dst.pl                             |   30 +-
 bm/NCO_rgr.pm                              | 1338 ++++++++++++++--------------
 bm/nco_bm.pl                               |    2 +-
 cmake/.gitignore                           |   22 +
 cmake/build.bat                            |   18 +
 cmake/clean.sh                             |    2 +
 cmake/cmake_uninstall.cmake.in             |   21 +
 config.h.in                                |    9 +
 configure                                  |   42 +-
 configure.ac                               |   10 +-
 configure.eg                               |   39 +-
 data/big.cdl                               |   20 +-
 data/in.cdl                                |    6 +-
 data/in_4.cdl                              |   53 +-
 data/in_grp.cdl                            |    6 +-
 data/ncclimo                               |  261 +++---
 data/ncclimo_tst.py                        |   19 +
 data/ncclimo_tst.slurm                     |   24 +
 data/ncremap                               |  209 +++--
 data/string.nco                            |    6 +-
 debian/changelog                           |    6 +
 doc/ANNOUNCE                               |  173 ++--
 doc/ChangeLog                              |  186 ++++
 doc/VERSION                                |    2 +-
 doc/debian.txt                             |  162 ++--
 doc/index.shtml                            |  151 ++--
 doc/nco.texi                               |  195 ++--
 qt/libnco/libnco.pro                       |  118 ---
 qt/libnco/libnco.vcxproj                   |  224 -----
 qt/libnco/libnco.vcxproj.filters           |  295 ------
 qt/libnco_c++/libnco_c++.pro               |   49 -
 qt/libnco_c++/libnco_c++.vcxproj           |  145 ---
 qt/libnco_c++/libnco_c++.vcxproj.filters   |   64 --
 qt/ncap2/ncap2.pro                         |   70 --
 qt/ncap2/ncap2.vcxproj                     |  186 ----
 qt/ncap2/ncap2.vcxproj.filters             |  127 ---
 qt/ncatted/ncatted.pro                     |   18 -
 qt/ncatted/ncatted.vcxproj                 |  151 ----
 qt/ncatted/ncatted.vcxproj.filters         |   18 -
 qt/ncbo/ncbo.pro                           |   17 -
 qt/ncbo/ncbo.vcxproj                       |  151 ----
 qt/ncbo/ncbo.vcxproj.filters               |   18 -
 qt/ncea/ncea.pro                           |   16 -
 qt/ncea/ncea.vcxproj                       |  151 ----
 qt/ncea/ncea.vcxproj.filters               |   18 -
 qt/ncecat/ncecat.pro                       |   18 -
 qt/ncecat/ncecat.vcxproj                   |  151 ----
 qt/ncecat/ncecat.vcxproj.filters           |   18 -
 qt/ncflint/ncflint.pro                     |   17 -
 qt/ncflint/ncflint.vcxproj                 |  151 ----
 qt/ncflint/ncflint.vcxproj.filters         |   18 -
 qt/ncks/ncks.pro                           |   16 -
 qt/ncks/ncks.vcxproj                       |  151 ----
 qt/ncks/ncks.vcxproj.filters               |   18 -
 qt/nco.pri                                 |   57 --
 qt/nco.pro                                 |   17 -
 qt/nco.sln                                 |  150 ----
 qt/ncpdq/ncpdq.pro                         |   17 -
 qt/ncpdq/ncpdq.vcxproj                     |  151 ----
 qt/ncpdq/ncpdq.vcxproj.filters             |   18 -
 qt/ncra/ncra.pro                           |   17 -
 qt/ncra/ncra.vcxproj                       |  151 ----
 qt/ncra/ncra.vcxproj.filters               |   18 -
 qt/ncrcat/ncrcat.pro                       |   16 -
 qt/ncrcat/ncrcat.vcxproj                   |  151 ----
 qt/ncrcat/ncrcat.vcxproj.filters           |   18 -
 qt/ncrename/ncrename.pro                   |   17 -
 qt/ncrename/ncrename.vcxproj               |  151 ----
 qt/ncrename/ncrename.vcxproj.filters       |   18 -
 qt/ncwa/ncwa.pro                           |   57 --
 qt/ncwa/ncwa.vcxproj                       |  151 ----
 qt/ncwa/ncwa.vcxproj.filters               |   18 -
 qt/tst_nco_c++/tst_nco_c++.pro             |   45 -
 qt/tst_nco_c++/tst_nco_c++.vcxproj         |  149 ----
 qt/tst_nco_c++/tst_nco_c++.vcxproj.filters |   18 -
 src/nco++/Makefile.old                     |   20 +-
 src/nco++/fmc_all_cls.cc                   |    9 +-
 src/nco++/fmc_gsl_cls.cc                   |    9 +-
 src/nco++/ncap2.cc                         |   29 +-
 src/nco++/ncoEnumTokenTypes.hpp            |    2 +-
 src/nco++/ncoLexer.cpp                     |    2 +-
 src/nco++/ncoLexer.hpp                     |    2 +-
 src/nco++/ncoParser.cpp                    |    2 +-
 src/nco++/ncoParser.hpp                    |    2 +-
 src/nco++/ncoParserTokenTypes.hpp          |    2 +-
 src/nco++/ncoTree.cpp                      |    2 +-
 src/nco++/ncoTree.hpp                      |    2 +-
 src/nco/mpncbo.c                           |   17 +-
 src/nco/mpncecat.c                         |   17 +-
 src/nco/mpncflint.c                        |   17 +-
 src/nco/mpncpdq.c                          |   17 +-
 src/nco/mpncra.c                           |   25 +-
 src/nco/mpncwa.c                           |   15 +-
 src/nco/ncap.c                             |   19 +-
 src/nco/ncbo.c                             |   17 +-
 src/nco/ncecat.c                           |   25 +-
 src/nco/ncflint.c                          |   18 +-
 src/nco/ncks.c                             |   88 +-
 src/nco/nco.h                              |   24 +-
 src/nco/nco_att_utl.c                      |   15 +-
 src/nco/nco_cln_utl.h                      |    6 -
 src/nco/nco_cnf_typ.c                      |   48 +
 src/nco/nco_cnf_typ.h                      |    8 +
 src/nco/nco_ctl.c                          |   45 +-
 src/nco/nco_fl_utl.c                       |   50 +-
 src/nco/nco_fl_utl.h                       |    6 +
 src/nco/nco_grp_trv.c                      |   77 +-
 src/nco/nco_grp_trv.h                      |   15 +-
 src/nco/nco_grp_utl.c                      |   90 +-
 src/nco/nco_grp_utl.h                      |    4 +
 src/nco/nco_md5.c                          |    3 +-
 src/nco/nco_msa.c                          |   16 +-
 src/nco/nco_netcdf.c                       |  176 +++-
 src/nco/nco_netcdf.h                       |   60 +-
 src/nco/nco_prn.c                          |  231 ++---
 src/nco/nco_rgr.c                          |   12 +-
 src/nco/ncpdq.c                            |   18 +-
 src/nco/ncra.c                             |   18 +-
 src/nco/ncrename.c                         |    1 +
 src/nco/ncwa.c                             |   43 +-
 src/nco_c++/Makefile.old                   |    5 +-
 src/nco_c++/nco_utl.cc                     |    6 +-
 127 files changed, 3378 insertions(+), 5647 deletions(-)

diff --git a/.gitignore b/.gitignore
index 673e584..445c584 100644
--- a/.gitignore
+++ b/.gitignore
@@ -17,6 +17,11 @@ Makefile.in
 /missing
 /Makefile
 
+# CMake
+CMakeCache.txt
+CMakeFiles
+cmake_install.cmake
+
 # Odd files, litter
 gmon.out
 PET0.RegridWeightGen.Log
diff --git a/.travis.yml b/.travis.yml
index 70ee6aa..788f2e9 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -9,7 +9,7 @@ compiler:
 
 before_install:
   - sudo apt-get update -qq
-  - sudo apt-get install -y -qq antlr libantlr-dev libnetcdf6 libnetcdf-dev netcdf-bin udunits-bin libudunits2-0 libudunits2-dev
+  - sudo apt-get install -y -qq antlr libantlr-dev libnetcdfc7 libnetcdf-dev netcdf-bin udunits-bin libudunits2-0 libudunits2-dev
   - ./configure
   - export DATA='/home/travis'
 
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 5f6d8c3..6cb7c1a 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,104 +1,241 @@
-#CMake build, Pedro Vicente 
-#command line options for library dependencies
-#-DFIND_SZIP=BOOL try to locate SZIP library (default ON)
-#library dependencies
-#-DNETCDF_INCLUDE=PATH
-#-DNETCDF_LIBRARY=FILE
-#-DHDF5_LIBRARY=FILE
-#-DHDF5_LIBRARY=FILE
-#-DHDF5_HL_LIBRARY=FILE
-#-DZLIB_LIBRARY=FILE
-#-DSZIP_LIBRARY=FILE
-#-DCURL_LIBRARY=FILE
-
-#///////////////////////////////////////////////////////
-#logic for finding header files and library dependencies:
-#find_path
-#find_library
-#are used (with optional location hints); the first argument contains the found file if found.
-#and the message "-- Found file at location" is made
-#if not found the first argument variable is the same as a user option that contains the file location full path.
-#the same message "-- Found file at location" is made
-#but there is not an attempt at this time to validate the user input file (.h or .a)
-#///////////////////////////////////////////////////////
+#CMake build, Pedro Vicente
+
+#/////////////////////////////////////////////////////////////////////////////////////
+#mininum library dependencies: netCDF, HDF5, HDF5_HL, ZLIB (SZIP)
+#/////////////////////////////////////////////////////////////////////////////////////
+
+#-DNETCDF_INCLUDE:PATH=<some_path>
+#-DNETCDF_LIBRARY:FILE=<some_file>
+#-DHDF5_LIBRARY:FILE=<some_file>
+#-DHDF5_HL_LIBRARY:FILE=<some_file>
+#-DZLIB_LIBRARY:FILE=<some_file>
+#-DSZIP_LIBRARY:FILE=<some_file>
+#-DCURL_LIBRARY:FILE=<some_file>
+
+#/////////////////////////////////////////////////////////////////////////////////////
+#optional library dependencies (Antlr, UDUNITS, EXPAT, GSL)
+#/////////////////////////////////////////////////////////////////////////////////////
+
+#-DANTLR_INCLUDE:PATH=<some_path>
+#-DANTLR_LIBRARY:FILE=<some_file>
+#-DUDUNITS2_INCLUDE:PATH=<some_path>
+#-DUDUNITS2_LIBRARY:FILE=<some_file>
+#-DEXPAT_LIBRARY:FILE=<some_file>
+#-DGSL_INCLUDE:PATH=<some_path>
+#-DGSL_LIBRARY:FILE=<some_file>
+#-DGSL_CBLAS_LIBRARY:FILE=<some_file>
 
 cmake_minimum_required(VERSION 2.8)
 project (nco)
-set(BUILD_SHARED_LIBRARIES OFF)
+include(CheckFunctionExists)
+include(CheckIncludeFile)
+include(CheckLibraryExists)
 
 #//////////////////////////
-#preprocessor definitions
+# colorized output
+# red, fatal error, cannot build (missing netCDF, HDF5, CURL libraries)
+# magenta, "negative" warning (missing optional libraries, GSL, ANTLR, UDUNITS)
+# green, "positive" warning (opposite of magenta, optional libraries found)
+# blue, general information to take notice (SZIP/ZLIB were detected as needed, special NCO functions are defined)
 #//////////////////////////
 
-add_definitions(-DHAVE_NETCDF4_H)
-add_definitions(-DENABLE_NETCDF4)
-if (MSVC)
+if(NOT WIN32)
+  string(ASCII 27 Esc)
+  set(color_reset   "${Esc}[m")
+  set(color_magenta "${Esc}[35m")
+  set(color_red     "${Esc}[31m")
+  set(color_green   "${Esc}[32m")
+  set(color_blue    "${Esc}[34m")
+endif()
 
-  #//////////////////////////
-  #visual studio defines math symbols in math.h, avoid duplicate definition
-  #//////////////////////////
-  
-  add_definitions(-D_MATH_DEFINES_DEFINED)
-endif(MSVC)
+#/////////////////////////////////////////////////////////////////////////////////////
+#general C/C++ build flags
+#/////////////////////////////////////////////////////////////////////////////////////
+
+set(CMAKE_BUILD_TYPE Debug)
+set(BUILD_STATIC_LIBS ON)
+set(BUILD_SHARED_LIBS OFF)
+add_definitions(-DENABLE_STATIC)
 
 #//////////////////////////
-#detect dependencies
+#detect minimum dependencies using
+#find_path()
+#find_library()
+#Notes:
+#1) list a static name first to avoid link errors in systems with multiple versions of the same libraries in PATH, used for libz.a
+#2) use option NO_SYSTEM_ENVIRONMENT_PATH
 #//////////////////////////
 
-find_path(NETCDF_INCLUDE_FOUND netcdf.h HINTS ${NETCDF_INCLUDE} "/usr/include")
-if(NOT NETCDF_INCLUDE_FOUND)
-  message(FATAL_ERROR "netcdf.h header file not found")
+set(find_opt NO_SYSTEM_ENVIRONMENT_PATH)
+
+#/////////////////////////////////////////////////////////////////////////////////////
+#netCDF
+#detect a user defined system environment variable NETCDF_ROOT
+#this sets the include path to NETCDF_INCLUDE directly
+#and a PATHS hint for NETCDF_LIBRARY (because the library name can be any legal combination of "netcdf" )
+#For this case find_library(NETCDF_LIBRARY) MUST be called 2 times
+#First time it looks in NETCDF_LIBRARY_PATH if set, avoiding all other PATHS with NO_DEFAULT_PATH
+#If not found, business as usual
+#//////////////////////////
+
+set(netcdf_root "$ENV{NETCDF_ROOT}")
+if(netcdf_root)
+  set(NETCDF_INCLUDE "${netcdf_root}/include")
+  set(NETCDF_LIBRARY_PATH "${netcdf_root}/lib")
+  message("${color_blue}-- Using user defined netCDF location: ${netcdf_root}${color_reset}")
+endif()
+
+find_path(NETCDF_INCLUDE netcdf.h ${find_opt})
+if(NOT NETCDF_INCLUDE)
+  message(FATAL_ERROR "${color_red}netcdf.h header file not found${color_reset}")
 else()
-  message("-- Found netcdf.h header file at: " ${NETCDF_INCLUDE_FOUND})
+  message("-- Found netcdf.h header file at: " ${NETCDF_INCLUDE})
 endif()
 
-find_library(NETCDF_LIBRARY NAMES netcdf)
+find_library(NETCDF_LIBRARY NAMES netcdf PATHS ${NETCDF_LIBRARY_PATH} NO_DEFAULT_PATH)
+find_library(NETCDF_LIBRARY NAMES netcdf ${find_opt})
 if(NOT NETCDF_LIBRARY)
-  message(FATAL_ERROR "netcdf library not found")
+  message(FATAL_ERROR "${color_red}netcdf library not found${color_reset}")
 else()
   message("-- Found netcdf library at: " ${NETCDF_LIBRARY})
 endif()
 
-find_library(HDF5_LIBRARY NAMES hdf5)
+#/////////////////////////////////////////////////////////////////////////////////////
+#netCDF
+#Check for several functions in the netCDF library; define C macro accordingly
+#CMAKE_REQUIRED_LIBRARIES needs NETCDF_LIBRARY
+#/////////////////////////////////////////////////////////////////////////////////////
+
+set(CMAKE_REQUIRED_LIBRARIES ${NETCDF_LIBRARY})
+
+check_library_exists(${NETCDF_LIBRARY} nc_inq_path "" has_nc_inq_path)
+if (has_nc_inq_path)
+  add_definitions(-DHAVE_NC_INQ_PATH)
+endif()
+check_library_exists(${NETCDF_LIBRARY} nc_inq_format "" has_nc_inq_format)
+if (has_nc_inq_format)
+  add_definitions(-DHAVE_NC_INQ_FORMAT)
+endif()
+
+#/////////////////////////////////////////////////////////////////////////////////////
+#HDF5
+#/////////////////////////////////////////////////////////////////////////////////////
+
+
+find_library(HDF5_LIBRARY NAMES hdf5 ${find_opt})
 if(NOT HDF5_LIBRARY)
-  message(FATAL_ERROR "hdf5 library not found")
+  message(FATAL_ERROR "${color_red}hdf5 library not found${color_reset}")
 else()
   message("-- Found hdf5 library at: " ${HDF5_LIBRARY})
 endif()
 
-find_library(HDF5_HL_LIBRARY NAMES hdf5_hl)
+find_library(HDF5_HL_LIBRARY NAMES hdf5_hl ${find_opt})
 if(NOT HDF5_HL_LIBRARY)
-  message(FATAL_ERROR "hdf5 high level library not found")
+  message(FATAL_ERROR "${color_red}hdf5 high level library not found${color_reset}")
 else()
   message("-- Found hdf5 high level library at: " ${HDF5_HL_LIBRARY})
 endif()
 
-find_library(ZLIB_LIBRARY NAMES z)
-if(NOT ZLIB_LIBRARY)
-  message(FATAL_ERROR "zlib library not found")
+#//////////////////////////
+#HDF5 can be optionally linked with the SZIP library (Science Data Lossless Compression Program) and ZLIB
+#Symbol to detect in ZLIB can be only H5Z_DEFLATE, a structure only defined in H5Zdeflate.c if the filter is enabled
+#For SZIP the structure can be only H5Z_SZIP, defined in H5Zszip.c if the filter is enabled
+#check_library_exists() tries to link a temporary program with these symbols
+#On MSVC for this detection to work, the HDF5 library MUST HAVE as additional dependencies the ZLIB and SZIP libraries,
+#which is not a requirement for the library to build successfully
+#//////////////////////////
+
+set(CMAKE_REQUIRED_LIBRARIES ${HDF5_LIBRARY})
+
+message("-- Detecting if HDF5 library ${HDF5_LIBRARY} needs the ZLIB library...")
+check_library_exists(${HDF5_LIBRARY} H5Z_DEFLATE "" NEED_ZLIB)
+if (NEED_ZLIB)
+  message("${color_blue}-- ZLIB library is needed...${color_reset}")
 else()
-  message("-- Found zlib library at: " ${ZLIB_LIBRARY})
+  message("${color_blue}-- ZLIB library is not needed...${color_reset}")
 endif()
 
-option(FIND_SZIP "Try to link with SZIP library" ON)
-
-if (FIND_SZIP)
-message("-- Trying to find SZIP library...")
-find_library(SZIP_LIBRARY NAMES sz)
-if(NOT SZIP_LIBRARY)
-  message(FATAL_ERROR "szip library not found")
+message("-- Detecting if HDF5 library ${HDF5_LIBRARY} needs the SZIP library...")
+check_library_exists(${HDF5_LIBRARY} H5Z_SZIP "" NEED_SZIP)
+if (NEED_SZIP)
+  message("${color_blue}-- SZIP library is needed...${color_reset}")
 else()
-  message("-- Found szip library at: " ${SZIP_LIBRARY})
+  message("${color_blue}-- SZIP library is not needed...${color_reset}")
+endif()
+
+if (NEED_SZIP)
+  message("-- Trying to find the SZIP library...")
+  find_library(SZIP_LIBRARY NAMES sz ${find_opt})
+  if(NOT SZIP_LIBRARY)
+    message(FATAL_ERROR "${color_red}szip library not found${color_reset}")
+  else()
+    message("-- Found szip library at: " ${SZIP_LIBRARY})
+  endif()
 endif()
-endif(FIND_SZIP)
 
-find_library(CURL_LIBRARY NAMES curl)
+if (NEED_ZLIB)
+  message("-- Trying to find the ZLIB library...")
+  find_library(ZLIB_LIBRARY NAMES libz.a z ${find_opt})
+  if(NOT ZLIB_LIBRARY)
+    message(FATAL_ERROR "${color_red}zlib library not found${color_reset}")
+  else()
+    message("-- Found zlib library at: " ${ZLIB_LIBRARY})
+  endif()
+endif()
+
+find_library(CURL_LIBRARY NAMES curl ${find_opt})
 if(NOT CURL_LIBRARY)
-  message(FATAL_ERROR "curl library not found")
+  message(FATAL_ERROR "${color_red}curl library not found${color_reset}")
 else()
   message("-- Found curl library at: " ${CURL_LIBRARY})
 endif()
 
+#//////////////////////////
+#detect optional dependencies
+#//////////////////////////
+
+#//////////////////////////
+# UDUNITS2 (and EXPAT)
+# Add non standard UDUNITS2 header paths (Mac ports, Linux Fedora)
+#//////////////////////////
+
+set(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH})
+set(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} "/opt/local/include/udunits2")
+set(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} "/usr/include/udunits2")
+
+find_path(UDUNITS2_INCLUDE udunits2.h ${find_opt})
+if(NOT UDUNITS2_INCLUDE)
+  message("${color_magenta}-- Unidata units library header files not found${color_reset}")
+else()
+  message("-- Found Unidata units library header files at: " ${UDUNITS2_INCLUDE})
+endif()
+
+find_library(UDUNITS2_LIBRARY NAMES udunits2 ${find_opt})
+if(NOT UDUNITS2_LIBRARY)
+  message("${color_magenta}-- Unidata units library not found${color_reset}")
+else()
+  message("-- Found Unidata units library at: " ${UDUNITS2_LIBRARY})
+endif()
+
+#//////////////////////////
+# UDUnits depends on expat
+#//////////////////////////
+
+if (UDUNITS2_LIBRARY AND UDUNITS2_INCLUDE)
+  find_library(EXPAT_LIBRARY NAMES libexpatMT expat ${find_opt})
+  if(NOT EXPAT_LIBRARY)
+    message("${color_magenta}-- Expat library not found${color_reset}")
+    message("-- Disabling UDUNITS support")
+  else()
+    message("-- Found Expat library at: " ${EXPAT_LIBRARY})
+    message("${color_green}-- Building with UDUNITS support${color_reset}")
+  endif()
+endif()
+
+#//////////////////////////
+#compile as C++/static CRT on Visual Studio and as C99 on UNIX
+#//////////////////////////
+
 if (MSVC)
   add_definitions( "/D_CRT_SECURE_NO_WARNINGS /D_CRT_NONSTDC_NO_DEPRECATE" )
   message("-- Building with static runtime library")
@@ -110,47 +247,96 @@ if (MSVC)
   #//////////////////////////
   #compile as C++ Code (/TP)
   #//////////////////////////
-  
+
   set(CMAKE_C_FLAGS_DEBUG "/TP /D_DEBUG /MTd /Zi /Ob0 /Od /RTC1")
   set(CMAKE_C_FLAGS_MINSIZEREL     "/TP /MT /O1 /Ob1 /D NDEBUG")
   set(CMAKE_C_FLAGS_RELEASE        "/TP /MT /O2 /Ob2 /D NDEBUG")
   set(CMAKE_C_FLAGS_RELWITHDEBINFO "/TP /MT /Zi /O2 /Ob1 /D NDEBUG")
-  set(WINSOCK_LIBRARY ws2_32.lib winmm.lib wldap32.lib)
 
-else (MSVC)  
+  #//////////////////////////
+  #visual studio defines math symbols in math.h, avoid duplicate definition
+  #//////////////////////////
+
+  add_definitions(-D_MATH_DEFINES_DEFINED)
+
+else (MSVC)
 
 #//////////////////////////
 #compile as C99
 #//////////////////////////
 
-if (CMAKE_VERSION VERSION_LESS "3.1")  
-  if (CMAKE_C_COMPILER_ID STREQUAL "GNU")
-    set (CMAKE_C_FLAGS "--std=gnu99 ${CMAKE_C_FLAGS}")
-  endif ()
-else ()
-  set (CMAKE_C_STANDARD 99)
-endif ()
+if(CMAKE_VERSION VERSION_LESS "3.1")
+  if(CMAKE_COMPILER_IS_GNUCC)
+    set(CMAKE_C_FLAGS "--std=gnu99 ${CMAKE_C_FLAGS}")
+  endif()
+else()
+  set(CMAKE_C_STANDARD 99)
+endif()
+
+#//////////////////////////
+# other gcc flags
+#//////////////////////////
+
+if(CMAKE_COMPILER_IS_GNUCC)
+  if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.9)
+   set(CMAKE_C_FLAGS "-D_BSD_SOURCE -D_POSIX_SOURCE ${CMAKE_C_FLAGS}")
+  else()
+   set(CMAKE_C_FLAGS "-D_DEFAULT_SOURCE ${CMAKE_C_FLAGS}")
+  endif()
+endif()
 
 endif(MSVC)
 
+
+#//////////////////////////
+#link with libraries
+#LIB_DEP contains a cascade definition of all the libraries needed to link
+#//////////////////////////
+
+set(LIB_DEP ${LIB_DEP})
+set(LIB_DEP ${LIB_DEP} ${NETCDF_LIBRARY})
+set(LIB_DEP ${LIB_DEP} ${HDF5_HL_LIBRARY})
+set(LIB_DEP ${LIB_DEP} ${HDF5_LIBRARY})
+set(LIB_DEP ${LIB_DEP} ${CURL_LIBRARY})
+if (NEED_ZLIB)
+  set(LIB_DEP ${LIB_DEP} ${ZLIB_LIBRARY})
+endif()
+if (NEED_SZIP)
+  set(LIB_DEP ${LIB_DEP} ${SZIP_LIBRARY})
+endif()
+
 #//////////////////////////
-#compiler includes
+#add definitions based on libraries found
 #//////////////////////////
 
-include_directories(${NETCDF_INCLUDE_FOUND})
+if(NETCDF_INCLUDE AND NETCDF_LIBRARY)
+add_definitions(-DHAVE_NETCDF4_H)
+add_definitions(-DENABLE_NETCDF4)
+include_directories(${NETCDF_INCLUDE})
+endif()
+
+if(UDUNITS2_INCLUDE AND UDUNITS2_LIBRARY AND EXPAT_LIBRARY)
+add_definitions(-DENABLE_UDUNITS)  
+add_definitions(-DHAVE_UDUNITS2_H) 
+include_directories(${UDUNITS2_INCLUDE})  
+set(LIB_DEP ${LIB_DEP} ${UDUNITS2_LIBRARY} ${EXPAT_LIBRARY}) 
+endif()
 
 #//////////////////////////
-#link with libraries
+# system specific libraries needed to link (assume existing)
 #//////////////////////////
 
-set(LIB_DEP ${LIB_DEP} ${NETCDF_LIBRARY} ${HDF5_HL_LIBRARY} ${HDF5_LIBRARY})
-set(LIB_DEP ${LIB_DEP} ${CURL_LIBRARY} ${ZLIB_LIBRARY} ${SZIP_LIBRARY})
+if(APPLE)
+  set(LIB_DEP ${LIB_DEP} resolv)
+endif()
 
-if (MSVC)
-  set(LIB_DEP ${LIB_DEP} ${WINSOCK_LIBRARY})
-else (MSVC)
+if(MSVC)
+  set(LIB_DEP ${LIB_DEP} ws2_32.lib winmm.lib wldap32.lib)
+endif()
+
+if(UNIX)
   set(LIB_DEP ${LIB_DEP} m)
-endif(MSVC)
+endif()
 
 #//////////////////////////
 #nco lib sources 
@@ -212,9 +398,35 @@ add_executable(ncflint src/nco/ncflint.c)
 add_executable(ncpdq src/nco/ncpdq.c)
 add_executable(ncra src/nco/ncra.c)
 add_executable(ncrename src/nco/ncrename.c)
-if (MSVC)
-add_executable(ncwa src/nco/ncwa.c)
-endif(MSVC)
+add_executable(ncatted src/nco/ncatted.c)
+
+#//////////////////////////
+#ncwa, flex, bison on UNIX
+#flex -Pnco_yy ncap_lex.l
+#mv lex.nco_yy.c ncap_lex.c
+#bison -d --name-prefix=nco_yy --output=ncap_yacc.c -d ncap_yacc.y
+#//////////////////////////
+
+set(ncwa_SOURCES ${ncwa_SOURCES})
+set(ncwa_SOURCES ${ncwa_SOURCES} src/nco/ncwa.c)
+find_package(BISON QUIET)
+find_package(FLEX  QUIET) 
+if(BISON_FOUND AND FLEX_FOUND)
+ add_definitions(-DHAVE_BISON_FLEX)
+ message("-- Bison found at ${BISON_EXECUTABLE}")
+ message("-- Flex found at ${FLEX_EXECUTABLE}")
+ BISON_TARGET(nco_parser src/nco/ncap_yacc.y ${CMAKE_CURRENT_BINARY_DIR}/ncap_yacc.c COMPILE_FLAGS "--name-prefix=nco_yy")
+ FLEX_TARGET(nco_scanner src/nco/ncap_lex.l ${CMAKE_CURRENT_BINARY_DIR}/ncap_lex.c COMPILE_FLAGS "-Pnco_yy")
+ ADD_FLEX_BISON_DEPENDENCY(nco_scanner nco_parser)
+ include_directories(${CMAKE_CURRENT_BINARY_DIR})
+ include_directories(src/nco)
+ message("-- Bison/Flex will generate ${BISON_nco_parser_OUTPUTS} ${FLEX_nco_scanner_OUTPUTS}")
+ set(ncwa_SOURCES ${ncwa_SOURCES} ${BISON_nco_parser_OUTPUTS} ${FLEX_nco_scanner_OUTPUTS} src/nco/ncap_utl.c)
+else()
+  message("${color_magenta}-- Bison/Flex not found${color_reset}")
+endif()
+add_executable(ncwa ${ncwa_SOURCES})
+
 
 set(nco_LIB nco)
 
@@ -225,38 +437,50 @@ target_link_libraries (ncflint ${nco_LIB} ${LIB_DEP})
 target_link_libraries (ncpdq ${nco_LIB} ${LIB_DEP})
 target_link_libraries (ncra ${nco_LIB} ${LIB_DEP})
 target_link_libraries (ncrename ${nco_LIB} ${LIB_DEP})
-if (MSVC)
+target_link_libraries (ncatted ${nco_LIB} ${LIB_DEP})
 target_link_libraries (ncwa ${nco_LIB} ${LIB_DEP})
-endif(MSVC)
 
-#/////////////////////////////////////////////////////////////////////////////////////
-#ncap2 
-#/////////////////////////////////////////////////////////////////////////////////////
-
-#options
-#command line options for library dependencies
-#-DANTLR_INCLUDE=PATH
-#-DANTLR_LIBRARY=FILE
 
 #//////////////////////////
-#detect dependencies
-#note: cmake can detect relative paths, e.g, antlr/AST.hpp
+#ANLR
+#cmake can detect relative paths, e.g, antlr/AST.hpp
+#detect a user defined system environment variable ANTLR_ROOT
+#this sets the include path to ANTLR_INCLUDE directly
+#and a PATHS hint for ANTLR_LIBRARY 
+#For this case find_library(ANTLR_LIBRARY) MUST be called 2 times
+#First time it looks in ANTLR_LIBRARY_PATH if set, avoiding all other PATHS with NO_DEFAULT_PATH
 #//////////////////////////
 
-find_path(ANTLR_INCLUDE_FOUND antlr/AST.hpp HINTS ${ANTLR_INCLUDE})
-if(NOT ANTLR_INCLUDE_FOUND)
-  message("-- ANTLR header files not found")
+set(antlr_root "$ENV{ANTLR_ROOT}")
+if(antlr_root)
+  set(ANTLR_INCLUDE "${antlr_root}/include")
+  set(ANTLR_LIBRARY_PATH "${antlr_root}/lib")
+  set(ANTLR_BIN "${antlr_root}/bin")
+  set(ENV{PATH} "${ANTLR_BIN}:$ENV{PATH}")
+  message("${color_blue}-- Using user defined antlr location: ${antlr_root}${color_reset}")
+endif()
+
+find_path(ANTLR_INCLUDE antlr/AST.hpp ${find_opt})
+if(NOT ANTLR_INCLUDE)
+  message("${color_magenta}-- ANTLR header files not found${color_reset}")
 else()
-  message("-- Found ANTLR header files at: " ${ANTLR_INCLUDE_FOUND})
+  message("-- Found ANTLR header files at: " ${ANTLR_INCLUDE})
 endif()
 
-find_library(ANTLR_LIBRARY NAMES antlr)
+find_library(ANTLR_LIBRARY NAMES antlr PATHS ${ANTLR_LIBRARY_PATH} NO_DEFAULT_PATH)
+find_library(ANTLR_LIBRARY NAMES antlr ${find_opt})
 if(NOT ANTLR_LIBRARY)
-  message("-- ANTLR library not found")
+  message("${color_magenta}-- ANTLR library not found${color_reset}")
 else()
   message("-- Found ANTLR library at: " ${ANTLR_LIBRARY})
 endif()
 
+if(ANTLR_INCLUDE AND ANTLR_LIBRARY)
+  message("${color_green}-- Building ncap2, netCDF Arithmetic Processor${color_reset}")
+else()
+  message("${color_magenta}-- Disabling ncap2, netCDF Arithmetic Processor${color_reset}")
+endif()
+
 set(ncap2_SOURCES ${ncap2_SOURCES} src/nco++/Invoke.cc)
 set(ncap2_SOURCES ${ncap2_SOURCES} src/nco++/ncap2.cc)
 set(ncap2_SOURCES ${ncap2_SOURCES} src/nco++/ncap2_utl.cc)
@@ -275,12 +499,409 @@ set(ncap2_SOURCES ${ncap2_SOURCES} src/nco++/ncoTree.cpp)
 set(ncap2_SOURCES ${ncap2_SOURCES} src/nco++/Invoke.cc)
 set(ncap2_SOURCES ${ncap2_SOURCES} src/nco++/nco_gsl.c)
 
-if(ANTLR_INCLUDE_FOUND)
+#//////////////////////////
+#GSL
+#GSL CBLAS needed for Linux Fedora; assuming here all gsl-dev packages have it
+#//////////////////////////
+
+if(ANTLR_INCLUDE AND ANTLR_LIBRARY)
+
+#//////////////////////////
+#GSL_ROOT
+#detect a user defined system environment variable GSL_ROOT
+#this sets the include path to GSL_INCLUDE directly
+#and a PATHS hint for GSL_LIBRARY and GSL_CBLAS_LIBRARY
+#For this case find_library(GSL_LIBRARY/GSL_CBLAS_LIBRARY) MUST be called 2 times
+#First time it looks in GSL_LIBRARY_PATH if set, avoiding all other PATHS with NO_DEFAULT_PATH
+#//////////////////////////
+
+  set(gsl_root "$ENV{GSL_ROOT}")
+  if(gsl_root)
+    set(GSL_INCLUDE "${gsl_root}/include")
+    set(GSL_LIBRARY_PATH "${gsl_root}/lib")
+    set(GSL_CBLAS_LIBRARY_PATH "${gsl_root}/lib")
+    message("${color_blue}-- Using user defined GSL location: ${gsl_root}${color_reset}")
+    set(GSL_CONFIG_PATH ${gsl_root}/bin/gsl-config)
+  endif(gsl_root)
+  
+#//////////////////////////
+#find gsl-config
+#//////////////////////////  
+  
+  find_program(gsl_config NAMES gsl-config PATHS ${GSL_CONFIG_PATH} NO_DEFAULT_PATH)
+  find_program(gsl_config NAMES gsl-config ${find_opt})
+  
+  if (gsl_config)
+    execute_process(COMMAND ${gsl_config} --prefix OUTPUT_VARIABLE gsl_prefix)
+    if (gsl_prefix)
+      string(REGEX REPLACE "\n$" "" gsl_prefix "${gsl_prefix}")
+      message("${color_blue}-- Found GSL installation prefix at ${gsl_prefix}${color_reset}")
+    endif(gsl_prefix)
+    execute_process(COMMAND ${gsl_config} --version OUTPUT_VARIABLE gsl_version)
+    if (gsl_version)
+      string(REGEX REPLACE "\n$" "" gsl_version "${gsl_version}")
+      message("${color_blue}-- Found GSL version ${gsl_version}${color_reset}")
+      string(REPLACE "." ";" version_list ${gsl_version})
+      list(GET version_list 0 GSL_MAJOR)
+      list(GET version_list 1 GSL_MINOR)
+      if (GSL_MAJOR)
+        add_definitions(-DNCO_GSL_MAJOR_VERSION=${GSL_MAJOR})
+      endif()
+      if (GSL_MINOR)
+        add_definitions(-DNCO_GSL_MINOR_VERSION=${GSL_MINOR})
+      endif()
+      math(EXPR GSL_VER "${GSL_MAJOR} * 100 + ${GSL_MINOR}")
+      if (GSL_VER)
+        add_definitions(-DGSL_VER=${GSL_VER})
+      endif()
+    endif(gsl_version)
+  endif(gsl_config)
+
+  find_path(GSL_INCLUDE gsl/gsl_sf_gamma.h ${find_opt})
+  if(NOT GSL_INCLUDE)
+    message("${color_magenta}-- GSL header files not found${color_reset}")
+  else()
+    message("-- Found GSL header files at: " ${GSL_INCLUDE})
+  endif()
+  
+  find_library(GSL_LIBRARY NAMES gsl libgsl_d.lib PATHS ${GSL_LIBRARY_PATH} NO_DEFAULT_PATH)
+  find_library(GSL_LIBRARY NAMES gsl libgsl_d.lib ${find_opt})
+  if(NOT GSL_LIBRARY)
+    message("${color_magenta}-- GSL library not found${color_reset}")
+  else()
+    message("-- Found GSL library at: " ${GSL_LIBRARY})
+  endif()
+  
+  find_library(GSL_CBLAS_LIBRARY NAMES gslcblas libgslcblas_d.lib PATHS ${GSL_CBLAS_LIBRARY_PATH} NO_DEFAULT_PATH)
+  find_library(GSL_CBLAS_LIBRARY NAMES gslcblas libgslcblas_d.lib ${find_opt})
+  if(NOT GSL_CBLAS_LIBRARY)
+    message("${color_magenta}-- GSL CBLAS library not found${color_reset}")
+  else()
+    message("-- Found GSL CBLAS library at: " ${GSL_CBLAS_LIBRARY})
+  endif()
+  
+  if(GSL_INCLUDE AND GSL_LIBRARY AND GSL_CBLAS_LIBRARY)
+    add_definitions(-DENABLE_GSL)
+    include_directories(${GSL_INCLUDE})
+    set(LIB_DEP ${LIB_DEP} ${GSL_LIBRARY} ${GSL_CBLAS_LIBRARY})
+    message("${color_green}-- Building with GSL support${color_reset}")
+  else()
+    message("${color_magenta}-- Disabling GSL support${color_reset}")
+  endif ()
+endif(ANTLR_INCLUDE AND ANTLR_LIBRARY)
+
+#//////////////////////////
+# ncap2
+#//////////////////////////
+
+if(ANTLR_INCLUDE AND ANTLR_LIBRARY)
   add_executable(ncap2 ${ncap2_SOURCES})
-  target_include_directories(ncap2 PRIVATE src/nco ${ANTLR_INCLUDE_FOUND})
+  target_include_directories(ncap2 PRIVATE src/nco ${ANTLR_INCLUDE})
   target_link_libraries (ncap2 ${nco_LIB} ${LIB_DEP} ${ANTLR_LIBRARY}) 
-endif(ANTLR_INCLUDE_FOUND)
+endif()
+
+
+#//////////////////////////
+# detect system specific functions used by NCO
+#//////////////////////////
+
+check_function_exists(mkstemp HAVE_mkstemp)
+if (HAVE_mkstemp)
+  message("-- Found function mkstemp")
+  add_definitions(-DHAVE_MKSTEMP)
+endif()
+
+#//////////////////////////
+#math functions, including float versions
+#NCO_CHECK_FUNCS([atan2])
+#NCO_CHECK_FUNCS([acosf asinf atanf atan2f cosf expf fabsf fmodf log10f logf powf sinf sqrtf tanf])
+#NCO_CHECK_FUNCS([erff erfcf gammaf])
+#NCO_CHECK_FUNCS([acoshf asinhf atanhf coshf sinhf tanhf])
+#NCO_CHECK_FUNCS([ceilf floorf])
+#NCO_CHECK_FUNCS([nearbyint rint round trunc])
+#NCO_CHECK_FUNCS([nearbyintf rintf roundf truncf])
+#//////////////////////////
+
+find_library(MATH_LIBRARY NAMES m ${find_opt})
+if(MATH_LIBRARY)
+  message("-- Checking for math library functions at: " ${MATH_LIBRARY})
+  set(CMAKE_REQUIRED_LIBRARIES m)
+  set(CMAKE_REQUIRED_QUIET 1)
+  macro(nco_check_funcs func)
+  unset(have_result CACHE)
+  check_function_exists(${ARGV0} have_result)
+  if (NOT have_result)
+    message("${color_blue}-- Using NCO defined version of ${ARGV0}${color_reset}")
+    string(TOUPPER ${ARGV0} def_fnc )
+    add_definitions(-DNEED_${def_fnc})
+  endif()
+  endmacro(nco_check_funcs)
+  nco_check_funcs(atan2)
+  nco_check_funcs(acosf)
+  nco_check_funcs(asinf)
+  nco_check_funcs(atanf)
+  nco_check_funcs(cosf)
+  nco_check_funcs(expf)
+  nco_check_funcs(fabsf)
+  nco_check_funcs(fmodf)
+  nco_check_funcs(log10f)
+  nco_check_funcs(logf)
+  nco_check_funcs(powf)
+  nco_check_funcs(sinf)
+  nco_check_funcs(sqrtf)
+  nco_check_funcs(tanf)
+  nco_check_funcs(erff)
+  nco_check_funcs(erfcf)
+  nco_check_funcs(gammaf)
+  nco_check_funcs(acoshf)
+  nco_check_funcs(asinhf)
+  nco_check_funcs(atanhf)
+  nco_check_funcs(coshf)
+  nco_check_funcs(sinhf)
+  nco_check_funcs(tanhf)
+  nco_check_funcs(ceilf)
+  nco_check_funcs(floorf)
+  nco_check_funcs(nearbyint)
+  nco_check_funcs(rint)
+  nco_check_funcs(round)
+  nco_check_funcs(trunc)
+  nco_check_funcs(nearbyintf)
+  nco_check_funcs(rintf)
+  nco_check_funcs(roundf)
+  nco_check_funcs(truncf)
+endif(MATH_LIBRARY)
+
+check_include_file(strings.h HAVE_STRINGS_H)
+if (HAVE_STRINGS_H)
+  message("-- Found header strings.h")
+  add_definitions(-DHAVE_STRINGS_H)
+endif()
+
+check_include_file(netcdf_meta.h NC_HAVE_META_H)
+if (NC_HAVE_META_H)
+  message("-- Found header netcdf_meta.h")
+  add_definitions(-DNC_HAVE_META_H)
+endif()
+
+
+#//////////////////////////
+# regex
+#//////////////////////////
+
+check_include_file(regex.h HAVE_REGEX_H)
+check_function_exists(regexec HAVE_REGEXEC)
+check_function_exists(regcomp HAVE_REGCOMP)
+check_function_exists(regfree HAVE_REGFREE)
+if (HAVE_REGEX_H)
+  message("-- Found header regex.h")
+  add_definitions(-DHAVE_REGEX_H)
+endif()
+
+if (HAVE_REGEX_H AND HAVE_REGEXEC AND HAVE_REGCOMP AND HAVE_REGFREE)
+  message("${color_green}-- Enabling Regex functionality...${color_reset}")
+  add_definitions(-DNCO_HAVE_REGEX_FUNCTIONALITY)
+endif()
+
+
+#//////////////////////////
+#additional informational definitions used by ncks -r
+#//////////////////////////
+
+if (CURL_LIBRARY)
+  add_definitions(-DENABLE_DAP)
+endif()
+
+if (CMAKE_BUILD_TYPE MATCHES Debug)
+  add_definitions(-DENABLE_DEBUG_SYMBOLS)
+endif()
+
 
+#//////////////////////////
+#USER, HOSTNAME, NCO_BUILDENGINE
+#HOSTNAME is a variable that is set by some shells like bash only, 
+#but cmake for speed and consistency runs commands using the most basic unix shell (ie. sh), 
+#which does not set that variable by default.
+#//////////////////////////
+
+set(nco_user "$ENV{USER}")
+if(NOT nco_user)
+ set(nco_user "$ENV{USERNAME}")
+endif()
+if(nco_user)
+ message("-- USER is set to: " ${nco_user})
+ add_definitions(-DUSER=${nco_user})
+endif()
+
+cmake_host_system_information(RESULT nco_hostname QUERY HOSTNAME)
+if(nco_hostname)
+ message("-- HOSTNAME is set to: " ${nco_hostname})
+ add_definitions(-DHOSTNAME=${nco_hostname})
+endif()
+
+set(NCO_BUILDENGINE "CMake")
+if(NCO_BUILDENGINE)
+ message("-- NCO_BUILDENGINE is set to: " ${NCO_BUILDENGINE})
+ add_definitions(-DNCO_BUILDENGINE=${NCO_BUILDENGINE})
+endif()
+
+#//////////////////////////
+# OpenMP
+#//////////////////////////
+
+if(NOT MSVC)
+  find_package(OpenMP QUIET)
+  if(OPENMP_FOUND)
+    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
+    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
+    message("${color_green}-- Building with OpenMP support${color_reset}")
+  else()
+    message("-- Building without OpenMP support")
+  endif()
+endif()
+
+#/////////////////////////////////////////////////////////////////////////////////////
+#install target
+#install prefix: detect test suite expected location; if present use it instead
+#/////////////////////////////////////////////////////////////////////////////////////
+
+set(test_dir "$ENV{MY_BIN_DIR}")
+if(test_dir)
+  if(test_dir STREQUAL ${CMAKE_INSTALL_PREFIX})
+  else()
+    message("${color_magenta}-- Modifying installation prefix to location expected by test suite : ${test_dir}${color_reset}")
+    set(CMAKE_INSTALL_PREFIX ${test_dir})
+  endif()
+endif()
+
+set(nco_targets ${nco_targets})
+set(nco_targets ${nco_targets} ncks ncbo ncecat ncflint ncpdq ncra ncrename ncatted ncwa)
+
+#//////////////////////////
+#make ncap2 build last 
+#//////////////////////////
+
+if(ANTLR_INCLUDE AND ANTLR_LIBRARY)
+  add_dependencies(ncap2 ${nco_targets})
+  set(nco_targets ${nco_targets} ncap2)
+endif()
+
+set(PERMISSIONS_DEFAULT OWNER_WRITE OWNER_READ OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
+message("-- Building ${nco_targets}")
+install(TARGETS ${nco_targets} RUNTIME DESTINATION . PERMISSIONS ${PERMISSIONS_DEFAULT})
+install(FILES data/ncremap data/ncclimo DESTINATION . PERMISSIONS ${PERMISSIONS_DEFAULT})
+message("-- Installing data/ncremap;data/ncclimo to: " ${CMAKE_INSTALL_PREFIX})
+
+#//////////////////////////
+# ncea->ncra
+# nces->ncra
+# ncrcat->ncra
+# ncdiff->ncbo
+# ncunpack->ncpdq
+# the following cmake -E commands are available only on UNIX:
+# create_symlink <old> <new> 
+# create a symbolic link <new> naming <old>. 
+#//////////////////////////
 
+macro(install_links src dest)
+add_custom_command(TARGET ncra POST_BUILD COMMAND ${CMAKE_COMMAND} -E create_symlink ${src} ${dest} DEPENDS ${src})
+install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${dest} DESTINATION . PERMISSIONS ${PERMISSIONS_DEFAULT})
+endmacro(install_links)
+install_links(ncra ncea)
+install_links(ncra nces)
+install_links(ncra ncrcat)
+install_links(ncbo ncdiff)
+install_links(ncpdq ncunpack)
+message("-- Installing links ncea;nces;ncrcat;ncdiff;ncunpack to: " ${CMAKE_INSTALL_PREFIX})
 
+#//////////////////////////
+# uninstall target
+#//////////////////////////
+
+configure_file("${CMAKE_CURRENT_SOURCE_DIR}/cmake/cmake_uninstall.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" IMMEDIATE @ONLY)
+add_custom_target(uninstall COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake)
+
+#//////////////////////////
+# 'data' target , 'make data', generate .nc files from .cdl
+# find ncgen (any ncgen will do)
+#//////////////////////////
+
+find_program(PATH_TO_NCGEN NAMES ncgen)
+if (PATH_TO_NCGEN)
+  set(PATH_DATA ${CMAKE_CURRENT_SOURCE_DIR}/data)
+  message("${color_blue}-- Generating data target, using the ncgen tool at ${PATH_TO_NCGEN}${color_reset}")
+  add_custom_target(data
+  COMMENT "${color_green}Creating sample netCDF data files for self-tests in ${PATH_DATA}${color_reset}"
+  COMMAND ${PATH_TO_NCGEN} -b -o ${PATH_DATA}/in.nc ${PATH_DATA}/in.cdl
+  COMMAND ${PATH_TO_NCGEN} -k netCDF-4 -b -o ${PATH_DATA}/in_grp.nc ${PATH_DATA}/in_grp.cdl
+  COMMAND ${PATH_TO_NCGEN} -k netCDF-4 -b -o ${PATH_DATA}/in_grp_1.nc ${PATH_DATA}/in_grp_1.cdl
+  COMMAND ${PATH_TO_NCGEN} -k netCDF-4 -b -o ${PATH_DATA}/in_grp_2.nc ${PATH_DATA}/in_grp_2.cdl
+  COMMAND ${PATH_TO_NCGEN} -k netCDF-4 -b -o ${PATH_DATA}/in_grp_3.nc ${PATH_DATA}/in_grp_3.cdl
+  COMMAND ${PATH_TO_NCGEN} -k netCDF-4 -b -o ${PATH_DATA}/in_grp_4.nc ${PATH_DATA}/in_grp_4.cdl
+  COMMAND ${PATH_TO_NCGEN} -k netCDF-4 -b -o ${PATH_DATA}/in_grp_5.nc ${PATH_DATA}/in_grp_5.cdl
+  COMMAND ${PATH_TO_NCGEN} -k netCDF-4 -b -o ${PATH_DATA}/in_grp_6.nc ${PATH_DATA}/in_grp_6.cdl
+  COMMAND ${PATH_TO_NCGEN} -k netCDF-4 -b -o ${PATH_DATA}/in_grp_7.nc ${PATH_DATA}/in_grp_7.cdl
+  COMMAND ${PATH_TO_NCGEN} -k netCDF-4 -b -o ${PATH_DATA}/in_1.nc ${PATH_DATA}/in_1.cdl
+  COMMAND ${PATH_TO_NCGEN} -k netCDF-4 -b -o ${PATH_DATA}/in_2.nc ${PATH_DATA}/in_2.cdl
+  COMMAND ${PATH_TO_NCGEN} -k netCDF-4 -b -o ${PATH_DATA}/mdl_1.nc ${PATH_DATA}/mdl_1.cdl
+  COMMAND ${PATH_TO_NCGEN} -k netCDF-4 -b -o ${PATH_DATA}/mdl_2.nc ${PATH_DATA}/mdl_2.cdl
+  COMMAND ${PATH_TO_NCGEN} -k netCDF-4 -b -o ${PATH_DATA}/mdl_3.nc ${PATH_DATA}/mdl_3.cdl
+  COMMAND ${PATH_TO_NCGEN} -k netCDF-4 -b -o ${PATH_DATA}/cmip5.nc ${PATH_DATA}/cmip5.cdl
+  COMMAND ${PATH_TO_NCGEN} -k netCDF-4 -b -o ${PATH_DATA}/obs.nc ${PATH_DATA}/obs.cdl)
+
+#//////////////////////////
+#make data build last 
+#//////////////////////////
+
+  add_dependencies(data ${nco_targets})
+endif()
+
+#//////////////////////////
+# check target , 'make check'
+# it depends on the NCO executables AND on the 'data' target
+# in NCO 'make check' depends on 'make install', so tests can only be done
+# if we can install to a writable directory, test -w /path; echo $? returns 0 if writable
+# the default install prefix (e.g /usr) requires 'sudo' previleges 
+# and the target would FAIL for this case, on the 'make install' part
+# if CMAKE_INSTALL_PREFIX does not exist, it is created
+#//////////////////////////
 
+execute_process(COMMAND test -d ${CMAKE_INSTALL_PREFIX} RESULT_VARIABLE test_d)
+if (test_d)
+ message("${color_blue}-- Creating directory: ${CMAKE_INSTALL_PREFIX}${color_reset}")
+ execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_INSTALL_PREFIX} ERROR_QUIET)
+endif()
+execute_process(COMMAND test -w ${CMAKE_INSTALL_PREFIX} RESULT_VARIABLE test_w)
+if (NOT test_w)
+ set(can_write 1)
+endif()
+
+if(can_write)
+  message("${color_blue}-- Generating check/install target with executables at: ${CMAKE_INSTALL_PREFIX}${color_reset}")
+  add_custom_target(check
+  COMMENT "${color_green}Running self-tests with NCO executables in ${CMAKE_INSTALL_PREFIX}${color_reset}"
+  COMMAND cmake --build . --target install
+  COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/bm/nco_bm.pl --regress)
+  add_dependencies(check ${nco_targets} data)
+endif()
+
+#//////////////////////////
+# install prefix
+#//////////////////////////
+
+message("${color_blue}-- Using installation path: ${CMAKE_INSTALL_PREFIX}${color_reset}")
+if (NOT can_write)
+ message("${color_magenta}-- Installing NCO requires write permission to: ${CMAKE_INSTALL_PREFIX}; check target is disabled${color_reset}")
+endif()
+
+#//////////////////////////
+# generate 'path.sh' on build path, run with 'source path.sh'
+# sets $PATH to locate the binaries we just built
+#//////////////////////////
+
+if (UNIX)
+ set(file_sh ${CMAKE_CURRENT_BINARY_DIR}/path.sh)
+ set(path "${CMAKE_INSTALL_PREFIX}:$ENV{PATH}")
+ file(WRITE ${file_sh} "#!/usr/bin/env bash\n")
+ file(APPEND ${file_sh} "export PATH=\"${path}\"")
+ execute_process(COMMAND chmod a+x ${file_sh} RESULT_VARIABLE res)
+endif()
diff --git a/bld/Makefile b/bld/Makefile
index 164ab4a..c956309 100644
--- a/bld/Makefile
+++ b/bld/Makefile
@@ -8,9 +8,9 @@
 # See http://www.gnu.org/copyleft/gpl.html for full license text
 
 # Quickie test copies:
-# scp ~/nco/bld/Makefile tephra.ess.uci.edu:nco/bld
 # scp ~/nco/bld/Makefile dust.ess.uci.edu:nco/bld
 # scp ~/nco/bld/Makefile gplogin2.ps.uci.edu:nco/bld
+# scp ~/nco/bld/Makefile skyglow.ess.uci.edu:nco/bld
 
 # Machine build parameters
 #                         Source     Method   Packages Compiler
@@ -19,10 +19,8 @@
 # edison.nersc.gov   : NCO          Configure All else Intel
 # firn.ess.uci.edu   : NCO          Configure All else LLVM
 # frazil.ess.uci.edu : NCO          Configure All else GCC
-# givre.ess.uci.edu  : NCO + netCDF Makefile  All else LLVM
-# glace.ess.uci.edu  : NCO          Configure All else GCC
+# glace.ess.uci.edu  : NCO          CMake     All else GCC
 # grele.ess.uci.edu  : NCO          Makefile  All else GCC
-# neige.ess.uci.edu  : NCO          Makefile  All else GCC
 # rhea.ccs.ornl.gov  : NCO          Makefile  All else GCC
 # roulee.ess.uci.edu : NCO + netCDF Makefile  All else GCC
 # skyglow.ess.uci.edu: NCO + netCDF Configure All else GCC
@@ -146,7 +144,6 @@ MY_DAT_DIR := ../data
 MY_DBN_DIR := ../debian
 MY_DOC_DIR := ../doc
 MY_DPN_DIR := ${MY_OBJ_DIR}
-MY_QT_DIR := ../qt
 MY_SRC_DIR := ../src/nco
 MY_INC_DIR := ${MY_SRC_DIR}
 NCO_CXX_SRC_DIR := ${MY_SRC_DIR}/../nco_c++
@@ -211,6 +208,9 @@ endif # endif MPI
 ifndef MPI_FAKE # MPI
  MPI_FAKE := N
 endif # endif MPI_FAKE
+ifndef NCO_BUILDENGINE
+ NCO_BUILDENGINE := Traditional \(nco/bld/Makefile\)
+endif # NCO_BUILDENGINE
 ifndef NCO_VRS
 # Used for RPM building
  NCO_VRS := $(shell cat ${MY_DOC_DIR}/VERSION)
@@ -277,7 +277,8 @@ endif # endif USR_TKN
 ifndef VRS_SNG
 # VRS_SNG := $(shell date +%Y%m%d)
 # 20150622
- VRS_SNG := $(shell git describe --abbrev=7 --dirty --always --tags)
+# VRS_SNG := $(shell git describe --abbrev=7 --dirty --always --tags)
+ VRS_SNG := $(shell cat ${MY_DOC_DIR}/VERSION)
 endif # endif VRS_SNG
 ifndef ZNETCDF # znetcdf support
  ZNETCDF := N
@@ -286,7 +287,7 @@ endif # endif ZNETCDF
 # These tokens should not be altered by hand
 
 # NB: CPP_TKN is recursively expanded variable, define only when components are ready
-CPP_TKN = ${USR_TKN} -D${PVM_ARCH} -DNO_NETCDF_2 -DNCO_VERSION='${VRS_SNG}' -DHOSTNAME='${HOST}' -DUSER='${USER}' -DNCO_ABORT_ON_ERROR
+CPP_TKN = ${USR_TKN} -DNCO_BUILDENGINE='${NCO_BUILDENGINE}' -D${PVM_ARCH} -DNO_NETCDF_2 -DNCO_VERSION='${VRS_SNG}' -DHOSTNAME='${HOST}' -DUSER='${USER}' -DNCO_ABORT_ON_ERROR
 ifndef LFLAGS # Flags for Flex (Lex)
  LFLAGS := -P${NCO_YY_PFX}
 endif
@@ -538,6 +539,7 @@ ifeq (${MPI},Y)
 endif # endif MPI
 MDL_BIN_STB := ${MDL_BIN_TRG} ${MDL_BIN_SPT} ${MDL_BIN_SYM_LNK} # All NCO files in MY_BIN_DIR
 MDL_BIN := $(addprefix ${MY_BIN_DIR}/,${MDL_BIN_STB}) # distclean removes these files
+MDL_SPT_SRC := $(addprefix ${MY_DAT_DIR}/,${MDL_BIN_SPT})
 
 # Variables having to do with header files created by module
 # List header targets alphabetically by "category":
@@ -553,7 +555,7 @@ MDL_DAT_STB := $(addsuffix .nc,${MDL_DAT_STB}) # `make data' creates these files
 MDL_DAT := $(addprefix ${MY_DAT_DIR}/,${MDL_DAT_STB}) # `make distclean' removes these files
 
 # Variables having to do with NCO documentation
-MDL_DOC_SRC := $(addprefix ../,acinclude.m4 configure.ac configure.eg Makefile.am) $(addprefix ${MY_DOC_DIR}/,nco.texi ANNOUNCE MANIFEST NEWS README TODO VERSION beta.txt debian.txt dods.sh index.shtml xmp_cesm.html man_end.txt man_srt.txt ncap.txt nco_news.shtml nco_src_frg.txt opendap.sh) $(addprefix ${MY_DBN_DIR}/,changelog compat control copyright files info rules doc-base) # `make tags' includes these files
+MDL_DOC_SRC := $(addprefix ../,acinclude.m4 CMakeLists.txt configure.ac configure.eg Makefile.am) $(addprefix ${MY_DOC_DIR}/,nco.texi ANNOUNCE MANIFEST NEWS README TODO VERSION beta.txt debian.txt dods.sh index.shtml xmp_cesm.html man_end.txt man_srt.txt ncap.txt nco_news.shtml nco_src_frg.txt opendap.sh) $(addprefix ${MY_DBN_DIR}/,changelog compat control copyright files info rules doc-base) # `make tags' includes these files
 MDL_DOC_TRG := nco.dvi nco.html nco.info nco.pdf nco.ps nco.txt nco.xml # `make doc' creates these files
 MDL_DOC := $(addprefix ${MY_DOC_DIR}/,${MDL_DOC_TRG}) # `make distclean' removes these files
 
@@ -570,9 +572,6 @@ MDL_BLD_SRC += $(addprefix ${MY_DAT_DIR}/,Makefile.am) $(addprefix ${MY_SRC_DIR}
 TAGS_FILTER_FILES := .//libnco_tst.c .//libnco_c++_tst.cc ../bld/lex.${NCO_YY_PFX}.c
 # TAGS_FILTER_FILES := .//libnco_tst.c .//libnco_c++_tst.cc
 
-# Variables having to do with Qt build system
-MDL_QT_SRC := $(addprefix ${MY_QT_DIR}/,nco.pro libnco/libnco.pro ncatted/ncatted.pro ncbo/ncbo.pro ncecat/ncecat.pro ncflint/ncflint.pro ncks/ncks.pro ncpdq/ncpdq.pro ncra/ncra.pro ncrename/ncrename.pro ncwa/ncwa.pro tst_nco_c++/tst_nco_c++.pro) # `make tags' includes these files
-
 # Variables having to do with ncap
 MDL_NCAP_SRC := $(addprefix ${MY_SRC_DIR}/,ncap_yacc.y ncap_lex.l ncap.h) # `make tags' includes these files
 MDL_NCAP_TRG := ncap_yacc.c ncap_yacc.h ncap_lex.c # `make ncap' creates these files
@@ -582,7 +581,7 @@ MDL_NCAP := $(addprefix ${MY_SRC_DIR}/,${MDL_NCAP_TRG}) # `make distclean' remov
 # fxm: auto-generate source code components of C++ lists
 MDL_CXX_SRC := $(addprefix ${NCOXX_SRC_DIR}/,libnco++.hh Makefile.am Makefile.old ncap2.cc ncap2.hh ncap2_utl.cc NcapVar.cc NcapVar.hh NcapVarVector.cc NcapVarVector.hh NcapVector.hh ncoGrammer.g nco_antlr_pst_prc.pl fmc_cls.cc fmc_cls.hh fmc_all_cls.cc fmc_all_cls.hh fmc_gsl_cls.cc fmc_gsl_cls.hh Invoke.cc Invoke.hh map_srt_tmp.hh nco_gsl.c nco_gsl.h prs_cls.cc prs_cls.hh sdo_utl.cc sdo_utl.hh sym_cls.cc sym_cls.hh VarOp.hh vtl_cls.hh) $(addprefix ${NCO_CXX_SRC_DIR}/,INSTALL libnco_c++. [...]
 
-TAGS_FILES := ${MY_SRC_DIR}/*.h $(filter-out ${TAGS_FILTER_FILES},${SRC_LST}) ${MDL_DOC_SRC} ${MDL_MAN} ${MDL_BLD_SRC} ${MDL_CXX_SRC} ${MDL_NCAP_SRC} ${MDL_QT_SRC}
+TAGS_FILES := ${MY_SRC_DIR}/*.h $(filter-out ${TAGS_FILTER_FILES},${SRC_LST}) ${MDL_DOC_SRC} ${MDL_MAN} ${MDL_BLD_SRC} ${MDL_CXX_SRC} ${MDL_NCAP_SRC} ${MDL_SPT_SRC}
 
 # Redefine default C and C++ pattern rules
 ${MY_OBJ_DIR}/%.o : %.c
@@ -652,6 +651,10 @@ ${MY_DPN_DIR}/%.d : %.cc
 # Manually define autotools tokens normally defined with HAVE_CONFIG_H in config.h 
 # Initialize OS-specific tokens to empty
 CPP_TKN_OS := -DHAVE_REGEX_H -DNCO_HAVE_REGEX_FUNCTIONALITY -DHAVE_GETPAGESIZE -DHAVE_GETRUSAGE -DNEED_STRCASESTR
+# Assume netCDF >= 3.6.1
+CPP_TKN_OS += -DHAVE_NC_INQ_FORMAT
+# Assume netCDF >= 4.3.2
+CPP_TKN_OS += -DHAVE_NC_INQ_PATH
 # gcc 4.7.3 finally includes strcasestr() in string.h iff _GNU_SOURCE token is defined
 # NB: C++ (or at least g++ 4.7.3) always includes strcasestr()---work around this with tokens in nco_sng_utl.[ch]
 ifneq (${PVM_ARCH},CRAY)
@@ -935,7 +938,10 @@ else ifneq (${null},$(findstring titan,${HOSTNAME}))
  ARFLAGS := rsv
 else ifneq (${null},$(findstring ys,${HOSTNAME}))
  ARFLAGS := rsv
-endif # !rhea,titan,yellowston
+endif # !rhea,titan,yellowstone
+ifeq (${PVM_ARCH},MACOSX)
+ ARFLAGS := rsv
+endif # !aerosol,firn
 CXX := ${LINUX_CXX}
 CC := ${LINUX_CC}
 CPP := ${CC}
@@ -2118,7 +2124,7 @@ dst_cln: cln bin_cln dat_cln doc_cln root_cln
 	cd ${MY_DAT_DIR}; rm -f buggy.nc cmip5.nc dsm.nc obs.nc hdf.hdf mdl_1.nc mdl_2.nc mdl_3.nc in.nc in_4c.nc in_4.nc in_grp.nc in_grp_1.nc in_grp_2.nc in_grp_3.nc in_grp_4.nc in_grp_5.nc in_grp_6.nc in_grp_7.nc in_grp_8.nc in_rec_zero.nc *~
 tags: 
 	etags ${TAGS_FILES}
-#	etags ${MY_SRC_DIR}/*.h $(filter-out ${TAGS_FILTER_FILES},${SRC_LST}) ${MDL_DOC_SRC} ${MDL_MAN} ${MDL_BLD_SRC} ${MDL_CXX_SRC} ${MDL_NCAP_SRC} ${MDL_QT_SRC}
+#	etags ${MY_SRC_DIR}/*.h $(filter-out ${TAGS_FILTER_FILES},${SRC_LST}) ${MDL_DOC_SRC} ${MDL_MAN} ${MDL_BLD_SRC} ${MDL_CXX_SRC} ${MDL_NCAP_SRC}
 
 # Reset internal YACC and LEX patterns
 %.c : %.y
diff --git a/bld/nco.spec b/bld/nco.spec
index 0eb49ef..ebf07ba 100644
--- a/bld/nco.spec
+++ b/bld/nco.spec
@@ -2,17 +2,17 @@
 # http://cvs.fedoraproject.org/viewvc/devel/nco/nco.spec?view=co
 
 Name:           nco
-Version:        4.6.8
+Version:        4.6.9
 Release:        1%{?dist}
 Summary:        Programs that manipulate netCDF files
 Group:          Applications/Engineering
 License:        GPL3
 URL:            http://nco.sf.net/
 
-# Obtain NCO version 4.6.8-1 tar.gz from Sourceforge using CVS:
+# Obtain NCO version 4.6.9-1 tar.gz from Sourceforge using CVS:
 # cvs -d:pserver:anonymous at nco.cvs.sf.net:/cvsroot/nco login
-# cvs -z3 -d:pserver:anonymous at nco.cvs.sf.net:/cvsroot/nco co -r nco-4.6.8-1 -d nco-%{version} nco
-# tar czf nco-%{version}.tar.gz --exclude='nco-4.6.8/debian*' --exclude='.cvsignore' --exclude=ncap_lex.c --exclude='ncap_yacc.[ch]' ./nco-%{version}
+# cvs -z3 -d:pserver:anonymous at nco.cvs.sf.net:/cvsroot/nco co -r nco-4.6.9-1 -d nco-%{version} nco
+# tar czf nco-%{version}.tar.gz --exclude='nco-4.6.9/debian*' --exclude='.cvsignore' --exclude=ncap_lex.c --exclude='ncap_yacc.[ch]' ./nco-%{version}
 Source0:        nco-%{version}.tar.gz
 #Patch0:		nco_install_C_headers.patch
 #Patch1:         nco_find_udunits-dat.patch
@@ -108,6 +108,9 @@ fi
 # %{_libdir}/libnco++.so
 
 %changelog
+* Mon Sep 18 2017 Charlie Zender <zender at uci.edu> - 4.6.9-1
+- new upstream 4.6.9
+
 * Wed Aug 16 2017 Charlie Zender <zender at uci.edu> - 4.6.8-1
 - new upstream 4.6.8
 
diff --git a/bld/nco_dst.pl b/bld/nco_dst.pl
index 8b9fb85..88639af 100755
--- a/bld/nco_dst.pl
+++ b/bld/nco_dst.pl
@@ -5,20 +5,20 @@
 
 # Usage:
 # Export tagged, public versions
-# /usr/bin/scp ${DATA}/nco-4.6.8.tar.gz zender,nco at web.sf.net:/home/project-web/nco/htdocs/src
-
-# ${HOME}/nco/bld/nco_dst.pl --dbg=2 --bld --cln nco-4.6.8 # Build, do not release on SF
-# ${HOME}/nco/bld/nco_dst.pl --dbg=2 --bld --cln --sf nco-4.6.8 # Build, release on SF
-# ${HOME}/nco/bld/nco_dst.pl --dbg=2 --cln --nst_all nco-4.6.8 # Install, do not build
-# ${HOME}/nco/bld/nco_dst.pl --dbg=2 --bld --cln --nst_all nco-4.6.8 # Build and install
-# ${HOME}/nco/bld/nco_dst.pl --dbg=2 --cln --acd_cnt nco-4.6.8
-# ${HOME}/nco/bld/nco_dst.pl --dbg=2 --cln --acd_prs nco-4.6.8
-# ${HOME}/nco/bld/nco_dst.pl --dbg=2 --cln --cgd_cnt nco-4.6.8
-# ${HOME}/nco/bld/nco_dst.pl --dbg=2 --cln --cray_prs nco-4.6.8
-# ${HOME}/nco/bld/nco_dst.pl --dbg=2 --cln --bbl_cnt nco-4.6.8
-# ${HOME}/nco/bld/nco_dst.pl --dbg=2 --cln --blk_cnt nco-4.6.8
-# ${HOME}/nco/bld/nco_dst.pl --dbg=2 --cln --dat_cnt nco-4.6.8
-# ${HOME}/nco/bld/nco_dst.pl --dbg=2 --cln --ute_prs nco-4.6.8
+# /usr/bin/scp ${DATA}/nco-4.6.9.tar.gz zender,nco at web.sf.net:/home/project-web/nco/htdocs/src
+
+# ${HOME}/nco/bld/nco_dst.pl --dbg=2 --bld --cln nco-4.6.9 # Build, do not release on SF
+# ${HOME}/nco/bld/nco_dst.pl --dbg=2 --bld --cln --sf nco-4.6.9 # Build, release on SF
+# ${HOME}/nco/bld/nco_dst.pl --dbg=2 --cln --nst_all nco-4.6.9 # Install, do not build
+# ${HOME}/nco/bld/nco_dst.pl --dbg=2 --bld --cln --nst_all nco-4.6.9 # Build and install
+# ${HOME}/nco/bld/nco_dst.pl --dbg=2 --cln --acd_cnt nco-4.6.9
+# ${HOME}/nco/bld/nco_dst.pl --dbg=2 --cln --acd_prs nco-4.6.9
+# ${HOME}/nco/bld/nco_dst.pl --dbg=2 --cln --cgd_cnt nco-4.6.9
+# ${HOME}/nco/bld/nco_dst.pl --dbg=2 --cln --cray_prs nco-4.6.9
+# ${HOME}/nco/bld/nco_dst.pl --dbg=2 --cln --bbl_cnt nco-4.6.9
+# ${HOME}/nco/bld/nco_dst.pl --dbg=2 --cln --blk_cnt nco-4.6.9
+# ${HOME}/nco/bld/nco_dst.pl --dbg=2 --cln --dat_cnt nco-4.6.9
+# ${HOME}/nco/bld/nco_dst.pl --dbg=2 --cln --ute_prs nco-4.6.9
 
 # Export daily snapshot
 # ${HOME}/nco/bld/nco_dst.pl --dbg=2 
@@ -256,7 +256,7 @@ if($bld){
 # Set up FTP server
     chdir $dst_pth_pfx or die "$prg_nm: ERROR unable to chdir to $dst_pth_pfx: $!\n"; # $! is system error string
     cmd_prc("$cp_cmd $doc_fl ./$dst_vrs/doc"); # Copy derived documentation to source directory
-    cmd_prc("$tar_cmd cvzf $dst_fl --exclude='nco-4.6.8/debian*' --exclude='.cvsignore' --exclude=ncap_lex.c --exclude=ncap_yacc.[ch] ./$dst_vrs"); # Create gzipped tarfile
+    cmd_prc("$tar_cmd cvzf $dst_fl --exclude='nco-4.6.9/debian*' --exclude='.cvsignore' --exclude=ncap_lex.c --exclude=ncap_yacc.[ch] ./$dst_vrs"); # Create gzipped tarfile
     cmd_prc("$rsh_cmd $www_mch $rm_cmd $www_drc/src/$dst_fl"); # Remove any distribution with same name
     if($dly_snp){cmd_prc("$rsh_cmd $www_mch $rm_cmd -r $www_drc/src/nco-????????.tar.gz");} # Remove previous daily snapshots from WWW server
     cmd_prc("$rcp_cmd $dst_fl $www_mch:$www_drc/src"); # Copy local tarfile to WWW server
diff --git a/bm/NCO_rgr.pm b/bm/NCO_rgr.pm
index 214dadf..95cd013 100644
--- a/bm/NCO_rgr.pm
+++ b/bm/NCO_rgr.pm
@@ -134,11 +134,11 @@ if($USER =~ /zender/){
 # NB: area variable is not in ACME cube-sphere native output so this answer is not area-weighted
 # ncclimo -v FSNT,AODVIS -c famipc5_ne30_v0.3_00003 -s 1980 -e 1983 -i ${DATA}/ne30/raw -o ${DATA}/ne30/clm
 # ncwa -O ${DATA}/ne30/clm/famipc5_ne30_v0.3_00003_ANN_197912_198311_climo.nc ~/foo.nc
-# ncks -O -H -u -C -v FSNT ~/foo.nc
+# ncks -H --trd -u -C -v FSNT ~/foo.nc
 	$dsc_sng="ncclimo (depends on input files in ${DATA}/ne30/raw)";
 	$tst_cmd[0]="ncclimo -v FSNT,AODVIS -c famipc5_ne30_v0.3_00003 -s 1980 -e 1983 -i ${DATA}/ne30/raw -o ${DATA}/ne30/clm > ${HOME}/foo.ncclimo";
 	$tst_cmd[1]="ncwa -O $fl_fmt $nco_D_flg ${DATA}/ne30/clm/famipc5_ne30_v0.3_00003_ANN_197912_198311_climo.nc %tmp_fl_00%";
-	$tst_cmd[2]="ncks -O $fl_fmt $nco_D_flg -H -u -C -v FSNT %tmp_fl_00%";
+	$tst_cmd[2]="ncks -O $fl_fmt $nco_D_flg -H --trd -u -C -v FSNT %tmp_fl_00%";
 	$tst_cmd[3]="FSNT = 235.965 W/m2";
 	$tst_cmd[4]="SS_OK";
 	NCO_bm::tst_run(\@tst_cmd);
@@ -158,9 +158,9 @@ if($USER eq 'zender'){
 	# valgrind --leak-check=yes --show-reachable=yes --suppressions=${HOME}/nco/doc/valgrind.txt --tool=memcheck ncks -O -D 5 --map=${DATA}/maps/map_ne30np4_to_fv129x256_aave.150418.nc ${DATA}/ne30/rgr/ne30_tst.nc ~/foo.nc > ~/foo 2>&1
 	# ncks -O -D 5 --map=${DATA}/maps/map_ne30np4_to_fv129x256_aave.150418.nc ${DATA}/ne30/rgr/ne30_tst.nc ~/foo.nc
 	# ncwa -O -w area ~/foo.nc ~/foo2.nc
-	# ncks -H -u -C -v FSNT ~/foo2.nc
+	# ncks -H --trd -u -C -v FSNT ~/foo2.nc
 	# ncwa -O -y ttl -v area ~/foo.nc ~/foo3.nc
-	# ncks -H -u -C -v area ~/foo3.nc
+	# ncks -H --trd -u -C -v area ~/foo3.nc
 	
 	$dsc_sng="ncks regrid FSNT 1D->2D to test conservation (does SSH/scp to dust.ess.uci.edu)";
 	$tst_cmd[0]="scp dust.ess.uci.edu:data/maps/map_ne30np4_to_fv129x256_aave.20150901.nc .";
@@ -173,14 +173,14 @@ if($USER eq 'zender'){
 #	$tst_cmd[2]="ncks -h -O $fl_fmt $nco_D_flg --map=".$drc_dat."/map_ne30np4_to_fv129x256_aave.20150901.nc ".$drc_dat."/ne30_tst.nc %tmp_fl_00%";
 	$tst_cmd[3]="/bin/cp -f %tmp_fl_00% ne30_2D.nc";
 	$tst_cmd[4]="ncwa -O $fl_fmt $nco_D_flg -w area %tmp_fl_00% %tmp_fl_01%";
-	$tst_cmd[5]="ncks -O $fl_fmt $nco_D_flg -H -u -C -v FSNT %tmp_fl_01%";
+	$tst_cmd[5]="ncks -O $fl_fmt $nco_D_flg -H --trd -u -C -v FSNT %tmp_fl_01%";
 	$tst_cmd[6]="FSNT = 244.124 W/m2";
 	$tst_cmd[7]="SS_OK";
 	NCO_bm::tst_run(\@tst_cmd);
 	$#tst_cmd=0; # Reset array
 
 	$dsc_sng="ncks regrid AODVIS 1D->2D to test missing value treatment";
-	$tst_cmd[0]="ncks -O $fl_fmt $nco_D_flg -H -u -C -v AODVIS %tmp_fl_01%";
+	$tst_cmd[0]="ncks -O $fl_fmt $nco_D_flg -H --trd -u -C -v AODVIS %tmp_fl_01%";
 	$tst_cmd[1]="AODVIS = 0.151705";
 	$tst_cmd[2]="SS_OK";
 	NCO_bm::tst_run(\@tst_cmd);
@@ -189,7 +189,7 @@ if($USER eq 'zender'){
 	$dsc_sng="ncks regrid area 1D->2D to test grid area integral/normalization";
 	$tst_cmd[0]="ncks -O $fl_fmt $nco_D_flg --map=${drc_dat}/map_ne30np4_to_fv129x256_aave.20150901.nc ${drc_dat}/ne30_tst.nc %tmp_fl_00%";
 	$tst_cmd[1]="ncwa -O $fl_fmt $nco_D_flg -y ttl -v area %tmp_fl_00% %tmp_fl_02%";
-	$tst_cmd[2]="ncks -O $fl_fmt $nco_D_flg -H -u -C -v area %tmp_fl_02%";
+	$tst_cmd[2]="ncks -O $fl_fmt $nco_D_flg -H --trd -u -C -v area %tmp_fl_02%";
 	$tst_cmd[3]="area = 12.5663706144 steradian";
 	$tst_cmd[4]="SS_OK";
 	NCO_bm::tst_run(\@tst_cmd);
@@ -200,7 +200,7 @@ if($USER eq 'zender'){
 	$tst_cmd[1]="scp dust.ess.uci.edu:data/ne30/rgr/ne30_tst.nc .";
 	$tst_cmd[2]="ncks -O $fl_fmt $nco_D_flg --map=map_ne30np4_to_fv257x512_bilin.20150901.nc ne30_tst.nc %tmp_fl_00%";
 	$tst_cmd[3]="ncwa -O $fl_fmt $nco_D_flg -w gw %tmp_fl_00% %tmp_fl_01%";
-	$tst_cmd[4]="ncks -O $fl_fmt $nco_D_flg -H -u -C -v FSNT %tmp_fl_01%";
+	$tst_cmd[4]="ncks -O $fl_fmt $nco_D_flg -H --trd -u -C -v FSNT %tmp_fl_01%";
 	$tst_cmd[5]="FSNT = 244.237 W/m2";
 	$tst_cmd[6]="SS_OK";
 	NCO_bm::tst_run(\@tst_cmd);
@@ -210,7 +210,7 @@ if($USER eq 'zender'){
 	$tst_cmd[0]="scp dust.ess.uci.edu:data/maps/map_fv129x256_to_ne30np4_aave.20150901.nc .";
 	$tst_cmd[1]="ncks -O $fl_fmt $nco_D_flg --map=map_fv129x256_to_ne30np4_aave.20150901.nc ne30_2D.nc %tmp_fl_00%";
 	$tst_cmd[2]="ncwa -O $fl_fmt $nco_D_flg -w area %tmp_fl_00% %tmp_fl_01%";
-	$tst_cmd[3]="ncks -O $fl_fmt $nco_D_flg -H -u -C -v FSNT %tmp_fl_01%";
+	$tst_cmd[3]="ncks -O $fl_fmt $nco_D_flg -H --trd -u -C -v FSNT %tmp_fl_01%";
 	$tst_cmd[4]="FSNT = 244.124 W/m2";
 	$tst_cmd[5]="SS_OK";
 	NCO_bm::tst_run(\@tst_cmd);
@@ -221,7 +221,7 @@ if($USER eq 'zender'){
 	$tst_cmd[1]="scp dust.ess.uci.edu:data/ne30/rgr/ne30_2D.nc .";
 	$tst_cmd[2]="ncks -O $fl_fmt $nco_D_flg --map=map_fv129x256_to_fv257x512_aave.20150901.nc ne30_2D.nc %tmp_fl_00%";
 	$tst_cmd[3]="ncwa -O $fl_fmt $nco_D_flg -w area %tmp_fl_00% %tmp_fl_01%";
-	$tst_cmd[4]="ncks -O $fl_fmt $nco_D_flg -H -u -C -v FSNT %tmp_fl_01%";
+	$tst_cmd[4]="ncks -O $fl_fmt $nco_D_flg -H --trd -u -C -v FSNT %tmp_fl_01%";
 	$tst_cmd[5]="FSNT = 244.124 W/m2";
 	$tst_cmd[6]="SS_OK";
 	NCO_bm::tst_run(\@tst_cmd);
@@ -232,40 +232,40 @@ if($USER eq 'zender'){
 	$tst_cmd[1]="scp dust.ess.uci.edu:data/ne30/rgr/ne30_tst.nc .";
 	$tst_cmd[2]="ncks -O $fl_fmt $nco_D_flg --map=map_ne30np4_to_ne30np4_aave.20150603.nc ne30_tst.nc %tmp_fl_00%";
 	$tst_cmd[3]="ncwa -O $fl_fmt $nco_D_flg -w area %tmp_fl_00% %tmp_fl_01%";
-	$tst_cmd[4]="ncks -O $fl_fmt $nco_D_flg -H -u -C -v FSNT %tmp_fl_01%";
+	$tst_cmd[4]="ncks -O $fl_fmt $nco_D_flg -H --trd -u -C -v FSNT %tmp_fl_01%";
 	$tst_cmd[5]="FSNT = 244.124 W/m2";
 	$tst_cmd[6]="SS_OK";
 	NCO_bm::tst_run(\@tst_cmd);
 	$#tst_cmd=0; # Reset array
 
 # ncks -O --rgr grid=~/foo_grid.nc --rgr latlon=64,128 --rgr lat_typ=gss --rgr lon_typ=Grn_ctr ~/nco/data/in.nc ~/foo.nc
-# ncks -O -H -u -C -s %18.15f -d grid_size,0 -v grid_center_lat ~/foo_grid.nc
+# ncks -O -H --trd -u -C -s %18.15f -d grid_size,0 -v grid_center_lat ~/foo_grid.nc
 # 20151205: using %tmp_fl_00% in arguments like "--rgr grid=%tmp_fl_00%" leads to epic fail, so hard-code filenames that are arguments
 	$dsc_sng="ncks generate T42 gridfile";
 	$tst_cmd[0]="ncks -O $fl_fmt $nco_D_flg --rgr grid=foo_grid.nc --rgr latlon=64,128 --rgr lat_typ=gss --rgr lon_typ=Grn_ctr $in_pth_arg in.nc %tmp_fl_01%";
-	$tst_cmd[1]="ncks -O $fl_fmt $nco_D_flg -H -u -C -s %18.15f -d grid_size,0 -v grid_center_lat foo_grid.nc";
+	$tst_cmd[1]="ncks -O $fl_fmt $nco_D_flg -H --trd -u -C -s %18.15f -d grid_size,0 -v grid_center_lat foo_grid.nc";
 	$tst_cmd[2]="-87.863798839232629";
 	$tst_cmd[3]="SS_OK";
 	NCO_bm::tst_run(\@tst_cmd);
 	$#tst_cmd=0; # Reset array
 
 # ncks -O -D 1 --rgr skl=~/foo_skl.nc --rgr grid=~/foo_grid.nc --rgr latlon=64,128 --rgr lat_typ=gss --rgr lon_typ=Grn_ctr ~/nco/data/in.nc ~/foo.nc
-# ncks -O -H -u -C -s %g -d lat,0 -v gw ~/foo_skl.nc
+# ncks -O -H --trd -u -C -s %g -d lat,0 -v gw ~/foo_skl.nc
 	$dsc_sng="ncks generate T42-grid skeleton file";
 	$tst_cmd[0]="ncks -O $fl_fmt $nco_D_flg --rgr skl=foo_skl.nc --rgr grid=foo_grid.nc --rgr latlon=64,128 --rgr lat_typ=gss --rgr lon_typ=Grn_ctr $in_pth_arg in.nc %tmp_fl_02%";
-	$tst_cmd[1]="ncks -O $fl_fmt $nco_D_flg -H -u -C -s %g -d lat,0 -v gw foo_skl.nc";
+	$tst_cmd[1]="ncks -O $fl_fmt $nco_D_flg -H --trd -u -C -s %g -d lat,0 -v gw foo_skl.nc";
 	$tst_cmd[2]="0.00178328";
 	$tst_cmd[3]="SS_OK";
 	NCO_bm::tst_run(\@tst_cmd);
 	$#tst_cmd=0; # Reset array
 
 # ncks -O --rgr nfr=y --rgr grid=~/foo_grid.nc ~/nco/data/ne30_2D.nc ~/foo.nc
-# ncks -O -H -u -C -s %8.5f -d grid_size,256 -v grid_center_lat ~/foo_grid.nc
+# ncks -O -H --trd -u -C -s %8.5f -d grid_size,256 -v grid_center_lat ~/foo_grid.nc
 # 20151205: using %tmp_fl_00% in arguments like "--rgr grid=%tmp_fl_00%" leads to epic fail, so hard-code filenames that are arguments
 	$dsc_sng="ncks infer 129x256 FV gridfile (does SSH/scp to dust.ess.uci.edu)";
 	$tst_cmd[0]="scp dust.ess.uci.edu:data/ne30/rgr/ne30_2D.nc .";
 	$tst_cmd[1]="ncks -O $fl_fmt $nco_D_flg --rgr nfr=y --rgr grid=foo_grid.nc ne30_2D.nc %tmp_fl_01%";
-	$tst_cmd[2]="ncks -O $fl_fmt $nco_D_flg -H -u -C -s %8.5f -d grid_size,256 -v grid_center_lat foo_grid.nc";
+	$tst_cmd[2]="ncks -O $fl_fmt $nco_D_flg -H --trd -u -C -s %8.5f -d grid_size,256 -v grid_center_lat foo_grid.nc";
 	$tst_cmd[3]="-88.59375";
 	$tst_cmd[4]="SS_OK";
 	NCO_bm::tst_run(\@tst_cmd);
@@ -276,7 +276,7 @@ if($USER eq 'zender'){
 	$tst_cmd[1]="scp dust.ess.uci.edu:data/ne30/rgr/ne30_tst.nc .";
 	$tst_cmd[2]="ncremap -i ne30_tst.nc -m map_ne30np4_to_fv129x256_aave.20150901.nc -o %tmp_fl_00%";
 	$tst_cmd[3]="ncwa -O $fl_fmt $nco_D_flg -w area %tmp_fl_00% %tmp_fl_01%";
-	$tst_cmd[4]="ncks -O $fl_fmt $nco_D_flg -H -u -C -v FSNT %tmp_fl_01%";
+	$tst_cmd[4]="ncks -O $fl_fmt $nco_D_flg -H --trd -u -C -v FSNT %tmp_fl_01%";
 	$tst_cmd[5]="FSNT = 244.124 W/m2";
 	$tst_cmd[6]="SS_OK";
 	NCO_bm::tst_run(\@tst_cmd);
@@ -290,7 +290,7 @@ if($USER eq 'zender'){
 # ncremap -a conserve -s ~/grd_t42.nc -g ~/grd_2x2.nc -m ~/map_t42_to_2x2.nc
 # ncremap -i ~/dat_t42.nc -m ~/map_t42_to_2x2.nc -o ~/dat_2x2.nc
 # ncwa -O ~/dat_2x2.nc ~/dat_avg.nc
-# ncks -C -H -v tst ~/dat_avg.nc
+# ncks -C -H --trd -v tst ~/dat_avg.nc
 	$dsc_sng="ncremap generate fake T42 dataset, conservatively regrid to 2x2";
 	$tst_cmd[0]="ncks -O $fl_fmt $nco_D_flg --rgr skl=foo_skl_t42.nc --rgr grid=foo_grd_t42.nc --rgr latlon=64,128 --rgr lat_typ=gss --rgr lon_typ=Grn_ctr $in_pth_arg in.nc %tmp_fl_00%";
 	$tst_cmd[1]="ncks -O $fl_fmt $nco_D_flg --rgr grid=foo_grd_2x2.nc --rgr latlon=90,180 --rgr lat_typ=eqa --rgr lon_typ=Grn_wst $in_pth_arg in.nc %tmp_fl_00%";
@@ -299,7 +299,7 @@ if($USER eq 'zender'){
 	$tst_cmd[4]="ncremap -a conserve -s foo_grd_t42.nc -g foo_grd_2x2.nc -m foo_map_t42_to_2x2.nc";
 	$tst_cmd[5]="ncremap -i foo_dat_t42.nc -m foo_map_t42_to_2x2.nc -o foo_dat_2x2.nc";
 	$tst_cmd[6]="ncwa -O $fl_fmt $nco_D_flg foo_dat_2x2.nc foo_dat_avg.nc";
-	$tst_cmd[7]="ncks -C -H -v tst foo_dat_avg.nc";
+	$tst_cmd[7]="ncks -C -H --trd -v tst foo_dat_avg.nc";
 	$tst_cmd[8]="tst = 1";
 	$tst_cmd[9]="SS_OK";
 	NCO_bm::tst_run(\@tst_cmd);
@@ -320,7 +320,7 @@ if($USER eq 'zender'){
     if(0){
     $dsc_sng="running ncap2.in script in nco_bm.pl (failure expected)";
     $tst_cmd[0]="ncap2 -h -O $fl_fmt $nco_D_flg -v -S ncap2.in $in_pth_arg in.nc %tmp_fl_00% %stdouterr%";
-    $tst_cmd[1]="ncks -C -H -v b2 --no_blank -s '%d' %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -v b2 --no_blank -s '%d' %tmp_fl_00%";
     $tst_cmd[2]="999";
     $tst_cmd[3]="NO_SS";
 #    $tst_cmd[3]="SS_OK";
@@ -329,144 +329,158 @@ if($USER eq 'zender'){
 # printf("paused @ [%s:%d] - hit return to continue\n", __FILE__, __LINE__); my $wait = <STDIN>;
     } # endif false
 
+# ncap2 #1
 # ncap2 -O -v -s 'tpt_mod=tpt%273.0f' ~/nco/data/in.nc ~/foo.nc
-# ncks -C -H -v tpt_mod -s '%.1f' ~/foo.nc
+# ncks -C -H --trd -v tpt_mod -s '%.1f' ~/foo.nc
     $dsc_sng="Testing float modulo float";
     $tst_cmd[0]="ncap2 -h -O $fl_fmt $nco_D_flg -C -v -s 'tpt_mod=tpt%273.0f' $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -v tpt_mod -s '%.1f ' %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -v tpt_mod -s '%.1f ' %tmp_fl_00%";
     $tst_cmd[2]="0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 ";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
     $#tst_cmd=0; # Reset array
     
+# ncap2 #2
     $dsc_sng="Testing foo=log(e_flt)^1 (may fail on old AIX TODO ncap57)";
     $tst_cmd[0]="ncap2 -h -O $fl_fmt $nco_D_flg -C -v -s 'foo=log(e_flt)^1' $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -v foo -s '%.6f\\n' %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -v foo -s '%.6f' %tmp_fl_00%";
     $tst_cmd[2]="1.000000";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
     $#tst_cmd=0; # Reset array
     
+# ncap2 #3
     $dsc_sng="Testing foo=log(e_dbl)^1";
     $tst_cmd[0]="ncap2 -h -O $fl_fmt $nco_D_flg -C -v -s 'foo=log(e_dbl)^1' $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%.12f\\n' %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%.12f' %tmp_fl_00%";
     $tst_cmd[2]="1.000000000000";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
     $#tst_cmd=0; # Reset array
     
+# ncap2 #4
     $dsc_sng="Testing foo=4*atan(1)";
     $tst_cmd[0]="ncap2 -h -O $fl_fmt $nco_D_flg -C -v -s 'foo=4*atan(1)' $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%.12f\\n' %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%.12f' %tmp_fl_00%";
     $tst_cmd[2]="3.141592741013";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
     $#tst_cmd=0; # Reset array
     
+# ncap2 #5
+# ncap2 -h -O $fl_fmt $nco_D_flg -C -v -s 'foo=erf(1)' ~/nco/data/in.nc ~/foo.nc
+# ncks -C -H --trd -s '%.12f' ~/foo.nc
     $dsc_sng="Testing foo=erf(1) (may fail on old AIX TODO ncap57)";
     $tst_cmd[0]="ncap2 -h -O $fl_fmt $nco_D_flg -C -v -s 'foo=erf(1)' $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%.12f\\n' %tmp_fl_00%";
-    $tst_cmd[2]="0.842701";
+    $tst_cmd[1]="ncks -C -H --trd -s '%.12f' %tmp_fl_00%";
+    $tst_cmd[2]="0.842700779438";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
     $#tst_cmd=0; # Reset array
     
-    #fails - wrong result ???
+# ncap2 #6
     $dsc_sng="Testing foo=gamma(0.5) (may fail on old AIX TODO ncap57)";
     $tst_cmd[0]="ncap2 -h -O $fl_fmt $nco_D_flg -C -v -s 'foo=gamma(0.5)' $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%.12f\\n' %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%.12f' %tmp_fl_00%";
     $tst_cmd[2]="1.772453851";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
     $#tst_cmd=0; # Reset array
     
+# ncap2 #7
     $dsc_sng="Testing foo=sin(pi/2)";
     $tst_cmd[0]="ncap2 -h -O $fl_fmt $nco_D_flg -C -v -s 'pi=4*atan(1);foo=sin(pi/2)' $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -v foo -s '%.12f\\n' %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -v foo -s '%.12f' %tmp_fl_00%";
     $tst_cmd[2]="1.000000000000";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
     $#tst_cmd=0; # Reset array
     
+# ncap2 #8
     $dsc_sng="Testing foo=cos(pi)";
     $tst_cmd[0]="ncap2 -h -O $fl_fmt $nco_D_flg -C -v -s 'pi=4*atan(1);foo=cos(pi)' $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -v foo -s '%.12f\\n' %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -v foo -s '%.12f' %tmp_fl_00%";
     $tst_cmd[2]="-1.000000000000";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
     $#tst_cmd=0; # Reset array\
     
+# ncap2 #9
     $dsc_sng="Casting variable with same name as dimension (ncap81 failed with netCDF4 until netCDF 4.3.x)";
     $tst_cmd[0]="ncap2 -h -O $fl_fmt $nco_D_flg -C -v -s 'defdim(\"a\",3);defdim(\"b\",4); a[\$a,\$b]=10;c=a(1,1);' $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -v c -s '%i' %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -v c -s '%i' %tmp_fl_00%";
     $tst_cmd[2]="10";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
     $#tst_cmd=0; # Reset array
 
+# ncap2 #10
     $dsc_sng="Casting variable with a single dim of sz=1 (ncap81 failed with netCDF4 until netCDF 4.3.x)";
     $tst_cmd[0]="ncap2 -h -O $fl_fmt $nco_D_flg -C -v -s 'defdim(\"a\",1); b[\$a]=10;c=b(0:0);' $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncwa -h -O $fl_fmt $nco_D_flg -C -a a %tmp_fl_00% %tmp_fl_01%";
-    $tst_cmd[2]="ncks -C -H -v b -s '%i' %tmp_fl_01%";
+    $tst_cmd[2]="ncks -C -H --trd -v b -s '%i' %tmp_fl_01%";
     $tst_cmd[3]="10";
     $tst_cmd[4]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
     $#tst_cmd=0; # Reset array
 
+# ncap2 #11
 # ncap2 -O -v -s 'lat_min=min(lat)' ~/nco/data/in.nc ~/foo.nc
-# ncks -C -H -v lat_min -s '%g' ~/foo.nc
+# ncks -C -H --trd -v lat_min -s '%g' ~/foo.nc
     $dsc_sng="Verify non-averaging functions min/max on coordinate variables";
     $tst_cmd[0]="ncap2 -h -O $fl_fmt $nco_D_flg -v -s 'lat_min=min(lat)' $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -v lat_min -s '%g' %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -v lat_min -s '%g' %tmp_fl_00%";
     $tst_cmd[2]="-90";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
     $#tst_cmd=0; # Reset array
 
+# ncap2 #12
     $dsc_sng="Run script to to test gsl functions -FAILS IF NOT linked to gsl lib";
     $tst_cmd[0]="ncap2 -h -O $fl_fmt $nco_D_flg -v -S '../data/gsl_sf.in' $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -v nbr_err_ttl -s '%d' %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -v nbr_err_ttl -s '%d' %tmp_fl_00%";
     $tst_cmd[2]="0";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
     $#tst_cmd=0; # Reset array
 
+# ncap2 #13
     $dsc_sng="Run script to to test casting, hyperslabbing and intrinsic functions";
     $tst_cmd[0]="ncap2 -h -O $fl_fmt $nco_D_flg -v -S '../data/bsc_tst.nco' $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -v nbr_err_ttl -s '%d' %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -v nbr_err_ttl -s '%d' %tmp_fl_00%";
     $tst_cmd[2]="0";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
     $#tst_cmd=0; # Reset array
 
+# ncap2 #14
 # ncap2 -O -v -S ~/nco/data/vpointer-tst.nco ~/nco/data/in.nc ~/foo.nc
    $dsc_sng="Run script to test conversion of input vars to type NC_DOUBLE using var-pointers";
     $tst_cmd[0]="ncap2 -h -O $fl_fmt $nco_D_flg -v -S '../data/vpointer-tst.nco' $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -v nbr_err -s '%d' %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -v nbr_err -s '%d' %tmp_fl_00%";
     $tst_cmd[2]="0";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
     $#tst_cmd=0; # Reset array
 
+# ncap2 #15
    $dsc_sng="Run script to test udunits code";
     $tst_cmd[0]="ncap2 -h -O $fl_fmt $nco_D_flg -v -S '../data/tst-udunits.nco' $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -v nbr_err -s '%d' %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -v nbr_err -s '%d' %tmp_fl_00%";
     $tst_cmd[2]="0";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
     $#tst_cmd=0; # Reset array
 
 
+# ncap2 #16
     $dsc_sng="Run script to to test ncap2 NC_STRING handling (failure expected 2017-06-21)";
     $tst_cmd[0]="ncap2 -h -O $fl_fmt $nco_D_flg -v -S '../data/string.nco' $in_pth_arg in_4.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -v nbr_err_ttl -s '%d' %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -v nbr_err_ttl -s '%d' %tmp_fl_00%";
     $tst_cmd[2]="0";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
     $#tst_cmd=0; # Reset array
-
-
-
     
     if($dodap eq "FALSE"){
 ####################
@@ -477,10 +491,10 @@ if($USER eq 'zender'){
 
 #ncatted #1
 # ncatted -h -O $nco_D_flg -a units,,m,c,'meter second-1' ~/nco/data/in.nc ~/foo.nc
-# ncks -C -m -v lev ~/foo.nc | grep units | cut -d ' ' -f 11-12
+# ncks -C -m --trd -v lev ~/foo.nc | grep units | cut -d ' ' -f 11-12
 	$dsc_sng="Modify all existing units attributes to meter second-1";
 	$tst_cmd[0]="ncatted -h -O $nco_D_flg -a units,,m,c,'meter second-1' $in_pth_arg in.nc %tmp_fl_00%";
-	$tst_cmd[1]="ncks -C -m -v lev %tmp_fl_00% | grep units | cut -d ' ' -f 11-12"; ## daniel:fixme cut/ncks but how to do grep?
+	$tst_cmd[1]="ncks -C -m --trd -v lev %tmp_fl_00% | grep units | cut -d ' ' -f 11-12"; ## daniel:fixme cut/ncks but how to do grep?
 	$tst_cmd[2]="meter second-1";
 	$tst_cmd[3]="SS_OK";
 	NCO_bm::tst_run(\@tst_cmd);
@@ -491,7 +505,7 @@ if($USER eq 'zender'){
 #ncatted #2
 	$dsc_sng="Change _FillValue attribute from 1.0e36 to 0.0 in netCDF3 file";
 	$tst_cmd[0]="ncatted -h -O $nco_D_flg -a _FillValue,val_one_mss,m,f,0.0 $in_pth_arg in.nc %tmp_fl_00%";
-	$tst_cmd[1]="ncks -C -H -s '%g' -d lat,1 -v val_one_mss %tmp_fl_00%";
+	$tst_cmd[1]="ncks -C -H --trd -s '%g' -d lat,1 -v val_one_mss %tmp_fl_00%";
 	$tst_cmd[2]="0";
 	$tst_cmd[3]="SS_OK";
 	NCO_bm::tst_run(\@tst_cmd);
@@ -500,7 +514,7 @@ if($USER eq 'zender'){
 #ncatted #3
 	$dsc_sng="Create new _FillValue attribute";
 	$tst_cmd[0]="ncatted -h -O $nco_D_flg -a _FillValue,wgt_one,c,f,200.0 $in_pth_arg in.nc %tmp_fl_00%";
-	$tst_cmd[1]="ncks -C -H -s '%g' -d lat,1 -v wgt_one %tmp_fl_00%";
+	$tst_cmd[1]="ncks -C -H --trd -s '%g' -d lat,1 -v wgt_one %tmp_fl_00%";
 	$tst_cmd[2]="1";
 	$tst_cmd[3]="SS_OK";
 	NCO_bm::tst_run(\@tst_cmd);
@@ -508,9 +522,12 @@ if($USER eq 'zender'){
 
 #ncatted #4
 # Fragile: Test fails when command length changes, e.g., on MACOSX
+# ncatted -O --hdr_pad=1000 -a missing_value,val_one_mss,m,f,0.0 ~/nco/data/in.nc ~/foo.nc
+# ncks -M --trd ~/foo.nc | grep hdr_pad | wc > ~/foo
+# cut -c 14-15 ~/foo
 	$dsc_sng="Pad header with 1000B extra for future metadata (failure OK/expected since test depends on command-line length)";
 	$tst_cmd[0]="ncatted -O --hdr_pad=1000 $nco_D_flg -a missing_value,val_one_mss,m,f,0.0 $in_pth_arg in.nc %tmp_fl_00%";
-	$tst_cmd[1]="ncks -M %tmp_fl_00% | grep hdr_pad | wc > %tmp_fl_01%";
+	$tst_cmd[1]="ncks -M --trd %tmp_fl_00% | grep hdr_pad | wc > %tmp_fl_01%";
 	$tst_cmd[2]="cut -c 14-15 %tmp_fl_01%"; ## Daniel:fxm cut/ncks, but how to do grep and wc???
 	$tst_cmd[3]="27";
 	$tst_cmd[4]="SS_OK";
@@ -520,11 +537,11 @@ if($USER eq 'zender'){
 #ncatted #5
 # ncatted -O $nco_D_flg -a nw1,'^three*',c,i,999 ~/nco/data/in.nc ~/foo.nc
 # ncap2 -v -C -O -s 'n2=three_dmn_var_int at nw1;' ~/foo.nc ~/foo1.nc
-# ncks -O -C -H -s '%i' -v n2 ~/foo1.nc
+# ncks -O -C -H --trd -s '%i' -v n2 ~/foo1.nc
 	$dsc_sng="Variable wildcarding (requires regex)";
 	$tst_cmd[0]="ncatted -O $nco_D_flg -a nw1,'^three*',c,i,999 $in_pth_arg in.nc %tmp_fl_00%";
 	$tst_cmd[1]="ncap2 -v -C -O -s 'n2=three_dmn_var_int\@nw1;' %tmp_fl_00% %tmp_fl_01%";
-	$tst_cmd[2]="ncks -O -C -H -s '%i' -v n2 %tmp_fl_01%";
+	$tst_cmd[2]="ncks -O -C -H --trd -s '%i' -v n2 %tmp_fl_01%";
 	$tst_cmd[3]="999";
 	$tst_cmd[4]="SS_OK";
 	NCO_bm::tst_run(\@tst_cmd);
@@ -540,7 +557,7 @@ if($USER eq 'zender'){
 #ncatted -O -a purpose,rlev,m,c,new_value in_grp_3.nc ~/foo.nc
 	$dsc_sng="(Groups) Modify attribute for variable (input relative name)";
 	$tst_cmd[0]="ncatted -O $nco_D_flg -a purpose,rlev,m,c,new_value $in_pth_arg in_grp_3.nc %tmp_fl_00%";
-	$tst_cmd[1]="ncks -m -g g3 -v rlev %tmp_fl_00%";
+	$tst_cmd[1]="ncks -m --trd -g g3 -v rlev %tmp_fl_00%";
 	$tst_cmd[2]="rlev attribute 0: purpose, size = 9 NC_CHAR, value = new_value";
 	$tst_cmd[3]="SS_OK";
 	NCO_bm::tst_run(\@tst_cmd);
@@ -549,7 +566,7 @@ if($USER eq 'zender'){
 #ncatted #7	
 	$dsc_sng="(Groups) Modify attribute for variable (input absolute name)";
 	$tst_cmd[0]="ncatted -O $nco_D_flg -a purpose,/g3/rlev,m,c,new_value $in_pth_arg in_grp_3.nc %tmp_fl_00%";
-	$tst_cmd[1]="ncks -m -g g3 -v rlev %tmp_fl_00%";
+	$tst_cmd[1]="ncks -m --trd -g g3 -v rlev %tmp_fl_00%";
 	$tst_cmd[2]="rlev attribute 0: purpose, size = 9 NC_CHAR, value = new_value";
 	$tst_cmd[3]="SS_OK";
 	NCO_bm::tst_run(\@tst_cmd);
@@ -558,7 +575,7 @@ if($USER eq 'zender'){
 #ncatted #8
 	$dsc_sng="(Groups) Modify attribute for group (input relative name)";
 	$tst_cmd[0]="ncatted -O $nco_D_flg -a g3_group_attribute,group,m,c,new_value $in_pth_arg in_grp_3.nc %tmp_fl_00%";
-	$tst_cmd[1]="ncks -M %tmp_fl_00% | grep g3_group_attribute";
+	$tst_cmd[1]="ncks -M --trd %tmp_fl_00% | grep g3_group_attribute";
 	$tst_cmd[2]="Group attribute 0: g3_group_attribute, size = 9 NC_CHAR, value = new_value";
 	$tst_cmd[3]="SS_OK";
 	NCO_bm::tst_run(\@tst_cmd);
@@ -567,7 +584,7 @@ if($USER eq 'zender'){
 #ncatted #9
 	$dsc_sng="(Groups) Variable wildcarding (requires regex)";
 	$tst_cmd[0]="ncatted -O $nco_D_flg -a nw1,'^three*',c,i,999 $in_pth_arg in_grp.nc %tmp_fl_00%";
-	$tst_cmd[1]="ncks -m -C -g g10 -v three_dmn_rec_var %tmp_fl_00%";
+	$tst_cmd[1]="ncks -m --trd -C -g g10 -v three_dmn_rec_var %tmp_fl_00%";
 	$tst_cmd[2]="three_dmn_rec_var attribute 1: nw1, size = 1 NC_INT, value = 999";
 	$tst_cmd[3]="SS_OK";
 	NCO_bm::tst_run(\@tst_cmd);
@@ -576,7 +593,7 @@ if($USER eq 'zender'){
 #ncatted #10
 	$dsc_sng="(Groups) Edit all variables";
 	$tst_cmd[0]="ncatted -O $nco_D_flg -a purpose,,m,c,new_value $in_pth_arg in_grp_3.nc %tmp_fl_00%";
-	$tst_cmd[1]="ncks -m -g g3 -v rlev %tmp_fl_00%";
+	$tst_cmd[1]="ncks -m --trd -g g3 -v rlev %tmp_fl_00%";
 	$tst_cmd[2]="rlev attribute 0: purpose, size = 9 NC_CHAR, value = new_value";
 	$tst_cmd[3]="SS_OK";
 	NCO_bm::tst_run(\@tst_cmd);
@@ -584,10 +601,10 @@ if($USER eq 'zender'){
 
 #ncatted #11
 # ncatted -h -O -a Conventions,group,m,c,new_value ~/nco/data/in_grp_3.nc ~/foo.nc
-# ncks -M ~/foo.nc | grep Conventions
+# ncks -M --trd ~/foo.nc | grep Conventions
 	$dsc_sng="(Groups) Modify global attribute";
 	$tst_cmd[0]="ncatted -h -O $nco_D_flg -a Conventions,group,m,c,new_value $in_pth_arg in_grp_3.nc %tmp_fl_00%";
-	$tst_cmd[1]="ncks -M %tmp_fl_00% | grep Conventions";
+	$tst_cmd[1]="ncks -M --trd %tmp_fl_00% | grep Conventions";
 	$tst_cmd[2]="Group attribute 0: Conventions, size = 9 NC_CHAR, value = new_value";
 	$tst_cmd[3]="SS_OK";
 	NCO_bm::tst_run(\@tst_cmd);
@@ -595,10 +612,10 @@ if($USER eq 'zender'){
 	
 #ncatted #12
 # ncatted -h -O -a _FillValue,val_one_mss,m,f,0.0 ~/nco/data/in_grp.nc ~/foo.nc
-# ncks -C -H -s '%g' -d lat,1 -v val_one_mss ~/foo.nc
+# ncks -C -H --trd -s '%g' -d lat,1 -v val_one_mss ~/foo.nc
 	$dsc_sng="Change _FillValue attribute from 1.0e36 to 0.0 on netCDF4 file";
 	$tst_cmd[0]="ncatted -h -O $nco_D_flg -a _FillValue,val_one_mss,m,f,0.0 $in_pth_arg in_grp.nc %tmp_fl_00%";
-	$tst_cmd[1]="ncks -C -H -s '%g' -d lat,1 -v val_one_mss %tmp_fl_00%";
+	$tst_cmd[1]="ncks -C -H --trd -s '%g' -d lat,1 -v val_one_mss %tmp_fl_00%";
         ###TODO 665
 	$tst_cmd[2]="0";
 	$tst_cmd[3]="SS_OK";
@@ -609,10 +626,10 @@ if($USER eq 'zender'){
 
 #ncatted #13
 # ncatted -O -a '.?_att$',att_var,o,i,999 ~/nco/data/in.nc ~/foo.nc
-# ncks -C -m -v att_var ~/foo.nc | grep float_att | cut -d ' ' -f 11
+# ncks -C -m --trd -v att_var ~/foo.nc | grep float_att | cut -d ' ' -f 11
 	$dsc_sng="Attribute wildcarding (requires regex)";
 	$tst_cmd[0]="ncatted -O $nco_D_flg -a '.?_att$\',att_var,o,i,999 $in_pth_arg in.nc %tmp_fl_00%";
-	$tst_cmd[1]="ncks -C -m -v att_var %tmp_fl_00% | grep float_att | cut -d ' ' -f 11";
+	$tst_cmd[1]="ncks -C -m --trd -v att_var %tmp_fl_00% | grep float_att | cut -d ' ' -f 11";
 	$tst_cmd[2]="999";
 	$tst_cmd[3]="SS_OK";
 	NCO_bm::tst_run(\@tst_cmd);
@@ -620,11 +637,11 @@ if($USER eq 'zender'){
 
 #ncatted #14
 # ncatted -O -a ,att_var,d,, ~/nco/data/in.nc ~/foo.nc
-# ncks -C -m -v att_var ~/foo.nc | wc | cut -d ' ' -f 7
+# ncks -C -m --trd -v att_var ~/foo.nc | wc | cut -d ' ' -f 7
 # Counting lines of output to verify no attributes remain
 	$dsc_sng="Delete all attributes";
 	$tst_cmd[0]="ncatted -O $nco_D_flg -a ,att_var,d,, $in_pth_arg in.nc %tmp_fl_00%";
-	$tst_cmd[1]="ncks -C -m -v att_var %tmp_fl_00% | wc | cut -d ' ' -f 7";
+	$tst_cmd[1]="ncks -C -m --trd -v att_var %tmp_fl_00% | wc | cut -d ' ' -f 7";
 	$tst_cmd[2]="4";
 	$tst_cmd[3]="SS_OK";
 	NCO_bm::tst_run(\@tst_cmd);
@@ -644,7 +661,7 @@ if($USER eq 'zender'){
     $dsc_sng="Difference a packed variable and be sure everything is zero or _FillValue by average whole remainder and comparing to zero.) FAILS with netCDF4";
     $tst_cmd[0]="ncbo $omp_flg -h -O $fl_fmt $nco_D_flg -v rec_var_dbl_mss_val_dbl_pck $in_pth_arg in.nc in.nc %tmp_fl_00%";;
     $tst_cmd[1]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg %tmp_fl_00% %tmp_fl_03%";;
-    $tst_cmd[2]="ncks -C -H -s '%g' -v rec_var_dbl_mss_val_dbl_pck %tmp_fl_03%";
+    $tst_cmd[2]="ncks -C -H --trd -s '%g' -v rec_var_dbl_mss_val_dbl_pck %tmp_fl_03%";
     $tst_cmd[3]="0.0";
     $tst_cmd[4]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -654,7 +671,7 @@ if($USER eq 'zender'){
     $dsc_sng="Whole file difference with broadcasting (OK to fail here fxm TODO nco757. Works with --mmr_drt, triggers segfault on OSs like FC Linux which have C-library armor. Harmless Failure caused by free'ing dangling pointer during memory cleanup.)";
     $tst_cmd[0]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -a time $in_pth_arg in.nc %tmp_fl_03%";;
     $tst_cmd[1]="ncbo $omp_flg -h -O $fl_fmt $nco_D_flg $in_pth/in.nc %tmp_fl_03% %tmp_fl_00%";;
-    $tst_cmd[2]="ncks -C -H -d time,9 -s '%g' -v rec_var_flt %tmp_fl_00%";
+    $tst_cmd[2]="ncks -C -H --trd -d time,9 -s '%g' -v rec_var_flt %tmp_fl_00%";
     $tst_cmd[3]="4.5";
     $tst_cmd[4]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -664,7 +681,7 @@ if($USER eq 'zender'){
 # ncbo -h -O --op_typ='-' -v mss_val_scl -p ~/nco/data in.nc in.nc ~/foo.nc
     $dsc_sng="difference scalar missing value";
     $tst_cmd[0]="ncbo $omp_flg -h -O $fl_fmt $nco_D_flg --op_typ='-' -v mss_val_scl $in_pth_arg in.nc in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H --no_blank -s '%g' -v mss_val_scl %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd --no_blank -s '%g' -v mss_val_scl %tmp_fl_00%";
     $tst_cmd[2]="1.0e36";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -673,7 +690,7 @@ if($USER eq 'zender'){
 # ncbo #4    
     $dsc_sng="difference with missing value attribute";
     $tst_cmd[0]="ncbo $omp_flg -h -O $fl_fmt $nco_D_flg --op_typ='-' -d lon,1 -v mss_val $in_pth_arg in.nc in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H --no_blank -s '%g' -v mss_val %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd --no_blank -s '%g' -v mss_val %tmp_fl_00%";
     $tst_cmd[2]=1.0e36;
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -682,7 +699,7 @@ if($USER eq 'zender'){
 # ncbo #5  
     $dsc_sng="difference without missing value attribute";
     $tst_cmd[0]="ncbo $omp_flg -h -O $fl_fmt $nco_D_flg --op_typ='-' -d lon,0 -v no_mss_val $in_pth_arg in.nc in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%f' -v no_mss_val %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%f' -v no_mss_val %tmp_fl_00%";
     $tst_cmd[2]="0";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -693,7 +710,7 @@ if($USER eq 'zender'){
     $tst_cmd[0]="ncks -h -O $fl_fmt $nco_D_flg -v mss_val_fst $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncrename -h -O $nco_D_flg -v mss_val_fst,mss_val %tmp_fl_00%";
     $tst_cmd[2]="ncbo -C $omp_flg -h -O $fl_fmt $nco_D_flg -y '-' -v mss_val %tmp_fl_00% ../data/in.nc %tmp_fl_01% 2> %tmp_fl_02%";
-    $tst_cmd[3]="ncks -C -H --no_blank -s '%f,' -v mss_val %tmp_fl_01%";
+    $tst_cmd[3]="ncks -C -H --trd --no_blank -s '%f,' -v mss_val %tmp_fl_01%";
     $tst_cmd[4]="-999.000000,-999.000000,-999.000000,-999.000000";
     $tst_cmd[5]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -704,7 +721,7 @@ if($USER eq 'zender'){
     $tst_cmd[0]="ncrename -h $nco_D_flg -O -v no_mss_val,one_dmn_arr_with_and_without_mss_val $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncrename -h $nco_D_flg -O -v mss_val,one_dmn_arr_with_and_without_mss_val $in_pth_arg in.nc %tmp_fl_01%";
     $tst_cmd[2]="ncbo $omp_flg -h -O $fl_fmt $nco_D_flg -y '-' -v one_dmn_arr_with_and_without_mss_val %tmp_fl_00% %tmp_fl_01% %tmp_fl_02% 2> %tmp_fl_03%";
-    $tst_cmd[3]="ncks -C -H -d lon,0 -s '%f' -v one_dmn_arr_with_and_without_mss_val %tmp_fl_02%";
+    $tst_cmd[3]="ncks -C -H --trd -d lon,0 -s '%f' -v one_dmn_arr_with_and_without_mss_val %tmp_fl_02%";
     $tst_cmd[4]=0.0;
     $tst_cmd[5]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -713,7 +730,7 @@ if($USER eq 'zender'){
 # ncbo #8    
     $dsc_sng="ncdiff symbolically linked to ncbo";
     $tst_cmd[0]="ncdiff $omp_flg -h -O $fl_fmt $nco_D_flg -d lon,1 -v mss_val $in_pth_arg in.nc in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H --no_blank -s '%g' -v mss_val %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd --no_blank -s '%g' -v mss_val %tmp_fl_00%";
     $tst_cmd[2]=1.0e36;
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -722,7 +739,7 @@ if($USER eq 'zender'){
 # ncbo #9    
     $dsc_sng="difference with missing value attribute";
     $tst_cmd[0]="ncdiff $omp_flg -h -O $fl_fmt $nco_D_flg -d lon,1 -v mss_val $in_pth_arg in.nc in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H --no_blank -s '%g' -v mss_val %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd --no_blank -s '%g' -v mss_val %tmp_fl_00%";
     $tst_cmd[2]=1.0e36;
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -731,7 +748,7 @@ if($USER eq 'zender'){
 # ncbo #10   
     $dsc_sng="Difference without missing value attribute";
     $tst_cmd[0]="ncdiff $omp_flg -h -O $fl_fmt $nco_D_flg -d lon,0 -v no_mss_val $in_pth_arg in.nc in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%f' -v no_mss_val %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%f' -v no_mss_val %tmp_fl_00%";
     $tst_cmd[2]="0";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -741,7 +758,7 @@ if($USER eq 'zender'){
     $dsc_sng="Difference which tests broadcasting and changing variable IDs";
     $tst_cmd[0]="ncwa $omp_flg -C -h -O $fl_fmt $nco_D_flg -v rec_var_flt_mss_val_dbl $in_pth_arg in.nc %tmp_fl_03%";
     $tst_cmd[1]="ncbo $omp_flg -C -h -O $fl_fmt $nco_D_flg -v rec_var_flt_mss_val_dbl $in_pth/in.nc %tmp_fl_03% %tmp_fl_00%";
-    $tst_cmd[2]="ncks -C -H -d time,3 -s '%f' -v rec_var_flt_mss_val_dbl %tmp_fl_00%";
+    $tst_cmd[2]="ncks -C -H --trd -d time,3 -s '%f' -v rec_var_flt_mss_val_dbl %tmp_fl_00%";
     $tst_cmd[3]="-1.0";
     $tst_cmd[4]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -753,7 +770,7 @@ if($USER eq 'zender'){
     $tst_cmd[1]="ncap2 -C -O $fl_fmt $nco_D_flg -v -s 'three_dmn_var_dbl[lon]={0.0,1,2,3};' $in_pth_arg in.nc %tmp_fl_01%";
     $tst_cmd[2]="ncbo $omp_flg -C -h -O $fl_fmt $nco_D_flg %tmp_fl_00% %tmp_fl_01% %tmp_fl_02%";
     $tst_cmd[3]="ncwa $omp_flg -C -h -O $fl_fmt $nco_D_flg -y ttl -v three_dmn_var_dbl %tmp_fl_02% %tmp_fl_03%";
-    $tst_cmd[4]="ncks -C -H -s '%f' -v three_dmn_var_dbl %tmp_fl_03%";
+    $tst_cmd[4]="ncks -C -H --trd -s '%f' -v three_dmn_var_dbl %tmp_fl_03%";
     $tst_cmd[5]="2697";
     $tst_cmd[6]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -765,7 +782,7 @@ if($USER eq 'zender'){
     $tst_cmd[1]="ncap2 -C -O $fl_fmt $nco_D_flg -v -s 'three_dmn_var_dbl[lon]={0.0,1,2,3};' $in_pth_arg in.nc %tmp_fl_01%";
     $tst_cmd[2]="ncbo $omp_flg -C -h -O $fl_fmt $nco_D_flg -d time,0,4 -d time,9 -d lon,0 -d lon,3 %tmp_fl_00% %tmp_fl_01% %tmp_fl_02%";
     $tst_cmd[3]="ncwa $omp_flg -C -h -O $fl_fmt $nco_D_flg -y ttl -v three_dmn_var_dbl %tmp_fl_02% %tmp_fl_03%";
-    $tst_cmd[4]="ncks -C -H -s '%f' -v three_dmn_var_dbl %tmp_fl_03%";
+    $tst_cmd[4]="ncks -C -H --trd -s '%f' -v three_dmn_var_dbl %tmp_fl_03%";
     $tst_cmd[5]="422";
     $tst_cmd[6]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -774,11 +791,11 @@ if($USER eq 'zender'){
 # ncbo #14
 # ncks -O -v three_dmn_rec_var ~/nco/data/in.nc ~/foo.nc
 # ncbo -O -v three_dmn_rec_var ~/foo.nc ~/foo.nc ~/foo2.nc
-# ncks -C -H -v three_dmn_rec_var -d time,9,9,1 -d lat,1,1,1 -d lon,3,3,1 ~/foo2.nc
+# ncks -C -H --trd -v three_dmn_rec_var -d time,9,9,1 -d lat,1,1,1 -d lon,3,3,1 ~/foo2.nc
     $dsc_sng="Copy associated coordinates -v three_dmn_rec_var";
     $tst_cmd[0]="ncks -O $fl_fmt $nco_D_flg -v three_dmn_rec_var $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncbo $omp_flg -O $fl_fmt $nco_D_flg -v three_dmn_rec_var %tmp_fl_00% %tmp_fl_00% %tmp_fl_01%";
-    $tst_cmd[2]="ncks -C -H -v three_dmn_rec_var -d time,9,9,1 -d lat,1,1,1 -d lon,3,3,1 %tmp_fl_01%";
+    $tst_cmd[2]="ncks -C -H --trd -v three_dmn_rec_var -d time,9,9,1 -d lat,1,1,1 -d lon,3,3,1 %tmp_fl_01%";
     $tst_cmd[3]="time[9]=10 lat[1]=90 lon[3]=270 three_dmn_rec_var[79]=0";
     $tst_cmd[4]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -789,12 +806,12 @@ if($USER eq 'zender'){
 # ncks -O    -v time,one ~/nco/data/in.nc ~/foo1.nc
 # ncks -O -a -v one,time ~/nco/data/in.nc ~/foo2.nc
 # ncbo -O -p ~ foo1.nc foo2.nc ~/foo3.nc
-# ncks -C -H -v one ~/foo3.nc
+# ncks -C -H --trd -v one ~/foo3.nc
     $dsc_sng="Concatenate variables with different ID ordering";
     $tst_cmd[0]="ncks -h -O $fl_fmt $nco_D_flg -C    -v time,one $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncks -h -O $fl_fmt $nco_D_flg -C -a -v one,time $in_pth_arg in.nc %tmp_fl_01%";
     $tst_cmd[2]="ncbo -h -O $fl_fmt $nco_D_flg %tmp_fl_00% %tmp_fl_01% %tmp_fl_02%";
-    $tst_cmd[3]="ncks -C -H -v one %tmp_fl_02%";
+    $tst_cmd[3]="ncks -C -H --trd -v one %tmp_fl_02%";
     $tst_cmd[4]="one = 0";
     $tst_cmd[5]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -809,12 +826,12 @@ if($USER eq 'zender'){
 
 #ncbo #16
 # ncbo -O -y add -g g4 -v one_dmn_rec_var ~/nco/data/in_grp.nc ~/nco/data/in_grp.nc ~/foo.nc
-# ncks -C -H -s '%d' -d time,0,0,1 -g g4 -v one_dmn_rec_var ~/foo.nc
+# ncks -C -H --trd -s '%d' -d time,0,0,1 -g g4 -v one_dmn_rec_var ~/foo.nc
 # /g4/one_dmn_rec_var
 # time[0]=1 one_dmn_rec_var[0]=2 
     $dsc_sng="(Groups) Addition -y add -g g4 -v one_dmn_rec_var";
     $tst_cmd[0]="ncbo -O $fl_fmt $nco_D_flg -y add -g g4 -v one_dmn_rec_var $in_pth_arg in_grp.nc in_grp.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%d' -d time,0,0,1 -g g4 -v one_dmn_rec_var %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%d' -d time,0,0,1 -g g4 -v one_dmn_rec_var %tmp_fl_00%";
     $tst_cmd[2]="2";
     $tst_cmd[3]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -822,11 +839,11 @@ if($USER eq 'zender'){
     
 #ncbo #17
 # ncbo -O -y add -g g4 -v one_dmn_rec_var ~/nco/data/in_grp.nc ~/nco/data/in_grp.nc ~/foo.nc
-# ncks -C -H -s '%d' -d time,0,0,1 -g g4 -v one_dmn_rec_var ~/foo.nc
+# ncks -C -H --trd -s '%d' -d time,0,0,1 -g g4 -v one_dmn_rec_var ~/foo.nc
 # /g4/one_dmn_rec_var
     $dsc_sng="(Groups) Addition with limits -d time,1,1,1 -y add -g g4 -v one_dmn_rec_var";
     $tst_cmd[0]="ncbo -O $fl_fmt $nco_D_flg -d time,1,1,1 -y add -g g4 -v one_dmn_rec_var $in_pth_arg in_grp.nc in_grp.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%d' -d time,0,0,1 -g g4 -v one_dmn_rec_var %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%d' -d time,0,0,1 -g g4 -v one_dmn_rec_var %tmp_fl_00%";
     $tst_cmd[2]="4";
     $tst_cmd[3]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -834,11 +851,11 @@ if($USER eq 'zender'){
     
 #ncbo #18
 # ncbo -O -v one_dmn_rec_var ~/nco/data/in_grp.nc ~/nco/data/in_grp.nc ~/foo.nc
-# ncks -C -H -s '%d' -d time,0,0,1 -g g4 -v one_dmn_rec_var ~/foo.nc
+# ncks -C -H --trd -s '%d' -d time,0,0,1 -g g4 -v one_dmn_rec_var ~/foo.nc
 # /g4/one_dmn_rec_var
     $dsc_sng="(Groups) Subtraction -v one_dmn_rec_var";
     $tst_cmd[0]="ncbo -O $fl_fmt $nco_D_flg -v one_dmn_rec_var $in_pth_arg in_grp.nc in_grp.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%d' -d time,1,1,1 -g g4 -v one_dmn_rec_var %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%d' -d time,1,1,1 -g g4 -v one_dmn_rec_var %tmp_fl_00%";
     $tst_cmd[2]="0";
     $tst_cmd[3]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -846,11 +863,11 @@ if($USER eq 'zender'){
 
 #ncbo #19
 # ncbo -O -y mlt -g g4 -v one_dmn_rec_var ~/nco/data/in_grp.nc ~/nco/data/in_grp.nc ~/foo.nc
-# ncks -C -H -s '%d' -d time,0,0,1 -g g4 -v one_dmn_rec_var ~/foo.nc
+# ncks -C -H --trd -s '%d' -d time,0,0,1 -g g4 -v one_dmn_rec_var ~/foo.nc
 # /g4/one_dmn_rec_var
     $dsc_sng="(Groups) Multiplication with limits -d time,2,2,1 -y add -g g4 -v one_dmn_rec_var";
     $tst_cmd[0]="ncbo -O $fl_fmt $nco_D_flg -d time,2,2,1 -y mlt -g g4 -v one_dmn_rec_var $in_pth_arg in_grp.nc in_grp.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%d' -d time,0,0,1 -g g4 -v one_dmn_rec_var %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%d' -d time,0,0,1 -g g4 -v one_dmn_rec_var %tmp_fl_00%";
     $tst_cmd[2]="9";
     $tst_cmd[3]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -858,17 +875,16 @@ if($USER eq 'zender'){
 
 #ncbo #20
 # ncbo -O -y mlt -g g4 -v one_dmn_rec_var ~/nco/data/in_grp.nc ~/nco/data/in_grp.nc ~/foo.nc
-# ncks -C -H -s '%d' -d time,0,0,1 -g g4 -v one_dmn_rec_var ~/foo.nc
+# ncks -C -H --trd -s '%d' -d time,0,0,1 -g g4 -v one_dmn_rec_var ~/foo.nc
 # /g4/one_dmn_rec_var
     $dsc_sng="(Groups) Division with limits -d time,2,2,1 -y add -g g4 -v one_dmn_rec_var";
     $tst_cmd[0]="ncbo -O $fl_fmt $nco_D_flg -d time,2,2,1 -y dvd -g g4 -v one_dmn_rec_var $in_pth_arg in_grp.nc in_grp.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%d' -d time,0,0,1 -g g4 -v one_dmn_rec_var %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%d' -d time,0,0,1 -g g4 -v one_dmn_rec_var %tmp_fl_00%";
     $tst_cmd[2]="1";
     $tst_cmd[3]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
     $#tst_cmd=0; # Reset array 		
 
-
 # Following tests: Different objects in both files with groups (ensembles, not ensembles)
 # Absolute match test
 
@@ -877,31 +893,29 @@ if($USER eq 'zender'){
 # ncbo -O in_grp_1.nc in_grp_2.nc ~/foo.nc
     $dsc_sng="(Groups) Process absolute match variables -v var1 in_grp_1.nc in_grp_2.nc";
     $tst_cmd[0]="ncbo -O $fl_fmt $nco_D_flg $in_pth_arg in_grp_1.nc in_grp_2.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -v var1 %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C --trd -v var1 %tmp_fl_00%";
     $tst_cmd[2]="lon[3]=4 var1[3]=-1";
     $tst_cmd[3]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
     $#tst_cmd=0; # Reset array 	
 
-
 # ncbo #22
 # ncbo -O -v var1 in_grp_1.nc in_grp_2.nc ~/foo.nc
     $dsc_sng="(Groups) Process absolute match variables -v var1 in_grp_1.nc in_grp_2.nc";
     $tst_cmd[0]="ncbo -O $fl_fmt $nco_D_flg -v var1 $in_pth_arg in_grp_1.nc in_grp_2.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C --trd %tmp_fl_00%";
     $tst_cmd[2]="lon[3]=4 var1[3]=-1";
     $tst_cmd[3]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
     $#tst_cmd=0; # Reset array 	
 
-	
 # ncbo #23
 #ncbo -O --op_typ=add  mdl_1.nc mdl_2.nc ~/foo.nc
-#ncks -C -g cesm_01 -v tas1 ~/foo.nc
+#ncks -C --trd -g cesm_01 -v tas1 ~/foo.nc
 # 544.4 = (file 1 tas1) 272.1 + (file 2 tas1) 272.3
     $dsc_sng="(Groups) Process ensembles in both files mdl_1.nc mdl_2.nc";
     $tst_cmd[0]="ncbo -O --op_typ=add $fl_fmt $nco_D_flg $in_pth_arg mdl_1.nc mdl_2.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -g cesm_01 -v tas1 %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C --trd -g cesm_01 -v tas1 %tmp_fl_00%";
     $tst_cmd[2]="time[3]=4 tas1[3]=544.4";
     $tst_cmd[3]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -909,10 +923,10 @@ if($USER eq 'zender'){
 
 # ncbo #24
 #ncbo -O mdl_1.nc mdl_2.nc ~/foo.nc
-#ncks -g cesm_01 -v time ~/foo.nc
+#ncks --trd -g cesm_01 -v time ~/foo.nc
     $dsc_sng="(Groups) Process ensembles in both files mdl_1.nc mdl_2.nc (check fixed variables)";
     $tst_cmd[0]="ncbo -O $fl_fmt $nco_D_flg $in_pth_arg mdl_1.nc mdl_2.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -g cesm_01 -v time %tmp_fl_00%";
+    $tst_cmd[1]="ncks --trd -g cesm_01 -v time %tmp_fl_00%";
     $tst_cmd[2]="time[3]=4";
     $tst_cmd[3]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -920,11 +934,11 @@ if($USER eq 'zender'){
 	
 # ncbo #25
 #ncbo -O --op_typ=add  mdl_1.nc obs.nc ~/foo.nc
-#ncks -C -g cesm_01 -v tas1 ~/foo.nc
+#ncks -C --trd -g cesm_01 -v tas1 ~/foo.nc
 # 544.1 = (file 1 tas1) 272.1 + (file 2 tas1) 273.0
     $dsc_sng="(Groups) Process ensembles in file 1 with common variable at root in file 2";
     $tst_cmd[0]="ncbo -O --op_typ=add $fl_fmt $nco_D_flg $in_pth_arg mdl_1.nc obs.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -g cesm_01 -v tas1 %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C --trd -g cesm_01 -v tas1 %tmp_fl_00%";
     $tst_cmd[2]="time[3]=4 tas1[3]=545.1";
     $tst_cmd[3]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -932,10 +946,10 @@ if($USER eq 'zender'){
 
 # ncbo #26
 #ncbo -O mdl_1.nc obs.nc ~/foo.nc
-#ncks -g ecmwf_01 -v time
+#ncks --trd -g ecmwf_01 -v time
     $dsc_sng="(Groups) Process ensembles in file 1 with common variable at root in file 2 (check fixed variables)";
     $tst_cmd[0]="ncbo -O $fl_fmt $nco_D_flg $in_pth_arg mdl_1.nc obs.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -g ecmwf_01 -v time %tmp_fl_00%";
+    $tst_cmd[1]="ncks --trd -g ecmwf_01 -v time %tmp_fl_00%";
     $tst_cmd[2]="time[3]=4";
     $tst_cmd[3]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -943,7 +957,7 @@ if($USER eq 'zender'){
 	
 # ncbo 
 #ncbo -O --op_typ=add  obs.nc mdl_1.nc ~/foo.nc
-#ncks -C -g cesm_01 -v tas1 ~/foo.nc
+#ncks -C --trd -g cesm_01 -v tas1 ~/foo.nc
 # 544.1 =  (file 1 tas1) 273.0 + (file 2 tas1) 272.1 
 
 #FXM ncbo group broadcasting, "time" dimension is created at root because conflicting logic in nco_prc_cmn() uses 
@@ -952,7 +966,7 @@ if($USER eq 'zender'){
     if(0) {
     $dsc_sng="(Groups) Process ensembles in file 2 with common variable at root in file 1";
     $tst_cmd[0]="ncbo -O --op_typ=add $fl_fmt $nco_D_flg $in_pth_arg obs.nc mdl_1.nc  %tmp_fl_00%";
-	$tst_cmd[1]="ncks -C -g cesm_01 -v tas1 %tmp_fl_00%";
+	$tst_cmd[1]="ncks -C --trd -g cesm_01 -v tas1 %tmp_fl_00%";
     $tst_cmd[2]="time[3]=4 tas1[3]=545.1";
     $tst_cmd[3]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -961,11 +975,11 @@ if($USER eq 'zender'){
 	
 # ncbo #27
 #ncbo -O cmip5.nc obs.nc ~/foo.nc
-#ncks -C -g ecmwf -v tas1 ~/foo.nc
+#ncks -C --trd -g ecmwf -v tas1 ~/foo.nc
 # obs.nc tas1=273, cmip5.nc giss tas1=274
     $dsc_sng="(Groups) Process relative matches, first file greater (cmip5.nc obs.nc)";
     $tst_cmd[0]="ncbo -O $fl_fmt $nco_D_flg $in_pth_arg cmip5.nc obs.nc %tmp_fl_00%";
-	$tst_cmd[1]="ncks -C -g giss -v tas1 %tmp_fl_00%";
+	$tst_cmd[1]="ncks -C --trd -g giss -v tas1 %tmp_fl_00%";
     $tst_cmd[2]="time[3]=4 tas1[3]=1";
     $tst_cmd[3]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -973,11 +987,11 @@ if($USER eq 'zender'){
 	
 # ncbo #28
 #ncbo -O  obs.nc cmip5.nc ~/foo.nc
-#ncks -C -g ecmwf -v tas1 ~/foo.nc
+#ncks -C --trd -g ecmwf -v tas1 ~/foo.nc
 # obs.nc tas1=273, cmip5.nc giss tas1=274
     $dsc_sng="(Groups) Process relative matches, second file greater (obs.nc cmip5.nc)";
     $tst_cmd[0]="ncbo -O $fl_fmt $nco_D_flg $in_pth_arg obs.nc cmip5.nc %tmp_fl_00%";
-	$tst_cmd[1]="ncks -C -g giss -v tas1 %tmp_fl_00%";
+	$tst_cmd[1]="ncks -C --trd -g giss -v tas1 %tmp_fl_00%";
     $tst_cmd[2]="time[3]=4 tas1[3]=-1";
     $tst_cmd[3]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -987,7 +1001,7 @@ if($USER eq 'zender'){
 #ncbo ensemble with 1 member 
 #ncra -Y ncge -O mdl_3.nc ncge_out.nc
 #ncbo -O --op_typ=add ncge_out.nc mdl_3.nc ~/foo.nc
-#ncks -H -C -g cesm_01 -v tas1 ~/foo.nc
+#ncks -H --trd -C -g cesm_01 -v tas1 ~/foo.nc
 #ncge_out.nc =
 #/cesm/tas1
 #time[0]=1 tas1[0]=272.15 
@@ -999,7 +1013,7 @@ if($USER eq 'zender'){
     $dsc_sng="(Groups) Ensemble with 1 member (mdl_3.nc)";
     $tst_cmd[0]="ncra -Y ncge -O $fl_fmt $nco_D_flg $in_pth_arg mdl_3.nc %tmp_fl_00%";
     $tst_cmd[1]="ncbo --op_typ=add -O $fl_fmt $nco_D_flg %tmp_fl_00% $in_pth/mdl_3.nc %tmp_fl_01%";
-    $tst_cmd[2]="ncks -H -C -g cesm_01 -v tas1 %tmp_fl_01%";
+    $tst_cmd[2]="ncks -H --trd -C -g cesm_01 -v tas1 %tmp_fl_01%";
     $tst_cmd[3]="time[3] tas1[3]=544.25";
     $tst_cmd[4]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -1016,7 +1030,7 @@ if($USER eq 'zender'){
     
 #nces #01	
     $tst_cmd[0]="ncra -Y ncfe $omp_flg -h -O $fl_fmt $nco_D_flg -v one_dmn_rec_var -d time,4 $in_pth_arg in.nc in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%d' -v one_dmn_rec_var %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%d' -v one_dmn_rec_var %tmp_fl_00%";
     $dsc_sng="ensemble mean of int across two files";
     $tst_cmd[2]="5";
     $tst_cmd[3]="SS_OK";
@@ -1026,7 +1040,7 @@ if($USER eq 'zender'){
 #nces #02	
     
     $tst_cmd[0]="ncra -Y ncfe $omp_flg -h -O $fl_fmt $nco_D_flg -y ttl -v mss_val_scl $in_pth_arg in.nc in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H --no_blank -s '%g' -v mss_val_scl %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd --no_blank -s '%g' -v mss_val_scl %tmp_fl_00%";
     $dsc_sng="ensemble sum of missing value across two files";
     $tst_cmd[2]="1.0e36";
     $tst_cmd[3]="SS_OK";
@@ -1036,7 +1050,7 @@ if($USER eq 'zender'){
 #nces #03	
     
     $tst_cmd[0]="ncra -Y ncfe $omp_flg -h -O $fl_fmt $nco_D_flg -v rec_var_flt_mss_val_flt -d time,0 $in_pth_arg in.nc in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H --no_blank -s '%g' -v rec_var_flt_mss_val_flt %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd --no_blank -s '%g' -v rec_var_flt_mss_val_flt %tmp_fl_00%";
     $dsc_sng="ensemble mean with missing values across two files";
     $tst_cmd[2]="1.0e36";
     $tst_cmd[3]="SS_OK";
@@ -1047,7 +1061,7 @@ if($USER eq 'zender'){
     
     $tst_cmd[0]="/bin/rm -f %tmp_fl_00%";
     $tst_cmd[1]="ncra -Y ncfe $omp_flg -h -O $fl_fmt $nco_D_flg -y min -v rec_var_flt_mss_val_dbl -d time,1 $in_pth_arg in.nc in.nc %tmp_fl_00%";
-    $tst_cmd[2]="ncks -C -H -s '%e' -v rec_var_flt_mss_val_dbl %tmp_fl_00%";
+    $tst_cmd[2]="ncks -C -H --trd -s '%e' -v rec_var_flt_mss_val_dbl %tmp_fl_00%";
     $dsc_sng="ensemble min of float across two files";
     $tst_cmd[3]="2";
     $tst_cmd[4]="NO_SS";
@@ -1058,7 +1072,7 @@ if($USER eq 'zender'){
     
     $tst_cmd[0]="/bin/rm -f %tmp_fl_00%";
     $tst_cmd[1]="ncra -Y ncfe $omp_flg -h -O $fl_fmt $nco_D_flg -C -v pck $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[2]="ncks -C -H -s '%e' -v pck %tmp_fl_00%";
+    $tst_cmd[2]="ncks -C -H --trd -s '%e' -v pck %tmp_fl_00%";
     $dsc_sng="scale factor + add_offset packing/unpacking";
     $tst_cmd[3]="3";
     $tst_cmd[4]="NO_SS";
@@ -1069,7 +1083,7 @@ if($USER eq 'zender'){
     
     $tst_cmd[0]="/bin/rm -f %tmp_fl_00%";
     $tst_cmd[1]="ncra -Y ncfe $omp_flg -h -O $fl_fmt $nco_D_flg -v rec_var_int_mss_val_int $in_pth_arg in.nc in.nc %tmp_fl_00%";
-    $tst_cmd[2]="ncks -C -H --no_blank -s '%d ' -v rec_var_int_mss_val_int %tmp_fl_00%";
+    $tst_cmd[2]="ncks -C -H --trd --no_blank -s '%d ' -v rec_var_int_mss_val_int %tmp_fl_00%";
     $dsc_sng="ensemble mean of integer with integer missing values across two files";
     $tst_cmd[3]="-999 2 3 4 5 6 7 8 -999 -999";
     $tst_cmd[4]="NO_SS";
@@ -1081,7 +1095,7 @@ if($USER eq 'zender'){
     $tst_cmd[0]="/bin/rm -f %tmp_fl_00%";
     $tst_cmd[1]="ncra -Y ncfe $omp_flg -h -O $fl_fmt $nco_D_flg -C -d time,0,2 -d lon,0 -d lon,3 -v three_dmn_var_dbl $in_pth_arg in.nc in.nc %tmp_fl_00%";
     $tst_cmd[2]="ncwa $omp_flg -C -h -O $fl_fmt $nco_D_flg -y ttl -v three_dmn_var_dbl %tmp_fl_00% %tmp_fl_01%";
-    $tst_cmd[3]="ncks -C -H -s '%3.f' -v three_dmn_var_dbl %tmp_fl_01%";
+    $tst_cmd[3]="ncks -C -H --trd -s '%3.f' -v three_dmn_var_dbl %tmp_fl_01%";
     $dsc_sng="ensemble mean of 3D variable across two files with MSA";
     $tst_cmd[4]="150";
     $tst_cmd[5]="NO_SS";
@@ -1096,7 +1110,7 @@ if($USER eq 'zender'){
     $tst_cmd[3]="ncbo -C -h -O %tmp_fl_00% %tmp_fl_01% %tmp_fl_02%";
     $tst_cmd[4]="ncwa -t 1 -O -C %tmp_fl_02% %tmp_fl_03% 2>%tmp_fl_05%";
     $dsc_sng="Check op with OpenMP";
-#    $tst_cmd[5]="ncks -C -H -s '%d' -v R %tmp_fl_03%";
+#    $tst_cmd[5]="ncks -C -H --trd -s '%d' -v R %tmp_fl_03%";
     $tst_cmd[5]="ncap2 -t 1 -h -v -O -s 'n2= ((fabs(R)<0.01) && (fabs(S)<0.01) && (fabs(T)<0.01) && (fabs(U)<0.01) && (fabs(V)<0.01) && (fabs(W)<0.01) && (fabs(X)<0.01));print(n2)' %tmp_fl_03% %tmp_fl_04%";
     $tst_cmd[6]="n2 = 1";
     $tst_cmd[7]="NO_SS";
@@ -1106,7 +1120,7 @@ if($USER eq 'zender'){
 #nces #09	
     
     $tst_cmd[0]="ncra -Y ncfe $omp_flg -h -O $fl_fmt $nco_D_flg -v pck_7 $in_pth_arg in.nc in.nc in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%f' -v pck_7 %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%f' -v pck_7 %tmp_fl_00%";
     $dsc_sng="Ensemble mean of variable packed with netCDF convention across three files";
     $tst_cmd[2]="7";
     $tst_cmd[3]="SS_OK";
@@ -1116,7 +1130,7 @@ if($USER eq 'zender'){
 #nces #10	
     
     $tst_cmd[0]="ncra -Y ncfe $omp_flg -h -O $fl_fmt $nco_D_flg --hdf_upk -v pck_7 $in_pth_arg in.nc in.nc in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%f' -v pck_7 %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%f' -v pck_7 %tmp_fl_00%";
     $dsc_sng="Ensemble mean of variable packed with HDF convention across three files";
     $tst_cmd[2]="-8";
     $tst_cmd[3]="SS_OK";
@@ -1134,7 +1148,7 @@ if($USER eq 'zender'){
 # same as #nces #01 , with group
 	
     $tst_cmd[0]="ncra -Y ncfe $omp_flg -h -O $fl_fmt $nco_D_flg -g g4 -v one_dmn_rec_var -d time,4 $in_pth_arg in_grp.nc in_grp.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%d' -g g4 -v one_dmn_rec_var %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%d' -g g4 -v one_dmn_rec_var %tmp_fl_00%";
     $dsc_sng="(Groups) ensemble mean of int across two files";
     $tst_cmd[2]="5";
     $tst_cmd[3]="SS_OK";
@@ -1147,7 +1161,7 @@ if($USER eq 'zender'){
 # ncra -Y nces -h -O -g g25g1,g25g2 -v one_dmn_rec_var -d time,4 in_grp_3.nc in_grp_3.nc ~/foo.nc
 	
     $tst_cmd[0]="ncra -Y ncfe $omp_flg -h -O $fl_fmt $nco_D_flg -g g25g1,g25g2 -v one_dmn_rec_var -d time,4 $in_pth_arg in_grp_3.nc in_grp_3.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%d' -g g25g1 -v one_dmn_rec_var %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%d' -g g25g1 -v one_dmn_rec_var %tmp_fl_00%";
     $dsc_sng="(Groups) 2 groups ensemble mean of int across two files (part 1)";
     $tst_cmd[2]="5";
     $tst_cmd[3]="SS_OK";
@@ -1159,7 +1173,7 @@ if($USER eq 'zender'){
 # ncra -Y nces -h -O -g g25g1,g25g2 -v one_dmn_rec_var -d time,4 in_grp_3.nc in_grp_3.nc ~/foo.nc
 	
     $tst_cmd[0]="ncra -Y ncfe $omp_flg -h -O $fl_fmt $nco_D_flg -g g25g1,g25g2 -v one_dmn_rec_var -d time,4 $in_pth_arg in_grp_3.nc in_grp_3.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%d' -g g25g2 -v one_dmn_rec_var %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%d' -g g25g2 -v one_dmn_rec_var %tmp_fl_00%";
     $dsc_sng="(Groups) 2 groups ensemble mean of int across two files (part 2)";
     $tst_cmd[2]="5";
     $tst_cmd[3]="SS_OK";
@@ -1173,7 +1187,7 @@ if($USER eq 'zender'){
     #for i in $(seq -w 0 999) ; do iii=$(printf "%03d" ${i}) ; ln in.nc foo${iii}.nc ; done
 	# TO DO run bash script above by perl
     $tst_cmd[0]="ncra -Y ncfe $omp_flg -h -O $fl_fmt $nco_D_flg -v dgn_var $in_pth_arg in.nc in.nc in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks %tmp_fl_00%";
+    $tst_cmd[1]="ncks --trd %tmp_fl_00%";
     $dsc_sng="Test file loop";
     $tst_cmd[2]="dgn[0]=73 dgn_var[0]=73";
     $tst_cmd[3]="SS_OK";
@@ -1188,10 +1202,9 @@ if($USER eq 'zender'){
 
 #nces #15
 # ncra -Y ncge -h -O  mdl_1.nc ~/foo.nc
-# ncks -g cesm -v tas1 ~/foo.nc
-	
+# ncks -C --trd -g cesm -v tas1 ~/foo.nc
     $tst_cmd[0]="ncra -Y ncge $omp_flg -h -O $fl_fmt $nco_D_flg $in_pth_arg mdl_1.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -g cesm -v tas1 %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C --trd -g cesm -v tas1 %tmp_fl_00%";
     $dsc_sng="(Groups) 1 file mdl_1.cdl ensemble";
     $tst_cmd[2]="time[3]=4 tas1[3]=272.15";
     $tst_cmd[3]="SS_OK";
@@ -1201,7 +1214,7 @@ if($USER eq 'zender'){
 #nces #16
 	
     $tst_cmd[0]="ncra -Y ncge $omp_flg -h -O --nsm_sfx=_avg $fl_fmt $nco_D_flg $in_pth_arg mdl_1.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -g cesm_avg -v tas1 %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C --trd -g cesm_avg -v tas1 %tmp_fl_00%";
     $dsc_sng="(Groups) 1 file mdl.cdl --nsm_sfx suffix ensemble";
     $tst_cmd[2]="time[3]=4 tas1[3]=272.15 ";
     $tst_cmd[3]="SS_OK";
@@ -1211,7 +1224,7 @@ if($USER eq 'zender'){
 #nces #17
 # ncra -Y ncge -h -O -G /gpe_grp mdl_1.nc ~/foo.nc
     $tst_cmd[0]="ncra -Y ncge $omp_flg -h -O -G /gpe_grp $fl_fmt $nco_D_flg $in_pth_arg mdl_1.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -g /gpe_grp/ecmwf -v tas1 %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C --trd -g /gpe_grp/ecmwf -v tas1 %tmp_fl_00%";
     $dsc_sng="(Groups) GPE 1 file mdl_1.cdl ensemble";
     $tst_cmd[2]="time[3]=4 tas1[3]=273.15 ";
     $tst_cmd[3]="SS_OK";
@@ -1222,7 +1235,7 @@ if($USER eq 'zender'){
 #ncra -Y ncge -O mdl_1.nc mdl_2.nc ~/foo.nc
     $dsc_sng="(Groups) Two-file ensembles";
     $tst_cmd[0]="ncra -Y ncge $omp_flg -h -O $fl_fmt $nco_D_flg $in_pth_arg mdl_1.nc mdl_2.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -g ecmwf -v tas1 %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C --trd -g ecmwf -v tas1 %tmp_fl_00%";
     $tst_cmd[2]="time[3]=4 tas1[3]=273.25";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -1234,7 +1247,7 @@ if($USER eq 'zender'){
 # NB: This test succeeds when it fails, i.e., the NCO command fails as it should because the input files do not conform
     $dsc_sng="(Groups) Ensemble record coordinate variables";
     $tst_cmd[0]="ncra -Y ncge $omp_flg -h -O $fl_fmt $nco_D_flg $in_pth_arg mdl_1.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -m --cdl -g cesm -v time %tmp_fl_00% | grep UNLIMITED";
+    $tst_cmd[1]="ncks -m --trd --cdl -g cesm -v time %tmp_fl_00% | grep UNLIMITED";
     $tst_cmd[2]="      time = UNLIMITED ; // (4 currently)";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -1242,7 +1255,6 @@ if($USER eq 'zender'){
 
 #nces #20 (error checking of ensemble variable dimensions)
 #  ncra -Y ncge -O in_grp_4.nc in_grp_5.nc ~/foo.nc
-	
     $dsc_sng="(Groups) Invalid input, expect ERROR because dimensions do not conform between ensemble variables";
     $tst_cmd[0]="ncra -Y ncge $omp_flg -h -O $fl_fmt $nco_D_flg $in_pth_arg in_grp_4.nc in_grp_5.nc %tmp_fl_00%";
     $tst_cmd[1]="ncge: ERROR Variables do not conform: variable </cesm/cesm_02/three_dmn_rec_var> has dimension <time> with size 6, expecting size 10";
@@ -1252,10 +1264,9 @@ if($USER eq 'zender'){
 
 #nces #21 
 # ncra -Y ncge -h -O mdl_1.nc ~/foo.nc
-	
     $dsc_sng="(Groups) Test CCM/CAM/CCSM special fixed variables";
     $tst_cmd[0]="ncra -Y ncge $omp_flg -h -O $fl_fmt $nco_D_flg $in_pth_arg mdl_1.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -v gw %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C --trd -v gw %tmp_fl_00%";
     $tst_cmd[2]="time[3]=4 gw[3]=1";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -1264,11 +1275,10 @@ if($USER eq 'zender'){
 #nces #22 
 # ncks mdl_1.nc -v /cesm/cesm_02/time | grep 'time attribute 0: long_name'
 # ncra -Y ncge -O --nsm_grp -p ~/nco/data mdl_1.nc ~/foo.nc
-# ncks -v /cesm/time ~/foo.nc | grep 'time attribute 0: long_name'
-
+# ncks --trd -v /cesm/time ~/foo.nc | grep 'time attribute 0: long_name'
     $dsc_sng="(Groups) Test copy of attributes for coordinate variables (time)";
     $tst_cmd[0]="ncra -Y ncge $omp_flg -O --nsm_grp $fl_fmt $nco_D_flg $in_pth_arg mdl_1.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -v /cesm/time %tmp_fl_00% | grep 'time attribute 0: long_name'";
+    $tst_cmd[1]="ncks --trd -v /cesm/time %tmp_fl_00% | grep 'time attribute 0: long_name'";
     $tst_cmd[2]="time attribute 0: long_name, size = 4 NC_CHAR, value = time";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -1278,10 +1288,10 @@ if($USER eq 'zender'){
     
 #nces #23
 # nces -O -y mebs -v one -p ~/nco/data in.nc in.nc ~/foo.nc
-# ncks -C -H -v one ~/foo.nc
+# ncks -C -H --trd -v one ~/foo.nc
     $dsc_sng="Test mebs normalization";
     $tst_cmd[0]="ncra -Y ncfe -y mebs -v one $omp_flg -O $fl_fmt $nco_D_flg $in_pth_arg in.nc in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -v one %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -v one %tmp_fl_00%";
     $tst_cmd[2]="one = 1";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -1289,10 +1299,10 @@ if($USER eq 'zender'){
 
 #nces #24
 # nces -O -y tabs -v one -p ~/nco/data in.nc in.nc ~/foo.nc
-# ncks -C -H -v one ~/foo.nc
+# ncks -C -H --trd -v one ~/foo.nc
     $dsc_sng="Test tabs (total absolute value)";
     $tst_cmd[0]="ncra -Y ncfe -y tabs -v one $omp_flg -O $fl_fmt $nco_D_flg $in_pth_arg in.nc in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -v one %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -v one %tmp_fl_00%";
     $tst_cmd[2]="one = 2";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -1300,10 +1310,10 @@ if($USER eq 'zender'){
 
 #nces #25
 # nces -O -y tabs -v lond -p ~/nco/data in.nc in.nc ~/foo.nc
-# ncks -C -H -v lon -d lon,3 ~/foo.nc
+# ncks -C -H --trd -v lon -d lon,3 ~/foo.nc
     $dsc_sng="Test tabs on coordinate";
     $tst_cmd[0]="ncra -Y ncfe -y tabs -v lond $omp_flg -O $fl_fmt $nco_D_flg $in_pth_arg in.nc in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -v lon -d lon,3 %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -v lon -d lon,3 %tmp_fl_00%";
     $tst_cmd[2]="lon[3]=270";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -1321,7 +1331,7 @@ if($USER eq 'zender'){
     $tst_cmd[0]="ncks -h -O $fl_fmt $nco_D_flg -v one $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncks -h -O $fl_fmt $nco_D_flg -v one $in_pth_arg in.nc %tmp_fl_01%";
     $tst_cmd[2]="ncecat $omp_flg -h -O $fl_fmt $nco_D_flg %tmp_fl_00% %tmp_fl_01% %tmp_fl_02%";
-    $tst_cmd[3]="ncks -C -H -s '%6.3f, ' -v one %tmp_fl_02%";
+    $tst_cmd[3]="ncks -C -H --trd -s '%6.3f, ' -v one %tmp_fl_02%";
     $dsc_sng="concatenate two files containing only scalar variables";
     $tst_cmd[4]=" 1.000, "; # is this effectively equal to the previous " 1.000,  1.000, "
     $tst_cmd[5]="SS_OK";
@@ -1333,7 +1343,7 @@ if($USER eq 'zender'){
     $tst_cmd[1]="ncap2 -C -v -O $fl_fmt $nco_D_flg -s 'three_dmn_var_int+=100;' $in_pth_arg in.nc %tmp_fl_01%";
     $tst_cmd[2]="ncecat -C -h -O $omp_flg $fl_fmt $nco_D_flg -d time,0,3 -d time,8,9 -d lon,0,1 -d lon,3,3 -v three_dmn_var_int %tmp_fl_00% %tmp_fl_01% %tmp_fl_02%";
     $tst_cmd[3]="ncwa -C -h -O $omp_flg $fl_fmt $nco_D_flg -y avg -v three_dmn_var_int %tmp_fl_02% %tmp_fl_03%";
-    $tst_cmd[4]="ncks -C -O -H -s '%d' -v three_dmn_var_int %tmp_fl_03%";
+    $tst_cmd[4]="ncks -C -O -H --trd -s '%d' -v three_dmn_var_int %tmp_fl_03%";
     $dsc_sng="concatenate two 3D vars with multihyperslabbing";
     $tst_cmd[5]="84"; 
     $tst_cmd[6]="SS_OK";
@@ -1349,12 +1359,12 @@ if($USER eq 'zender'){
 # Fragile, depends on cut, expect failure on MACOSX
 # ncks -C -h -O -v area -p ~/nco/data in.nc ~/foo.nc
 # ncecat -C -h -O -G ensemble -d lat,1,1 -v area ~/foo.nc ~/foo.nc ~/foo2.nc
-# ncks -C -O -h -m -v area ~/foo2.nc | grep "ensemble../area" | wc | cut -c 7
+# ncks -C -O -h -m --trd -v area ~/foo2.nc | grep "ensemble../area" | wc | cut -c 7
 #ncecat #3    
     $dsc_sng="Group aggregate variable with hyperslabbing (requires netCDF4)";
     $tst_cmd[0]="ncks -C -h -O $fl_fmt $nco_D_flg -v area $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncecat -C -h -O $omp_flg $fl_fmt $nco_D_flg -G ensemble -d lat,1,1 -v area %tmp_fl_00% %tmp_fl_00% %tmp_fl_01%";
-    $tst_cmd[2]="ncks -C -O -h -m -v area %tmp_fl_01% | grep \"ensemble../area\" | wc | cut -c 7";
+    $tst_cmd[2]="ncks -C -O -h -m --trd -v area %tmp_fl_01% | grep \"ensemble../area\" | wc | cut -c 7";
     $tst_cmd[3]="2"; 
     $tst_cmd[4]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -1365,10 +1375,10 @@ if($USER eq 'zender'){
 
 #ncecat #4 part1
 #ncecat -h -O -g g1g1 -v v1 ~/nco/data/in_grp.nc ~/nco/data/in_grp.nc ~/foo.nc
-#ncks -H -d record,1,1,1 ~/foo.nc
+#ncks -H --trd -d record,1,1,1 ~/foo.nc
     $dsc_sng="(Groups) Concatenate variables/groups 1: scalars -g g1g1 -v v1";
     $tst_cmd[0]="ncecat $nco_D_flg -h -O -g g1g1 -v v1 $in_pth_arg in_grp.nc in_grp.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -H -d record,1,1,1 %tmp_fl_00%";
+    $tst_cmd[1]="ncks -H --trd -d record,1,1,1 %tmp_fl_00%";
     $tst_cmd[2]="record[1] v1[1]=11";
     $tst_cmd[3]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -1387,10 +1397,10 @@ if($USER eq 'zender'){
 
 #ncecat #6 part1
 #ncecat -h -O -g g6g1 -v area ~/nco/data/in_grp.nc ~/nco/data/in_grp.nc ~/foo.nc
-#ncks -H -C -d record,1,1,1 -d lat,1,1,1 -g g6g1 -v area ~/foo.nc
+#ncks -H --trd -C -d record,1,1,1 -d lat,1,1,1 -g g6g1 -v area ~/foo.nc
     $dsc_sng="(Groups) Concatenate variables/groups 1: 1D -g g6g1 -v area";
     $tst_cmd[0]="ncecat $nco_D_flg -h -O -g g6g1 -v area $in_pth_arg in_grp.nc in_grp.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -H -C -d record,1,1,1 -d lat,1,1,1 -g g6g1 -v area %tmp_fl_00%";
+    $tst_cmd[1]="ncks -H --trd -C -d record,1,1,1 -d lat,1,1,1 -g g6g1 -v area %tmp_fl_00%";
     $tst_cmd[2]="record[1] lat[1]=90 area[3]=50";
     $tst_cmd[3]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -1398,11 +1408,11 @@ if($USER eq 'zender'){
 
 #ncecat #7 same as #6 but look at metadata
 #ncecat -h -O -g g6g1 -v area ~/nco/data/in_grp.nc ~/nco/data/in_grp.nc ~/foo.nc
-#ncks -C -g g6g1 -v area ~/foo.nc
+#ncks -C --trd -g g6g1 -v area ~/foo.nc
 #area dimension 0: record, size = 2 (Record non-coordinate dimension)
     $dsc_sng="(Groups) Concatenate variables/groups 2: 1D -g g6g1 -v area";
     $tst_cmd[0]="ncecat $nco_D_flg -h -O -g g6g1 -v area $in_pth_arg in_grp.nc in_grp.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -g g6g1 -v area %tmp_fl_00% | grep 'area dimension 0: /record, size = 2, chunksize = 1 (Record non-coordinate dimension)'";
+    $tst_cmd[1]="ncks -C --trd -g g6g1 -v area %tmp_fl_00% | grep 'area dimension 0: /record, size = 2, chunksize = 1 (Record non-coordinate dimension)'";
     $tst_cmd[2]="area dimension 0: /record, size = 2, chunksize = 1 (Record non-coordinate dimension)";
     $tst_cmd[3]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -1410,10 +1420,10 @@ if($USER eq 'zender'){
     
 #ncecat #8 part1
 #ncecat -h -O -v two_dmn_rec_var ~/nco/data/in_grp.nc ~/nco/data/in_grp.nc ~/foo.nc
-#ncks -C -d record,1,1,1 -d time,9,9,1 -d lev,2,2,1 -v two_dmn_rec_var ~/foo.nc
+#ncks -C --trd -d record,1,1,1 -d time,9,9,1 -d lev,2,2,1 -v two_dmn_rec_var ~/foo.nc
     $dsc_sng="(Groups) Concatenate variables/groups 1: 2D -v two_dmn_rec_var";
     $tst_cmd[0]="ncecat $nco_D_flg -h -O -v two_dmn_rec_var $in_pth_arg in_grp.nc in_grp.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -d record,1,1,1 -d time,9,9,1 -d lev,2,2,1 -v two_dmn_rec_var %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C --trd -d record,1,1,1 -d time,9,9,1 -d lev,2,2,1 -v two_dmn_rec_var %tmp_fl_00%";
     $tst_cmd[2]="record[1] time[9]=10 lev[2]=1000 two_dmn_rec_var[59]=3";
     $tst_cmd[3]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -1422,10 +1432,10 @@ if($USER eq 'zender'){
 #ncecat #9 
 #Check that "time" is eliminated as record
 #ncecat -O ~/nco/data/in_grp_3.nc ~/nco/data/in_grp_3.nc ~/foo.nc
-#ncks -m -C -g g25g1 -v one_dmn_rec_var ~/foo.nc
+#ncks -m --trd -C -g g25g1 -v one_dmn_rec_var ~/foo.nc
     $dsc_sng="(Groups) Concatenate variables/groups";
     $tst_cmd[0]="ncecat $nco_D_flg -h -O $in_pth_arg in_grp_3.nc in_grp_3.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -m -C -g g25g1 -v one_dmn_rec_var %tmp_fl_00%";
+    $tst_cmd[1]="ncks -m --trd -C -g g25g1 -v one_dmn_rec_var %tmp_fl_00%";
     $tst_cmd[2]="one_dmn_rec_var dimension 1: time, size = 10 NC_DOUBLE, chunksize = 10 (Coordinate is time)";
     $tst_cmd[3]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -1436,7 +1446,7 @@ if($USER eq 'zender'){
 # ncecat -O -4 -D 5 -C --cnk_plc=all --cnk_map=rd1 -v date_int -p ~/nco/data in.nc in.nc ~/foo.nc
     $dsc_sng="Chunking --cnk_plc=all --cnk_map=rd1 -v date_int";
     $tst_cmd[0]="ncecat -O -C -4 $nco_D_flg --cnk_plc=all --cnk_map=rd1 -v date_int $in_pth_arg in.nc in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks %tmp_fl_00% | grep 'date_int dimension 0'";
+    $tst_cmd[1]="ncks --trd %tmp_fl_00% | grep 'date_int dimension 0'";
     $tst_cmd[2]="date_int dimension 0: record, size = 2, chunksize = 1 (Record non-coordinate dimension)";
     $tst_cmd[3]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -1447,7 +1457,7 @@ if($USER eq 'zender'){
 #ncecat -O -C -4 -v four_dmn_rec_var --cnk_plc=xpl --cnk_dmn lat,2 --cnk_dmn lon,4 -p ~/nco/data in.nc in.nc ~/foo.nc
     $dsc_sng="Chunking -v four_dmn_rec_var --cnk_dmn lat,2 --cnk_dmn lon,4";
     $tst_cmd[0]="ncecat -O -C -4 $nco_D_flg -v four_dmn_rec_var --cnk_plc=xpl --cnk_dmn lat,2 --cnk_dmn lon,4  $in_pth_arg in.nc in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks %tmp_fl_00% | grep 'four_dmn_rec_var dimension 2'";
+    $tst_cmd[1]="ncks --trd %tmp_fl_00% | grep 'four_dmn_rec_var dimension 2'";
     $tst_cmd[2]="four_dmn_rec_var dimension 2: lat, size = 2, chunksize = 2 (Non-coordinate dimension)";
     $tst_cmd[3]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -1460,12 +1470,12 @@ if($USER eq 'zender'){
 # ncks -O    -v time,one ~/nco/data/in.nc ~/foo1.nc
 # ncks -O -a -v one,time ~/nco/data/in.nc ~/foo2.nc
 # ncecat -O -p ~ foo1.nc foo2.nc ~/foo3.nc
-# ncks -C -H -v one -d record,1 -s '%g' ~/foo3.nc
+# ncks -C -H --trd -v one -d record,1 -s '%g' ~/foo3.nc
     $dsc_sng="Concatenate variables with different ID ordering";
-    $tst_cmd[0]="ncks -h -O $fl_fmt $nco_D_flg -C    -v time,one $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -h -O $fl_fmt $nco_D_flg -C -a -v one,time $in_pth_arg in.nc %tmp_fl_01%";
+    $tst_cmd[0]="ncks -h -O $fl_fmt $nco_D_flg -C     -v time,one $in_pth_arg in.nc %tmp_fl_00%";
+    $tst_cmd[1]="ncks -h -O $fl_fmt $nco_D_flg -C  -a -v one,time $in_pth_arg in.nc %tmp_fl_01%";
     $tst_cmd[2]="ncecat -h -O $fl_fmt $nco_D_flg %tmp_fl_00% %tmp_fl_01% %tmp_fl_02%";
-    $tst_cmd[3]="ncks -C -H -d record,1 -v one -s '%g' %tmp_fl_02%";
+    $tst_cmd[3]="ncks -C -H --trd -d record,1 -v one -s '%g' %tmp_fl_02%";
     $tst_cmd[4]="1";
     $tst_cmd[5]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -1474,10 +1484,10 @@ if($USER eq 'zender'){
 #ncecat #13
 # Copy coordinates from first file as is, do not add record dimension to them
 # ncecat -O -v time,one,lat,lon,three_dmn_rec_var -p ~/nco/data in.nc in.nc in.nc ~/foo.nc
-# ncks -C -H -v lat -d lat,1 ~/foo.nc
+# ncks -C -H --trd -v lat -d lat,1 ~/foo.nc
     $dsc_sng="Verify concatentated coordinates do not gain new record dimension";
     $tst_cmd[0]="ncecat -h -O $fl_fmt $nco_D_flg -v time,one,lat,lon,three_dmn_rec_var $in_pth_arg in.nc in.nc in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks $fl_fmt $nco_D_flg -C -H -v lat -d lat,1 %tmp_fl_00%";
+    $tst_cmd[1]="ncks $fl_fmt $nco_D_flg -C -H --trd -v lat -d lat,1 %tmp_fl_00%";
     $tst_cmd[2]="lat[1]=90";
     $tst_cmd[3]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -1486,10 +1496,10 @@ if($USER eq 'zender'){
 #ncecat #14
 # Test --gag
 # ncecat -O --gag -v one,lat -p ~/nco/data in.nc in.nc in.nc ~/foo.nc
-# ncks -C -H -v one ~/foo.nc
+# ncks -C -H --trd -v one ~/foo.nc
     $dsc_sng="Test group aggregation with --gag";
     $tst_cmd[0]="ncecat -h -O $fl_fmt $nco_D_flg --gag -v one,lat $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks $fl_fmt $nco_D_flg -C -H -v one %tmp_fl_00%";
+    $tst_cmd[1]="ncks $fl_fmt $nco_D_flg -C -H --trd -v one %tmp_fl_00%";
     $tst_cmd[2]="one = 1";
     $tst_cmd[3]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -1506,7 +1516,7 @@ if($USER eq 'zender'){
 #ncflint #1
     $dsc_sng="identity weighting";
     $tst_cmd[0]="ncflint $omp_flg -h -O $fl_fmt $nco_D_flg -w 3,-2 -v one $in_pth_arg in.nc in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%e' -v one %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%e' -v one %tmp_fl_00%";
     $tst_cmd[2]="1.0";
     $tst_cmd[3]="NO_SS";
     $tst_cmd[3]="SS_OK";
@@ -1519,7 +1529,7 @@ if($USER eq 'zender'){
 	$tst_cmd[0]="ncrename -h -O $nco_D_flg -v zero,foo $in_pth_arg in.nc %tmp_fl_01%";
 	$tst_cmd[1]="ncrename -h -O $nco_D_flg -v one,foo $in_pth_arg in.nc %tmp_fl_00%";
 	$tst_cmd[2]="ncflint $omp_flg -h -O $fl_fmt $nco_D_flg -i foo,0.5 -v two %tmp_fl_01% %tmp_fl_00% %tmp_fl_02%";
-	$tst_cmd[3]="ncks -C -H -s '%e' -v two %tmp_fl_02%";
+	$tst_cmd[3]="ncks -C -H --trd -s '%e' -v two %tmp_fl_02%";
 	$tst_cmd[4]="2.0";
 	$tst_cmd[5]="NO_SS";
 	$tst_cmd[5]="SS_OK";
@@ -1534,7 +1544,7 @@ if($USER eq 'zender'){
     $tst_cmd[2]="ncflint $omp_flg -h -O $fl_fmt $nco_D_flg -w 0.5,0.5 %tmp_fl_01% %tmp_fl_02% %tmp_fl_03%";
     $tst_cmd[3]="ncflint $omp_flg -h -O $fl_fmt $nco_D_flg -w 0.5,0.5 %tmp_fl_02% %tmp_fl_01% %tmp_fl_04%  $foo_y_fl $foo_x_fl $foo_yx_fl";
     $tst_cmd[4]="ncdiff $omp_flg -h -O $fl_fmt $nco_D_flg %tmp_fl_03% %tmp_fl_04% %tmp_fl_05%";
-    $tst_cmd[5]="ncks -C -H --no_blank -s '%g' -v mss_val %tmp_fl_05% ";
+    $tst_cmd[5]="ncks -C -H --trd --no_blank -s '%g' -v mss_val %tmp_fl_05% ";
     $tst_cmd[6]="1e+36";
     $tst_cmd[7]="NO_SS";
     NCO_bm::tst_run(\@tst_cmd);
@@ -1546,7 +1556,7 @@ if($USER eq 'zender'){
     $tst_cmd[1]="ncks -h -O $fl_fmt $nco_D_flg -C -v pck_5 $in_pth_arg in.nc %tmp_fl_02%";
     $tst_cmd[2]="ncrename -h -O $fl_fmt $nco_D_flg -v pck_5,pck_3 %tmp_fl_02%";
     $tst_cmd[3]="ncflint $omp_flg -h -O $fl_fmt $nco_D_flg -v pck_3 %tmp_fl_01% %tmp_fl_02% %tmp_fl_03%";
-    $tst_cmd[4]="ncks -C -H -s '%g' -v pck_3 %tmp_fl_03% ";
+    $tst_cmd[4]="ncks -C -H --trd -s '%g' -v pck_3 %tmp_fl_03% ";
     $tst_cmd[5]="4";
     $tst_cmd[6]="NO_SS";
     NCO_bm::tst_run(\@tst_cmd);
@@ -1557,12 +1567,12 @@ if($USER eq 'zender'){
 # ncks -O    -v time,one ~/nco/data/in.nc ~/foo1.nc
 # ncks -O -a -v one,time ~/nco/data/in.nc ~/foo2.nc
 # ncra -O -p ~ foo1.nc foo2.nc ~/foo3.nc
-# ncks -C -H -v one ~/foo3.nc
+# ncks -C -H --trd -v one ~/foo3.nc
     $dsc_sng="Concatenate variables with different ID ordering";
     $tst_cmd[0]="ncks -h -O $fl_fmt $nco_D_flg -C    -v time,one $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncks -h -O $fl_fmt $nco_D_flg -C -a -v one,time $in_pth_arg in.nc %tmp_fl_01%";
     $tst_cmd[2]="ncflint -h -O $fl_fmt $nco_D_flg %tmp_fl_00% %tmp_fl_01% %tmp_fl_02%";
-    $tst_cmd[3]="ncks -C -H -v one %tmp_fl_02%";
+    $tst_cmd[3]="ncks -C -H --trd -v one %tmp_fl_02%";
     $tst_cmd[4]="one = 1";
     $tst_cmd[5]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -1577,10 +1587,10 @@ if($USER eq 'zender'){
 		
 #ncflint #6 
 # ncflint -4 -O -w 0.8,0.0 -p ~/nco/data in.nc in.nc ~/foo.nc
-# ncks -H -C -v time -d time,9,9,1 ~/foo.nc
+# ncks -H --trd -C -v time -d time,9,9,1 ~/foo.nc
     $dsc_sng="-w 0.8,0.0 in.nc in.nc";
     $tst_cmd[0]="ncflint $nco_D_flg -4 -O -w 0.8,0.0 $in_pth_arg in.nc in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -H -C -v time -d time,9,9,1 %tmp_fl_00%";
+    $tst_cmd[1]="ncks -H --trd -C -v time -d time,9,9,1 %tmp_fl_00%";
     $tst_cmd[2]="time[9]=8";
     $tst_cmd[3]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -1588,12 +1598,12 @@ if($USER eq 'zender'){
 
 #ncflint #7  
 # ncflint -4 -O -w 0.8,0.0 -p ~/nco/data in.nc in.nc ~/foo.nc
-# ncks -H -C -v time -d time,9,9,1 ~/foo.nc
+# ncks -H --trd -C -v time -d time,9,9,1 ~/foo.nc
 # --fix_rec_crd prevents ncflint from multiplying or interpolating any coordinate variables, including record coordinate variables
 
     $dsc_sng="--fix_rec_crd -w 0.8,0.0 in.nc in.nc";
     $tst_cmd[0]="ncflint $nco_D_flg -4 -O --fix_rec_crd -w 0.8,0.0 $in_pth_arg in.nc in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -H -C -v time -d time,9,9,1 %tmp_fl_00%";
+    $tst_cmd[1]="ncks -H --trd -C -v time -d time,9,9,1 %tmp_fl_00%";
     $tst_cmd[2]="time[9]=10";
     $tst_cmd[3]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -1603,12 +1613,12 @@ if($USER eq 'zender'){
  
 #ncflint #8
 # ncflint -h -O -g g4 -v one_dmn_rec_var -w 1,1 ~/nco/data/in_grp.nc ~/nco/data/in_grp.nc ~/foo.nc
-# ncks -H -C -O -g g4 -d time,9 -v one_dmn_rec_var ~/foo.nc
+# ncks -H --trd -C -O -g g4 -d time,9 -v one_dmn_rec_var ~/foo.nc
 
     $dsc_sng="(Groups) Weight 1D -g g4 -v one_dmn_rec_var -w 1,1 in_grp.nc in_grp.nc";
     $tst_cmd[0]="ncflint $nco_D_flg -h -O -v one_dmn_rec_var -w 1,1 $in_pth_arg in_grp.nc in_grp.nc %tmp_fl_00%";
 
-    $tst_cmd[1]="ncks -H -C -O -g g4 -d time,9 -v one_dmn_rec_var %tmp_fl_00%";
+    $tst_cmd[1]="ncks -H --trd -C -O -g g4 -d time,9 -v one_dmn_rec_var %tmp_fl_00%";
     $tst_cmd[2]="time[9]=20 one_dmn_rec_var[9]=20";
     $tst_cmd[3]="SS_OK";   
 
@@ -1628,7 +1638,7 @@ if($USER eq 'zender'){
     $tst_cmd[0]="ncks -h -O $fl_fmt $nco_D_flg -v lat_T42,lon_T42,gw_T42 $in_pth_arg in.nc %tmp_fl_03%";
     $tst_cmd[1]="ncrename -h -O $nco_D_flg -d lat_T42,lat -d lon_T42,lon -v lat_T42,lat -v gw_T42,gw -v lon_T42,lon %tmp_fl_03%";
     $tst_cmd[2]="ncap2 -h -O $fl_fmt $nco_D_flg -s 'one[lat,lon]=lat*lon*0.0+1.0' -s 'zero[lat,lon]=lat*lon*0.0' %tmp_fl_03% %tmp_fl_04%";
-    $tst_cmd[3]="ncks -C -H -s '%g' -v one -F -d lon,128 -d lat,64 %tmp_fl_04% ";
+    $tst_cmd[3]="ncks -C -H --trd -s '%g' -v one -F -d lon,128 -d lat,64 %tmp_fl_04% ";
     $tst_cmd[4]=1;
     $tst_cmd[5]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -1637,16 +1647,18 @@ if($USER eq 'zender'){
 #ncks #02   
 #passes, but returned string includes tailing NULLS (<nul> in nedit)
     $dsc_sng="extract filename string";
-    $tst_cmd[0]="ncks -C -H -s '%c' -v fl_nm $in_pth_arg in.nc";
+    $tst_cmd[0]="ncks -C -H --trd -s '%c' -v fl_nm $in_pth_arg in.nc";
     $tst_cmd[1]="/home/zender/nco/data/in.cdl";
     $tst_cmd[2]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
     $#tst_cmd=0; # Reset array
     
 #ncks #03
+# ncks -h -O -v lev ~/nco/data/in.nc ~/foo.nc
+# ncks -C -H --trd -s '%f,' -v lev ~/foo.nc
     $dsc_sng="extract a dimension";
     $tst_cmd[0]="ncks -h -O $fl_fmt $nco_D_flg -v lev $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%f,' -v lev %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%f,' -v lev %tmp_fl_00%";
     $tst_cmd[2]="100.000000,500.000000,1000.000000";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -1654,7 +1666,7 @@ if($USER eq 'zender'){
     
 #ncks #04
     $tst_cmd[0]="ncks -h -O $fl_fmt $nco_D_flg -v three_dmn_var $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%f' -v three_dmn_var -d lat,1,1 -d lev,2,2 -d lon,3,3 %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%f' -v three_dmn_var -d lat,1,1 -d lev,2,2 -d lon,3,3 %tmp_fl_00%";
     $dsc_sng="extract a variable with limits";
     $tst_cmd[2]="23";
     $tst_cmd[3]="SS_OK";
@@ -1663,7 +1675,7 @@ if($USER eq 'zender'){
     
 #ncks #05
     $tst_cmd[0]="ncks -h -O $fl_fmt $nco_D_flg -v int_var $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%d' -v int_var %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%d' -v int_var %tmp_fl_00%";
     $dsc_sng="extract variable of type NC_INT";
     $tst_cmd[2]="10";
     $tst_cmd[3]="SS_OK";
@@ -1672,7 +1684,7 @@ if($USER eq 'zender'){
     
 #ncks #06
     $tst_cmd[0]="ncks -h -O $fl_fmt $nco_D_flg -C -v three_dmn_var -d lat,1,1 -d lev,0,0 -d lev,2,2 -d lon,0,,2 -d lon,1,,2 $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%4.1f,' -v three_dmn_var %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%4.1f,' -v three_dmn_var %tmp_fl_00%";
     $dsc_sng="Multi-slab lat and lon with srd";
     $tst_cmd[2]="12.0,13.0,14.0,15.0,20.0,21.0,22.0,23.0";
     $tst_cmd[3]="SS_OK";
@@ -1681,7 +1693,7 @@ if($USER eq 'zender'){
     
 #ncks #07
     $tst_cmd[0]="ncks -h -O $fl_fmt $nco_D_flg -C -v three_dmn_var -d lat,1,1 -d lev,2,2 -d lon,0,3 -d lon,1,3 $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%4.1f,' -v three_dmn_var %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%4.1f,' -v three_dmn_var %tmp_fl_00%";
     $dsc_sng="Multi-slab with redundant hyperslabs";
     $tst_cmd[2]="20.0,21.0,22.0,23.0";
     $tst_cmd[3]="SS_OK";
@@ -1690,7 +1702,7 @@ if($USER eq 'zender'){
     
 #ncks #08
     $tst_cmd[0]="ncks -h -O $fl_fmt $nco_D_flg -C -v three_dmn_var -d lat,1,1 -d lev,2,2 -d lon,0.,,2 -d lon,90.,,2 $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%4.1f,' -v three_dmn_var %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%4.1f,' -v three_dmn_var %tmp_fl_00%";
     $dsc_sng="Multi-slab with coordinates";
     $tst_cmd[2]="20.0,21.0,22.0,23.0";
     $tst_cmd[3]="SS_OK";
@@ -1699,7 +1711,7 @@ if($USER eq 'zender'){
     
     if(0){ # fxm use this test once script allows error exits to be intended result
 	$tst_cmd[0]="ncks -h -O $fl_fmt $nco_D_flg -C -v lat -d lat,20.,20.001 $in_pth_arg in.nc %tmp_fl_00%";
-	$tst_cmd[1]="ncks -C -H -s '%4.1f,' -v lat %tmp_fl_00%";
+	$tst_cmd[1]="ncks -C -H --trd -s '%4.1f,' -v lat %tmp_fl_00%";
 	$dsc_sng="No data in domain (OK. TODO nco1007. ncks behaves perfectly here. Unfortunately, the perl test script does not recognize the expected answer string as being valid)";
 	$tst_cmd[2]="ncks: ERROR Domain 20 <= lat <= 20.001 brackets no coordinate values.";
 	$tst_cmd[3]="SS_OK";
@@ -1709,7 +1721,7 @@ if($USER eq 'zender'){
     
 #ncks #09
     $tst_cmd[0]="ncks -h -O $fl_fmt $nco_D_flg -C -v three_dmn_var -d lat,1,1 -d lev,800.,200. -d lon,270.,0. $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%4.1f,' -v three_dmn_var %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%4.1f,' -v three_dmn_var %tmp_fl_00%";
     $dsc_sng="Double-wrapped hyperslab";
     $tst_cmd[2]="23.0,20.0,15.0,12.0";
     $tst_cmd[3]="SS_OK";
@@ -1718,7 +1730,7 @@ if($USER eq 'zender'){
     
 #ncks #10
     $tst_cmd[0]="ncks -h -O $fl_fmt $nco_D_flg -C -d time_udunits,'1999-12-08 12:00:0.0','1999-12-09 00:00:0.0' $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%6.0f' -d time_udunits,'1999-12-08 18:00:0.0','1999-12-09 12:00:0.0',2 -v time_udunits $in_pth_arg in.nc";
+    $tst_cmd[1]="ncks -C -H --trd -s '%6.0f' -d time_udunits,'1999-12-08 18:00:0.0','1999-12-09 12:00:0.0',2 -v time_udunits $in_pth_arg in.nc";
     $dsc_sng="dimension slice using UDUnits library (fails without UDUnits library support)";
     $tst_cmd[2]="876018";
     $tst_cmd[3]="SS_OK";
@@ -1744,7 +1756,7 @@ if($USER eq 'zender'){
     $#tst_cmd=0; # Reset array
     
 #ncks #13
-    $tst_cmd[0]="ncks -h -O $fl_fmt $nco_D_flg -C -H -v wvl -d wvl,'0.4 micron','0.7 micron' -s '%3.1e' $in_pth_arg in.nc";
+    $tst_cmd[0]="ncks -h -O $fl_fmt $nco_D_flg -C -H --trd -v wvl -d wvl,'0.4 micron','0.7 micron' -s '%3.1e' $in_pth_arg in.nc";
     $dsc_sng="dimension slice using UDUnit conversion (fails without UDUnits library support)";
     $tst_cmd[1]="1.0e-06";
     $tst_cmd[2]="SS_OK";
@@ -1753,7 +1765,7 @@ if($USER eq 'zender'){
     
 #ncks #14
     $tst_cmd[0]="ncks -h -O $fl_fmt $nco_D_flg -C -v '^three_*' $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%g' -C -v three %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%g' -C -v three %tmp_fl_00%";
     $dsc_sng="variable wildcards A (fails without regex library)";
     $tst_cmd[2]="3";
     $tst_cmd[3]="SS_OK";
@@ -1763,7 +1775,7 @@ if($USER eq 'zender'){
 #ncks #15
     $tst_cmd[0]="ncks -h -O $fl_fmt $nco_D_flg -C -v '^[a-z]{3}_[a-z]{3}_[a-z]{3,}\$' $in_pth_arg in.nc %tmp_fl_00%";
     # for this test, the regex is mod'ed                       ^
-    $tst_cmd[1]="ncks -C -H -s '%d' -C -v val_one_int %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%d' -C -v val_one_int %tmp_fl_00%";
     $dsc_sng="variable wildcards B (fails without regex library)";
     $tst_cmd[2]="1";
     $tst_cmd[3]="SS_OK";
@@ -1772,7 +1784,7 @@ if($USER eq 'zender'){
     
     if(0){ # fxm use this test once script allows error exits to be intended result
 	$tst_cmd[0]="ncks -h -O $fl_fmt $nco_D_flg -C -d time,0,1 -v time $in_pth_arg in.nc %tmp_fl_00%";
-	$tst_cmd[1]="ncks -C -H -s '%g' -C -d time,2, %tmp_fl_00%";
+	$tst_cmd[1]="ncks -C -H --trd -s '%g' -C -d time,2, %tmp_fl_00%";
 	$dsc_sng="Offset past end of file (OK. TODO nco693. ncks behaves perfectly here. Unfortunately, the perl test script does not recognize the expected answer string as being valid)";
 	$tst_cmd[2]="ncks: ERROR User-specified dimension index range 2 <= time <= 1 does not fall within valid dimension index range 0 <= time <= 1";
 	$tst_cmd[3]="SS_OK";
@@ -1781,7 +1793,7 @@ if($USER eq 'zender'){
     } # endif 0
 
 #ncks #16
-    $tst_cmd[0]="ncks -C -H -s '%d' -v byte_var $in_pth_arg in.nc";
+    $tst_cmd[0]="ncks -C -H --trd -s '%d' -v byte_var $in_pth_arg in.nc";
     $dsc_sng="Print byte value";
     $tst_cmd[1]="122";
     $tst_cmd[2]="SS_OK";
@@ -1790,7 +1802,7 @@ if($USER eq 'zender'){
 
 #ncks #17
     $tst_cmd[0]="ncks -O $fl_fmt $nco_D_flg -v cnv_CF_crd $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%g' -v lon_gds -d gds_crd,2 %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%g' -v lon_gds -d gds_crd,2 %tmp_fl_00%";
     $dsc_sng="CF convention coordinates attribute";
     $tst_cmd[2]="180";
     $tst_cmd[3]="SS_OK";
@@ -1801,12 +1813,12 @@ if($USER eq 'zender'){
 # ncatted -O -a _FillValue,global,c,l,222 ~/nco/data/in.nc ~/foo.nc
 # ncks -O ~/foo.nc ~/foo2.nc
 # ncap2 -v -O -s 'n2=global at _FillValue;' ~/foo2.nc ~/foo3.nc
-# ncks -C -H -s '%d' -v n2 ~/foo3.nc
+# ncks -C -H --trd -s '%d' -v n2 ~/foo3.nc
+    $dsc_sng="Create/copy global _FillValue";
     $tst_cmd[0]="ncatted -O $fl_fmt $nco_D_flg -a _FillValue,global,c,l,222 $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncks -O %tmp_fl_00% %tmp_fl_01%";
     $tst_cmd[2]="ncap2 -v -O -s 'n2=global\@_FillValue;' %tmp_fl_01% %tmp_fl_02%";
-    $tst_cmd[3]="ncks -C -H -s '%d' -v n2 %tmp_fl_02%";
-    $dsc_sng="Create/copy of global _FillValue";
+    $tst_cmd[3]="ncks -C -H --trd -s '%d' -v n2 %tmp_fl_02%";
     $tst_cmd[4]="222";
     $tst_cmd[5]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -1824,7 +1836,7 @@ if($USER eq 'zender'){
 #ncks #19 groups: add associated variable "lat" of "area" to extraction list
     $dsc_sng="(Groups) Extract associated coordinate variable";
     $tst_cmd[0]="ncks -h -O $fl_fmt $nco_D_flg -v area $in_pth_arg in_grp.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%g' -v lat %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%g' -v lat %tmp_fl_00%";
     $tst_cmd[2]="-9090";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -1833,7 +1845,7 @@ if($USER eq 'zender'){
 #ncks #20 groups: Add to extraction list all coordinates associated with CF convention
     $dsc_sng="(Groups) Add CF convention variables";
     $tst_cmd[0]="ncks -O $fl_fmt $nco_D_flg -g g7 -v gds_var $in_pth_arg in_grp.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%g' -v lat_gds %tmp_fl_00%";  
+    $tst_cmd[1]="ncks -C -H --trd -s '%g' -v lat_gds %tmp_fl_00%";  
     $tst_cmd[2]="-90-30-3000303090";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -1842,7 +1854,7 @@ if($USER eq 'zender'){
 #ncks #21 groups: Extract variables in groups (test -g with -v)
     $dsc_sng="(Groups) Extract variables in groups";
     $tst_cmd[0]="ncks -O $fl_fmt $nco_D_flg -v scl -g g1g1,g1 $in_pth_arg in_grp.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%g' %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%g' %tmp_fl_00%";
     $tst_cmd[2]="1.11";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -1851,7 +1863,7 @@ if($USER eq 'zender'){
 #ncks #22 groups: Create variables in groups (test -G with -v and -g)
     $dsc_sng="(Groups) Create variables in groups";
     $tst_cmd[0]="ncks -O $fl_fmt $nco_D_flg -G g8 -g g3 -v scl $in_pth_arg in_grp_3.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%g' %tmp_fl_00%"; 
+    $tst_cmd[1]="ncks -C -H --trd -s '%g' %tmp_fl_00%"; 
     $tst_cmd[2]="1.3";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -1860,7 +1872,7 @@ if($USER eq 'zender'){
 #ncks #23 groups: Hyperslabs (test -d with -v and -g: Extracts the second value (2) from g4/one_dmn_rec_var)
     $dsc_sng="(Groups) Hyperslabs in groups";
     $tst_cmd[0]="ncks -O $fl_fmt $nco_D_flg -C -g g4 -v one_dmn_rec_var -d time,1,1 $in_pth_arg in_grp.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -H -s '%d' %tmp_fl_00%"; 
+    $tst_cmd[1]="ncks -H --trd -s '%d' %tmp_fl_00%"; 
     $tst_cmd[2]="2";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -1873,7 +1885,7 @@ if($USER eq 'zender'){
 #ncks #24 groups: Extract group attributes
     $dsc_sng="(Groups) Extract group attributes";
     $tst_cmd[0]="ncks -O $fl_fmt $nco_D_flg -g g3 $in_pth_arg in_grp_3.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks %tmp_fl_00% | grep g3_group_attribute";
+    $tst_cmd[1]="ncks --trd %tmp_fl_00% | grep g3_group_attribute";
     $tst_cmd[2]="Group attribute 0: g3_group_attribute, size = 18 NC_CHAR, value = g3_group_attribute";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -1882,7 +1894,7 @@ if($USER eq 'zender'){
 #ncks #25 groups: Extract global attributes
     $dsc_sng="Extract global attributes";
     $tst_cmd[0]="ncks -O $fl_fmt $nco_D_flg $in_pth_arg in_grp.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks %tmp_fl_00% | grep Conventions";
+    $tst_cmd[1]="ncks --trd %tmp_fl_00% | grep Conventions";
     $tst_cmd[2]="Global attribute 0: Conventions, size = 6 NC_CHAR, value = CF-1.0";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -1891,7 +1903,7 @@ if($USER eq 'zender'){
 #ncks #26 groups: Extract "bounds" variables (extract /g8/lev_bnd)
     $dsc_sng="(Groups) Extract 'bounds' variables";
     $tst_cmd[0]="ncks -O $fl_fmt $nco_D_flg -v lev $in_pth_arg in_grp.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -O -H -s '%g' %tmp_fl_00% ";    
+    $tst_cmd[1]="ncks -O -H --trd -s '%g' %tmp_fl_00% ";    
     $tst_cmd[2]="03003007507501013.25";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -1900,7 +1912,7 @@ if($USER eq 'zender'){
 #ncks #27 groups: Extract group attributes with GPE
     $dsc_sng="(Groups) GPE group attribute extraction";
     $tst_cmd[0]="ncks -O $fl_fmt $nco_D_flg -G g9 -g g3 -v scl $in_pth_arg in_grp_3.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks %tmp_fl_00% | grep g3_group_attribute";
+    $tst_cmd[1]="ncks --trd %tmp_fl_00% | grep g3_group_attribute";
     $tst_cmd[2]="Group attribute 0: g3_group_attribute, size = 18 NC_CHAR, value = g3_group_attribute";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -1909,7 +1921,7 @@ if($USER eq 'zender'){
 #ncks #28 groups: Group dimension hyperslabs
     $dsc_sng="(Groups) Group dimension hyperslabs";
     $tst_cmd[0]="ncks -O $fl_fmt $nco_D_flg -v gds_var -d gds_crd,1,1 $in_pth_arg in_grp.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -v lat_gds -s '%g' %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -v lat_gds -s '%g' %tmp_fl_00%";
     $tst_cmd[2]="-30";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -1920,10 +1932,11 @@ if($USER eq 'zender'){
 # 
     
 #ncks #29 groups: Sort output alphabetically
-# ncks -z ~/nco/data in_grp.nc | tail -1
+# ncks -z ~/nco/data/in_grp.nc | tail -1 (deprecated 20170914)
+# ncks --trd -m ~/nco/data/in_grp.nc | grep ": type" | tail -1 | cut -d ' ' -f 1
     $dsc_sng="(Groups) Sort output alphabetically";
-    $tst_cmd[0]="ncks -z $in_pth_arg in_grp.nc | tail -1";
-    $tst_cmd[1]="var: /val_one_mss";
+    $tst_cmd[0]="ncks --trd -m $in_pth_arg in_grp.nc | grep ': type' | tail -1 | cut -d ' ' -f 1";
+    $tst_cmd[1]="val_one_mss:";
     $tst_cmd[2]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
     $#tst_cmd=0; # Reset array
@@ -1931,7 +1944,7 @@ if($USER eq 'zender'){
 #ncks #30 2D variable definition
     $dsc_sng="2D variable definition";
     $tst_cmd[0]="ncks -O $fl_fmt $nco_D_flg -C -v lev_bnd $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks %tmp_fl_00%";
+    $tst_cmd[1]="ncks --trd %tmp_fl_00%";
     $tst_cmd[2]="lev[2] vrt_nbr[1] lev_bnd[5]=1013.25";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -1941,7 +1954,7 @@ if($USER eq 'zender'){
 #extract all variables in g6 = area,area1, refine to area1 only
     $dsc_sng="(Groups) Variable/Group extraction test 1 (netCDF4 file)";
     $tst_cmd[0]="ncks -O $fl_fmt $nco_D_flg -C -g g6 $in_pth_arg in_grp.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -v area1 %tmp_fl_00%";
+    $tst_cmd[1]="ncks --trd -v area1 %tmp_fl_00%";
     $tst_cmd[2]="lat[1] area1[1]=31";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -1952,7 +1965,7 @@ if($USER eq 'zender'){
 #use -d 
     $dsc_sng="(Groups) Variable/Group extraction test 2 (netCDF4 file)";
     $tst_cmd[0]="ncks -O $fl_fmt $nco_D_flg -C -g g6 $in_pth_arg in_grp.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -v area1 -d lat,0,0 %tmp_fl_00%";
+    $tst_cmd[1]="ncks --trd -v area1 -d lat,0,0 %tmp_fl_00%";
     $tst_cmd[2]="lat[0] area1[0]=21";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -1961,7 +1974,7 @@ if($USER eq 'zender'){
 #ncks #33 Variable/Group extraction test 3 (netCDF4 file)
 #extract all variables in g6g1 (second level group) = area
     $dsc_sng="(Groups) Variable/Group extraction test 3 (netCDF4 file)";
-    $tst_cmd[0]="ncks -O $fl_fmt $nco_D_flg -C -g g6g1 $in_pth_arg in_grp.nc";
+    $tst_cmd[0]="ncks -O $fl_fmt $nco_D_flg -C --trd -g g6g1 $in_pth_arg in_grp.nc";
     $tst_cmd[1]="lat[1]=90 area[1]=50";
     $tst_cmd[2]="SS_OK";  
     NCO_bm::tst_run(\@tst_cmd);
@@ -1972,7 +1985,7 @@ if($USER eq 'zender'){
 #grep -w = all word
 #NOTE: test repeated for 3 strings, for non-netcDF4 cases, output is empty string, wildcard . used  
     $dsc_sng="(Groups) Variable/Group extraction test 4-1 (netCDF4 file)";
-    $tst_cmd[0]="ncks -O $fl_fmt $nco_D_flg -C -v are. $in_pth_arg in_grp.nc | grep -w /g6/g6g1/area";
+    $tst_cmd[0]="ncks -O $fl_fmt $nco_D_flg -C --trd -v are. $in_pth_arg in_grp.nc | grep -w /g6/g6g1/area";
     $tst_cmd[1]="/g6/g6g1/area";
     $tst_cmd[2]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -1983,7 +1996,7 @@ if($USER eq 'zender'){
 #grep -w = all word
 #NOTE: test repeated for 3 strings, for non-netcDF4 cases, output is empty string, wildcard . used  
     $dsc_sng="(Groups) Variable/Group extraction test 4-2 (netCDF4 file)";
-    $tst_cmd[0]="ncks -O $fl_fmt $nco_D_flg -C -v are. $in_pth_arg in_grp.nc | grep -w /g6/area";
+    $tst_cmd[0]="ncks -O $fl_fmt $nco_D_flg -C --trd -v are. $in_pth_arg in_grp.nc | grep -w /g6/area";
     $tst_cmd[1]="/g6/area";
     $tst_cmd[2]="SS_OK"; 
     NCO_bm::tst_run(\@tst_cmd);
@@ -1994,7 +2007,7 @@ if($USER eq 'zender'){
 #grep -w = all word
 #NOTE: test repeated for 3 strings, for non-netcDF4 cases, output is empty string, wildcard . used  
     $dsc_sng="(Groups) Variable/Group extraction test 4-3 (netCDF4 file)";
-    $tst_cmd[0]="ncks -O $fl_fmt $nco_D_flg -C -v are. $in_pth_arg in_grp.nc | grep -o -w area";
+    $tst_cmd[0]="ncks -O $fl_fmt $nco_D_flg -C --trd -v are. $in_pth_arg in_grp.nc | grep -o -w area";
     $tst_cmd[1]="area";
     $tst_cmd[2]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -2003,7 +2016,7 @@ if($USER eq 'zender'){
 #ncks #37 Variable/Group extraction test 5 (netCDF4 file)
 # Extract all variables "area" in g6g1
     $dsc_sng="(Groups) Variable/Group extraction test 5 (netCDF4 file)";
-    $tst_cmd[0]="ncks -H $fl_fmt $nco_D_flg -C -s '%g' -v area -g g6g1 -d lat,0 $in_pth_arg in_grp.nc";
+    $tst_cmd[0]="ncks -H --trd $fl_fmt $nco_D_flg -C -s '%g' -v area -g g6g1 -d lat,0 $in_pth_arg in_grp.nc";
     $tst_cmd[1]="40";
     $tst_cmd[2]="SS_OK";    
     NCO_bm::tst_run(\@tst_cmd);
@@ -2012,7 +2025,7 @@ if($USER eq 'zender'){
 #ncks #38 Variable/Group extraction test 6 (netCDF4 file)
 #extract all variables "area" in g6g1 = g6/g6g1/area 
     $dsc_sng="(Groups) Variable/Group extraction test 6 (netCDF4 file)";
-    $tst_cmd[0]="ncks -O $fl_fmt $nco_D_flg -C -v area -g g6g1 $in_pth_arg in_grp.nc";
+    $tst_cmd[0]="ncks -O $fl_fmt $nco_D_flg -C --trd -v area -g g6g1 $in_pth_arg in_grp.nc";
     $tst_cmd[1]="lat[1]=90 area[1]=50";
     $tst_cmd[2]="SS_OK";  
     NCO_bm::tst_run(\@tst_cmd);
@@ -2022,7 +2035,7 @@ if($USER eq 'zender'){
 #extract all variables "area" in g6 and g6g1 = g6/g6g1/area, g6/area
 #NOTE: test repeated for 2 strings, for non-netcDF4 case, output is empty string 
     $dsc_sng="(Groups) Variable/Group extraction test 7-1 (netCDF4 file)";
-    $tst_cmd[0]="ncks -O $fl_fmt $nco_D_flg -C -v area -g g6,g6g1 $in_pth_arg in_grp.nc | grep -w /g6/g6g1/area";
+    $tst_cmd[0]="ncks -O $fl_fmt $nco_D_flg -C --trd -v area -g g6,g6g1 $in_pth_arg in_grp.nc | grep -w /g6/g6g1/area";
     $tst_cmd[1]="/g6/g6g1/area";
     $tst_cmd[2]="SS_OK";     
     NCO_bm::tst_run(\@tst_cmd);
@@ -2032,7 +2045,7 @@ if($USER eq 'zender'){
 #extract all variables "area" in g6 and g6g1 = g6/g6g1/area, g6/area
 #NOTE: test repeated for 2 strings, for non-netcDF4 case, output is empty string 
     $dsc_sng="(Groups) Variable/Group extraction test 7-2 (netCDF4 file)";
-    $tst_cmd[0]="ncks -O $fl_fmt $nco_D_flg -C -v area -g g6,g6g1 $in_pth_arg in_grp.nc | grep -w /g6/area";
+    $tst_cmd[0]="ncks -O $fl_fmt $nco_D_flg -C --trd -v area -g g6,g6g1 $in_pth_arg in_grp.nc | grep -w /g6/area";
     $tst_cmd[1]="/g6/area";
     $tst_cmd[2]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -2041,7 +2054,7 @@ if($USER eq 'zender'){
 #ncks #41 Variable/Group extraction test 8 (netCDF3 file)
 #extract all variables "area" = /area 
     $dsc_sng="(Groups) Variable/Group extraction test 8 (netCDF3 file)";
-    $tst_cmd[0]="ncks -O $fl_fmt $nco_D_flg -C -v area $in_pth_arg in.nc";
+    $tst_cmd[0]="ncks -O $fl_fmt $nco_D_flg -C --trd -v area $in_pth_arg in.nc";
     $tst_cmd[1]="lat[1]=90 area[1]=10 meter2";
     $tst_cmd[2]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -2060,10 +2073,10 @@ if($USER eq 'zender'){
 #ncks #43 Extract associated coordinates test 2 (netCDF3 file) 
 #This tests that coordinate rlev is not extracted with rz when -C switch is used
 #ncks -O -C -v rz ~/nco/data/in.nc ~/foo.nc
-#ncks -v rz ~/foo.nc | wc | cut -d ' ' -f 6
+#ncks --trd -v rz ~/foo.nc | wc | cut -d ' ' -f 6
     $dsc_sng="Extract associated coordinates test 2 (netCDF3 file) ";
     $tst_cmd[0]="ncks -O $fl_fmt $nco_D_flg -C -v rz $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -v rz %tmp_fl_00% | wc | cut -d ' ' -f 6";
+    $tst_cmd[1]="ncks --trd -v rz %tmp_fl_00% | wc | cut -d ' ' -f 6";
     $tst_cmd[2]="11";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -2078,7 +2091,7 @@ if($USER eq 'zender'){
 # output must not contain /g3
     $dsc_sng="(Groups) Extract associated coordinates test 3 (netCDF4 file) ";
     $tst_cmd[0]="ncks -O $fl_fmt $nco_D_flg -g g5g1 -v rz $in_pth_arg in_grp_3.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -H %tmp_fl_00%";
+    $tst_cmd[1]="ncks -H --trd %tmp_fl_00%";
     $tst_cmd[2]="rlev[2]=1"; # data for /g3/rlev differs from /g5/rlev
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -2086,9 +2099,9 @@ if($USER eq 'zender'){
 	
 #ncks #45 Extract CF 'coordinates' variables(netCDF4 file)
 #gds_crd:coordinates = "lat_gds lon_gds";
-#ncks -v gds_crd ~/nco/data/in_grp.nc 
+#ncks --trd -v gds_crd ~/nco/data/in_grp.nc 
     $dsc_sng="(Groups) Extract CF 'coordinates' variables(netCDF4 file)";
-    $tst_cmd[0]="ncks $nco_D_flg -v gds_crd $in_pth_arg in_grp.nc | grep -w /g7/lat_gds";
+    $tst_cmd[0]="ncks --trd $nco_D_flg -v gds_crd $in_pth_arg in_grp.nc | grep -w /g7/lat_gds";
     $tst_cmd[1]="/g7/lat_gds";
     $tst_cmd[2]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -2097,7 +2110,7 @@ if($USER eq 'zender'){
 #ncks #46 Extract CF 'coordinates' variables (netCDF3 file)
 #gds_crd:coordinates = "lat_gds lon_gds";
     $dsc_sng="Extract CF 'coordinates' variables (netCDF3 file)";
-    $tst_cmd[0]="ncks $nco_D_flg -v gds_crd $in_pth_arg in.nc | grep -o -w lat_gds";
+    $tst_cmd[0]="ncks --trd $nco_D_flg -v gds_crd $in_pth_arg in.nc | grep -o -w lat_gds";
     $tst_cmd[1]="lat_gds";
     $tst_cmd[2]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -2106,7 +2119,7 @@ if($USER eq 'zender'){
 #ncks #47 Extract CF 'bounds' variables (netCDF4 file)
 #lev:bounds = "lev_bnd";
     $dsc_sng="(Groups) Extract CF 'bounds' variables (netCDF4 file)";
-    $tst_cmd[0]="ncks $nco_D_flg -g g8 -v lev $in_pth_arg in_grp_3.nc | grep -w /g8/lev_bnd";
+    $tst_cmd[0]="ncks --trd $nco_D_flg -g g8 -v lev $in_pth_arg in_grp_3.nc | grep -w /g8/lev_bnd";
     $tst_cmd[1]="/g8/lev_bnd";
     $tst_cmd[2]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -2115,7 +2128,7 @@ if($USER eq 'zender'){
 #ncks #48 Extract CF 'bounds' variables (netCDF3 file)
 #lev:bounds = "lev_bnd";
     $dsc_sng="Extract CF 'bounds' variables (netCDF3 file)";
-    $tst_cmd[0]="ncks $nco_D_flg -v lev $in_pth_arg in.nc | grep -o -w lev_bnd";
+    $tst_cmd[0]="ncks --trd $nco_D_flg -v lev $in_pth_arg in.nc | grep -o -w lev_bnd";
     $tst_cmd[1]="lev_bnd";
     $tst_cmd[2]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -2123,10 +2136,10 @@ if($USER eq 'zender'){
     
 #ncks #49
 # ncks -O --no_frm_trm --mk_rec_dmn lat -v three_dmn_var ~/nco/data/in.nc ~/foo.nc
-# ncks -C -m -v lat ~/foo.nc | egrep -o -w 'Record coordinate is lat'
+# ncks -C -m --trd -v lat ~/foo.nc | egrep -o -w 'Record coordinate is lat'
     $dsc_sng="Check --mk_rec_dmn (netCDF3 file)";
     $tst_cmd[0]="ncks -O $fl_fmt $nco_D_flg --no_frm_trm --mk_rec_dmn lat -v three_dmn_var $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -m -v lat %tmp_fl_00% | egrep -o -w 'Record coordinate is lat'";
+    $tst_cmd[1]="ncks -C -m --trd -v lat %tmp_fl_00% | egrep -o -w 'Record coordinate is lat'";
     $tst_cmd[2]="Record coordinate is lat";
     $tst_cmd[3]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -2135,7 +2148,7 @@ if($USER eq 'zender'){
 #ncks #50    
     $dsc_sng="(Groups) Check --mk_rec_dmn (netCDF4 file)";
     $tst_cmd[0]="ncks -O $fl_fmt $nco_D_flg --mk_rec_dmn lat -v lat_lon $in_pth_arg in_grp.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -m -v lat %tmp_fl_00% | egrep -o -w 'Record coordinate is lat'";
+    $tst_cmd[1]="ncks -C -m --trd -v lat %tmp_fl_00% | egrep -o -w 'Record coordinate is lat'";
     $tst_cmd[2]="Record coordinate is lat";
     $tst_cmd[3]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -2144,7 +2157,7 @@ if($USER eq 'zender'){
 #ncks #51
     $dsc_sng="Check --fix_rec_dmn (netCDF3 file)";
     $tst_cmd[0]="ncks -O $fl_fmt $nco_D_flg --fix_rec_dmn time -v three_dmn_rec_var $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -m -v time %tmp_fl_00% | egrep -o -w 'Coordinate is time'";
+    $tst_cmd[1]="ncks -C -m --trd -v time %tmp_fl_00% | egrep -o -w 'Coordinate is time'";
     $tst_cmd[2]="Coordinate is time";
     $tst_cmd[3]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -2154,7 +2167,7 @@ if($USER eq 'zender'){
 # ncks -O --fix_rec_dmn time -v three_dmn_rec_var -p ~/nco/data in_grp.nc ~/foo.nc
     $dsc_sng="(Groups) Check --fix_rec_dmn (netCDF4 file)";
     $tst_cmd[0]="ncks -O $fl_fmt $nco_D_flg --fix_rec_dmn time -v three_dmn_rec_var $in_pth_arg in_grp.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -m -v time %tmp_fl_00% | egrep -o -w 'Coordinate is time'";
+    $tst_cmd[1]="ncks -C -m --trd -v time %tmp_fl_00% | egrep -o -w 'Coordinate is time'";
     $tst_cmd[2]="Coordinate is time";
     $tst_cmd[3]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -2163,7 +2176,7 @@ if($USER eq 'zender'){
 #ncks #53    
     $dsc_sng="--fix_rec_dmn with MM3 workaround (netCDF3->netCDF3 file)";
     $tst_cmd[0]="ncks -O $nco_D_flg --fix_rec_dmn time -v one,two,one_dmn_rec_var,two_dmn_rec_var $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -m -v time %tmp_fl_00% | egrep -o -w 'Coordinate is time'";
+    $tst_cmd[1]="ncks -C -m --trd -v time %tmp_fl_00% | egrep -o -w 'Coordinate is time'";
     $tst_cmd[2]="Coordinate is time";
     $tst_cmd[3]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -2173,7 +2186,7 @@ if($USER eq 'zender'){
 	# NB: does not actually test3 code for reasons explained in header of nco_use_mm3_workaround()
 	$dsc_sng="(Groups) --fix_rec_dmn with MM3 workaround (netCDF4->netCDF3 file)";
 	$tst_cmd[0]="ncks -O -3 $nco_D_flg --fix_rec_dmn time -v /g10/two_dmn_rec_var,/g10/three_dmn_rec_var $in_pth_arg in_grp.nc %tmp_fl_00%";
-	$tst_cmd[1]="ncks -C -m -v time %tmp_fl_00% | egrep -o -w 'Coordinate dimension'";
+	$tst_cmd[1]="ncks -C -m --trd -v time %tmp_fl_00% | egrep -o -w 'Coordinate dimension'";
 	$tst_cmd[2]="Record coordinate dimension";
 	$tst_cmd[3]="SS_OK";   
 	NCO_bm::tst_run(\@tst_cmd);
@@ -2191,10 +2204,10 @@ if($USER eq 'zender'){
  
 #ncks #54: Apply chunking all policy to -v lat_lon(lat,lon); lat(2) and lon(4) are by default chunked with a size == dimension
 #ncks -O -4 -v lat_lon --cnk_min=1 --cnk_plc=all ~/nco/data/in_grp.nc ~/foo.nc
-#ncks -C -m -v lat_lon ~/foo.nc | egrep -o -w 'lat_lon dimension 0: lat, size = 2 NC_FLOAT, chunksize = 2'
+#ncks -C -m --trd -v lat_lon ~/foo.nc | egrep -o -w 'lat_lon dimension 0: lat, size = 2 NC_FLOAT, chunksize = 2'
     $dsc_sng="(Groups) Chunking --cnk_plc=all --v lat_lon";
     $tst_cmd[0]="ncks $nco_D_flg -O -4 -v lat_lon --cnk_min=1 --cnk_plc=all $in_pth_arg in_grp.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -m -v lat_lon %tmp_fl_00% | egrep -o -w 'lat_lon dimension 0: lat, size = 2 NC_FLOAT, chunksize = 2'";
+    $tst_cmd[1]="ncks -C -m --trd -v lat_lon %tmp_fl_00% | egrep -o -w 'lat_lon dimension 0: lat, size = 2 NC_FLOAT, chunksize = 2'";
     $tst_cmd[2]="lat_lon dimension 0: lat, size = 2 NC_FLOAT, chunksize = 2";
     $tst_cmd[3]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -2203,7 +2216,7 @@ if($USER eq 'zender'){
 #ncks #55: Explicitly chunk time to 2 instead of the default 1 for record dimension
     $dsc_sng="(Groups) Chunking --cnk_plc=cnk_g3d --cnk_dmn time,2";
     $tst_cmd[0]="ncks $nco_D_flg -O -4 --cnk_plc=cnk_g3d --cnk_dmn time,2 -v three_dmn_rec_var $in_pth_arg in_grp.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -m -v three_dmn_rec_var %tmp_fl_00% | grep 'three_dmn_rec_var dimension 0: /time, size = 10 NC_DOUBLE, chunksize = 2 (Record coordinate is /time)'";
+    $tst_cmd[1]="ncks -C -m --trd -v three_dmn_rec_var %tmp_fl_00% | grep 'three_dmn_rec_var dimension 0: /time, size = 10 NC_DOUBLE, chunksize = 2 (Record coordinate is /time)'";
     $tst_cmd[2]="three_dmn_rec_var dimension 0: /time, size = 10 NC_DOUBLE, chunksize = 2 (Record coordinate is /time)";
     $tst_cmd[3]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -2212,50 +2225,50 @@ if($USER eq 'zender'){
 # Limit/MSA tests
 
 #ncks #56:
-# ncks -H -C --dmn time,1,3,2 --dmn lev,1,1,1 -v two_dmn_rec_var ~/nco/data/in_grp.nc
+# ncks -H --trd -C --dmn time,1,3,2 --dmn lev,1,1,1 -v two_dmn_rec_var ~/nco/data/in_grp.nc
 # /g10/two_dmn_rec_var
 # time[1]=2 lev[1]=500 two_dmn_rec_var[4]=2.1 
 # time[3]=4 lev[1]=500 two_dmn_rec_var[10]=2.3 
     $dsc_sng="(Groups) MSA --dmn time,1,3,2 --dmn lev,1,1,1";
-    $tst_cmd[0]="ncks $nco_D_flg -H -C --dmn time,1,3,2 --dmn lev,1,1,1 -v two_dmn_rec_var $in_pth_arg in_grp.nc";
+    $tst_cmd[0]="ncks $nco_D_flg -H --trd -C --dmn time,1,3,2 --dmn lev,1,1,1 -v two_dmn_rec_var $in_pth_arg in_grp.nc";
     $tst_cmd[1]="time[3]=4 lev[1]=500 two_dmn_rec_var[10]=2.3";
     $tst_cmd[2]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
     $#tst_cmd=0; # Reset array 			    
 
 #ncks #57:
-# ncks -H -C --dmn time,1,1,1 --dmn time,3,3,1 --dmn lev,0,0,1 --dmn lev,2,2,1 -v two_dmn_rec_var ~/nco/data/in_grp.nc
+# ncks -H --trd -C --dmn time,1,1,1 --dmn time,3,3,1 --dmn lev,0,0,1 --dmn lev,2,2,1 -v two_dmn_rec_var ~/nco/data/in_grp.nc
 #/g10/two_dmn_rec_var
 #time[1]=2 lev[0]=100 two_dmn_rec_var[3]=1 
 #time[1]=2 lev[2]=1000 two_dmn_rec_var[5]=3 
 #time[3]=4 lev[0]=100 two_dmn_rec_var[9]=1 
 #time[3]=4 lev[2]=1000 two_dmn_rec_var[11]=3 
     $dsc_sng="(Groups) MSA --dmn time,1,1,1 --dmn time,3,3,1 --dmn lev,0,0,1";
-    $tst_cmd[0]="ncks $nco_D_flg -H -C --dmn time,1,1,1 --dmn time,3,3,1 --dmn lev,0,0,1 --dmn lev,2,2,1 -v two_dmn_rec_var $in_pth_arg in_grp.nc";
+    $tst_cmd[0]="ncks $nco_D_flg -H --trd -C --dmn time,1,1,1 --dmn time,3,3,1 --dmn lev,0,0,1 --dmn lev,2,2,1 -v two_dmn_rec_var $in_pth_arg in_grp.nc";
     $tst_cmd[1]="time[3]=4 lev[2]=1000 two_dmn_rec_var[11]=3";
     $tst_cmd[2]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
     $#tst_cmd=0; # Reset array 			  
 
 #ncks #58 Use limits to print a dimension "lon2(4)" that does NOT have a coordinate variable
-# ncks -H -d lon2,1,3,2 -v lon2_var ~/nco/data/in_grp_3.nc
+# ncks -H --trd -d lon2,1,3,2 -v lon2_var ~/nco/data/in_grp_3.nc
 #/g16/lon2_var
 #lon2[1] lon2_var[1]=1 
 #lon2[3] lon2_var[3]=3 
     $dsc_sng="(Groups) MSA -d lon2,1,3,2 -v lon2_var";
-    $tst_cmd[0]="ncks $nco_D_flg -H -d lon2,1,3,2 -v lon2_var $in_pth_arg in_grp_3.nc";
+    $tst_cmd[0]="ncks $nco_D_flg -H --trd -d lon2,1,3,2 -v lon2_var $in_pth_arg in_grp_3.nc";
     $tst_cmd[1]="lon2[3] lon2_var[3]=3";
     $tst_cmd[2]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
     $#tst_cmd=0; # Reset array 			  
     
 #ncks #59 same as #58 but with 2 limits with the same result
-# ncks -H -d lon2,1,1,1 -d lon2,3,3,1 -v lon2_var ~/nco/data/in_grp.nc 
+# ncks -H --trd -d lon2,1,1,1 -d lon2,3,3,1 -v lon2_var ~/nco/data/in_grp.nc 
 #/g16/lon2_var
 #lon2[1] lon2_var[1]=1 
 #lon2[3] lon2_var[3]=3 
     $dsc_sng="(Groups) MSA -d lon2,1,3,2 -v lon2_var";
-    $tst_cmd[0]="ncks $nco_D_flg -d lon2,1,1,1 -d lon2,3,3,1 -v lon2_var $in_pth_arg in_grp_3.nc";
+    $tst_cmd[0]="ncks --trd $nco_D_flg -d lon2,1,1,1 -d lon2,3,3,1 -v lon2_var $in_pth_arg in_grp_3.nc";
     $tst_cmd[1]="lon2[3] lon2_var[3]=3";
     $tst_cmd[2]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -2263,7 +2276,7 @@ if($USER eq 'zender'){
     
 #ncks #60
 # This test tests both limits and extraction of associated CF variables
-# ncks -H -v gds_var -d gds_crd,1,1,1 ~/nco/data/in_grp.nc  
+# ncks -H --trd -v gds_var -d gds_crd,1,1,1 ~/nco/data/in_grp.nc  
 #/g7/g7g1/gds_var
 #gds_var[1]=273.2 
 #/g7/gds_crd
@@ -2273,7 +2286,7 @@ if($USER eq 'zender'){
 #/g7/lon_gds
 #gds_crd[1]=1 lon_gds[1]=0 
     $dsc_sng="(Groups) CF MSA -v gds_var -d gds_crd,1,1,1";
-    $tst_cmd[0]="ncks $nco_D_flg -H -v gds_var -d gds_crd,1,1,1 $in_pth_arg in_grp.nc";
+    $tst_cmd[0]="ncks $nco_D_flg -H --trd -v gds_var -d gds_crd,1,1,1 $in_pth_arg in_grp.nc";
     $tst_cmd[1]="gds_crd[1]=1 lon_gds[1]=0";
     $tst_cmd[2]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -2281,13 +2294,13 @@ if($USER eq 'zender'){
   
 #ncks #61
 # This test tests both limits printing of coordinates that are in ancestor groups
-# ncks -H -v gds_var -d gds_crd,1,1,1 ~/nco/data/in_grp.nc   
-# ncks -H -C -g g7g1 -v gds_var -d gds_crd,1,1,1 -d gds_crd,3,3,1 ~/nco/data/in_grp.nc 
+# ncks -H --trd -v gds_var -d gds_crd,1,1,1 ~/nco/data/in_grp.nc   
+# ncks -H --trd -C -g g7g1 -v gds_var -d gds_crd,1,1,1 -d gds_crd,3,3,1 ~/nco/data/in_grp.nc 
 #/g7/g7g1/gds_var
 # gds_crd[1]=1 gds_var[1]=273.2 
 # gds_crd[3]=3 gds_var[3]=273.4 
-    $dsc_sng="(Groups) MSA -H -C -g g7g1 -v gds_var -d gds_crd,1,1,1 -d gds_crd,3,3,1";
-    $tst_cmd[0]="ncks $nco_D_flg -H -C -g g7g1 -v gds_var -d gds_crd,1,1,1 -d gds_crd,3,3,1 $in_pth_arg in_grp.nc";
+    $dsc_sng="(Groups) MSA -H --trd -C -g g7g1 -v gds_var -d gds_crd,1,1,1 -d gds_crd,3,3,1";
+    $tst_cmd[0]="ncks $nco_D_flg -H --trd -C -g g7g1 -v gds_var -d gds_crd,1,1,1 -d gds_crd,3,3,1 $in_pth_arg in_grp.nc";
     $tst_cmd[1]="gds_crd[3]=3 gds_var[3]=273.4";
     $tst_cmd[2]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -2296,11 +2309,11 @@ if($USER eq 'zender'){
 #ncks #62
 # Test "parallel" scope 
 #ncks: INFO nco_bld_var_dmn() reports variable </g16/g16g1/lon1> with dimension coordinate [0]/g16/g16g1/lon1
-# ncks -H -g g16g1 -v lon1 -d lon1,3,3,1 ~/nco/data/in_grp.nc
+# ncks -H --trd -g g16g1 -v lon1 -d lon1,3,3,1 ~/nco/data/in_grp.nc
 #/g16/g16g1/lon1
 #lon1[3]=3 
     $dsc_sng="(Groups) Parallel scope MSA -g g16g1 -v lon1 -d lon1,3,3,1";
-    $tst_cmd[0]="ncks $nco_D_flg -H -g g16g1 -v lon1 -d lon1,3,3,1  $in_pth_arg in_grp_3.nc";
+    $tst_cmd[0]="ncks $nco_D_flg -H --trd -g g16g1 -v lon1 -d lon1,3,3,1  $in_pth_arg in_grp_3.nc";
     $tst_cmd[1]="lon1[3]=3";
     $tst_cmd[2]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -2310,7 +2323,7 @@ if($USER eq 'zender'){
 # Test "parallel" scope 
 #ncks: INFO nco_bld_var_dmn() reports variable </g16/g16g1/lon1_var> with dimension coordinate [0]/g16/g16g1/lon1
     $dsc_sng="(Groups) Parallel scope MSA -g g16g1 -v lon1_var -d lon1,1,1,1";
-    $tst_cmd[0]="ncks $nco_D_flg -H -g g16g1 -v lon1_var -d lon1,1,1,1 $in_pth_arg in_grp_3.nc";
+    $tst_cmd[0]="ncks $nco_D_flg -H --trd -g g16g1 -v lon1_var -d lon1,1,1,1 $in_pth_arg in_grp_3.nc";
     $tst_cmd[1]="lon1[1]=1 lon1_var[1]=1";
     $tst_cmd[2]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -2320,7 +2333,7 @@ if($USER eq 'zender'){
 # Test "parallel" scope 
 #ncks: INFO nco_bld_var_dmn() reports variable </g16/g16g2/lon1_var> with dimension coordinate [0]/g16/g16g2/lon1
     $dsc_sng="(Groups) Parallel scope MSA -g g16g2 -v lon1_var -d lon1,1,1,1";
-    $tst_cmd[0]="ncks $nco_D_flg -H -g g16g2 -v lon1_var -d lon1,1,1,1 $in_pth_arg in_grp_3.nc";
+    $tst_cmd[0]="ncks $nco_D_flg -H --trd -g g16g2 -v lon1_var -d lon1,1,1,1 $in_pth_arg in_grp_3.nc";
     $tst_cmd[1]="lon1[1]=4 lon1_var[1]=1";
     $tst_cmd[2]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -2333,7 +2346,7 @@ if($USER eq 'zender'){
 #lat[1]=90 area[1]=50
     $dsc_sng="(Groups) Dimensions in ancestor groups -g g6g1 -v area";
     $tst_cmd[0]="ncks $nco_D_flg -O -g g6g1 -v area $in_pth_arg in_grp.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -H -C -v area -d lat,1,1 %tmp_fl_00%";
+    $tst_cmd[1]="ncks -H --trd -C -v area -d lat,1,1 %tmp_fl_00%";
     $tst_cmd[2]="lat[1]=90 area[1]=50";
     $tst_cmd[3]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -2347,7 +2360,7 @@ if($USER eq 'zender'){
 #lat[1]=90 area[1]=50 
     $dsc_sng="(Groups) GPE and Dimensions in ancestor groups -G o1 -g g6g1 -v area";
     $tst_cmd[0]="ncks $nco_D_flg -O -G o1 -g g6g1 -v area $in_pth_arg in_grp.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -H -C -v area -d lat,0,1 %tmp_fl_00%";
+    $tst_cmd[1]="ncks -H --trd -C -v area -d lat,0,1 %tmp_fl_00%";
     $tst_cmd[2]="lat[1]=90 area[1]=50";
     $tst_cmd[3]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -2355,9 +2368,9 @@ if($USER eq 'zender'){
          
 #ncks #67
 # Test "out of scope" coordinate
-# ncks -H -v lon3_var ~/nco/data/in_grp.nc
+# ncks -H --trd -v lon3_var ~/nco/data/in_grp.nc
     $dsc_sng="(Groups) Out of scope coordinate -v lon3_var";
-    $tst_cmd[0]="ncks $nco_D_flg -H -v lon3_var $in_pth_arg in_grp_3.nc";
+    $tst_cmd[0]="ncks $nco_D_flg -H --trd -v lon3_var $in_pth_arg in_grp_3.nc";
     $tst_cmd[1]="lon3[3] lon3_var[3]=3";
     $tst_cmd[2]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -2365,9 +2378,9 @@ if($USER eq 'zender'){
     
 #ncks #68
 # Test 2 "intermediate scope " coordinates
-# ncks -H -v lon4_var ~/nco/data/in_grp.nc
+# ncks -H --trd -v lon4_var ~/nco/data/in_grp.nc
     $dsc_sng="(Groups) Order coordinates by group depth -v lon4_var";
-    $tst_cmd[0]="ncks $nco_D_flg -C -H -v lon4_var $in_pth_arg in_grp_3.nc";
+    $tst_cmd[0]="ncks $nco_D_flg -C -H --trd -v lon4_var $in_pth_arg in_grp_3.nc";
     $tst_cmd[1]="lon4[1]=4 lon4_var[1]=1";
     $tst_cmd[2]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -2375,9 +2388,9 @@ if($USER eq 'zender'){
     
 #ncks #69
 # Test -X
-# ncks -O -C -X 0.,1.,-30.,-29. -g g18 -v gds_3dvar ~/nco/data/in_grp_3.nc 
+# ncks -O -C --trd -X 0.,1.,-30.,-29. -g g18 -v gds_3dvar ~/nco/data/in_grp_3.nc 
     $dsc_sng="(Groups) Auxiliary coordinates -C -X 0.,1.,-30.,-29. -g g18 -v gds_3dvar in_grp_3.nc";
-    $tst_cmd[0]="ncks $nco_D_flg -C -X 0.,1.,-30.,-29. -g g18 -v gds_3dvar $in_pth_arg in_grp_3.nc";
+    $tst_cmd[0]="ncks $nco_D_flg -C --trd -X 0.,1.,-30.,-29. -g g18 -v gds_3dvar $in_pth_arg in_grp_3.nc";
     $tst_cmd[1]="time[9] gds_crd[1]=1 gds_3dvar[73]=282.2 meter";
     $tst_cmd[2]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -2385,18 +2398,18 @@ if($USER eq 'zender'){
 	
 #ncks #70
 # Test -X with variables anywhere in file (g18g1 has variable)
-# ncks -O -C -X 0.,1.,-30.,-29. -g g18g1 -v gds_3dvar ~/nco/data/in_grp_3.nc
+# ncks -O -C --trd -X 0.,1.,-30.,-29. -g g18g1 -v gds_3dvar ~/nco/data/in_grp_3.nc
     $dsc_sng="(Groups) Auxiliary coordinates -X 0.,1.,-30.,-29. -g g18g1 -v gds_3dvar in_grp_3.nc";
-    $tst_cmd[0]="ncks $nco_D_flg -C -X 0.,1.,-30.,-29. -g g18g1 -v gds_3dvar $in_pth_arg in_grp_3.nc";
+    $tst_cmd[0]="ncks $nco_D_flg -C --trd -X 0.,1.,-30.,-29. -g g18g1 -v gds_3dvar $in_pth_arg in_grp_3.nc";
     $tst_cmd[1]="time[9] gds_crd[1]=1 gds_3dvar[73]=282.2 meter";
     $tst_cmd[2]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
     $#tst_cmd=0; # Reset array 			
 
 #ncks #71
-# ncks -h -O -C -v three_dmn_var_dbl -d time,,2 -d lat,0,0 -d lon,0,0 -d lon,3,3 in.nc
+# ncks -h -O -C --trd -v three_dmn_var_dbl -d time,,2 -d lat,0,0 -d lon,0,0 -d lon,3,3 in.nc
     $dsc_sng="Limits -C -v three_dmn_var_dbl -d time,,2 -d lat,0,0 -d lon,0,0 -d lon,3,3 in.nc";
-    $tst_cmd[0]="ncks $nco_D_flg -C -v three_dmn_var_dbl -d time,,2 -d lat,0,0 -d lon,0,0 -d lon,3,3 $in_pth_arg in.nc";
+    $tst_cmd[0]="ncks $nco_D_flg -C --trd -v three_dmn_var_dbl -d time,,2 -d lat,0,0 -d lon,0,0 -d lon,3,3 $in_pth_arg in.nc";
     $tst_cmd[1]="time[2]=3 lat[0]=-90 lon[3]=270 three_dmn_var_dbl[19]=20 watt meter-2";
     $tst_cmd[2]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -2404,9 +2417,9 @@ if($USER eq 'zender'){
 
 #ncks #72
 #same as #70, with group
-# ncks -h -O -v three_dmn_var_dbl -d time,,2 -d lat,0,0 -d lon,0,0 -d lon,3,3 in_grp_3.nc
+# ncks -C --trd -h -O -v three_dmn_var_dbl -d time,,2 -d lat,0,0 -d lon,0,0 -d lon,3,3 in_grp_3.nc
     $dsc_sng="(Groups) Limits -C -v three_dmn_var_dbl -d time,,2 -d lat,0,0 -d lon,0,0 -d lon,3,3 in.nc";
-    $tst_cmd[0]="ncks $nco_D_flg -C -g g19g3 -v three_dmn_var_dbl -d time,,2 -d lat,0,0 -d lon,0,0 -d lon,3,3 $in_pth_arg in_grp_3.nc";
+    $tst_cmd[0]="ncks $nco_D_flg -C --trd -g g19g3 -v three_dmn_var_dbl -d time,,2 -d lat,0,0 -d lon,0,0 -d lon,3,3 $in_pth_arg in_grp_3.nc";
     $tst_cmd[1]="time[2]=3 lat[0]=-90 lon[3]=270 three_dmn_var_dbl[19]=20 watt meter-2";
     $tst_cmd[2]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -2436,9 +2449,10 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 
 #ncks #75
 # ncks -O -c ~/nco/data/in_grp.nc ~/foo.nc
+# ncks --trd -v lat ~/foo.nc | grep 'lat size'
     $dsc_sng="(Groups) -c Extract all coordinate variables";
     $tst_cmd[0]="ncks -O $nco_D_flg $in_pth_arg -c in_grp.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -v lat %tmp_fl_00% | grep 'lat size'";
+    $tst_cmd[1]="ncks --trd -v lat %tmp_fl_00% | grep 'lat size'";
     $tst_cmd[2]="lat size (RAM) = 2*sizeof(NC_FLOAT) = 2*4 = 8 bytes";
     $tst_cmd[3]="SS_OK";     
     NCO_bm::tst_run(\@tst_cmd);
@@ -2450,7 +2464,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 # ncks -O ~/nco/data/in_grp.nc ~/foo.nc
     $dsc_sng="(Groups) Default input dataset";
     $tst_cmd[0]="ncks -O $nco_D_flg $in_pth_arg in_grp.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -m -v lat %tmp_fl_00% | grep 'lat size'";
+    $tst_cmd[1]="ncks -m --trd -v lat %tmp_fl_00% | grep 'lat size'";
     $tst_cmd[2]="lat size (RAM) = 2*sizeof(NC_FLOAT) = 2*4 = 8 bytes";
     $tst_cmd[3]="SS_OK";     
     NCO_bm::tst_run(\@tst_cmd);
@@ -2460,7 +2474,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 # ncks -O in.nc ~/foo.nc
     $dsc_sng="Default input dataset";
     $tst_cmd[0]="ncks -O $nco_D_flg $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -m -v lat %tmp_fl_00% | grep 'lat size'";
+    $tst_cmd[1]="ncks -m --trd -v lat %tmp_fl_00% | grep 'lat size'";
     $tst_cmd[2]="lat size (RAM) = 2*sizeof(NC_FLOAT) = 2*4 = 8 bytes";
     $tst_cmd[3]="SS_OK";     
     NCO_bm::tst_run(\@tst_cmd);
@@ -2470,7 +2484,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 #ncks -O -3 -G : -g /g27g1/ in_grp_3.nc ~/foo.nc
     $dsc_sng="(Groups) Test flatenning with parallel variables (-3 -G : -g)";
     $tst_cmd[0]="ncks -O -3 -G : -g /g27g1/  $nco_D_flg $in_pth_arg in_grp_3.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -m -v delta_time_start %tmp_fl_00%";
+    $tst_cmd[1]="ncks -m --trd -v delta_time_start %tmp_fl_00%";
     $tst_cmd[2]="delta_time_start dimension 0: delta_time_start, size = 2 NC_FLOAT (Coordinate is delta_time_start)";
     $tst_cmd[3]="SS_OK";     
     NCO_bm::tst_run(\@tst_cmd);
@@ -2481,7 +2495,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 # simpler case of ncks -O -D 2 -3 -G : -g /altimetry/${DATA}/hdf/mabel_l2_20130927t201800_008_1.h5 ~/foo_mabel.nc
     $dsc_sng="(Groups) Test CF extraction with flattening (-3 -G : -g)";
     $tst_cmd[0]="ncks -O -3 -G : -g g28 -v delta_time_stop  $nco_D_flg $in_pth_arg in_grp_3.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -m -v delta_time_start %tmp_fl_00%";
+    $tst_cmd[1]="ncks -m --trd -v delta_time_start %tmp_fl_00%";
     $tst_cmd[2]="delta_time_start dimension 0: delta_time_start, size = 1 NC_FLOAT (Coordinate is delta_time_start)";
     $tst_cmd[3]="SS_OK";     
     NCO_bm::tst_run(\@tst_cmd);
@@ -2491,10 +2505,10 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 	
 #ncks #80
 #ncks -O -4 -L 0 --cnk_min=1 --cnk_dmn lev,1 -v two_dmn_var ~/nco/data/in_grp_7.nc ~/foo.nc
-#ncks -C -m -g /g19/g19g1/g19g1g1 -v two_dmn_var ~/foo.nc
+#ncks -C -m --trd -g /g19/g19g1/g19g1g1 -v two_dmn_var ~/foo.nc
     $dsc_sng="(Groups) Chunking and decompression -L 0 --cnk_dmn lev,1 -v two_dmn_var";
     $tst_cmd[0]="ncks -O -L 0 -4 --cnk_min=1 --cnk_dmn lev,1 -v two_dmn_var $nco_D_flg $in_pth_arg in_grp_7.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -g /g19/g19g1/g19g1g1 -v two_dmn_var -m %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -g /g19/g19g1/g19g1g1 -v two_dmn_var -m --trd %tmp_fl_00%";
     $tst_cmd[2]="two_dmn_var dimension 1: lev, size = 3, chunksize = 1 (Non-coordinate dimension)";
     $tst_cmd[3]="SS_OK";     
     NCO_bm::tst_run(\@tst_cmd);
@@ -2503,10 +2517,10 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 #ncks #81
 # There are two 'two_dmn_var' beneath /g19/g19g1, chunk the deeper and check the shallower was not chunked
 #ncks -O -4 --cnk_dmn /g19/g19g1/g19g1g1/lev,1 -v two_dmn_var ~/nco/data/in_grp_7.nc ~/foo.nc
-#ncks -m -C -v /g19/g19g1/two_dmn_var --hdn ~/foo.nc | grep chunked | cut -d ' ' -f 10-11
+#ncks -m --trd -C -v /g19/g19g1/two_dmn_var --hdn ~/foo.nc | grep chunked | cut -d ' ' -f 10-11
     $dsc_sng="(Groups) Chunking full dimension name does not chunk variables in parent group";
     $tst_cmd[0]="ncks -O -4 --cnk_dmn /g19/g19g1/g19g1g1/lev,1 -v two_dmn_var $nco_D_flg $in_pth_arg in_grp_7.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -m -C -v /g19/g19g1/two_dmn_var --hdn %tmp_fl_00% | grep chunked | cut -d ' ' -f 10-11";
+    $tst_cmd[1]="ncks -m --trd -C -v /g19/g19g1/two_dmn_var --hdn %tmp_fl_00% | grep chunked | cut -d ' ' -f 10-11";
     $tst_cmd[2]="chunked? no,";
     $tst_cmd[3]="SS_OK";     
     NCO_bm::tst_run(\@tst_cmd);
@@ -2515,10 +2529,10 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 #ncks #82
 # There are two 'two_dmn_var' beneath /g19/g19g1, chunk the deeper and check the deeper was chunked as requested
 #ncks -O -4 --cnk_dmn /g19/g19g1/g19g1g1/lev,1 -v two_dmn_var ~/nco/data/in_grp_7.nc ~/foo.nc
-#ncks -m -C -v /g19/g19g1/g19g1g1/two_dmn_var --hdn ~/foo.nc
+#ncks -m --trd -C -v /g19/g19g1/g19g1g1/two_dmn_var --hdn ~/foo.nc
     $dsc_sng="(Groups) Chunking full dimension name works on in-scope variable";
     $tst_cmd[0]="ncks -O -4 --cnk_dmn /g19/g19g1/g19g1g1/lev,1 -v two_dmn_var $nco_D_flg $in_pth_arg in_grp_7.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -m -C -v /g19/g19g1/g19g1g1/two_dmn_var --hdn %tmp_fl_00% | grep _ChunkSizes";
+    $tst_cmd[1]="ncks -m --trd -C -v /g19/g19g1/g19g1g1/two_dmn_var --hdn %tmp_fl_00% | grep _ChunkSizes";
     $tst_cmd[2]="two_dmn_var attribute 1: _ChunkSizes, size = 2 NC_INT, value = 2, 1";
     $tst_cmd[3]="SS_OK";     
     NCO_bm::tst_run(\@tst_cmd);
@@ -2527,10 +2541,10 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 #ncks #83 (part 1)
 # There are two 'two_dmn_var' beneath /g19/g19g1, chunk both, deeper with absolute shallower with relative, check deeper
 # ncks -O -4 --cnk_dmn /g19/g19g1/g19g1g1/lev,1 --cnk_dmn lev,3 -v two_dmn_var ~/nco/data/in_grp_7.nc ~/foo.nc
-# ncks -m -C -v /g19/g19g1/g19g1g1/two_dmn_var --hdn ~/foo.nc | grep _ChunkSizes
+# ncks -m --trd -C -v /g19/g19g1/g19g1g1/two_dmn_var --hdn ~/foo.nc | grep _ChunkSizes
     $dsc_sng="(Groups) Chunking full dimension name takes precedence over partial name ";
     $tst_cmd[0]="ncks -O -4 --cnk_dmn /g19/g19g1/g19g1g1/lev,1 --cnk_dmn lev,3 -v two_dmn_var $nco_D_flg $in_pth_arg in_grp_7.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -m -C -v /g19/g19g1/g19g1g1/two_dmn_var --hdn %tmp_fl_00% | grep _ChunkSizes";
+    $tst_cmd[1]="ncks -m --trd -C -v /g19/g19g1/g19g1g1/two_dmn_var --hdn %tmp_fl_00% | grep _ChunkSizes";
     $tst_cmd[2]="two_dmn_var attribute 1: _ChunkSizes, size = 2 NC_INT, value = 2, 1";
     $tst_cmd[3]="SS_OK";     
     NCO_bm::tst_run(\@tst_cmd);
@@ -2539,10 +2553,10 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 #ncks #84 (part 2)
 # There are two 'two_dmn_var' beneath /g19/g19g1, chunk both, deeper with absolute shallower with relative, check shallower
 # ncks -O -4 --cnk_min=1 --cnk_plc=xpl --cnk_dmn /g19/g19g1/g19g1g1/lev,1 --cnk_dmn lev,2 -v two_dmn_var ~/nco/data/in_grp_7.nc ~/foo.nc
-# ncks -m -C -v /g19/g19g1/two_dmn_var --hdn ~/foo.nc | grep _ChunkSizes
+# ncks -m --trd -C -v /g19/g19g1/two_dmn_var --hdn ~/foo.nc | grep _ChunkSizes
     $dsc_sng="(Groups) Chunking matches in-scope partial dimension name not out-of-scope full name";
     $tst_cmd[0]="ncks -O -4 --cnk_min=1 --cnk_plc=xpl --cnk_dmn /g19/g19g1/g19g1g1/lev,1 --cnk_dmn lev,2 -v two_dmn_var $nco_D_flg $in_pth_arg in_grp_7.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -m -C -v /g19/g19g1/two_dmn_var --hdn %tmp_fl_00% | grep _ChunkSizes";
+    $tst_cmd[1]="ncks -m --trd -C -v /g19/g19g1/two_dmn_var --hdn %tmp_fl_00% | grep _ChunkSizes";
     $tst_cmd[2]="two_dmn_var attribute 3: _ChunkSizes, size = 2 NC_INT, value = 2, 2";
     $tst_cmd[3]="SS_OK";     
     NCO_bm::tst_run(\@tst_cmd);
@@ -2550,10 +2564,10 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 
 #ncks #85
 #ncks -O -L 0 --cnk_min=1 --cnk_dmn lat,1 -v one ~/nco/data/hdn.nc ~/foo.nc
-#ncks -C -m --hdn -v one -g g13 ~/foo.nc | grep _ChunkSizes
+#ncks -C -m --trd --hdn -v one -g g13 ~/foo.nc | grep _ChunkSizes
     $dsc_sng="(Groups) Imposing zero deflation (-L 0) on already-chunked variable keeps uses specified not netCDF-default chunksizes (expect failure with netCDF 4.1.1-)";
     $tst_cmd[0]="ncks -O -4 -L 0 --cnk_min=1 --cnk_dmn lat,1 -v one $nco_D_flg $in_pth_arg hdn.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -m --hdn -v one -g g13 %tmp_fl_00% | grep _ChunkSizes";
+    $tst_cmd[1]="ncks -C -m --trd --hdn -v one -g g13 %tmp_fl_00% | grep _ChunkSizes";
     $tst_cmd[2]="one attribute 2: _ChunkSizes, size = 1 NC_INT, value = 1";
     $tst_cmd[3]="SS_OK";     
     NCO_bm::tst_run(\@tst_cmd);
@@ -2565,10 +2579,10 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 #Imposing zero-deflation (-L 0) on contiguous variable uses netCDF-default (not user-specified) sizes.
 #Since input variable is contiguous and default mode is (xst, xst), NCO determines that input has no existing chunksizes and so lets netCDF determine chunksizes
 #ncks -O -4 -L 0 --cnk_dmn lat,1 -v /lat ~/nco/data/in_grp.nc ~/foo.nc
-#ncks -C -m --hdn -v /lat ~/foo.nc | grep _ChunkSizes
+#ncks -C -m --trd --hdn -v /lat ~/foo.nc | grep _ChunkSizes
     $dsc_sng="(Groups) Imposing deflation (-L 1) on contiguous variable uses netCDF-default (not user-specified) sizes";
     $tst_cmd[0]="ncks -O -4 -L 0 --cnk_dmn lat,1 -v /lat $nco_D_flg $in_pth_arg in_grp.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -m --hdn -v /lat %tmp_fl_00% | grep _ChunkSizes";
+    $tst_cmd[1]="ncks -C -m --trd --hdn -v /lat %tmp_fl_00% | grep _ChunkSizes";
     $tst_cmd[2]="lat attribute 2: _ChunkSizes, size = 1 NC_INT, value = 2";
     $tst_cmd[3]="SS_OK";     
     NCO_bm::tst_run(\@tst_cmd);
@@ -2579,10 +2593,10 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 #Input variable is contiguous and default mode is (xst, xst). 
 #NCO determines that variable must be chunked (because compressed) and uses user-specified explicit overrides for chunksizes
 #ncks -O -4 -L 0 --cnk_dmn lat,1 -v /lat ~/nco/data/in_grp.nc ~/foo.nc
-#ncks -C -m --hdn -v /lat ~/foo.nc | grep _ChunkSizes
+#ncks -C -m --trd --hdn -v /lat ~/foo.nc | grep _ChunkSizes
     $dsc_sng="(Groups) Imposing deflation (-L 1) on contiguous variable uses netCDF-default (not user-specified) sizes";
     $tst_cmd[0]="ncks -O -4 -L 1 --cnk_dmn lat,1 -v /lat $nco_D_flg $in_pth_arg in_grp.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -m --hdn -v /lat %tmp_fl_00% | grep _ChunkSizes";
+    $tst_cmd[1]="ncks -C -m --trd --hdn -v /lat %tmp_fl_00% | grep _ChunkSizes";
     $tst_cmd[2]="lat attribute 2: _ChunkSizes, size = 1 NC_INT, value = 1";
     $tst_cmd[3]="SS_OK";     
     NCO_bm::tst_run(\@tst_cmd);
@@ -2590,10 +2604,10 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 
 #ncks #87
 #ncks -h -O --fix_rec_dmn time52 -v one_dmn_rec_var ~/nco/data/in_grp.nc ~/foo.nc
-#ncks -v time52 -m ~/foo.nc
+#ncks -v time52 -m --trd ~/foo.nc
     $dsc_sng="(Groups) Change record dimension to fixed dimension --fix_rec_dmn time52 -v one_dmn_rec_var";
     $tst_cmd[0]="ncks -h -O --fix_rec_dmn time52 -v one_dmn_rec_var $nco_D_flg $in_pth_arg in_grp.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -v time52 -m %tmp_fl_00%";
+    $tst_cmd[1]="ncks -v time52 -m --trd %tmp_fl_00%";
     $tst_cmd[2]="time52 dimension 0: time52, size = 10 NC_DOUBLE (Coordinate is time52)";
     $tst_cmd[3]="SS_OK";     
     NCO_bm::tst_run(\@tst_cmd);
@@ -2603,7 +2617,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 #ncks -O -v lat29 in_grp_3.nc ~/foo.nc
     $dsc_sng="(Groups) Test attribute copying withing groups";
     $tst_cmd[0]="ncks -O -v lat29 $nco_D_flg $in_pth_arg in_grp_3.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -m -v lat29 %tmp_fl_00% | grep 'standard_name'";
+    $tst_cmd[1]="ncks -m --trd -v lat29 %tmp_fl_00% | grep 'standard_name'";
     $tst_cmd[2]="lat29 attribute 0: standard_name, size = 8 NC_CHAR, value = latitude";
     $tst_cmd[3]="SS_OK";     
     NCO_bm::tst_run(\@tst_cmd);
@@ -2614,7 +2628,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 # ncks -O -X 0.,1.,-30.,-29. -g g18g1 -v gds_3dvar ~/nco/data/in_grp_3.nc ~/foo.nc
     $dsc_sng="(Groups) Auxiliary coordinates writing -X 0.,1.,-30.,-29. -g g18g1 -v gds_3dvar";
     $tst_cmd[0]="ncks -O $nco_D_flg -X 0.,1.,-30.,-29. -g g18g1 -v gds_3dvar $in_pth_arg in_grp_3.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks $nco_D_flg -v lon_gds_1 %tmp_fl_00%";
+    $tst_cmd[1]="ncks --trd $nco_D_flg -v lon_gds_1 %tmp_fl_00%";
     $tst_cmd[2]="gds_crd[0]=1 lon_gds_1[0]=0 degree";
     $tst_cmd[3]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -2623,10 +2637,10 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 #ncks #90
 # Test -X (writing associated coordinates) 
 # ncks -O -X 0.,1.,-30.,-29. -g g18 -v gds_3dvar ~/nco/data/in_grp_3.nc ~/foo.nc
-# ncks -g g18g2 -v lat_gds_2 ~/foo.nc 
+# ncks --trd -g g18g2 -v lat_gds_2 ~/foo.nc 
     $dsc_sng="(Groups) Auxiliary coordinates (writing associated coordinates) -X 0.,1.,-30.,-29. -g g18 -v gds_3dvar in_grp_3.nc";
     $tst_cmd[0]="ncks $nco_D_flg -X 0.,1.,-30.,-29. -g g18 -v gds_3dvar $in_pth_arg in_grp_3.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks $nco_D_flg -g g18g2 -C -v lat_gds_2 %tmp_fl_00%";
+    $tst_cmd[1]="ncks --trd $nco_D_flg -g g18g2 -C -v lat_gds_2 %tmp_fl_00%";
     $tst_cmd[2]="gds_crd[0]=1 lat_gds_2[0]=-30 degree";
     $tst_cmd[3]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -2639,7 +2653,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 # ncks -O -X 0.,1.,-30.,-29. -v gds_3dvar ~/nco/data/in.nc ~/foo.nc
     $dsc_sng="Auxiliary coordinates writing -X 0.,1.,-30.,-29. -v gds_3dvar";
     $tst_cmd[0]="ncks -O $nco_D_flg -X 0.,1.,-30.,-29. -v gds_3dvar $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks $nco_D_flg -v gds_crd %tmp_fl_00%";
+    $tst_cmd[1]="ncks --trd $nco_D_flg -v gds_crd %tmp_fl_00%";
     $tst_cmd[2]="gds_crd[0]=1 lon_gds[0]=0 degree";
     $tst_cmd[3]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -2647,19 +2661,19 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
     
 #ncks #92 Extract CF 'ancillary_variables' variables (netCDF3 file)
 #ncks -O -d time,5 -v cnv_CF_ncl ~/nco/data/in.nc ~/foo.nc
-#ncks -C -H -v cnv_CF_ncl_var_2 ~/foo.nc
+#ncks -C -H --trd -v cnv_CF_ncl_var_2 ~/foo.nc
     $dsc_sng="Extract CF 'ancillary_variables' variables (netCDF3 file)";
     $tst_cmd[0]="ncks -O $nco_D_flg -d time,5 -v cnv_CF_ncl $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H $nco_D_flg -v cnv_CF_ncl_var_2 %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd $nco_D_flg -v cnv_CF_ncl_var_2 %tmp_fl_00%";
     $tst_cmd[2]="time[0]=6 cnv_CF_ncl_var_2[0]=36";
     $tst_cmd[3]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
     $#tst_cmd=0; # Reset array 		
 
 #ncks #94
-#ncks -O -C -H -d lon,-1 -v lon ~/nco/data/in.nc
+#ncks -O -C -H --trd -d lon,-1 -v lon ~/nco/data/in.nc
     $dsc_sng="Select last element using negative one index";
-    $tst_cmd[0]="ncks -O $nco_D_flg -C -H -d lon,-1 -v lon $in_pth_arg in.nc";
+    $tst_cmd[0]="ncks -O $nco_D_flg -C -H --trd -d lon,-1 -v lon $in_pth_arg in.nc";
     $tst_cmd[1]="lon[3]=270";
     $tst_cmd[2]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -2668,10 +2682,10 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 #ncks #95
 # Test -X writing two variables
 # ncks -O -X 150.,210.,-15.,45. -v gds_var,gds_3dvar ~/nco/data/in.nc ~/foo.nc
-# ncks -C -H -d gds_crd,-1 -v gds_var ~/foo.nc
+# ncks -C -H --trd -d gds_crd,-1 -v gds_var ~/foo.nc
     $dsc_sng="Auxiliary coordinate writing two variables";
     $tst_cmd[0]="ncks -O $nco_D_flg -X 150.,210.,-15.,45. -v gds_var,gds_3dvar $in_pth_arg in.nc %tmp_fl_00";
-    $tst_cmd[1]="ncks -C -H -d gds_crd,-1 -v gds_var %tmp_fl_00";
+    $tst_cmd[1]="ncks -C -H --trd -d gds_crd,-1 -v gds_var %tmp_fl_00";
     $tst_cmd[2]="gds_crd[1]=6 gds_var[1]=273.7";
     $tst_cmd[3]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -2680,10 +2694,10 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 #ncks #96
 # Test -X problem encountered in wavewatch.nc once that problem is isolated
 # ncks -O -X 150.,210.,-15.,45. -v gds_var_ncd ~/nco/data/in.nc ~/foo.nc
-# ncks -C -H -d gds_ncd,-1 -v gds_var_ncd ~/foo.nc
+# ncks -C -H --trd -d gds_ncd,-1 -v gds_var_ncd ~/foo.nc
     $dsc_sng="Test -X auxiliary coordinates where underlying dimension is a non-coordinate dimension";
     $tst_cmd[0]="ncks -O $nco_D_flg -X 150.,210.,-15.,45. -v gds_var_ncd $in_pth_arg in.nc %tmp_fl_00";
-    $tst_cmd[1]="ncks -C -H -d gds_ncd,-1 -v gds_var_ncd %tmp_fl_00";
+    $tst_cmd[1]="ncks -C -H --trd -d gds_ncd,-1 -v gds_var_ncd %tmp_fl_00";
     $tst_cmd[2]="gds_ncd[1] gds_var_ncd[1]=273.7";
     $tst_cmd[3]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -2692,10 +2706,10 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 #ncks #97
 # Test attribute writing for DSD compression 
 # ncks -4 -O -C -v ppc_dbl --ppc ppc_dbl=.3 ~/nco/data/in.nc ~/foo.nc
-# ncks -m -v ppc_dbl ~/foo.nc
+# ncks -m --trd -v ppc_dbl ~/foo.nc
     $dsc_sng="Test attribute writing for DSD compression";
     $tst_cmd[0]="ncks -O $nco_D_flg -4 -C -v ppc_dbl --ppc ppc_dbl=.3 $in_pth_arg in.nc %tmp_fl_00";
-    $tst_cmd[1]="ncks -m -v ppc_dbl %tmp_fl_00 | grep 'least_significant_digit'";
+    $tst_cmd[1]="ncks -m --trd -v ppc_dbl %tmp_fl_00 | grep 'least_significant_digit'";
     $tst_cmd[2]="ppc_dbl attribute 3: least_significant_digit, size = 1 NC_INT, value = 3";
     $tst_cmd[3]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -2704,10 +2718,10 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 #ncks #98
 # Test DSD compression rounding to hundreds
 # ncks -4 -O -C -v ppc_big,ppc_dbl --ppc ppc_big,ppc_dbl=.-2 ~/nco/data/in.nc ~/foo.nc
-# ncks -H -d time,5 -s %g -v ppc_big ~/foo.nc
+# ncks -H --trd -d time,5 -s %g -v ppc_big ~/foo.nc
     $dsc_sng="Test DSD compression rounding to hundreds";
     $tst_cmd[0]="ncks -O $nco_D_flg -4 -C -v ppc_big,ppc_dbl --ppc ppc_big,ppc_dbl=.-2 $in_pth_arg in.nc %tmp_fl_00";
-    $tst_cmd[1]="ncks -H -d time,5 -s %g -v ppc_big %tmp_fl_00";
+    $tst_cmd[1]="ncks -H --trd -d time,5 -s %g -v ppc_big %tmp_fl_00";
     $tst_cmd[2]="1280";
     $tst_cmd[3]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -2717,11 +2731,11 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 # Test DSD attribute does not overwrite pre-existing rounder values
 # ncks -4 -O -C -v ppc_dbl,ppc_big --ppc .?=4 --ppc ppc_big=.-2 ~/nco/data/in.nc ~/foo.nc
 # ncks -4 -O -C -v ppc_dbl,ppc_big --ppc ppc_big,ppc_dbl=.3 ~/foo.nc ~/foo2.nc
-# ncks -m -v ppc_big ~/foo2.nc
+# ncks -m --trd -v ppc_big ~/foo2.nc
     $dsc_sng="Test DSD attribute does not overwrite pre-existing rounder values";
     $tst_cmd[0]="ncks -O $nco_D_flg -4 -C -v ppc_dbl,ppc_big --ppc .?=.4 --ppc ppc_big=.-2 $in_pth_arg in.nc %tmp_fl_00";
     $tst_cmd[1]="ncks -O $nco_D_flg -4 -C -v ppc_dbl,ppc_big --ppc ppc_big,ppc_dbl=.3 %tmp_fl_00 %tmp_fl_01";
-    $tst_cmd[2]="ncks -m -v ppc_big %tmp_fl_01 | grep 'least_significant_digit'";
+    $tst_cmd[2]="ncks -m --trd -v ppc_big %tmp_fl_01 | grep 'least_significant_digit'";
     $tst_cmd[3]="ppc_big attribute 3: least_significant_digit, size = 1 NC_INT, value = -2";
     $tst_cmd[4]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -2731,11 +2745,11 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 # Test DSD attribute does overwrite pre-existing sharper values in multi-argument parsing
 # ncks -4 -O -C -v ppc_dbl,ppc_big --ppc .?=.4#ppc_big=.-2 ~/nco/data/in.nc ~/foo.nc
 # ncks -4 -O -C -v ppc_dbl,ppc_big --ppc ppc_big,ppc_dbl=.3 ~/foo.nc ~/foo2.nc
-# ncks -m -v ppc_big ~/foo2.nc
+# ncks -m --trd -v ppc_big ~/foo2.nc
     $dsc_sng="Test DSD attribute does overwrite pre-existing sharper values in multi-argument parsing";
     $tst_cmd[0]="ncks -O $nco_D_flg -4 -C -v ppc_dbl,ppc_big --ppc .?=.4#ppc_big=.-2 $in_pth_arg in.nc %tmp_fl_00";
     $tst_cmd[1]="ncks -O $nco_D_flg -4 -C -v ppc_dbl,ppc_big --ppc ppc_big,ppc_dbl=.3 %tmp_fl_00 %tmp_fl_01";
-    $tst_cmd[2]="ncks -m -v ppc_dbl %tmp_fl_01 | grep 'least_significant_digit'";
+    $tst_cmd[2]="ncks -m --trd -v ppc_dbl %tmp_fl_01 | grep 'least_significant_digit'";
     $tst_cmd[3]="ppc_dbl attribute 3: least_significant_digit, size = 1 NC_INT, value = 3";
     $tst_cmd[4]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -2744,10 +2758,10 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 #ncks #101
 # Test attribute writing for NSD compression 
 # ncks -4 -O -C -v ppc_dbl --ppc ppc_dbl=3 ~/nco/data/in.nc ~/foo.nc
-# ncks -m -v ppc_dbl ~/foo.nc
+# ncks -m --trd -v ppc_dbl ~/foo.nc
     $dsc_sng="Test attribute writing for NSD compression";
     $tst_cmd[0]="ncks -O $nco_D_flg -4 -C -v ppc_dbl --ppc ppc_dbl=3 $in_pth_arg in.nc %tmp_fl_00";
-    $tst_cmd[1]="ncks -m -v ppc_dbl %tmp_fl_00 | grep 'number_of_significant_digits'";
+    $tst_cmd[1]="ncks -m --trd -v ppc_dbl %tmp_fl_00 | grep 'number_of_significant_digits'";
     $tst_cmd[2]="ppc_dbl attribute 3: number_of_significant_digits, size = 1 NC_INT, value = 3";
     $tst_cmd[3]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -2756,10 +2770,10 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 #ncks #102
 # Test NSD compression rounding to three significant digits
 # ncks -4 -O -C -v ppc_big,ppc_dbl --ppc ppc_big,ppc_dbl=3 ~/nco/data/in.nc ~/foo.nc
-# ncks -H -d time,5 -s %g -v ppc_big ~/foo.nc
+# ncks -H --trd -d time,5 -s %g -v ppc_big ~/foo.nc
     $dsc_sng="Test NSD compression rounding to three significant digits";
     $tst_cmd[0]="ncks -O $nco_D_flg -4 -C -v ppc_big,ppc_dbl --ppc ppc_big,ppc_dbl=3 $in_pth_arg in.nc %tmp_fl_00";
-    $tst_cmd[1]="ncks -H -d time,5 -s %g -v ppc_big %tmp_fl_00";
+    $tst_cmd[1]="ncks -H --trd -d time,5 -s %g -v ppc_big %tmp_fl_00";
     $tst_cmd[2]="1235";
     $tst_cmd[3]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -2769,11 +2783,11 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 # Test NSD attribute does not overwrite pre-existing rounder values
 # ncks -4 -O -C -v ppc_dbl,ppc_big --ppc .?=4 --ppc ppc_big=3 ~/nco/data/in.nc ~/foo.nc
 # ncks -4 -O -C -v ppc_dbl,ppc_big --ppc ppc_big,ppc_dbl=4 ~/foo.nc ~/foo2.nc
-# ncks -m -v ppc_big ~/foo2.nc
+# ncks -m --trd -v ppc_big ~/foo2.nc
     $dsc_sng="Test NSD attribute does not overwrite pre-existing rounder values";
     $tst_cmd[0]="ncks -O $nco_D_flg -4 -C -v ppc_dbl,ppc_big --ppc .?=4 --ppc ppc_big=3 $in_pth_arg in.nc %tmp_fl_00";
     $tst_cmd[1]="ncks -O $nco_D_flg -4 -C -v ppc_dbl,ppc_big --ppc ppc_big,ppc_dbl=4 %tmp_fl_00 %tmp_fl_01";
-    $tst_cmd[2]="ncks -m -v ppc_big %tmp_fl_01 | grep 'number_of_significant_digits'";
+    $tst_cmd[2]="ncks -m --trd -v ppc_big %tmp_fl_01 | grep 'number_of_significant_digits'";
     $tst_cmd[3]="ppc_big attribute 3: number_of_significant_digits, size = 1 NC_INT, value = 3";
     $tst_cmd[4]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -2783,11 +2797,11 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 # Test NSD attribute does overwrite pre-existing sharper values
 # ncks -4 -O -C -v ppc_dbl,ppc_big --ppc .?=4 --ppc ppc_big=3 ~/nco/data/in.nc ~/foo.nc
 # ncks -4 -O -C -v ppc_dbl,ppc_big --ppc ppc_big,ppc_dbl=4 ~/foo.nc ~/foo2.nc
-# ncks -m -v ppc_big ~/foo2.nc
+# ncks -m --trd -v ppc_big ~/foo2.nc
     $dsc_sng="Test NSD attribute does overwrite pre-existing sharper values";
     $tst_cmd[0]="ncks -O $nco_D_flg -4 -C -v ppc_dbl,ppc_big --ppc .?=4 --ppc ppc_big=4 $in_pth_arg in.nc %tmp_fl_00";
     $tst_cmd[1]="ncks -O $nco_D_flg -4 -C -v ppc_dbl,ppc_big --ppc ppc_big,ppc_dbl=3 %tmp_fl_00 %tmp_fl_01";
-    $tst_cmd[2]="ncks -m -v ppc_dbl %tmp_fl_01 | grep 'number_of_significant_digits'";
+    $tst_cmd[2]="ncks -m --trd -v ppc_dbl %tmp_fl_01 | grep 'number_of_significant_digits'";
     $tst_cmd[3]="ppc_dbl attribute 3: number_of_significant_digits, size = 1 NC_INT, value = 3";
     $tst_cmd[4]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -2797,10 +2811,10 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 # Test that -x exclusion of coordinate variables only works with -C
 # fxm: -x is not directly tested because it means testing for non-existance in output. how to do this?
 # ncks -O -x -v time ~/nco/data/in.nc ~/foo.nc
-# ncks -H -C -d time,0 -v time ~/foo.nc
+# ncks -H --trd -C -d time,0 -v time ~/foo.nc
     $dsc_sng="Test that -x exclusion of coordinate variables only works with -C";
     $tst_cmd[0]="ncks -O $nco_D_flg -x -v time $in_pth_arg in.nc %tmp_fl_00";
-    $tst_cmd[1]="ncks -H $nco_D_flg -d time,0 -C -v time %tmp_fl_00";
+    $tst_cmd[1]="ncks -H --trd $nco_D_flg -d time,0 -C -v time %tmp_fl_00";
     $tst_cmd[2]="time[0]=1";
     $tst_cmd[3]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -2808,10 +2822,10 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 	
 #ncks #106 Extract "climatology" variables
 # ncks -O -v one_dmn_rec_var ~/nco/data/in.nc ~/foo.nc
-# ncks -O -C -H -v climatology_bounds -d time,9 -d vrt_nbr,1 -s '%g' ~/foo.nc
+# ncks -O -C -H --trd -v climatology_bounds -d time,9 -d vrt_nbr,1 -s '%g' ~/foo.nc
     $dsc_sng="Extract 'climatology' variables";
     $tst_cmd[0]="ncks -O $fl_fmt $nco_D_flg -v one_dmn_rec_var $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -O -C -H -v climatology_bounds -d time,9 -d vrt_nbr,1 -s '%g' %tmp_fl_00% ";    
+    $tst_cmd[1]="ncks -O -C -H --trd -v climatology_bounds -d time,9 -d vrt_nbr,1 -s '%g' %tmp_fl_00% ";    
     $tst_cmd[2]="10.5";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -2823,7 +2837,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 #ncks -O -D 5 -C -d lat,0 -v one,four --cnk_plc=xst --cnk_map=xst ~/nco/data/hdn.nc ~/foo.nc
     $dsc_sng="Chunking multiple variables while hyperslabbing";
     $tst_cmd[0]="ncks -O $nco_D_flg -C -d lat,0 -v one,four --cnk_plc=xst --cnk_map=xst $in_pth_arg hdn.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -v one %tmp_fl_00% | grep 'chunksize'";
+    $tst_cmd[1]="ncks --trd -v one %tmp_fl_00% | grep 'chunksize'";
     $tst_cmd[2]="one dimension 0: /lat, size = 1, chunksize = 1 (Non-coordinate dimension)";
     $tst_cmd[3]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -2833,7 +2847,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 #ncks -O -D 5 -C -d lat,0 -v var_shf --cnk_plc=uck ~/nco/data/hdn.nc ~/foo.nc
     $dsc_sng="Unchunking variable with Shuffle flag set";
     $tst_cmd[0]="ncks -O $nco_D_flg -C -v var_shf --cnk_plc=uck $in_pth_arg hdn.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks --hdn -v var_shf %tmp_fl_00% | grep 'Storage'";
+    $tst_cmd[1]="ncks --trd --hdn -v var_shf %tmp_fl_00% | grep 'Storage'";
     $tst_cmd[2]="var_shf attribute 1: _Storage, size = 10 NC_CHAR, value = contiguous";
     $tst_cmd[3]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -2841,10 +2855,10 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 
 # ncks #109
 # ncks -h -O --gaa script=nco_climo.sh ~/nco/data/in.nc ~/foo.nc
-# ncks -M ~/foo.nc | grep script | cut -d ' ' -f 11    
+# ncks -M --trd ~/foo.nc | grep script | cut -d ' ' -f 11    
     $dsc_sng="Add single global attribute";
     $tst_cmd[0]="ncks -h -O $nco_D_flg --gaa script=nco_climo.sh $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -M %tmp_fl_00% | grep 'script' | cut -d ' ' -f 11";
+    $tst_cmd[1]="ncks -M --trd %tmp_fl_00% | grep 'script' | cut -d ' ' -f 11";
     $tst_cmd[2]="nco_climo.sh";
     $tst_cmd[3]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -2852,10 +2866,10 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 
 # ncks #110
 # ncks -h -O --gaa foo=bar --gaa foo2,foo3=bar2 --gaa script='created by nco_climo.sh' ~/nco/data/in.nc ~/foo.nc
-# ncks -M ~/foo.nc | grep script | cut -d ' ' -f 11-13    
+# ncks -M --trd ~/foo.nc | grep script | cut -d ' ' -f 11-13    
     $dsc_sng="Add multiple global attributes";
     $tst_cmd[0]="ncks -h -O $nco_D_flg --gaa foo=bar --gaa foo2,foo3=bar2 --gaa script='created by nco_climo.sh' $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -M %tmp_fl_00% | grep 'script' | cut -d ' ' -f 11-13";
+    $tst_cmd[1]="ncks -M --trd %tmp_fl_00% | grep 'script' | cut -d ' ' -f 11-13";
     $tst_cmd[2]="created by nco_climo.sh";
     $tst_cmd[3]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -2864,10 +2878,10 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 # ncks #111
 # NB: This tests whether the output file has global metadata, and that provides (circumstantial) evidence that there were no major problems in the intervening routines of grid generation
 # ncks -O -v one -D 5 -t 1 --rgr grd_ttl='FV-scalar grid'#grid=65x128_SCRIP.nc#lat_nbr=65#lon_nbr=128#lat_typ=FV#lon_typ=Grn_ctr ~/nco/data/in.nc ~/foo.nc
-# ncks -M ~/foo.nc | grep "julian" | cut -d ' ' -f 4
+# ncks -M --trd ~/foo.nc | grep "julian" | cut -d ' ' -f 4
     $dsc_sng="Generate RLL grid with multi-argument parsing";
     $tst_cmd[0]="ncks -h -O $nco_D_flg -v one --rgr grd_ttl='FV-scalar grid'#grid=65x128_SCRIP.nc#lat_nbr=65#lon_nbr=128#lat_typ=FV#lon_typ=Grn_ctr $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -M %tmp_fl_00% | grep 'julian' | cut -d ' ' -f 4";
+    $tst_cmd[1]="ncks -M --trd %tmp_fl_00% | grep 'julian' | cut -d ' ' -f 4";
     $tst_cmd[2]="julian_day,";
     $tst_cmd[3]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -2879,7 +2893,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 # ncks -O -C -g g19 -v time -d time,9,0 -d time,1,2 ~/nco/data/in_grp_3.nc ~/foo.nc
     $dsc_sng="(Groups) Test wrapped limit with addtional limit (no --msa)";
     $tst_cmd[0]="ncks -O $nco_D_flg -C -g g19 -v time -d time,9,0 -d time,1,2 $in_pth_arg in_grp_3.nc %tmp_fl_00";
-    $tst_cmd[1]="ncks -H %tmp_fl_00 | grep '=10'";
+    $tst_cmd[1]="ncks -H --trd %tmp_fl_00 | grep '=10'";
     $tst_cmd[2]="time[3]=10"; 
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -2887,9 +2901,9 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 	
 #ncks #113 wrapped limit with an additional limit (with --msa) pvn20160211 -- bug found that happens in nco 4.2.0 also
 # ncks -O -C --msa -g g19 -v time -d time,9,0 -d time,1,2 ~/nco/data/in_grp_3.nc ~/foo.nc
-    $dsc_sng="(Groups) Test wrapped limit with additonal limit and msa user order (expect failure TODO nco1134)";
+    $dsc_sng="(Groups) Test wrapped limit with additional limit and msa user order (expect failure TODO nco1134)";
     $tst_cmd[0]="ncks -O $nco_D_flg -C --msa -g g19 -v time -d time,9,0 -d time,1,2 $in_pth_arg in_grp_3.nc %tmp_fl_00";
-    $tst_cmd[1]="ncks -H %tmp_fl_00 | grep '=3'";
+    $tst_cmd[1]="ncks -H --trd %tmp_fl_00 | grep '=3'";
     $tst_cmd[2]="time[3]=3"; 
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -2897,10 +2911,10 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 
 # ncks #114
 # ncks -h -O --gaa foo=bar#foo2,foo3=bar2#foo3,foo4='Thu Sep 15 13:03:18 PDT 2016' ~/nco/data/in.nc ~/foo.nc
-# ncks -M ~/foo.nc | grep foo4 | cut -d ' ' -f 11-16
+# ncks -M --trd ~/foo.nc | grep foo4 | cut -d ' ' -f 11-16
     $dsc_sng="Multi-argument parsing by Jerome, test last argument is time string";
     $tst_cmd[0]="ncks -h -O $nco_D_flg --gaa foo=bar#foo2,foo3=bar2#foo3,foo4='Thu Sep 15 13:03:18 PDT 2016' $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -M %tmp_fl_00% | grep foo4 | cut -d ' ' -f 11-16";
+    $tst_cmd[1]="ncks -M --trd %tmp_fl_00% | grep foo4 | cut -d ' ' -f 11-16";
     $tst_cmd[2]="Thu Sep 15 13:03:18 PDT 2016";
     $tst_cmd[3]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -2908,10 +2922,10 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 
 # ncks #115
 # ncks -h -O --gaa foo=bar1#foo2=bar2#foo3=bar3#script='created by nco_climo.sh' ~/nco/data/in.nc ~/foo.nc
-# ncks -M ~/foo.nc | grep foo, | cut -d ' ' -f 11
+# ncks -M --trd ~/foo.nc | grep foo, | cut -d ' ' -f 11
     $dsc_sng="Multi-argument parsing test first argument";
     $tst_cmd[0]="ncks -h -O $nco_D_flg --gaa foo=bar1#foo2=bar2#foo3=bar3#script='created by nco_climo.sh' $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -M %tmp_fl_00% | grep foo, | cut -d ' ' -f 11";
+    $tst_cmd[1]="ncks -M --trd %tmp_fl_00% | grep foo, | cut -d ' ' -f 11";
     $tst_cmd[2]="bar1";
     $tst_cmd[3]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -2919,10 +2933,10 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 
 # ncks #116
 # ncks -h -O --gaa foo=bar#foo2=bar2#foo3,foo4="Thu Sep 15 13:03:18 PDT 2016" ~/nco/data/in.nc ~/foo.nc
-# ncks -M ~/foo.nc | grep foo3 | cut -d ' ' -f 11-16
+# ncks -M --trd ~/foo.nc | grep foo3 | cut -d ' ' -f 11-16
     $dsc_sng="Multi-argument parsing test second-to-last key is time string";
     $tst_cmd[0]="ncks -h -O $nco_D_flg --gaa foo=bar#foo2=bar2#foo3,foo4=\"Thu Sep 15 13:03:18 PDT 2016\" $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -M %tmp_fl_00% | grep foo3 | cut -d ' ' -f 11-16";
+    $tst_cmd[1]="ncks -M --trd %tmp_fl_00% | grep foo3 | cut -d ' ' -f 11-16";
     $tst_cmd[2]="Thu Sep 15 13:03:18 PDT 2016";
     $tst_cmd[3]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -2930,10 +2944,10 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 
 # ncks #117
 # ncks -h -O --gaa foo=bar#foo2=bar2#foo3,foo4='Thu Sep 15 13:03:18 PDT 2016'#foo5,foo6=bar4 ~/nco/data/in.nc ~/foo.nc
-# ncks -M ~/foo.nc | grep foo6 | cut -d ' ' -f 11
+# ncks -M --trd ~/foo.nc | grep foo6 | cut -d ' ' -f 11
     $dsc_sng="Multi-argument parsing test arguments after time string kvm";
     $tst_cmd[0]="ncks -h -O $nco_D_flg --gaa foo=bar#foo2=bar2#foo3,foo4='Thu Sep 15 13:03:18 PDT 2016'#foo5,foo6=bar4 $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -M %tmp_fl_00% | grep foo6 | cut -d ' ' -f 11";
+    $tst_cmd[1]="ncks -M --trd %tmp_fl_00% | grep foo6 | cut -d ' ' -f 11";
     $tst_cmd[2]="bar4";
     $tst_cmd[3]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -2941,10 +2955,10 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 
 # ncks #118
 # ncks -h -O --gaa foo,boo=bar#foo2,foo9=bar2#foo3,foo4='Thu Sep 15 13:03:18 PDT 2016'#foo5,foo6=bar4 ~/nco/data/in.nc ~/foo.nc
-# ncks -M ~/foo.nc | grep foo6 | cut -d ' ' -f 11
+# ncks -M --trd ~/foo.nc | grep foo6 | cut -d ' ' -f 11
     $dsc_sng="Multi-argument parsing test when all kvms have subdelimiters";
     $tst_cmd[0]="ncks -h -O $nco_D_flg --gaa foo,boo=bar#foo2,foo3=bar2#foo3,foo4='Thu Sep 15 13:03:18 PDT 2016'#foo5,foo6=bar4 $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -M %tmp_fl_00% | grep foo6 | cut -d ' ' -f 11";
+    $tst_cmd[1]="ncks -M --trd %tmp_fl_00% | grep foo6 | cut -d ' ' -f 11";
     $tst_cmd[2]="bar4";
     $tst_cmd[3]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -2952,10 +2966,10 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 
 # ncks #119
 # ncks -O --dlm=':' --gaa 'foo=bar:foo2=bar2:foo3,foo4=Thu Sep 15 13\\:03\\:18 PDT 2016:foo5=bar6’ ~/nco/data/in.nc ~/foo.nc
-# ncks -M ~/foo.nc | grep foo6 | cut -d ' ' -f 11
+# ncks -M --trd ~/foo.nc | grep foo6 | cut -d ' ' -f 11
     $dsc_sng="Multi-argument parsing test when some of the delimiters are handled by backslashes";
     $tst_cmd[0]="ncks -O --dlm=':' $nco_D_flg --gaa foo=bar:foo2=bar2:foo3,foo4='Thu Sep 15 13\\:03\\:18 PDT 2016:foo5=bar6' $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -M %tmp_fl_00% | grep foo4 | cut -d ' ' -f 11-16";
+    $tst_cmd[1]="ncks -M --trd %tmp_fl_00% | grep foo4 | cut -d ' ' -f 11-16";
     $tst_cmd[2]="Thu Sep 15 13:03:18 PDT 2016";
     $tst_cmd[3]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -2983,10 +2997,10 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 
 # ncks #122
 # ncks -O -h --rgr grid=./foo_grid.nc#latlon=64,128#no_area#lat_typ=gss#lon_typ=Grn_ctr --gaa foo5,foo6=bar4 ~/nco/data/in.nc ~/foo.nc
-# ncks -M ~/foo.nc | grep foo6 | cut -d ' ' -f 11
+# ncks -M --trd ~/foo.nc | grep foo6 | cut -d ' ' -f 11
     $dsc_sng="Multi-argument parsing test with flags";
     $tst_cmd[0]="ncks -O -h --rgr grid=./foo_grid.nc#latlon=64,128#no_area#lat_typ=gss#lon_typ=Grn_ctr --gaa foo5,foo6=bar4 $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -M %tmp_fl_00% | grep foo6 | cut -d ' ' -f 11";
+    $tst_cmd[1]="ncks -M --trd %tmp_fl_00% | grep foo6 | cut -d ' ' -f 11";
     $tst_cmd[2]="bar4";
     $tst_cmd[3]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -3005,7 +3019,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 #ncpdq #1
     $dsc_sng="Reverse coordinate -a -lat -v lat";
     $tst_cmd[0]="ncpdq $omp_flg -h -O $fl_fmt $nco_D_flg -a -lat -v lat $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%g' -v lat -d lat,0 %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%g' -v lat -d lat,0 %tmp_fl_00%";
     $tst_cmd[2]="90";
     $tst_cmd[3]="SS_OK";
     if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
@@ -3015,7 +3029,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 #three_dmn_var(lat,lev,lon);
     $dsc_sng="Reverse 3D variable a -lat,-lev,-lon -v three_dmn_var";
     $tst_cmd[0]="ncpdq $omp_flg -h -O $fl_fmt $nco_D_flg -a -lat,-lev,-lon -v three_dmn_var $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%f' -v three_dmn_var -d lat,0 -d lev,0 -d lon,0 %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%f' -v three_dmn_var -d lat,0 -d lev,0 -d lon,0 %tmp_fl_00%";
     $tst_cmd[2]=23;
     $tst_cmd[3]="SS_OK";
     if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
@@ -3023,10 +3037,10 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
     
 #ncpdq #3 
 # ncpdq -h -O -C -a lon,lat -v three_dmn_var ~/nco/data/in.nc ~/foo.nc
-# ncks -C -H -s '%f' -v three_dmn_var -d lat,0 -d lev,2 -d lon,3 ~/foo.nc
+# ncks -C -H --trd -s '%f' -v three_dmn_var -d lat,0 -d lev,2 -d lon,3 ~/foo.nc
     $dsc_sng="Re-order 3D variable (no associated coordinates) -C -a lon,lat -v three_dmn_var ";
     $tst_cmd[0]="ncpdq $omp_flg -h -O $fl_fmt $nco_D_flg -C -a lon,lat -v three_dmn_var $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%f' -v three_dmn_var -d lat,0 -d lev,2 -d lon,3 %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%f' -v three_dmn_var -d lat,0 -d lev,2 -d lon,3 %tmp_fl_00%";
     $tst_cmd[2]="11";
     $tst_cmd[3]="SS_OK";
     if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
@@ -3035,7 +3049,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 #ncpdq #4 
     $dsc_sng="Re-order 3D variable (associated coordinates) -a lon,lat -v three_dmn_var ";
     $tst_cmd[0]="ncpdq $omp_flg -h -O $fl_fmt $nco_D_flg -a lon,lat -v three_dmn_var $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%f' -v three_dmn_var -d lat,0 -d lev,2 -d lon,3 %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%f' -v three_dmn_var -d lat,0 -d lev,2 -d lon,3 %tmp_fl_00%";
     $tst_cmd[2]="11";
     $tst_cmd[3]="SS_OK";
     if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
@@ -3046,7 +3060,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 #ncpdq -h -O -C -a lat,lon,time -v three_dmn_var_dbl -d time,0,3 -d time,9,9 -d lon,0,0 -d lon,3,3 in.nc
     $dsc_sng="Re-order 3D variable with MSA -C -a lat,lon,time -v three_dmn_var_dbl -d time,0,3 -d time,9,9 -d lon,0,0 -d lon,3,3";
     $tst_cmd[0]="ncpdq $omp_flg -h -O -C $fl_fmt $nco_D_flg -a lat,lon,time -v three_dmn_var_dbl -d time,0,3 -d time,9,9 -d lon,0,0 -d lon,3,3 $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%f' -v three_dmn_var_dbl -d lat,0 -d lon,1 -d time,2 %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%f' -v three_dmn_var_dbl -d lat,0 -d lon,1 -d time,2 %tmp_fl_00%";
     $tst_cmd[2]="20";
     $tst_cmd[3]="SS_OK";
     if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
@@ -3057,10 +3071,10 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 #pvn20151105: changed test so that it handles netCDF4 case (output string differs by 'chunksize = 2')
 #ncks -4 in.nc in4.nc
 #ncpdq -h -O -C -a lat,lon,time -v three_dmn_var_dbl -d time,0,3 -d time,9,9 -d lon,0,0 -d lon,3,3 in4.nc out2.nc
-#ncks -v three_dmn_var_dbl out2.nc | grep 'dimension 0' | grep 'Record' | cut -d ' ' -f 1
+#ncks --trd -v three_dmn_var_dbl out2.nc | grep 'dimension 0' | grep 'Record' | cut -d ' ' -f 1
     $dsc_sng="Re-order 3D variable with MSA -C -a lat,lon,time -v three_dmn_var_dbl -d time,0,3 -d time,9,9 -d lon,0,0 -d lon,3,3";
     $tst_cmd[0]="ncpdq $omp_flg -h -O -C $fl_fmt $nco_D_flg -a lat,lon,time -v three_dmn_var_dbl -d time,0,3 -d time,9,9 -d lon,0,0 -d lon,3,3 $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -v three_dmn_var_dbl %tmp_fl_00% | grep 'dimension 0' | grep 'Record' | cut -d ' ' -f 1";
+    $tst_cmd[1]="ncks --trd -v three_dmn_var_dbl %tmp_fl_00% | grep 'dimension 0' | grep 'Record' | cut -d ' ' -f 1";
     $tst_cmd[2]="three_dmn_var_dbl";
     $tst_cmd[3]="SS_OK";
     if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
@@ -3068,11 +3082,11 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
     
 #ncpdq #7 MSA stride
 #ncpdq -h -O -a lat,lon,time -d time,1,3,2 -d lat,1,1,1 -d lon,1,3,2 -v three_dmn_var_dbl in.nc ~/foo.nc 
-#ncks -C -H -v three_dmn_var_dbl -d lat,0,0 -d lon,1,1 -d time,0 ~/foo.nc
+#ncks -C -H --trd -v three_dmn_var_dbl -d lat,0,0 -d lon,1,1 -d time,0 ~/foo.nc
 #lat[0]=90 lon[1]=270 time[0]=2 three_dmn_var_dbl[2]=16 
     $dsc_sng="Re-order 3D variable with MSA (stride) -a lat,lon,time -d time,1,3,2 -d lat,1,1,1 -d lon,1,3,2 -v three_dmn_var_dbl";
     $tst_cmd[0]="ncpdq $omp_flg -h -O $fl_fmt $nco_D_flg -a lat,lon,time -d time,1,3,2 -d lat,1,1,1 -d lon,1,3,2 -v three_dmn_var_dbl  $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -v three_dmn_var_dbl -d lat,0,0 -d lon,1,1 -d time,0 %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -v three_dmn_var_dbl -d lat,0,0 -d lon,1,1 -d time,0 %tmp_fl_00%";
     $tst_cmd[2]="lat[0]=90 lon[1]=270 time[0]=2 three_dmn_var_dbl[2]=16";
     $tst_cmd[3]="SS_OK";
     if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
@@ -3081,7 +3095,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 #ncpdq #8
     $dsc_sng="Re-order 3D variable with MSA+ reversal of time dim -C -a lat,lon,-time -v three_dmn_var_dbl -d time,0,3 -d time,9,9 -d lon,0,0 -d lon,3,3";
     $tst_cmd[0]="ncpdq $omp_flg -h -O -C $fl_fmt $nco_D_flg -a lat,lon,-time -v three_dmn_var_dbl -d time,0,3 -d time,9,9 -d lon,0,0 -d lon,3,3 $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%f' -v three_dmn_var_dbl -d lat,1 -d lon,1 -d time,4 %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%f' -v three_dmn_var_dbl -d lat,1 -d lon,1 -d time,4 %tmp_fl_00%";
     $tst_cmd[2]="8";
     $tst_cmd[3]="SS_OK";
     if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
@@ -3090,7 +3104,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 #ncpdq #9
     $dsc_sng="Re-order 3D variable with MSA and --msa_usr_rdr flag -C -a lon,lat -v three_dmn_var_dbl -d time,0,2 -d time,4 -d lat,1 -d lat,1 --msa_usr_rdr";
     $tst_cmd[0]="ncpdq $omp_flg -h -O -C $fl_fmt $nco_D_flg -a lon,lat -v three_dmn_var_dbl -d time,0,2 -d time,4 -d lat,1 -d lat,1 --msa_usr_rdr $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%2.f,' -v three_dmn_var_dbl -d time,1 -d lon,0 %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%2.f,' -v three_dmn_var_dbl -d time,1 -d lon,0 %tmp_fl_00%";
     $tst_cmd[2]="13,13";
     $tst_cmd[3]="SS_OK";
     if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
@@ -3099,10 +3113,10 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 #ncpdq #10
 # two_dmn_var (lat,lev) no change
 # ncpdq -O -C -a lat,lev -v two_dmn_var ~/nco/data/in.nc ~/foo.nc
-# ncks -d lat,1,1 -d lev,1,1 ~/foo.nc
+# ncks --trd -d lat,1,1 -d lev,1,1 ~/foo.nc
   $dsc_sng="Re-order 2D variable (-C, no MSA, no-reorder) -v two_dmn_var -a lat,lev";
   $tst_cmd[0]="ncpdq $omp_flg -O -C $fl_fmt $nco_D_flg -a lat,lev -v two_dmn_var $in_pth_arg in.nc %tmp_fl_00%";
-  $tst_cmd[1]="ncks -v two_dmn_var -d lat,1,1 -d lev,1,1 %tmp_fl_00%";
+  $tst_cmd[1]="ncks --trd -v two_dmn_var -d lat,1,1 -d lev,1,1 %tmp_fl_00%";
   $tst_cmd[2]="lat[1] lev[1] two_dmn_var[4]=17.5 fraction";
   $tst_cmd[3]="SS_OK";
   if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
@@ -3111,10 +3125,10 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 #ncpdq #11
 # two_dmn_var (lat,lev) -C, no MSA (no associated coordinates)
 # ncpdq -O -C -a lev,lat -v two_dmn_var ~/nco/data/in.nc ~/foo.nc
-# ncks -v two_dmn_var -d lat,1,1 -d lev,1,1 ~/foo.nc
+# ncks --trd -v two_dmn_var -d lat,1,1 -d lev,1,1 ~/foo.nc
   $dsc_sng="Re-order 2D variable (-C, no MSA) -v two_dmn_var -a lev,lat";
   $tst_cmd[0]="ncpdq $omp_flg $fl_fmt $nco_D_flg -O -C -a lev,lat -v two_dmn_var $in_pth_arg in.nc %tmp_fl_00%";
-  $tst_cmd[1]="ncks -v two_dmn_var -d lat,1,1 -d lev,1,1 %tmp_fl_00%";
+  $tst_cmd[1]="ncks --trd -v two_dmn_var -d lat,1,1 -d lev,1,1 %tmp_fl_00%";
   $tst_cmd[2]="lev[1] lat[1] two_dmn_var[3]=17.5 fraction";
   $tst_cmd[3]="SS_OK";
   if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
@@ -3123,11 +3137,11 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 #ncpdq #12
 # two_dmn_var (lat,lev) no MSA (associated coordinates)
 # ncpdq -O -a lev,lat -v two_dmn_var ~/nco/data/in.nc ~/foo.nc
-# ncks -C -d lat,1,1 -d lev,1,1 ~/foo.nc
+# ncks -C --trd -d lat,1,1 -d lev,1,1 ~/foo.nc
 #$tst_cmd[2]="lev[1]=500 lat[1]=90 two_dmn_var[3]=17.5 fraction";
   $dsc_sng="Re-order 2D variable (no -C, no MSA) -v two_dmn_var -a lev,lat";
   $tst_cmd[0]="ncpdq $omp_flg -O $fl_fmt $nco_D_flg -a lev,lat -v two_dmn_var $in_pth_arg in.nc %tmp_fl_00%";
-  $tst_cmd[1]="ncks -C -v two_dmn_var -d lat,1,1 -d lev,1,1 %tmp_fl_00%";
+  $tst_cmd[1]="ncks -C --trd -v two_dmn_var -d lat,1,1 -d lev,1,1 %tmp_fl_00%";
   $tst_cmd[2]="lev[1]=500 lat[1]=90 two_dmn_var[3]=17.5 fraction";
   $tst_cmd[3]="SS_OK";
   if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
@@ -3136,10 +3150,10 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 #ncpdq #13
 # two_dmn_var (lat,lev) -C, MSA (no associated coordinates)
 # ncpdq -O -C -a lev,lat -d lat,1,1 -d lev,1,1 -v two_dmn_var ~/nco/data/in.nc ~/foo.nc
-# ncks ~/foo.nc
+# ncks --trd ~/foo.nc
   $dsc_sng="Re-order 2D variable (-C, MSA) -v two_dmn_var -a lev,lat -d lat,1,1 -d lev,1,1";
   $tst_cmd[0]="ncpdq $omp_flg -O -C $fl_fmt $nco_D_flg -a lev,lat -d lat,1,1 -d lev,1,1 -v two_dmn_var $in_pth_arg in.nc %tmp_fl_00%";
-  $tst_cmd[1]="ncks -v two_dmn_var %tmp_fl_00%";
+  $tst_cmd[1]="ncks --trd -v two_dmn_var %tmp_fl_00%";
   $tst_cmd[2]="lev[0] lat[0] two_dmn_var[0]=17.5 fraction";
   $tst_cmd[3]="SS_OK";
   if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
@@ -3148,10 +3162,10 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 #ncpdq #14
 # two_dmn_var (lat,lev) MSA (associated coordinates)
 # ncpdq -O -a lev,lat -d lat,1,1 -d lev,1,1 -v two_dmn_var ~/nco/data/in.nc ~/foo.nc
-# ncks ~/foo.nc
+# ncks --trd ~/foo.nc
   $dsc_sng="Re-order 2D variable (no -C, MSA) -v two_dmn_var -a lev,lat -d lat,1,1 -d lev,1,1";
   $tst_cmd[0]="ncpdq $omp_flg -O $fl_fmt $nco_D_flg -a lev,lat -d lat,1,1 -d lev,1,1 -v two_dmn_var $in_pth_arg in.nc %tmp_fl_00%";
-  $tst_cmd[1]="ncks -v two_dmn_var %tmp_fl_00%";
+  $tst_cmd[1]="ncks --trd -v two_dmn_var %tmp_fl_00%";
   $tst_cmd[2]="lev[0]=500 lat[0]=90 two_dmn_var[0]=17.5 fraction";
   $tst_cmd[3]="SS_OK";
   if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
@@ -3160,10 +3174,10 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 #ncpdq #15
 # two_dmn_rec_var(time,lev) 2D variable with record  (-C, no MSA)
 # ncpdq -O -C -a lev,time -v two_dmn_rec_var ~/nco/data/in.nc ~/foo.nc
-# ncks -d time,1,1 -d lev,1,1 ~/foo.nc
+# ncks --trd -d time,1,1 -d lev,1,1 ~/foo.nc
   $dsc_sng="Re-order 2D variable with record (-C, no MSA) -v two_dmn_rec_var -C -a lev,time";
   $tst_cmd[0]="ncpdq $omp_flg -O $fl_fmt $nco_D_flg -C -a lev,time -v two_dmn_rec_var $in_pth_arg in.nc %tmp_fl_00%";
-  $tst_cmd[1]="ncks -v two_dmn_rec_var -d time,1,1 -d lev,1,1 %tmp_fl_00%";
+  $tst_cmd[1]="ncks --trd -v two_dmn_rec_var -d time,1,1 -d lev,1,1 %tmp_fl_00%";
   $tst_cmd[2]="lev[1] time[1] two_dmn_rec_var[11]=2.1 watt meter-2";
   $tst_cmd[3]="SS_OK";
   if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
@@ -3172,10 +3186,10 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 #ncpdq #16
 # two_dmn_rec_var(time,lev) 2D variable with record  (no MSA)
 # ncpdq -O -a lev,time -v two_dmn_rec_var ~/nco/data/in.nc ~/foo.nc
-# ncks -d time,1,1 -d lev,1,1 ~/foo.nc
+# ncks --trd -d time,1,1 -d lev,1,1 ~/foo.nc
   $dsc_sng="Re-order 2D variable with record (no -C, no MSA) -v two_dmn_rec_var -a lev,time";
   $tst_cmd[0]="ncpdq $omp_flg -O $fl_fmt $nco_D_flg -a lev,time -v two_dmn_rec_var $in_pth_arg in.nc %tmp_fl_00%";
-  $tst_cmd[1]="ncks -v two_dmn_rec_var -d time,1,1 -d lev,1,1 %tmp_fl_00%";
+  $tst_cmd[1]="ncks --trd -v two_dmn_rec_var -d time,1,1 -d lev,1,1 %tmp_fl_00%";
   $tst_cmd[2]="lev[1]=500 time[1]=2 two_dmn_rec_var[11]=2.1 watt meter-2";
   $tst_cmd[3]="SS_OK";
   if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
@@ -3184,10 +3198,10 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 #ncpdq #17
 # two_dmn_rec_var(time,lev) 2D variable with record  (MSA)
 # ncpdq -O -C -a lev,time -d time,1,1 -d lev,1,1 -v two_dmn_rec_var ~/nco/data/in.nc ~/foo.nc
-# ncks ~/foo.nc
+# ncks --trd ~/foo.nc
   $dsc_sng="Re-order 2D variable with record (-C, MSA) -a lev,time -d time,1,1 -d lev,1,1 -v two_dmn_rec_var";
   $tst_cmd[0]="ncpdq $omp_flg -O $fl_fmt $nco_D_flg -C -a lev,time -d time,1,1 -d lev,1,1 -v two_dmn_rec_var $in_pth_arg in.nc %tmp_fl_00%";
-  $tst_cmd[1]="ncks -v two_dmn_rec_var %tmp_fl_00%";
+  $tst_cmd[1]="ncks --trd -v two_dmn_rec_var %tmp_fl_00%";
   $tst_cmd[2]="lev[0] time[0] two_dmn_rec_var[0]=2.1 watt meter-2";
   $tst_cmd[3]="SS_OK";
   if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
@@ -3196,10 +3210,10 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 #ncpdq #18
 # two_dmn_rec_var(time,lev) 2D variable with record  (MSA)
 # ncpdq -O -a lev,time -d time,1,1 -d lev,1,1 -v two_dmn_rec_var ~/nco/data/in.nc ~/foo.nc
-# ncks ~/foo.nc
+# ncks --trd ~/foo.nc
   $dsc_sng="Re-order 2D variable with record (no -C, MSA) -a lev,time -d time,1,1 -d lev,1,1 -v two_dmn_rec_var";
   $tst_cmd[0]="ncpdq $omp_flg -O $fl_fmt $nco_D_flg -a lev,time -d time,1,1 -d lev,1,1 -v two_dmn_rec_var $in_pth_arg in.nc %tmp_fl_00%";
-  $tst_cmd[1]="ncks -v two_dmn_rec_var %tmp_fl_00%";
+  $tst_cmd[1]="ncks --trd -v two_dmn_rec_var %tmp_fl_00%";
   $tst_cmd[2]="lev[0]=500 time[0]=2 two_dmn_rec_var[0]=2.1 watt meter-2";
   $tst_cmd[3]="SS_OK";
   if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
@@ -3210,7 +3224,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 #ncpdq -h -O -a lat,time -v three_dmn_var -d time,1,1 -d lat,1,1 -d lon,1,1 in.nc ~/foo.nc
     $dsc_sng="Reverse/Re-order 3D variable -a -lat,-time -v three_dmn_var_dbl -d time,1,1 -d lat,1,1 -d lon,1,1";
     $tst_cmd[0]="ncpdq $omp_flg -h -O $fl_fmt $nco_D_flg -a -lat,-time -v three_dmn_var_dbl -d time,1,6,2 -d lat,0,1 -d lon,1,1 $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -H -C -v three_dmn_var_dbl -d lat,1,1 -d time,2,2 %tmp_fl_00%";
+    $tst_cmd[1]="ncks -H --trd -C -v three_dmn_var_dbl -d lat,1,1 -d time,2,2 %tmp_fl_00%";
     $tst_cmd[2]="lat[1]=-90 time[2]=2 lon[0]=90 three_dmn_var_dbl[5]=10";
     $tst_cmd[3]="SS_OK";
     if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
@@ -3222,7 +3236,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 #ncpdq -h -O -a lat,time -v ty,three_dmn_rec_var ~/nco/data/in.nc ~/foo.nc
     $dsc_sng="Re-order several variables -a lat,time -v ty,three_dmn_rec_var (no MSA) Test1";
     $tst_cmd[0]="ncpdq $omp_flg $fl_fmt $nco_D_flg -h -O -a lat,time -v ty,three_dmn_rec_var $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -v ty -d time,1,1 -d lat,1,1 %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -v ty -d time,1,1 -d lat,1,1 %tmp_fl_00%";
     $tst_cmd[2]="lat[1]=90 time[1]=2 ty[11]=4";
     $tst_cmd[3]="SS_OK";
     if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
@@ -3234,7 +3248,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 #ncpdq -h -O -a lat,time -v ty,three_dmn_rec_var ~/nco/data/in.nc ~/foo.nc
     $dsc_sng="Re-order several variables -a lat,time -v ty,three_dmn_rec_var (no MSA) Test2";
     $tst_cmd[0]="ncpdq $omp_flg $fl_fmt $nco_D_flg -h -O -a lat,time -v ty,three_dmn_rec_var $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -v three_dmn_rec_var -d time,1,1 -d lat,1,1 -d lon,1,1 %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -v three_dmn_rec_var -d time,1,1 -d lat,1,1 -d lon,1,1 %tmp_fl_00%";
     $tst_cmd[2]="lat[1]=90 time[1]=2 lon[1]=90 three_dmn_rec_var[45]=14";
     $tst_cmd[3]="SS_OK";
     if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
@@ -3246,7 +3260,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 #ncpdq -h -O -a lat,time -v ty,three_dmn_rec_var -d time,1,6,2 -d lat,1,1 in.nc ~/foo.nc
     $dsc_sng="Re-order several variables -a lat,time -v ty,three_dmn_rec_var (MSA) Test1 read ty";
     $tst_cmd[0]="ncpdq $omp_flg $fl_fmt $nco_D_flg -h -O -a lat,time -v ty,three_dmn_rec_var -d time,1,6,2 -d lat,1,1 $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -v ty -d time,2,2 %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -v ty -d time,2,2 %tmp_fl_00%";
     $tst_cmd[2]="lat[0]=90 time[2]=6 ty[2]=12";
     $tst_cmd[3]="SS_OK";
     if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
@@ -3258,7 +3272,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 #ncpdq -h -O -a lat,time -v ty,three_dmn_rec_var -d time,1,6,2 -d lat,1,1 in.nc ~/foo.nc
     $dsc_sng="Re-order several variables -a lat,time -v ty,three_dmn_rec_var (MSA) Test2 read three_dmn_rec_var";
     $tst_cmd[0]="ncpdq $omp_flg $fl_fmt $nco_D_flg -h -O -a lat,time -v ty,three_dmn_rec_var -d time,1,6,2 -d lat,1,1 $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -v three_dmn_rec_var -d lat,0,0 -d time,1,1 -d lon,1,1 %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -v three_dmn_rec_var -d lat,0,0 -d time,1,1 -d lon,1,1 %tmp_fl_00%";
     $tst_cmd[2]="lat[0]=90 time[1]=4 lon[1]=90 three_dmn_rec_var[5]=30";
     $tst_cmd[3]="SS_OK";
     if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
@@ -3266,10 +3280,10 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 
 #ncpdq #24 (same run as #22) check if output is the right record
 #ncpdq -h -O -a lat,time -v ty,three_dmn_rec_var ~/nco/data/in.nc ~/foo.nc
-#ncks -m -C -v three_dmn_rec_var ~/foo.nc | grep 'Record' |  cut -d ' ' -f 1-7 # NB: the 'cut' call handles netCDF3/4 common output part
+#ncks -m --trd -C -v three_dmn_rec_var ~/foo.nc | grep 'Record' |  cut -d ' ' -f 1-7 # NB: the 'cut' call handles netCDF3/4 common output part
     $dsc_sng="Re-order several variables -a lat,time -v ty,three_dmn_rec_var Test3 check record for lat";
     $tst_cmd[0]="ncpdq $omp_flg $fl_fmt $nco_D_flg -h -O -a lat,time -v ty,three_dmn_rec_var $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -m -C -v three_dmn_rec_var %tmp_fl_00% | grep 'Record' | cut -d ' ' -f 1-7";
+    $tst_cmd[1]="ncks -m --trd -C -v three_dmn_rec_var %tmp_fl_00% | grep 'Record' | cut -d ' ' -f 1-7";
     $tst_cmd[2]="three_dmn_rec_var dimension 0: lat, size = 2";
     $tst_cmd[3]="SS_OK";
     if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
@@ -3279,10 +3293,10 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 #three_dmn_rec_var(time,lat,lon); 
 #ty(time,lat);
 #ncpdq -h -O -a lat,time -v ty,three_dmn_rec_var ~/nco/data/in.nc ~/foo.nc
-#ncks -m -C -v three_dmn_rec_var ~/foo.nc | grep 'three_dmn_rec_var dimension 1: time, size = 10 NC_DOUBLE (Coordinate is time)'"
+#ncks -m --trd -C -v three_dmn_rec_var ~/foo.nc | grep 'three_dmn_rec_var dimension 1: time, size = 10 NC_DOUBLE (Coordinate is time)'"
     $dsc_sng="Re-order several variables -a lat,time -v ty,three_dmn_rec_var Test4 check non-record dim is time";
     $tst_cmd[0]="ncpdq $omp_flg $fl_fmt $nco_D_flg -h -O -a lat,time -v ty,three_dmn_rec_var $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -m -C -v three_dmn_rec_var %tmp_fl_00% | grep 'three_dmn_rec_var dimension 1' | rev ";
+    $tst_cmd[1]="ncks -m --trd -C -v three_dmn_rec_var %tmp_fl_00% | grep 'three_dmn_rec_var dimension 1' | rev ";
     $tst_cmd[2]=")emit si etanidrooC(";
     $tst_cmd[3]="SS_OK";
     if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
@@ -3291,10 +3305,10 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 #ncpdq #26
 #four_dmn_rec_var(time,lat,lev,lon); MSA
 #ncpdq -h -O -a lev,time,-lon,-lat -v four_dmn_rec_var -d time,1,6,2 -d lat,1,1 -d lon,1,1 -d lev,1,1 in.nc ~/foo.nc
-#ncks -C -H -v four_dmn_rec_var -d time,2,2 ~/foo.nc
+#ncks -C -H --trd -v four_dmn_rec_var -d time,2,2 ~/foo.nc
     $dsc_sng="Reverse/Re-order 4D variable -a lev,time,-lon,-lat -v four_dmn_rec_var (MSA)";
     $tst_cmd[0]="ncpdq $omp_flg $fl_fmt $nco_D_flg -h -O -a lev,time,-lon,-lat -v four_dmn_rec_var -d time,1,6,2 -d lat,1,1 -d lon,1,1 -d lev,1,1 $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -v four_dmn_rec_var -d time,2,2 %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -v four_dmn_rec_var -d time,2,2 %tmp_fl_00%";
     $tst_cmd[2]="lev[0]=500 time[2]=6 lon[0]=90 lat[0]=90 four_dmn_rec_var[2]=138";
     $tst_cmd[3]="SS_OK";
     if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
@@ -3304,10 +3318,10 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 #PS(time,lat,lon)
 #three_dmn_var_crd(lev,lat,lon);
 #ncpdq -h -O -a lat,time -v PS,three_dmn_var_crd -d lev,1,1 -d lat,1,1 -d lon,1,1 -d lev,1,1 in.nc ~/foo.nc
-#ncks -C -H -v three_dmn_var_crd ~/foo.nc
+#ncks -C -H --trd -v three_dmn_var_crd ~/foo.nc
     $dsc_sng="Re-order 3D variable (only 1 in -a) -a lat,time -v PS,three_dmn_var_crd (MSA)";
     $tst_cmd[0]="ncpdq $omp_flg $fl_fmt $nco_D_flg -h -O -a lat,time -v PS,three_dmn_var_crd -d lev,1,1 -d lat,1,1 -d lon,1,1 $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -H -C -v three_dmn_var_crd %tmp_fl_00%";
+    $tst_cmd[1]="ncks -H --trd -C -v three_dmn_var_crd %tmp_fl_00%";
     $tst_cmd[2]="lat[0]=90 lev[0]=500 lon[0]=90 three_dmn_var_crd[0]=17";
     $tst_cmd[3]="SS_OK";
     if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
@@ -3315,10 +3329,10 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
  
 #ncpdq #28 
 #ncpdq -h -O -a lat,time -d time,1,6,2 -d lat,1,1 in.nc ~/foo.nc
-#ncks -C -H -v -d time,2,2 four_dmn_rec_var ~/foo.nc
+#ncks -C -H --trd -v -d time,2,2 four_dmn_rec_var ~/foo.nc
     $dsc_sng="Re-order all variables -a lat,time (MSA)";
     $tst_cmd[0]="ncpdq $omp_flg $fl_fmt $nco_D_flg -h -O -a lat,time -d time,1,1 -d lat,1,1 $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -v four_dmn_rec_var -d lon,2,2 -d lev,2,2 %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -v four_dmn_rec_var -d lon,2,2 -d lev,2,2 %tmp_fl_00%";
     $tst_cmd[2]="lat[0]=90 time[0]=2 lev[2]=1000 lon[2]=180 four_dmn_rec_var[10]=47";
     $tst_cmd[3]="SS_OK";
     if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
@@ -3332,7 +3346,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
     $dsc_sng="Pack and then unpack scalar (uses only add_offset) -P all_new -v upk";
     $tst_cmd[0]="ncpdq $omp_flg -h -O $fl_fmt $nco_D_flg -P all_new -v upk $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncpdq $omp_flg -h -O $fl_fmt $nco_D_flg -P upk -v upk %tmp_fl_00% %tmp_fl_00%";
-    $tst_cmd[2]="ncks -C -H -s '%g' -v upk %tmp_fl_00%";
+    $tst_cmd[2]="ncks -C -H --trd -s '%g' -v upk %tmp_fl_00%";
     $tst_cmd[3]="3";
     $tst_cmd[4]="SS_OK";
     if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
@@ -3341,7 +3355,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 #ncpdq #30
     $dsc_sng="Unpack 1D variable with MSA -C P upk -v rec_var_dbl_mss_val_dbl_pck -d time,0,4 -d time,6";
     $tst_cmd[0]="ncpdq $omp_flg -h -O -C $fl_fmt $nco_D_flg -P upk -v rec_var_dbl_mss_val_dbl_pck -d time,0,4 -d time,6 $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%f' -v rec_var_dbl_mss_val_dbl_pck -d time,5 %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%f' -v rec_var_dbl_mss_val_dbl_pck -d time,5 %tmp_fl_00%";
     $tst_cmd[2]="7";
     $tst_cmd[3]="SS_OK";
     if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
@@ -3349,11 +3363,11 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 
 #ncpdq #31
 #ncpdq -O -C -P all_xst -v three_dmn_var_dbl -d time,0,2 -d time,8,9 -d lon,0 -d lon,1 -d lat,1 ~/nco/data/in.nc ~/foo.nc
-#ncks -C -H -s '%i' -v three_dmn_var_dbl -d time,2 -d lon,1 -d lat,0 ~/foo.nc
+#ncks -C -H --trd -s '%i' -v three_dmn_var_dbl -d time,2 -d lon,1 -d lat,0 ~/foo.nc
     ##### TODO 880
     $dsc_sng="Pack 3D variable with MSA -C -P all_xst -v three_dmn_var_dbl -d time,0,2 -d time,8,9 -d lon,0 -d lon,1 -d lat,1"; 
     $tst_cmd[0]="ncpdq $omp_flg -h -O -C $fl_fmt $nco_D_flg -P all_xst -v three_dmn_var_dbl -d time,0,2 -d time,8,9 -d lon,0 -d lon,1 -d lat,1 $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%i' -v three_dmn_var_dbl -d time,2 -d lon,1 -d lat,0 %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%i' -v three_dmn_var_dbl -d time,2 -d lon,1 -d lat,0 %tmp_fl_00%";
     $tst_cmd[2]="17505";
     $tst_cmd[3]="SS_OK";
     if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
@@ -3372,16 +3386,16 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 #ncpdq #32
 # two_dmn_var (lat,lev) -C, no MSA (no associated coordinates)
 # ncpdq -O -C -a lev,lat -v two_dmn_var ~/nco/data/in.nc ~/foo.nc
-# ncks -v two_dmn_var -d lat,1,1 -d lev,1,1 ~/foo.nc
+# ncks --trd -v two_dmn_var -d lat,1,1 -d lev,1,1 ~/foo.nc
 # same as previous but with group
 # group: g19 { 
 # dimensions:lat=2;lev=3;lon=4;time=unlimited;
 # two_dmn_var (lat,lev) -C, no MSA (no associated coordinates)
 # ncpdq -O -C -g g19g1 -a lev,lat -v two_dmn_var ~/nco/data/in_grp_3.nc ~/foo.nc
-# ncks -g g19g1 -v two_dmn_var -d lat,1,1 -d lev,1,1 ~/foo.nc
+# ncks --trd -g g19g1 -v two_dmn_var -d lat,1,1 -d lev,1,1 ~/foo.nc
    $dsc_sng="(Groups) Re-order 2D variable (-C, no MSA) -v two_dmn_var -a lev,lat";
    $tst_cmd[0]="ncpdq $omp_flg $fl_fmt $nco_D_flg -O -C -g g19g1 -a lev,lat -v two_dmn_var $in_pth_arg in_grp_3.nc %tmp_fl_00%";
-   $tst_cmd[1]="ncks -g g19g1 -v two_dmn_var -d lat,1,1 -d lev,1,1 %tmp_fl_00%";
+   $tst_cmd[1]="ncks --trd -g g19g1 -v two_dmn_var -d lat,1,1 -d lev,1,1 %tmp_fl_00%";
    $tst_cmd[2]="lev[1] lat[1] two_dmn_var[3]=17.5 fraction";
    $tst_cmd[3]="SS_OK";
    if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
@@ -3392,7 +3406,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 #ncpdq #12
 # two_dmn_var (lat,lev) no -C, no MSA
 # ncpdq -O -a lev,lat -v two_dmn_var ~/nco/data/in.nc ~/foo.nc
-# ncks -C -d lat,1,1 -d lev,1,1 ~/foo.nc
+# ncks -C --trd -d lat,1,1 -d lev,1,1 ~/foo.nc
 
 # same as previous but with group
     
@@ -3402,10 +3416,10 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 #ncpdq #12
 # two_dmn_var (lat,lev) no -C, no MSA 
 # ncpdq -O -g g19g1 -a lev,lat -v two_dmn_var ~/nco/data/in_grp_3.nc ~/foo.nc
-# ncks -C -g g19g1 -v two_dmn_var -d lat,1,1 -d lev,1,1 ~/foo.nc
+# ncks -C --trd -g g19g1 -v two_dmn_var -d lat,1,1 -d lev,1,1 ~/foo.nc
    $dsc_sng="(Groups) Re-order 2D variable (no -C, no MSA) -v two_dmn_var -a lev,lat";
    $tst_cmd[0]="ncpdq $omp_flg $fl_fmt $nco_D_flg -O -g g19g1 -a lev,lat -v two_dmn_var $in_pth_arg in_grp_3.nc %tmp_fl_00%";
-   $tst_cmd[1]="ncks -C -g g19g1 -v two_dmn_var -d lat,1,1 -d lev,1,1 %tmp_fl_00%";
+   $tst_cmd[1]="ncks -C --trd -g g19g1 -v two_dmn_var -d lat,1,1 -d lev,1,1 %tmp_fl_00%";
    $tst_cmd[2]="lev[1]=500 lat[1]=90 two_dmn_var[3]=17.5 fraction";
    $tst_cmd[3]="SS_OK";
    if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
@@ -3424,10 +3438,10 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 #ncpdq #13
 # two_dmn_var (lat,lev) -C, MSA (no associated coordinates)
 # ncpdq -O -C -a lev,lat -d lat,1,1 -d lev,1,1 -v two_dmn_var ~/nco/data/in_grp_3.nc ~/foo.nc
-# ncks ~/foo.nc
+# ncks --trd ~/foo.nc
    $dsc_sng="(Groups) Re-order 2D variable (-C, MSA) -v two_dmn_var -a lev,lat";
    $tst_cmd[0]="ncpdq $omp_flg $fl_fmt $nco_D_flg -O -g g19g1 -C -a lev,lat -v two_dmn_var -d lat,1,1 -d lev,1,1 $in_pth_arg in_grp_3.nc %tmp_fl_00%";
-   $tst_cmd[1]="ncks -g g19g1 -v two_dmn_var %tmp_fl_00%";
+   $tst_cmd[1]="ncks --trd -g g19g1 -v two_dmn_var %tmp_fl_00%";
    $tst_cmd[2]="lev[0] lat[0] two_dmn_var[0]=17.5 fraction";
    $tst_cmd[3]="SS_OK";
    if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
@@ -3437,7 +3451,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 #ncpdq #14
 # two_dmn_var (lat,lev) MSA (associated coordinates)
 # ncpdq -O -a lev,lat -d lat,1,1 -d lev,1,1 -v two_dmn_var ~/nco/data/in.nc ~/foo.nc
-# ncks ~/foo.nc
+# ncks --trd ~/foo.nc
 #$tst_cmd[2]="lev[0]=500 lat[0]=90 two_dmn_var[0]=17.5 fraction";
 
 # same as previous but with group
@@ -3447,10 +3461,10 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 # dimensions:lat=2;lev=3;lon=4;time=unlimited;
 # two_dmn_var (lat,lev) MSA (associated coordinates)
 # ncpdq -O -g g19g1 -a lev,lat -d lat,1,1 -d lev,1,1 -v two_dmn_var ~/nco/data/in_grp_3.nc ~/foo.nc
-# ncks -C -g g19g1 -v two_dmn_var ~/foo.nc
+# ncks -C --trd -g g19g1 -v two_dmn_var ~/foo.nc
    $dsc_sng="(Groups) Re-order 2D variable (no -C, MSA) -v two_dmn_var -a lev,lat";
    $tst_cmd[0]="ncpdq $omp_flg $fl_fmt $nco_D_flg -O -g g19g1 -a lev,lat -v two_dmn_var -d lat,1,1 -d lev,1,1 $in_pth_arg in_grp_3.nc %tmp_fl_00%";
-   $tst_cmd[1]="ncks -C -g g19g1 -v two_dmn_var %tmp_fl_00%";
+   $tst_cmd[1]="ncks -C --trd -g g19g1 -v two_dmn_var %tmp_fl_00%";
    $tst_cmd[2]="lev[0]=500 lat[0]=90 two_dmn_var[0]=17.5 fraction";
    $tst_cmd[3]="SS_OK";
    if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
@@ -3460,7 +3474,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 #ncpdq #15
 # two_dmn_rec_var(time,lev) 2D variable with record  (-C, no MSA)
 # ncpdq -O -C -a lev,time -v two_dmn_rec_var ~/nco/data/in.nc ~/foo.nc
-# ncks -d time,1,1 -d lev,1,1 ~/foo.nc
+# ncks --trd -d time,1,1 -d lev,1,1 ~/foo.nc
 
 # same as previous but with group
     
@@ -3468,10 +3482,10 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 # group: g19 { 
 # dimensions:lat=2;lev=3;lon=4;time=unlimited;
 # ncpdq -O -g g19g2 -C -a lev,time -v two_dmn_rec_var ~/nco/data/in_grp_3.nc ~/foo.nc
-# ncks -d time,1,1 -d lev,1,1 ~/foo.nc
+# ncks --trd -d time,1,1 -d lev,1,1 ~/foo.nc
    $dsc_sng="(Groups) Re-order 2D variable with record (-C, no MSA) -v two_dmn_rec_var -C -a lev,time";
    $tst_cmd[0]="ncpdq $omp_flg $fl_fmt $nco_D_flg -O -g g19g2 -C -a lev,time -v two_dmn_rec_var $in_pth_arg in_grp_3.nc %tmp_fl_00%";
-   $tst_cmd[1]="ncks -g g19g2 -v two_dmn_rec_var -d time,1,1 -d lev,1,1 %tmp_fl_00%";
+   $tst_cmd[1]="ncks --trd -g g19g2 -v two_dmn_rec_var -d time,1,1 -d lev,1,1 %tmp_fl_00%";
    $tst_cmd[2]="lev[1] time[1] two_dmn_rec_var[11]=2.1 watt meter-2";
    $tst_cmd[3]="SS_OK";
    if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
@@ -3480,11 +3494,11 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 #ncpdq #37
 # two_dmn_rec_var(time,lev) 2D variable with record  (no -C, no MSA)
 # ncpdq -O -g g19g2 -a lev,time -v two_dmn_rec_var ~/nco/data/in_grp_3.nc ~/foo.nc
-# ncks -C -g g19g2 -d time,1,1 -d lev,1,1 ~/foo.nc
+# ncks -C --trd -g g19g2 -d time,1,1 -d lev,1,1 ~/foo.nc
 # same #16 as previous but with group
    $dsc_sng="(Groups) Re-order 2D variable with record (no -C, no MSA) -v two_dmn_rec_var -C -a lev,time";
    $tst_cmd[0]="ncpdq $omp_flg $fl_fmt $nco_D_flg -O -g g19g2 -a lev,time -v two_dmn_rec_var $in_pth_arg in_grp_3.nc %tmp_fl_00%";
-   $tst_cmd[1]="ncks -C -g g19g2 -d time,1,1 -d lev,1,1 %tmp_fl_00%";
+   $tst_cmd[1]="ncks -C --trd -g g19g2 -d time,1,1 -d lev,1,1 %tmp_fl_00%";
    $tst_cmd[2]="lev[1]=500 time[1]=2 two_dmn_rec_var[11]=2.1 watt meter-2";
    $tst_cmd[3]="SS_OK";
    if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
@@ -3493,11 +3507,11 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 #ncpdq #38
 # two_dmn_rec_var(time,lev) 2D variable with record  (MSA)
 # ncpdq -O -C -a lev,time -d time,1,1 -d lev,1,1 -v two_dmn_rec_var ~/nco/data/in_grp_3.nc ~/foo.nc
-# ncks -g g19g2 -v two_dmn_rec_var ~/foo.nc
+# ncks --trd -g g19g2 -v two_dmn_rec_var ~/foo.nc
 # same as #17 but with group
    $dsc_sng="(Groups) Re-order 2D variable with record (-C, MSA) -v two_dmn_rec_var -C -a lev,time";
    $tst_cmd[0]="ncpdq $omp_flg $fl_fmt $nco_D_flg -O -C -g g19g2 -a lev,time -v two_dmn_rec_var -d time,1,1 -d lev,1,1 $in_pth_arg in_grp_3.nc %tmp_fl_00%";
-   $tst_cmd[1]="ncks -g g19g2 -v two_dmn_rec_var %tmp_fl_00%";
+   $tst_cmd[1]="ncks --trd -g g19g2 -v two_dmn_rec_var %tmp_fl_00%";
    $tst_cmd[2]="lev[0] time[0] two_dmn_rec_var[0]=2.1 watt meter-2";
    $tst_cmd[3]="SS_OK";
    if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
@@ -3506,12 +3520,12 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 #ncpdq #39
 # two_dmn_rec_var(time,lev) 2D variable with record  (MSA)
 # ncpdq -O -g g19g2 -a lev,time -d time,1,1 -d lev,1,1 -v two_dmn_rec_var ~/nco/data/in_grp_3.nc ~/foo.nc
-# ncks -C -g g19g2 -v two_dmn_rec_var ~/foo.nc
+# ncks -C --trd -g g19g2 -v two_dmn_rec_var ~/foo.nc
 # $tst_cmd[2]="lev[0]=500 time[0]=2 two_dmn_rec_var[0]=2.1 watt meter-2";
 # same as #18 but with group
    $dsc_sng="(Groups) Re-order 2D variable with record (no -C, MSA) -v two_dmn_rec_var";
    $tst_cmd[0]="ncpdq $omp_flg $fl_fmt $nco_D_flg -O -g g19g2 -a lev,time -v two_dmn_rec_var -d time,1,1 -d lev,1,1 $in_pth_arg in_grp_3.nc %tmp_fl_00%";
-   $tst_cmd[1]="ncks -C -g g19g2 -v two_dmn_rec_var %tmp_fl_00%";
+   $tst_cmd[1]="ncks -C --trd -g g19g2 -v two_dmn_rec_var %tmp_fl_00%";
    $tst_cmd[2]="lev[0]=500 time[0]=2 two_dmn_rec_var[0]=2.1 watt meter-2";
    $tst_cmd[3]="SS_OK";
    if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
@@ -3522,7 +3536,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 #ncpdq -O -a -lat -g g23,g24 ~/nco/data/in_grp_3.nc ~/foo.nc
    $dsc_sng="(Groups) Reverse -a lat -g g23 several groups";
    $tst_cmd[0]="ncpdq $omp_flg $fl_fmt $nco_D_flg -O -a -lat -g g23,g24 $in_pth_arg in_grp_3.nc %tmp_fl_00%";
-   $tst_cmd[1]="ncks -v lat -g g23 %tmp_fl_00%";
+   $tst_cmd[1]="ncks --trd -v lat -g g23 %tmp_fl_00%";
    $tst_cmd[2]="lat[1]=-60 degrees_north";
    $tst_cmd[3]="SS_OK";
    if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
@@ -3530,10 +3544,10 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 
 #ncpdq #41
 #ncpdq -O -a -lat -g g23,g24 ~/nco/data/in_grp_3.nc ~/foo.nc
-#ncks -v lat -g g24 ~/foo.nc
+#ncks --trd -v lat -g g24 ~/foo.nc
    $dsc_sng="(Groups) Reverse (-a -lat) several groups (-g g23,g24)";
    $tst_cmd[0]="ncpdq $omp_flg $fl_fmt $nco_D_flg -O -a -lat -g g23,g24 $in_pth_arg in_grp_3.nc %tmp_fl_00%";
-   $tst_cmd[1]="ncks -v lat -g g24 %tmp_fl_00%";
+   $tst_cmd[1]="ncks --trd -v lat -g g24 %tmp_fl_00%";
    $tst_cmd[2]="lat[1]=-60 degrees_north";
    $tst_cmd[3]="SS_OK";
    if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
@@ -3541,10 +3555,10 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 
 #ncpdq #42
 #ncpdq -O -v lat,lon -a -lat,-lon -g g1,g2 ~/nco/data/in_grp_8.nc ~/foo.nc
-#ncks -H -v lon -g g2 ~/foo.nc
+#ncks -H --trd -v lon -g g2 ~/foo.nc
    $dsc_sng="(Groups) Reverse (-a -lat,-lon) several groups (-g g1,g2)";
    $tst_cmd[0]="ncpdq $omp_flg $fl_fmt $nco_D_flg -O -a -lat,-lon -g g1,g2 $in_pth_arg in_grp_8.nc %tmp_fl_00%";
-   $tst_cmd[1]="ncks -H -v lon -g g2 %tmp_fl_00%";
+   $tst_cmd[1]="ncks -H --trd -v lon -g g2 %tmp_fl_00%";
    $tst_cmd[2]="lon[2]=0";
    $tst_cmd[3]="SS_OK";
    if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
@@ -3552,10 +3566,10 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 
 #ncpdq #43
 #ncpdq -O -v lat,lon -a lat,-lon -g g1,g2 ~/nco/data/in_grp_8.nc ~/foo.nc
-#ncks -H -v lon -g g2 ~/foo.nc
+#ncks -H --trd -v lon -g g2 ~/foo.nc
    $dsc_sng="(Groups) Reverse (-a lat,-lon) several groups (-g g1,g2)";
    $tst_cmd[0]="ncpdq $omp_flg $fl_fmt $nco_D_flg -O -a lat,-lon -g g1,g2 $in_pth_arg in_grp_8.nc %tmp_fl_00%";
-   $tst_cmd[1]="ncks -H -v lon -g g2 %tmp_fl_00%";
+   $tst_cmd[1]="ncks -H --trd -v lon -g g2 %tmp_fl_00%";
    $tst_cmd[2]="lon[2]=0";
    $tst_cmd[3]="SS_OK";
    if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
@@ -3563,10 +3577,10 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 
 #ncpdq #44
 #ncpdq -O -v lat,lon -a -lat,lon -g g1,g2 ~/nco/data/in_grp_8.nc ~/foo.nc
-#ncks -H out1.nc
+#ncks -H --trd out1.nc
    $dsc_sng="(Groups) Reverse -a -lat,lon several groups";
    $tst_cmd[0]="ncpdq $omp_flg $fl_fmt $nco_D_flg -O -a -lat,lon -g g1,g2 $in_pth_arg in_grp_8.nc %tmp_fl_00%";
-   $tst_cmd[1]="ncks -H -v lon -g g2 %tmp_fl_00%";
+   $tst_cmd[1]="ncks -H --trd -v lon -g g2 %tmp_fl_00%";
    $tst_cmd[2]="lon[2]=2";
    $tst_cmd[3]="SS_OK";
    if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
@@ -3579,12 +3593,12 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 #ncpdq #45
 #ncpdq -h -O -P all_new -v upk in.nc ~/foo.nc
 #ncpdq -h -O -P upk -v upk ~/foo.nc ~/foo.nc
-#ncks -C -H -s '%g' -v upk ~/foo.nc
+#ncks -C -H --trd -s '%g' -v upk ~/foo.nc
 # same as #29 but with group
    $dsc_sng="(Groups) Pack and then unpack scalar (uses only add_offset) -P all_new -v upk";
    $tst_cmd[0]="ncpdq $omp_flg $fl_fmt $nco_D_flg -h -O -g g19g4 -P all_new -v upk $in_pth_arg in_grp_3.nc %tmp_fl_00%";
    $tst_cmd[1]="ncpdq $omp_flg -h -O $fl_fmt $nco_D_flg -P upk -v upk %tmp_fl_00% %tmp_fl_00%";
-   $tst_cmd[2]="ncks -C -H -s '%g' -v upk %tmp_fl_00%";
+   $tst_cmd[2]="ncks -C -H --trd -s '%g' -v upk %tmp_fl_00%";
    $tst_cmd[3]="3";
    $tst_cmd[4]="SS_OK";
    if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
@@ -3593,12 +3607,12 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 #ncpdq #46
 # same as ncpdq #30
 # ncpdq -g g19g4 -h -O -C -P upk -v rec_var_dbl_mss_val_dbl_pck -d time,0,4 -d time,6 in_grp_3.nc ~/foo.nc
-# ncks -g g19g4 -C -H -s '%f' -v rec_var_dbl_mss_val_dbl_pck -d time,5 ~/foo.nc
+# ncks -g g19g4 -C -H --trd -s '%f' -v rec_var_dbl_mss_val_dbl_pck -d time,5 ~/foo.nc
 #$tst_cmd[2]="7";
 # same as #30 but with group
    $dsc_sng="(Groups) Unpack 1D variable with MSA -C P upk -v rec_var_dbl_mss_val_dbl_pck -d time,0,4 -d time,6";
    $tst_cmd[0]="ncpdq $omp_flg $fl_fmt $nco_D_flg -g g19g4 -h -O -C -P upk -v rec_var_dbl_mss_val_dbl_pck -d time,0,4 -d time,6 $in_pth_arg in_grp_3.nc %tmp_fl_00%";
-   $tst_cmd[1]="ncks -g g19g4 -C -H -s '%f' -v rec_var_dbl_mss_val_dbl_pck -d time,5 %tmp_fl_00%";
+   $tst_cmd[1]="ncks -g g19g4 -C -H --trd -s '%f' -v rec_var_dbl_mss_val_dbl_pck -d time,5 %tmp_fl_00%";
    $tst_cmd[2]="7";
    $tst_cmd[3]="SS_OK";
    if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
@@ -3606,10 +3620,10 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
    	
 #ncpdq #47
 # ncpdq -O -4 -a lon,lat --cnk_min=1 --cnk_plc=xpl --cnk_dmn lat,1 --cnk_dmn lon,2 -v lat_2D_rct ~/nco/data/in.nc ~/foo.nc
-# ncks -m ~/foo.nc | grep 'lat_2D_rct dimension 0'
+# ncks -m --trd ~/foo.nc | grep 'lat_2D_rct dimension 0'
    $dsc_sng="Chunking -a lon,lat --cnk_min=1 --cnk_plc=xpl --cnk_dmn lat,1 --cnk_dmn lon,2 -v lat_2D_rct";
    $tst_cmd[0]="ncpdq $omp_flg -4 $nco_D_flg -a lon,lat --cnk_min=1 --cnk_plc=xpl --cnk_dmn lat,1 --cnk_dmn lon,2 -v lat_2D_rct $in_pth_arg in.nc %tmp_fl_00%";
-   $tst_cmd[1]="ncks -m %tmp_fl_00% | grep 'lat_2D_rct dimension 0'";
+   $tst_cmd[1]="ncks -m --trd %tmp_fl_00% | grep 'lat_2D_rct dimension 0'";
    $tst_cmd[2]="lat_2D_rct dimension 0: lon, size = 4 NC_FLOAT, chunksize = 2 (Coordinate is lon)";
    $tst_cmd[3]="SS_OK";
    if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
@@ -3621,7 +3635,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
     $dsc_sng="Unpack 1D variable twice to verify first unpacking does not inadvertently store packing attributes";
     $tst_cmd[0]="ncpdq $omp_flg -h -O -C $fl_fmt $nco_D_flg -P upk -v pck_7 $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncpdq $omp_flg -h -O -C $fl_fmt $nco_D_flg -P upk -v pck_7 %tmp_fl_00% %tmp_fl_01%";
-    $tst_cmd[2]="ncks -C -H -s '%f' -v pck_7 %tmp_fl_01%";
+    $tst_cmd[2]="ncks -C -H --trd -s '%f' -v pck_7 %tmp_fl_01%";
     $tst_cmd[3]="7";
     $tst_cmd[4]="SS_OK";
     if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
@@ -3630,7 +3644,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 #ncpdq #49
     $dsc_sng="Unpack 1D variable with netCDF convention";
     $tst_cmd[0]="ncpdq $omp_flg -h -O -C $fl_fmt $nco_D_flg -P upk -v pck_7 $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%f' -v pck_7 %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%f' -v pck_7 %tmp_fl_00%";
     $tst_cmd[2]="7";
     $tst_cmd[3]="SS_OK";
     if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
@@ -3639,7 +3653,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 #ncpdq #50
     $dsc_sng="Unpack 1D variable with HDF convention";
     $tst_cmd[0]="ncpdq $omp_flg -h -O -C $fl_fmt $nco_D_flg -P upk --hdf_upk -v pck_7 $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%f' -v pck_7 %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%f' -v pck_7 %tmp_fl_00%";
     $tst_cmd[2]="-8";
     $tst_cmd[3]="SS_OK";
     if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
@@ -3649,7 +3663,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
     $dsc_sng="Re-pack 1D variable from HDF convention to netCDF convention";
     $tst_cmd[0]="ncpdq $omp_flg -h -O -C $fl_fmt $nco_D_flg -P xst_new --hdf_upk -v pck_7 $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncpdq $omp_flg -h -O -C $fl_fmt $nco_D_flg -P upk -v pck_7 %tmp_fl_00% %tmp_fl_01%";
-    $tst_cmd[2]="ncks -C -H -s '%f' -v pck_7 %tmp_fl_01%";
+    $tst_cmd[2]="ncks -C -H --trd -s '%f' -v pck_7 %tmp_fl_01%";
     $tst_cmd[3]="-8";
     $tst_cmd[4]="SS_OK";
     if($mpi_prc == 0 || ($mpi_prc > 0 && !($localhostname =~ /pbs/))){NCO_bm::tst_run(\@tst_cmd);} # ncpdq hangs with MPI TODO nco772
@@ -3666,7 +3680,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 #if($mpi_prc == 0){ # fxm test hangs because of ncrcat TODO 593
     $dsc_sng="Concatenate float with double missing values across two files";
     $tst_cmd[0]="ncra -Y ncrcat $omp_flg -h -O $fl_fmt $nco_D_flg -v rec_var_flt_mss_val_dbl $in_pth_arg in.nc in.nc %tmp_fl_00% 2> %tmp_fl_02%";
-    $tst_cmd[1]="ncks -C -H -d time,11 -s '%f' -v rec_var_flt_mss_val_dbl %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -d time,11 -s '%f' -v rec_var_flt_mss_val_dbl %tmp_fl_00%";
     $tst_cmd[2]="2";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -3675,7 +3689,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 #ncrcat #02	
     $dsc_sng="Concatenate record coordinate-bounded variable across two non-monotonic files";
     $tst_cmd[0]="ncra -Y ncrcat $omp_flg -h -O $fl_fmt $nco_D_flg -v one_dmn_rec_var $in_pth_arg in.nc in.nc -d time,2.,3. %tmp_fl_00% 2> %tmp_fl_02%";
-    $tst_cmd[1]="ncks -C -H -s '%d ' -v one_dmn_rec_var %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%d ' -v one_dmn_rec_var %tmp_fl_00%";
     $tst_cmd[2]="2 3 2 3";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -3685,7 +3699,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
     $dsc_sng="Concatenate float variable with multislabs across two files";
     $tst_cmd[0]="ncra -Y ncrcat $omp_flg -h -O $fl_fmt $nco_D_flg -v three_dmn_var_dbl $in_pth_arg -d time,,2 -d lat,0,0 -d lon,0,0 -d lon,3,3 in.nc in.nc %tmp_fl_00% 2> %tmp_fl_02%";
     $tst_cmd[1]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -y max %tmp_fl_00% %tmp_fl_01%"; 
-    $tst_cmd[2]="ncks -C -H -s '%f' -v three_dmn_var_dbl %tmp_fl_01%";
+    $tst_cmd[2]="ncks -C -H --trd -s '%f' -v three_dmn_var_dbl %tmp_fl_01%";
     $tst_cmd[3]="20";
     $tst_cmd[4]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -3695,7 +3709,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
     $dsc_sng="Concatenate int variable with multislabs across two files";
     $tst_cmd[0]="ncra -Y ncrcat $omp_flg -h -O $fl_fmt $nco_D_flg -v three_dmn_var_int $in_pth_arg -d time,,6 -d lat,0,0 -d lon,0,0 -d lon,3,3 in.nc in.nc %tmp_fl_00% 2> %tmp_fl_02%";
     $tst_cmd[1]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg %tmp_fl_00% %tmp_fl_01%"; 
-    $tst_cmd[2]="ncks -C -H -s '%d' -v three_dmn_var_int %tmp_fl_01%";
+    $tst_cmd[2]="ncks -C -H --trd -s '%d' -v three_dmn_var_int %tmp_fl_01%";
     $tst_cmd[3]="28";
     $tst_cmd[4]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -3705,7 +3719,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
     $dsc_sng="Concatenate float 4D variable with multislabs across two files";
     $tst_cmd[0]="ncra -Y ncrcat $omp_flg -h -O $fl_fmt $nco_D_flg -v four_dmn_rec_var $in_pth_arg -d time,0,,4 -d lat,0,0 -d lon,0,1 -d lon,3,3 in.nc in.nc %tmp_fl_00% 2> %tmp_fl_02%";
     $tst_cmd[1]="ncwa $omp_flg -h -y max -O $fl_fmt $nco_D_flg %tmp_fl_00% %tmp_fl_01%"; 
-    $tst_cmd[2]="ncks -C -H -s '%f' -v four_dmn_rec_var %tmp_fl_01%";
+    $tst_cmd[2]="ncks -C -H --trd -s '%f' -v four_dmn_rec_var %tmp_fl_01%";
     $tst_cmd[3]="204";
     $tst_cmd[4]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -3715,7 +3729,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
     $dsc_sng="Concatenate 1D variable with stride across two files";
     $tst_cmd[0]="ncap2 -h -O $fl_fmt $nco_D_flg -v -s 'time+=10;' $in_pth_arg in.nc %tmp_fl_00%";    
     $tst_cmd[1]="ncra -Y ncrcat -O $omp_flg $fl_fmt $nco_D_flg -C -v time -d time,0,,4 $in_pth/in.nc %tmp_fl_00% %tmp_fl_01% 2> %tmp_fl_02%";
-    $tst_cmd[2]="ncks -C -H -s '%2.f,' -v time %tmp_fl_01%";
+    $tst_cmd[2]="ncks -C -H --trd -s '%2.f,' -v time %tmp_fl_01%";
     $tst_cmd[3]=" 1, 5, 9,13,17";
     $tst_cmd[4]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -3726,7 +3740,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
     $tst_cmd[0]="ncap2 -h -O $fl_fmt $nco_D_flg -v -s 'time+=10;' $in_pth_arg in.nc %tmp_fl_00%"; 
     $tst_cmd[1]="ncap2 -h -O $fl_fmt $nco_D_flg -v -s 'time+=20;' $in_pth_arg in.nc %tmp_fl_01%";
     $tst_cmd[2]="ncra -Y ncrcat -O $omp_flg $fl_fmt $nco_D_flg -C -v time -d time,0,,8 $in_pth/in.nc %tmp_fl_00% %tmp_fl_01% %tmp_fl_02% 2> %tmp_fl_03%";
-    $tst_cmd[3]="ncks -C -H -s '%2.f,' -v time %tmp_fl_02%";
+    $tst_cmd[3]="ncks -C -H --trd -s '%2.f,' -v time %tmp_fl_02%";
     $dsc_sng="Concatenate 1D variable with stride across three files";
     $tst_cmd[4]=" 1, 9,17,25";
     $tst_cmd[5]="SS_OK";
@@ -3740,7 +3754,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
     $tst_cmd[2]="ncap2 -h -O $fl_fmt $nco_D_flg -v -s 'time+=20;' $in_pth_arg in.nc %tmp_fl_02%";
     $tst_cmd[3]="ncks $fl_fmt $nco_D_flg -O -C -v time -d time,5,7 %tmp_fl_02% %tmp_fl_03%";
     $tst_cmd[4]="ncra -Y ncrcat -O $fl_fmt $nco_D_flg -C -v time -d time,10,,2 $in_pth/in.nc %tmp_fl_01% %tmp_fl_03% %tmp_fl_04% 2> %tmp_fl_05%";
-    $tst_cmd[5]="ncks -C -H -s '%2.f,' -v time %tmp_fl_04%";
+    $tst_cmd[5]="ncks -C -H --trd -s '%2.f,' -v time %tmp_fl_04%";
     $dsc_sng="Concatenate 1D variable with stride across files with different record dimensions";
     $tst_cmd[6]="11,13,15,27";
     $tst_cmd[7]="SS_OK";
@@ -3917,7 +3931,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 
     $tst_cmd[0]="ncks $omp_flg -h -O $fl_fmt $nco_D_flg -v one_dmn_rec_var $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncrcat $omp_flg -h --no_tmp_fl --rec_apn $fl_fmt $nco_D_flg -v one_dmn_rec_var $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[2]="ncks -C -H -s '%d' -d time,19 -v one_dmn_rec_var %tmp_fl_00%";
+    $tst_cmd[2]="ncks -C -H --trd -s '%d' -d time,19 -v one_dmn_rec_var %tmp_fl_00%";
     $dsc_sng="Append records to existing file without copying original";
     $tst_cmd[3]="10";
     $tst_cmd[4]="SS_OK";
@@ -3986,7 +4000,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 # same as ncrcat #02 with group
 
     $tst_cmd[0]="ncra -Y ncrcat $omp_flg -h -O $fl_fmt $nco_D_flg -g g4 -v one_dmn_rec_var $in_pth_arg in_grp.nc in_grp.nc -d time,2.,3. %tmp_fl_00% 2> %tmp_fl_02%";
-    $tst_cmd[1]="ncks -C -H -s '%d ' -g g4 -v one_dmn_rec_var %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%d ' -g g4 -v one_dmn_rec_var %tmp_fl_00%";
     $dsc_sng="(Groups) Concatenate record coordinate-bounded variable across two non-monotonic files";
     $tst_cmd[2]="2 3 2 3";
     $tst_cmd[3]="SS_OK";
@@ -3998,7 +4012,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 # ncra -Y ncrcat -h -O -g g25g1,g25g2 -v one_dmn_rec_var -p ~/nco/data in_grp_3.nc in_grp_3.nc -d time,2.,3. ~/foo.nc
 
     $tst_cmd[0]="ncra -Y ncrcat $omp_flg -h -O $fl_fmt $nco_D_flg -g g25g1,g25g2 -v one_dmn_rec_var $in_pth_arg in_grp_3.nc in_grp_3.nc -d time,2.,3. %tmp_fl_00% 2> %tmp_fl_02%";
-    $tst_cmd[1]="ncks -C -H -s '%d ' -g g25g1 -v one_dmn_rec_var %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%d ' -g g25g1 -v one_dmn_rec_var %tmp_fl_00%";
     $dsc_sng="(Groups) 2 groups Concatenate record coordinate-bounded variable across two non-monotonic files";
     $tst_cmd[2]="2 3 2 3";
     $tst_cmd[3]="SS_OK";
@@ -4010,7 +4024,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 # ncra -Y ncrcat -h -O -g g25g1,g25g2 -v one_dmn_rec_var -p ~/nco/data in_grp_3.nc in_grp_3.nc -d time,2.,3. ~/foo.nc
 
     $tst_cmd[0]="ncra -Y ncrcat $omp_flg -h -O $fl_fmt $nco_D_flg -g g25g1,g25g2 -v one_dmn_rec_var $in_pth_arg in_grp_3.nc in_grp_3.nc -d time,2.,3. %tmp_fl_00% 2> %tmp_fl_02%";
-    $tst_cmd[1]="ncks -C -H -s '%d ' -g g25g2 -v one_dmn_rec_var %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%d ' -g g25g2 -v one_dmn_rec_var %tmp_fl_00%";
     $dsc_sng="(Groups) 2 groups Concatenate record coordinate-bounded variable across two non-monotonic files";
     $tst_cmd[2]="2 3 2 3";
     $tst_cmd[3]="SS_OK";
@@ -4022,7 +4036,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 
     $tst_cmd[0]="ncra -Y ncrcat $omp_flg -h -O $fl_fmt $nco_D_flg -v three_dmn_var_dbl $in_pth_arg -d time,,2 -d lat,0,0 -d lon,0,0 -d lon,3,3 in_grp_3.nc in_grp_3.nc %tmp_fl_00% 2> %tmp_fl_02%";
     $tst_cmd[1]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -y max %tmp_fl_00% %tmp_fl_01%"; 
-    $tst_cmd[2]="ncks -C -H -s '%f' -g g19g3 -v three_dmn_var_dbl %tmp_fl_01%";
+    $tst_cmd[2]="ncks -C -H --trd -s '%f' -g g19g3 -v three_dmn_var_dbl %tmp_fl_01%";
     $dsc_sng="(Groups) Concatenate float variable with multislabs across two files";
     $tst_cmd[3]="20";
     $tst_cmd[4]="SS_OK";
@@ -4034,10 +4048,10 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 # ncrcat #30
 # Detect input_complete when stride skips user-specified idx_end_max
 # ncrcat -O -C -v time -d time,0,10,9,1 -p ~/nco/data in.nc in.nc ~/foo.nc
-# ncks -C -H -s '%g, ' -v time ~/foo.nc
+# ncks -C -H --trd -s '%g, ' -v time ~/foo.nc
     $dsc_sng="Detect input_complete when stride skips user-specified idx_end_max";
     $tst_cmd[0]="ncra -Y ncrcat -h -O $fl_fmt $nco_D_flg -C -v time -d time,0,10,9,1 $in_pth_arg in.nc in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%g, ' -v time %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%g, ' -v time %tmp_fl_00%";
     $tst_cmd[2]="1, 10,";
     $tst_cmd[3]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -4048,12 +4062,12 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 # ncks -O -C -v time -d time,0,2 ~/nco/data/in.nc ~/foo1.nc
 # ncks -O -C -v time -d time,3,5 ~/nco/data/in.nc ~/foo2.nc
 # ncra -Y ncrcat -D 3 -O -C -v time -d time,0,3,2,1 -p ~ foo1.nc foo2.nc ~/foo.nc
-# ncks -C -H -s '%g, ' -v time ~/foo.nc
+# ncks -C -H --trd -s '%g, ' -v time ~/foo.nc
     $dsc_sng="Another detect input_complete when stride skips user-specified idx_end_max";
     $tst_cmd[0]="ncks -h -O $fl_fmt $nco_D_flg -C -v time -d time,0,2 $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncks -h -O $fl_fmt $nco_D_flg -C -v time -d time,3,5 $in_pth_arg in.nc %tmp_fl_01%";
     $tst_cmd[2]="ncra -Y ncrcat -h -O $fl_fmt $nco_D_flg -C -v time -d time,0,3,2,1 %tmp_fl_00% %tmp_fl_01% %tmp_fl_02%";
-    $tst_cmd[3]="ncks -C -H -s '%g, ' -v time %tmp_fl_02%";
+    $tst_cmd[3]="ncks -C -H --trd -s '%g, ' -v time %tmp_fl_02%";
     $tst_cmd[4]="1, 3,";
     $tst_cmd[5]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -4071,7 +4085,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 
     $tst_cmd[0]="ncks $omp_flg -h -O $fl_fmt $nco_D_flg -g g4 -v one_dmn_rec_var $in_pth_arg in_grp.nc %tmp_fl_00%";
     $tst_cmd[1]="ncra -Y ncrcat $omp_flg -h --no_tmp_fl --rec_apn $fl_fmt $nco_D_flg -g g4 -v one_dmn_rec_var $in_pth_arg in_grp.nc %tmp_fl_00%";
-    $tst_cmd[2]="ncks -C -g g4 -v one_dmn_rec_var %tmp_fl_00%";
+    $tst_cmd[2]="ncks -C --trd -g g4 -v one_dmn_rec_var %tmp_fl_00%";
     $dsc_sng="(Groups) Append records to existing file without copying original (Group with 1 record case)";
     $tst_cmd[3]="time[19]=10 one_dmn_rec_var[19]=10 kelvin";
     $tst_cmd[4]="SS_OK";
@@ -4084,7 +4098,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 
     $tst_cmd[0]="ncks $omp_flg -h -O $fl_fmt $nco_D_flg -g g5 -v one_dmn_rec_var,time51,time52 $in_pth_arg in_grp.nc %tmp_fl_00%";
     $tst_cmd[1]="ncra -Y ncrcat  $omp_flg -h --no_tmp_fl --rec_apn $fl_fmt $nco_D_flg -g g5 -v one_dmn_rec_var $in_pth_arg in_grp.nc %tmp_fl_00%";
-    $tst_cmd[2]="ncks -C -g g5 -v one_dmn_rec_var %tmp_fl_00%";
+    $tst_cmd[2]="ncks -C --trd -g g5 -v one_dmn_rec_var %tmp_fl_00%";
     $dsc_sng="(Groups) Append records to existing file without copying original (Group with 2 records case)";
     $tst_cmd[3]="time52[19]=10 one_dmn_rec_var[19]=10 kelvin";
     $tst_cmd[4]="SS_OK";
@@ -4095,12 +4109,12 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 #ncks -h -O -g g5 -v one_dmn_rec_var,time51,time52 ~/nco/data/in_grp.nc in_grp1.nc 
 #ncks -h -O -g g5 -v one_dmn_rec_var,time51,time52 ~/nco/data/in_grp.nc in_grp2.nc 
 #ncrcat -O -h -g g5 -v one_dmn_rec_var -p ~/nco/data in_grp1.nc in_grp2.nc ~/foo.nc
-#ncks -C -g g5 -v one_dmn_rec_var ~/foo.nc
+#ncks -C --trd -g g5 -v one_dmn_rec_var ~/foo.nc
 
     $tst_cmd[0]="ncks $omp_flg -h -O $fl_fmt $nco_D_flg -g g5 -v one_dmn_rec_var,time51,time52 $in_pth_arg in_grp.nc %tmp_fl_00%";
     $tst_cmd[1]="ncks $omp_flg -h -O $fl_fmt $nco_D_flg -v one_dmn_rec_var,time51,time52 $in_pth_arg in_grp.nc %tmp_fl_01%";
     $tst_cmd[2]="ncra -Y ncrcat  -h -O $fl_fmt $nco_D_flg -g g5 -v one_dmn_rec_var %tmp_fl_00% %tmp_fl_01% %tmp_fl_02%";
-    $tst_cmd[3]="ncks -C -g g5 -v one_dmn_rec_var %tmp_fl_02%";
+    $tst_cmd[3]="ncks -C --trd -g g5 -v one_dmn_rec_var %tmp_fl_02%";
     $dsc_sng="(Groups) Group with 2 records case";
     $tst_cmd[4]="time52[19]=10 one_dmn_rec_var[19]=10 kelvin";
     $tst_cmd[5]="SS_OK";
@@ -4124,7 +4138,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
     $tst_cmd[1]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -a time %tmp_fl_01% %tmp_fl_02%";
     $tst_cmd[2]="ncdiff $omp_flg -h -O $fl_fmt $nco_D_flg -v rec_var_flt_mss_val_dbl %tmp_fl_01% %tmp_fl_02% %tmp_fl_03%";
     $tst_cmd[3]="ncra $omp_flg -h -O $fl_fmt $nco_D_flg -y rms -v rec_var_flt_mss_val_dbl %tmp_fl_03% %tmp_fl_00%";
-    $tst_cmd[4]="ncks -C -H -s '%f' -v rec_var_flt_mss_val_dbl %tmp_fl_00%";
+    $tst_cmd[4]="ncks -C -H --trd -s '%f' -v rec_var_flt_mss_val_dbl %tmp_fl_00%";
     $tst_cmd[5]="2";
     $tst_cmd[6]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -4134,7 +4148,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 # ncra #02
     $dsc_sng="record mean of int across two files";
     $tst_cmd[0]="ncra $omp_flg -h -O $fl_fmt $nco_D_flg -v one_dmn_rec_var $in_pth_arg in.nc in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%d' -v one_dmn_rec_var %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%d' -v one_dmn_rec_var %tmp_fl_00%";
     $tst_cmd[2]="6";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -4143,7 +4157,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 # ncra #03	
     $dsc_sng="record mean of float with double missing values";
     $tst_cmd[0]="ncra $omp_flg -h -O $fl_fmt $nco_D_flg -v rec_var_flt_mss_val_dbl $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%f' -v rec_var_flt_mss_val_dbl %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%f' -v rec_var_flt_mss_val_dbl %tmp_fl_00%";
     $tst_cmd[2]="5";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -4152,7 +4166,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 # ncra #04	
     $dsc_sng="record mean of float with integer missing values";
     $tst_cmd[0]="ncra $omp_flg -h -O $fl_fmt $nco_D_flg -v rec_var_flt_mss_val_int $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%f' -v rec_var_flt_mss_val_int %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%f' -v rec_var_flt_mss_val_int %tmp_fl_00%";
     $tst_cmd[2]="5";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -4161,7 +4175,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 # ncra #05	
     $dsc_sng="record mean of integer with integer missing values";
     $tst_cmd[0]="ncra $omp_flg -h -O $fl_fmt $nco_D_flg -v rec_var_int_mss_val_int $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%d' -v rec_var_int_mss_val_int %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%d' -v rec_var_int_mss_val_int %tmp_fl_00%";
     $tst_cmd[2]="5";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -4170,7 +4184,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 # ncra #06	
     $dsc_sng="record mean of integer with integer missing values across two files";
     $tst_cmd[0]="ncra $omp_flg -h -O $fl_fmt $nco_D_flg -v rec_var_int_mss_val_int $in_pth_arg in.nc in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%d' -v rec_var_int_mss_val_int %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%d' -v rec_var_int_mss_val_int %tmp_fl_00%";
     $tst_cmd[2]="5";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -4179,7 +4193,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 # ncra #07
     $dsc_sng="record mean of integer with float missing values";
     $tst_cmd[0]="ncra $omp_flg -h -O $fl_fmt $nco_D_flg -v rec_var_int_mss_val_flt $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%d' -v rec_var_int_mss_val_flt %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%d' -v rec_var_int_mss_val_flt %tmp_fl_00%";
     $tst_cmd[2]="5";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -4188,7 +4202,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 # ncra #08	
     $dsc_sng="record mean of integer with float missing values across two files";
     $tst_cmd[0]="ncra $omp_flg -h -O $fl_fmt $nco_D_flg -v rec_var_int_mss_val_flt $in_pth_arg in.nc in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%d' -v rec_var_int_mss_val_flt %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%d' -v rec_var_int_mss_val_flt %tmp_fl_00%";
     $tst_cmd[2]="5";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -4197,7 +4211,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 # ncra #09	
     $dsc_sng="record mean of packed double with double missing values";
     $tst_cmd[0]="ncra $omp_flg -h -O $fl_fmt $nco_D_flg -v rec_var_dbl_mss_val_dbl_pck $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%f' -v rec_var_dbl_mss_val_dbl_pck %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%f' -v rec_var_dbl_mss_val_dbl_pck %tmp_fl_00%";
     $tst_cmd[2]="5";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -4206,7 +4220,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 # ncra #10	
     $dsc_sng="record mean of packed double to test precision";
     $tst_cmd[0]="ncra $omp_flg -h -O $fl_fmt $nco_D_flg -v rec_var_dbl_pck $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%f' -v rec_var_dbl_pck %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%f' -v rec_var_dbl_pck %tmp_fl_00%";
     $tst_cmd[2]="100.55";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -4215,7 +4229,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 # ncra #11	
     $dsc_sng="record mean of packed float to test precision";
     $tst_cmd[0]="ncra $omp_flg -h -O $fl_fmt $nco_D_flg -v rec_var_flt_pck $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%3.2f' -v rec_var_flt_pck %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%3.2f' -v rec_var_flt_pck %tmp_fl_00%";
     $tst_cmd[2]="100.55";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -4224,7 +4238,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 # ncra #12	
     $dsc_sng="pass through non-record (i.e., non-processed) packed data to output";
     $tst_cmd[0]="ncra $omp_flg -h -O $fl_fmt $nco_D_flg -v pck,one_dmn_rec_var $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%d' -v pck %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%d' -v pck %tmp_fl_00%";
     $tst_cmd[2]="1";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -4233,7 +4247,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 # ncra #13
     $dsc_sng="record mean of float with double missing values across two files";
     $tst_cmd[0]="ncra $omp_flg -h -O $fl_fmt $nco_D_flg -y avg -v rec_var_flt_mss_val_dbl $in_pth_arg in.nc in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%f' -v rec_var_flt_mss_val_dbl %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%f' -v rec_var_flt_mss_val_dbl %tmp_fl_00%";
     $tst_cmd[2]="5";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -4242,7 +4256,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 # ncra #14
     $dsc_sng="record min of float with double missing values across two files";
     $tst_cmd[0]="ncra $omp_flg -h -O $fl_fmt $nco_D_flg -y min -v rec_var_flt_mss_val_dbl $in_pth_arg in.nc in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%f' -v rec_var_flt_mss_val_dbl %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%f' -v rec_var_flt_mss_val_dbl %tmp_fl_00%";
     $tst_cmd[2]="2";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -4251,7 +4265,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 # ncra #15	
     $dsc_sng="record max of float with double missing values across two files";
     $tst_cmd[0]="ncra $omp_flg -h -O $fl_fmt $nco_D_flg -y max -v rec_var_flt_mss_val_dbl $in_pth_arg in.nc in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%f' -v rec_var_flt_mss_val_dbl %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%f' -v rec_var_flt_mss_val_dbl %tmp_fl_00%";
     $tst_cmd[2]="8";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -4260,7 +4274,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 # ncra #16
     $dsc_sng="record ttl of float with double missing values across two files";
     $tst_cmd[0]="ncra $omp_flg -h -O $fl_fmt $nco_D_flg -y ttl -v rec_var_flt_mss_val_dbl $in_pth_arg in.nc in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%f' -v rec_var_flt_mss_val_dbl %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%f' -v rec_var_flt_mss_val_dbl %tmp_fl_00%";
     $tst_cmd[2]="70";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -4269,7 +4283,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 # ncra #17
     $dsc_sng="record rms of float with double missing values across two files";
     $tst_cmd[0]="ncra $omp_flg -h -O $fl_fmt $nco_D_flg -y rms -v rec_var_flt_mss_val_dbl $in_pth_arg in.nc in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%1.5f' -v rec_var_flt_mss_val_dbl %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%1.5f' -v rec_var_flt_mss_val_dbl %tmp_fl_00%";
     $tst_cmd[2]="5.38516";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -4278,7 +4292,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 # ncra #18
     $dsc_sng="Return mean time coordinate (when computing totals) across two files";
     $tst_cmd[0]="ncra $omp_flg -h -O $fl_fmt $nco_D_flg -y ttl -v time,one_dmn_rec_var $in_pth_arg in.nc in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%f' -v time %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%f' -v time %tmp_fl_00%";
     $tst_cmd[2]="5.5";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -4287,7 +4301,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 # ncra #19
     $dsc_sng="Return total record (when computing totals) across two files";
     $tst_cmd[0]="ncra $omp_flg -h -O $fl_fmt $nco_D_flg -y ttl -v time,one_dmn_rec_var $in_pth_arg in.nc in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%d' -v one_dmn_rec_var %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%d' -v one_dmn_rec_var %tmp_fl_00%";
     $tst_cmd[2]="110";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -4296,7 +4310,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 # ncra #20	
     $dsc_sng="Return record average of cell-based geodesic data";
     $tst_cmd[0]="ncra $omp_flg -h -O $fl_fmt $nco_D_flg -X 0.,180.,-30.,30. -v gds_3dvar $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%8.1f' -v gds_3dvar %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%8.1f' -v gds_3dvar %tmp_fl_00%";
     $tst_cmd[2]="   277.7   277.8   277.9   278.0   278.1   278.2";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -4318,7 +4332,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 # ncra #22
     $tst_cmd[0]="ncks $omp_flg -h -O $fl_fmt $nco_D_flg -v one_dmn_rec_var $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncra $omp_flg -h --no_tmp_fl --rec_apn $fl_fmt $nco_D_flg -v one_dmn_rec_var $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[2]="ncks -C -H -s '%d' -d time,10 -v one_dmn_rec_var %tmp_fl_00%";
+    $tst_cmd[2]="ncks -C -H --trd -s '%d' -d time,10 -v one_dmn_rec_var %tmp_fl_00%";
     $dsc_sng="Append records to existing file without copying original";
     $tst_cmd[3]="6";
     $tst_cmd[4]="SS_OK";
@@ -4335,7 +4349,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 # same as ncra #02, for groups
     $dsc_sng="(Groups) 1 group -g g4 -v one_dmn_rec_var record mean of int across two files";
     $tst_cmd[0]="ncra $omp_flg -h -O $fl_fmt $nco_D_flg -g g4 -v one_dmn_rec_var $in_pth_arg in_grp.nc in_grp.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -g g4 -v one_dmn_rec_var %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C --trd -g g4 -v one_dmn_rec_var %tmp_fl_00%";
     $tst_cmd[2]="time[0]=5.5 one_dmn_rec_var[0]=6 kelvin";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -4345,7 +4359,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 # (Groups) 1 record to process in 1 group
     $dsc_sng="(Groups) 1 record to process in 1 group -g g23 (do variable and record in group) ";
     $tst_cmd[0]="ncra $omp_flg -h -O $fl_fmt $nco_D_flg -g g23 $in_pth_arg in_grp_3.nc in_grp_3.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -g g23 -v time %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -g g23 -v time %tmp_fl_00%";
     $tst_cmd[2]="time[0]=1.5";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -4355,7 +4369,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 # (Groups) 2 records to process in 2 groups (part 1)
     $dsc_sng="(Groups) 2 records to process in 2 groups (part 1) (do record in group only)";
     $tst_cmd[0]="ncra $omp_flg -h -O $fl_fmt $nco_D_flg -g g23,g24 -v time $in_pth_arg in_grp_3.nc in_grp_3.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -g g23 -v time %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -g g23 -v time %tmp_fl_00%";
     $tst_cmd[2]="time[0]=1.5";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -4365,7 +4379,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 # (Groups) 2 records to process in 2 groups (part 2)
     $dsc_sng="(Groups) 2 records to process in 2 groups (part 2) (do record in group only)";
     $tst_cmd[0]="ncra $omp_flg -h -O $fl_fmt $nco_D_flg -g g23,g24 -v time $in_pth_arg in_grp_3.nc in_grp_3.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -g g24 -v time %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -g g24 -v time %tmp_fl_00%";
     $tst_cmd[2]="time[0]=4";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -4376,7 +4390,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 # ncra -h -O -g g25g1,g25g2 -p ~/nco/data in_grp_3.nc in_grp_3.nc ~/foo.nc
     $dsc_sng="(Groups) 2 records to process in 2 groups (part 1) (1D variable and record in group)";
     $tst_cmd[0]="ncra $omp_flg -h -O $fl_fmt $nco_D_flg -g g25g1,g25g2 $in_pth_arg in_grp_3.nc in_grp_3.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -g g25g1 -v one_dmn_rec_var %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C --trd -g g25g1 -v one_dmn_rec_var %tmp_fl_00%";
     $tst_cmd[2]="time[0]=5.5 one_dmn_rec_var[0]=6";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -4387,7 +4401,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 # ncra -h -O -g g25g1,g25g2 -p ~/nco/data in_grp_3.nc in_grp_3.nc ~/foo.nc
     $dsc_sng="(Groups) 2 records to process in 2 groups (part 2) (1D variable and record in group)";
     $tst_cmd[0]="ncra $omp_flg -h -O $fl_fmt $nco_D_flg -g g25g1,g25g2 $in_pth_arg in_grp_3.nc in_grp_3.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -g g25g2 -v one_dmn_rec_var %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C --trd -g g25g2 -v one_dmn_rec_var %tmp_fl_00%";
     $tst_cmd[2]="time[0]=5.5 one_dmn_rec_var[0]=6";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -4397,12 +4411,12 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 # ncecat -O -g g25g1 ~/nco/data/in_grp_3.nc ~/foo1.nc # generate "record"
 # ncpdq -O -a time,record ~/foo1.nc ~/foo2.nc # switch "record" and "time"
 # ncra -O ~/foo2.nc ~/foo.nc
-# ncks -C -g g25g1 -v one_dmn_rec_var ~/foo.nc
+# ncks -C --trd -g g25g1 -v one_dmn_rec_var ~/foo.nc
     $dsc_sng="(Groups) 2 records in 1 group ('time' same as record, 1st record)";
     $tst_cmd[0]="ncecat $omp_flg -h -O $fl_fmt $nco_D_flg -g g25g1 $in_pth_arg in_grp_3.nc %tmp_fl_00%";
     $tst_cmd[1]="ncpdq $omp_flg -h -O $fl_fmt $nco_D_flg -a time,record %tmp_fl_00% %tmp_fl_01%";
     $tst_cmd[2]="ncra $omp_flg -h -O $fl_fmt $nco_D_flg %tmp_fl_01% %tmp_fl_02%";
-    $tst_cmd[3]="ncks -C -g g25g1 -v one_dmn_rec_var %tmp_fl_02%";
+    $tst_cmd[3]="ncks -C --trd -g g25g1 -v one_dmn_rec_var %tmp_fl_02%";
     $tst_cmd[4]="time[0]=5.5 record[0] one_dmn_rec_var[0]=6";
     $tst_cmd[5]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -4413,12 +4427,12 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 # ncks -O    -v time,one ~/nco/data/in.nc ~/foo1.nc
 # ncks -O -a -v one,time ~/nco/data/in.nc ~/foo2.nc
 # ncra -O -p ~ foo1.nc foo2.nc ~/foo3.nc
-# ncks -C -H -v one ~/foo3.nc
+# ncks -C -H --trd -v one ~/foo3.nc
     $dsc_sng="Concatenate variables with different ID ordering";
     $tst_cmd[0]="ncks -h -O $fl_fmt $nco_D_flg -C    -v time,one $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncks -h -O $fl_fmt $nco_D_flg -C -a -v one,time $in_pth_arg in.nc %tmp_fl_01%";
     $tst_cmd[2]="ncra -h -O $fl_fmt $nco_D_flg %tmp_fl_00% %tmp_fl_01% %tmp_fl_02%";
-    $tst_cmd[3]="ncks -C -H -v one %tmp_fl_02%";
+    $tst_cmd[3]="ncks -C -H --trd -v one %tmp_fl_02%";
     $tst_cmd[4]="one = 1";
     $tst_cmd[5]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -4429,10 +4443,10 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 # ncra #31
 # Treatment of missing values with MRO and rth_dbl
 # ncra -O -F -C -v one_dmn_rec_var_mss_val --mro -d time,1,2 ~/nco/data/in.nc ~/foo.nc
-# ncks -C -H -s '%g' ~/foo.nc
+# ncks -C -H --trd -s '%g' ~/foo.nc
     $dsc_sng="Treatment of missing values with MRO and rth_dbl";
     $tst_cmd[0]="ncra -h -O $fl_fmt $nco_D_flg -C -F -v one_dmn_rec_var_mss_val --mro -d time,1,2 $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%g' -v one_dmn_rec_var_mss_val %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%g' -v one_dmn_rec_var_mss_val %tmp_fl_00%";
     $tst_cmd[2]="__";
     $tst_cmd[3]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -4450,7 +4464,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 if(0){
     $dsc_sng="(Groups) Cell methods (Create) -v time301";
     $tst_cmd[0]="ncra $omp_flg $nco_D_flg -O -v time301 $in_pth_arg in_grp_3.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -m %tmp_fl_00%";
+    $tst_cmd[1]="ncks -m --trd %tmp_fl_00%";
     $tst_cmd[2]="time301 attribute 1: cell_methods, size = 13 NC_CHAR, value = time301: mean";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -4463,10 +4477,10 @@ if(0){
 # Handle scale factor and missing value with rth_dbl
 # ncra --dbl -O -d time,0,9 -v time,one_dmn_rec_var,one_dmn_rec_var_flt,one_dmn_rec_var_flt_mss,one_dmn_rec_var_flt_scl,one_dmn_rec_var_flt_mss_scl ~/nco/data/in.nc ~/foo.nc
 # ncra --dbl -O -C -v one_dmn_rec_var_flt_mss_scl ~/nco/data/in.nc ~/foo.nc
-# ncks -C -H -s '%g' ~/foo.nc
+# ncks -C -H --trd -s '%g' ~/foo.nc
     $dsc_sng="Handle scale factor and missing value with rth_dbl";
     $tst_cmd[0]="ncra --dbl -h -O $fl_fmt $nco_D_flg -C -v one_dmn_rec_var_flt_mss_scl $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%g' %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%g' %tmp_fl_00%";
     $tst_cmd[2]="5.5";
     $tst_cmd[3]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -4475,10 +4489,10 @@ if(0){
 # ncra #34
 # Test per-file weighting
 # ncra -O -D 6 -w 28,29,30 -n 3,4,1 -p ${HOME}/nco/data h0001.nc ~/foo.nc
-# ncks -C -H -s '%g, ' -v two_dmn_rec_var ~/foo.nc
+# ncks -C -H --trd -s '%g, ' -v two_dmn_rec_var ~/foo.nc
     $dsc_sng="Test per-file weighting with --wgt 28,29,30";
     $tst_cmd[0]="ncra -h -O $fl_fmt $nco_D_flg -w 28,29,30 $in_pth_arg in.nc in.nc in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%g, ' -v two_dmn_rec_var %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%g, ' -v two_dmn_rec_var %tmp_fl_00%";
     $tst_cmd[2]="1, 2.45, 3,";
     $tst_cmd[3]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -4488,14 +4502,14 @@ if(0){
 # Test per-record weighting
 # ncks -O -C -d time,,1 -v one_dmn_rec_wgt,one_dmn_rec_var_flt -p ${HOME}/nco/data h0001.nc ~/foo.nc
 # ncra -O -D 2 -w one_dmn_rec_wgt -v one_dmn_rec_var_flt ~/foo.nc ~/foo2.nc
-# ncks -C -H -s '%g, ' -v one_dmn_rec_var_flt ~/foo2.nc
+# ncks -C -H --trd -s '%g, ' -v one_dmn_rec_var_flt ~/foo2.nc
     $dsc_sng="Test per-record weighting with --wgt=one_dmn_rec_wgt";
     $tst_cmd[0]="ncks -h -O $fl_fmt $nco_D_flg -C -d time,,1 -v one_dmn_rec_wgt,one_dmn_rec_var_flt $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncra -h -O $fl_fmt $nco_D_flg -w one_dmn_rec_wgt -v one_dmn_rec_var_flt %tmp_fl_00% %tmp_fl_01%";
 #    NB: verify test fails with missing values TODO nco1124
 #    $tst_cmd[0]="ncks -h -O $fl_fmt $nco_D_flg -C -d time,,1 $in_pth_arg in.nc %tmp_fl_00%";
 #    $tst_cmd[1]="ncra -h -O $fl_fmt $nco_D_flg -w one_dmn_rec_wgt %tmp_fl_00% %tmp_fl_01%";
-    $tst_cmd[2]="ncks -C -H -s '%g' -v one_dmn_rec_var_flt %tmp_fl_01%";
+    $tst_cmd[2]="ncks -C -H --trd -s '%g' -v one_dmn_rec_var_flt %tmp_fl_01%";
     $tst_cmd[3]="1.33333";
     $tst_cmd[4]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -4509,13 +4523,13 @@ if(0){
 # ncks -O -C -d time,1 -v one_dmn_rec_var_flt ~/nco/data/in.nc ~/foo2.nc
 # ncks -O -C -d time,2 -v one_dmn_rec_var_flt ~/nco/data/in.nc ~/foo3.nc
 # ncra -O -D 6 -w 1,2,3 ~/foo1.nc ~/foo2.nc ~/foo3.nc ~/foo.nc
-# ncks -C -H -s '%g' -v one_dmn_rec_var_flt ~/foo.nc
+# ncks -C -H --trd -s '%g' -v one_dmn_rec_var_flt ~/foo.nc
     $dsc_sng="Test per-file weighting without missing values";
     $tst_cmd[0]="ncks -h -O $fl_fmt $nco_D_flg -C -d time,0 -v one_dmn_rec_var_flt $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncks -h -O $fl_fmt $nco_D_flg -C -d time,1 -v one_dmn_rec_var_flt $in_pth_arg in.nc %tmp_fl_01%";
     $tst_cmd[2]="ncks -h -O $fl_fmt $nco_D_flg -C -d time,2 -v one_dmn_rec_var_flt $in_pth_arg in.nc %tmp_fl_02%";
     $tst_cmd[3]="ncra -h -O $fl_fmt $nco_D_flg -w 1,2,3 %tmp_fl_00% %tmp_fl_01% %tmp_fl_02% %tmp_fl_03%";
-    $tst_cmd[4]="ncks -C -H -s '%g' -v one_dmn_rec_var_flt %tmp_fl_03%";
+    $tst_cmd[4]="ncks -C -H --trd -s '%g' -v one_dmn_rec_var_flt %tmp_fl_03%";
     $tst_cmd[5]="2.33333";
     $tst_cmd[6]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -4540,13 +4554,13 @@ if(0){
 # ncks -O -C -d time,1 -v one_dmn_rec_var_flt_mss ~/nco/data/in.nc ~/foo2.nc
 # ncks -O -C -d time,2 -v one_dmn_rec_var_flt_mss ~/nco/data/in.nc ~/foo3.nc
 # ncra -O -D 6 -w 1,2,3 ~/foo1.nc ~/foo2.nc ~/foo3.nc ~/foo.nc
-# ncks -C -H -s '%g' -v one_dmn_rec_var_flt_mss ~/foo.nc
+# ncks -C -H --trd -s '%g' -v one_dmn_rec_var_flt_mss ~/foo.nc
     $dsc_sng="Test per-file weighting with missing values with --wgt 1,2,3";
     $tst_cmd[0]="ncks -h -O $fl_fmt $nco_D_flg -C -d time,0 -v one_dmn_rec_var_flt_mss $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncks -h -O $fl_fmt $nco_D_flg -C -d time,1 -v one_dmn_rec_var_flt_mss $in_pth_arg in.nc %tmp_fl_01%";
     $tst_cmd[2]="ncks -h -O $fl_fmt $nco_D_flg -C -d time,2 -v one_dmn_rec_var_flt_mss $in_pth_arg in.nc %tmp_fl_02%";
     $tst_cmd[3]="ncra -h -O $fl_fmt $nco_D_flg -w 1,2,3 %tmp_fl_00% %tmp_fl_01% %tmp_fl_02% %tmp_fl_03%";
-    $tst_cmd[4]="ncks -C -H -s '%g' -v one_dmn_rec_var_flt_mss %tmp_fl_03%";
+    $tst_cmd[4]="ncks -C -H --trd -s '%g' -v one_dmn_rec_var_flt_mss %tmp_fl_03%";
     $tst_cmd[5]="2.6";
     $tst_cmd[6]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -4561,14 +4575,14 @@ if(0){
 # ncks -O -C -d time,0 -v one_dmn_rec_var_flt_mss ~/nco/data/in.nc ~/foo2.nc
 # ncks -O -C -d time,0 -v one_dmn_rec_var_flt_mss ~/nco/data/in.nc ~/foo3.nc
 # ncra -O -D 6 -w 3,2,1 ~/foo1.nc ~/foo2.nc ~/foo3.nc ~/foo.nc
-# ncks -C -H -s '%g' -v one_dmn_rec_var_flt_mss ~/foo.nc
+# ncks -C -H --trd -s '%g' -v one_dmn_rec_var_flt_mss ~/foo.nc
     $dsc_sng="Test per-file weighting with missing values with --wgt 3,2,1";
     $tst_cmd[0]="ncks -h -O $fl_fmt $nco_D_flg -C -d time,1 -v one_dmn_rec_var_flt_mss $in_pth_arg in.nc %tmp_fl_00%";
     $tst_cmd[1]="ncap2 -h -O $nco_D_flg -s 'one_dmn_rec_var_flt_mss/=2' %tmp_fl_00% %tmp_fl_00%";
     $tst_cmd[2]="ncks -h -O $fl_fmt $nco_D_flg -C -d time,0 -v one_dmn_rec_var_flt_mss $in_pth_arg in.nc %tmp_fl_01%";
     $tst_cmd[3]="ncks -h -O $fl_fmt $nco_D_flg -C -d time,0 -v one_dmn_rec_var_flt_mss $in_pth_arg in.nc %tmp_fl_02%";
     $tst_cmd[4]="ncra -h -O $fl_fmt $nco_D_flg -w 3,2,1 %tmp_fl_00% %tmp_fl_01% %tmp_fl_02% %tmp_fl_03%";
-    $tst_cmd[5]="ncks -C -H -s '%g' -v one_dmn_rec_var_flt_mss %tmp_fl_03%";
+    $tst_cmd[5]="ncks -C -H --trd -s '%g' -v one_dmn_rec_var_flt_mss %tmp_fl_03%";
     $tst_cmd[6]="1.0";
     $tst_cmd[7]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -4577,10 +4591,10 @@ if(0){
 # ncra #39
 # Test MSA running averages
 # ncra -O -C -v one_dmn_rec_var -d time,0,0 -d time,1,1 ~/nco/data/in.nc ~/foo.nc
-# ncks -C -H -s '%g' -v one_dmn_rec_var ~/foo.nc
+# ncks -C -H --trd -s '%g' -v one_dmn_rec_var ~/foo.nc
     $dsc_sng="Test MSA running average (expect failure TODO nco1126)";
     $tst_cmd[0]="ncra -h -O $fl_fmt $nco_D_flg -C -v one_dmn_rec_var $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%g' -v one_dmn_rec_var %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%g' -v one_dmn_rec_var %tmp_fl_00%";
     $tst_cmd[2]="1.5";
     $tst_cmd[3]="SS_OK";   
     NCO_bm::tst_run(\@tst_cmd);
@@ -4597,7 +4611,7 @@ if(0){
     $tst_cmd[0]="ncks -h -O $fl_fmt $nco_D_flg -v lat_T42,lon_T42,gw_T42 $in_pth_arg in.nc %tmp_fl_03%";
     $tst_cmd[1]="ncrename -h -O $nco_D_flg -d lat_T42,lat -d lon_T42,lon -v lat_T42,lat -v gw_T42,gw -v lon_T42,lon %tmp_fl_03%";
     $tst_cmd[2]="ncap2 -h -O $fl_fmt $nco_D_flg -s 'one[lat,lon]=lat*lon*0.0+1.0' -s 'zero[lat,lon]=lat*lon*0.0' %tmp_fl_03% %tmp_fl_04%";
-    $tst_cmd[3]="ncks -C -H -s '%g' -v one -F -d lon,128 -d lat,64 %tmp_fl_04%";
+    $tst_cmd[3]="ncks -C -H --trd -s '%g' -v one -F -d lon,128 -d lat,64 %tmp_fl_04%";
     $tst_cmd[4]="1";
     $tst_cmd[5]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -4609,7 +4623,7 @@ if(0){
     push(@tst_cmd, "ncrename -h -O $nco_D_flg -d lat_T42,lat -d lon_T42,lon -v lat_T42,lat -v gw_T42,gw -v lon_T42,lon %tmp_fl_03%");
     push(@tst_cmd, "ncap2 -h -O $fl_fmt $nco_D_flg -s 'one[lat,lon]=lat*lon*0.0+1.0' -s 'zero[lat,lon]=lat*lon*0.0' %tmp_fl_03% %tmp_fl_04%");
     push(@tst_cmd, "ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -a lat,lon -w gw -d lat,0.0,90.0 %tmp_fl_04% %tmp_fl_00%");
-    push(@tst_cmd, "ncks -C -H -s '%g' -v one %tmp_fl_00%");
+    push(@tst_cmd, "ncks -C -H --trd -s '%g' -v one %tmp_fl_00%");
     $prsrv_fl=1; # save previously generated files.
 #	$nsr_xpc= 1;
 # tst_run();
@@ -4624,7 +4638,7 @@ if(0){
 # ncwa -O -y min -v lat ~/nco/data/in.nc ~/foo.nc
     $dsc_sng="return average coordinate coordinate variable during minimization for non-coordinate variables";
     $tst_cmd[0]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -y min -v lat $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%g' -v lat %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%g' -v lat %tmp_fl_00%";
     $tst_cmd[2]="0";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -4633,18 +4647,18 @@ if(0){
 #ncwa #4
     $dsc_sng="pass through non-averaged (i.e., non-processed) packed data to output";
     $tst_cmd[0]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -a time -v pck,one_dmn_rec_var $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%d' -v pck %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%d' -v pck %tmp_fl_00%";
     $tst_cmd[2]="1";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
     $#tst_cmd=0; # Reset array
 
 # ncwa -N -O -a lat,lon -w gw ~/nco/data/in.nc ~/foo.nc
-# ncks -C -H -s '%g' -v mask ~/foo.nc
+# ncks -C -H --trd -s '%g' -v mask ~/foo.nc
 #ncwa #5
     $dsc_sng="do not normalize by denominator (FAILURE netCDF4 nco946)";
     $tst_cmd[0]="ncwa -N $omp_flg -h -O $fl_fmt $nco_D_flg -a lat,lon -w gw $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%g' -v mask %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%g' -v mask %tmp_fl_00%";
     $tst_cmd[2]="40";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -4653,7 +4667,7 @@ if(0){
 #ncwa #6
     $dsc_sng="average with missing value attribute";
     $tst_cmd[0]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -a lon -v mss_val $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%f' -v mss_val %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%f' -v mss_val %tmp_fl_00%";
     $tst_cmd[2]="73";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -4662,7 +4676,7 @@ if(0){
 #ncwa #7
     $dsc_sng="average without missing value attribute";
     $tst_cmd[0]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -a lon -v no_mss_val $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%g' -v no_mss_val %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%g' -v no_mss_val %tmp_fl_00%";
     $tst_cmd[2]="5.0e35";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -4671,7 +4685,7 @@ if(0){
 #ncwa #8
     $dsc_sng="average masked coordinate";
     $tst_cmd[0]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -v lat -m lat -M 90.0 -T eq -a lat $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%e' -v lat %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%e' -v lat %tmp_fl_00%";
     $tst_cmd[2]="90.0";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -4680,7 +4694,7 @@ if(0){
 #ncwa #9
     $dsc_sng="average masked variable";
     $tst_cmd[0]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -v lat_var -m lat -M 90.0 -T eq -a lat $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%e' -v lat_var %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%e' -v lat_var %tmp_fl_00%";
     $tst_cmd[2]="2.0";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -4689,7 +4703,7 @@ if(0){
 #ncwa #10
     $dsc_sng="average masked, weighted coordinate";
     $tst_cmd[0]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -v lev -m lev -M 100.0 -T eq -a lev -w lev_wgt $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%e' -v lev %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%e' -v lev %tmp_fl_00%";
     $tst_cmd[2]="100.0";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -4698,7 +4712,7 @@ if(0){
 #ncwa #11
     $dsc_sng="average masked, weighted variable";
     $tst_cmd[0]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -v lev_var -m lev -M 100.0 -T gt -a lev -w lev_wgt $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%e' -v lev_var %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%e' -v lev_var %tmp_fl_00%";
     $tst_cmd[2]="666.6667";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -4707,7 +4721,7 @@ if(0){
 #ncwa #12
     $dsc_sng="weight conforms to variable first time";
     $tst_cmd[0]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -v lat -a lat -w gw -d lat,0 $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%e' -v lat %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%e' -v lat %tmp_fl_00%";
     $tst_cmd[2]="-90.0";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -4716,7 +4730,7 @@ if(0){
 #ncwa #13
     $dsc_sng="average all missing values with weights";
     $tst_cmd[0]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -v mss_val_all -a lon -w lon $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H --no_blank -s '%g' -v mss_val_all %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd --no_blank -s '%g' -v mss_val_all %tmp_fl_00%";
     $tst_cmd[2]="1.0e36";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -4725,7 +4739,7 @@ if(0){
 #ncwa #14
     $dsc_sng="average some missing values with unity weights";
     $tst_cmd[0]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -v val_one_mss -a lat -w wgt_one $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%e' -v val_one_mss %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%e' -v val_one_mss %tmp_fl_00%";
     $tst_cmd[2]="1.0";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -4734,7 +4748,7 @@ if(0){
 #ncwa #15
     $dsc_sng="average masked variable with some missing values";
     $tst_cmd[0]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -v msk_prt_mss_prt -m msk_prt_mss_prt -M 1.0 -T lt -a lon $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%e' -v msk_prt_mss_prt %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%e' -v msk_prt_mss_prt %tmp_fl_00%";
     $tst_cmd[2]="0.5";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -4743,7 +4757,7 @@ if(0){
 #ncwa #16
     $dsc_sng="average uniform field with uniform weights";
     $tst_cmd[0]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -w area -v area -a lat $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%e' -v area %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%e' -v area %tmp_fl_00%";
     $tst_cmd[2]="10";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -4752,7 +4766,7 @@ if(0){
 #ncwa #17
     $dsc_sng="average uniform field with asymmetric weights";
     $tst_cmd[0]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -w area_asm -v area -a lat $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%e' -v area %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%e' -v area %tmp_fl_00%";
     $tst_cmd[2]="10";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -4761,7 +4775,7 @@ if(0){
 #ncwa #18
     $dsc_sng="average asymmetric field with asymmetric weights";
     $tst_cmd[0]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -w area_asm -v area2 -a lat $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%e' -v area2 %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%e' -v area2 %tmp_fl_00%";
     $tst_cmd[2]="10";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -4770,7 +4784,7 @@ if(0){
 #ncwa #19
     $dsc_sng="min switch on type double, some missing values";
     $tst_cmd[0]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -y min -v rec_var_flt_mss_val_dbl $in_pth_arg in.nc %tmp_fl_00% 2> %tmp_fl_02%";
-    $tst_cmd[1]="ncks -C -H -s '%e' -v rec_var_flt_mss_val_dbl %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%e' -v rec_var_flt_mss_val_dbl %tmp_fl_00%";
     $tst_cmd[2]="2";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -4781,7 +4795,7 @@ if(0){
     $dsc_sng="Dimension reduction with min switch and missing values";
     @tst_cmd=(); # really reset array. $#tst_cmd=0; sets last index=0 --> list has one element.
     push(@tst_cmd, "ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -y min -v three_dmn_var_dbl -a lon $in_pth_arg in.nc %tmp_fl_00%");
-    push(@tst_cmd, "ncks -C -H --no_blank -s '%f' -v three_dmn_var_dbl -d time,3 -d lat,0 %tmp_fl_00%");
+    push(@tst_cmd, "ncks -C -H --trd --no_blank -s '%f' -v three_dmn_var_dbl -d time,3 -d lat,0 %tmp_fl_00%");
     # used to cut for field 7. (1 + 3x2 + 0x1=7)
     push(@tst_cmd, "-99");
     push(@tst_cmd, "SS_OK");
@@ -4792,7 +4806,7 @@ if(0){
 # will fail SS - ncks not the last cmd
     $dsc_sng="Dimension reduction with min switch";
     push(@tst_cmd, "ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -y min -v three_dmn_var_dbl -a lon $in_pth_arg in.nc %tmp_fl_00%");
-    push(@tst_cmd, "ncks -C -H -s '%f' -v three_dmn_var_dbl -d time,9 -d lat,1 %tmp_fl_00%");
+    push(@tst_cmd, "ncks -C -H --trd -s '%f' -v three_dmn_var_dbl -d time,9 -d lat,1 %tmp_fl_00%");
     # used to cut for field 20. (1 + 9x2 + 1x1 = 20)
     $prsrv_fl=1; ## this is not needed anymore-- now independent from prev test-- remove this line soon
     push(@tst_cmd,"77");
@@ -4804,7 +4818,7 @@ if(0){
 # will fail SS - ncks not the last cmd
     $dsc_sng="Dimension reduction on type int with min switch and missing values";
     push(@tst_cmd, "ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -y min -v three_dmn_var_int -a lon $in_pth_arg in.nc %tmp_fl_00%");
-    push(@tst_cmd, "ncks -C -H --no_blank -s '%d' -v three_dmn_var_int -d time,2 -d lat,0 %tmp_fl_00%");
+    push(@tst_cmd, "ncks -C -H --trd --no_blank -s '%d' -v three_dmn_var_int -d time,2 -d lat,0 %tmp_fl_00%");
     # used to cut field 5: (1 + 2x2 + 0x1 = 5) 
     push(@tst_cmd, "-99");
     push(@tst_cmd, "SS_OK");
@@ -4815,7 +4829,7 @@ if(0){
 # will fail SS - ncks not the last cmd
     $dsc_sng="Dimension reduction on type int variable";
     push(@tst_cmd, "ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -y min -v three_dmn_var_int -a lon $in_pth_arg in.nc %tmp_fl_00%");
-    push(@tst_cmd, "ncks -C -H -s '%d' -v three_dmn_var_int -d time,3 -d lat,0 %tmp_fl_00%");
+    push(@tst_cmd, "ncks -C -H --trd -s '%d' -v three_dmn_var_int -d time,3 -d lat,0 %tmp_fl_00%");
     # used to cut field 7: (1 + 3x2 + 0x1 = 7) 
     $prsrv_fl=1;
     push(@tst_cmd, "25");
@@ -4827,7 +4841,7 @@ if(0){
 # will fail SS - ncks not the last cmd
     $dsc_sng="Dimension reduction on type short variable with min switch and missing values";
     push(@tst_cmd, "ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -y min -v three_dmn_var_sht -a lon $in_pth_arg in.nc %tmp_fl_00%");
-    push(@tst_cmd, "ncks -C -H --no_blank -s '%d' -v three_dmn_var_sht -d time,9 -d lat,1 %tmp_fl_00%");
+    push(@tst_cmd, "ncks -C -H --trd --no_blank -s '%d' -v three_dmn_var_sht -d time,9 -d lat,1 %tmp_fl_00%");
     # used to cut field 20: (1 + 9x2 + 1x1 = 20) 
     push(@tst_cmd, "-99");
     push(@tst_cmd, "SS_OK");
@@ -4838,7 +4852,7 @@ if(0){
 # will fail SS - ncks not the last cmd
     $dsc_sng="Dimension reduction on type short variable";
     push(@tst_cmd, "ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -y min -v three_dmn_var_sht -a lon $in_pth_arg in.nc %tmp_fl_00%");
-    push(@tst_cmd, "ncks -C -H -s '%d' -v three_dmn_var_sht -d time,3 -d lat,1 %tmp_fl_00%");
+    push(@tst_cmd, "ncks -C -H --trd -s '%d' -v three_dmn_var_sht -d time,3 -d lat,1 %tmp_fl_00%");
     # used to cut field 8: (1 + 3x2 + 1x1 = 8) 
     $prsrv_fl=1;
     push(@tst_cmd, "29");
@@ -4849,7 +4863,7 @@ if(0){
 #ncwa #26
     $dsc_sng="Dimension reduction with min flag on type float variable";
     $tst_cmd[0]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -y min -v three_dmn_rec_var $in_pth_arg in.nc %tmp_fl_00% 2> %tmp_fl_02%";
-    $tst_cmd[1]="ncks -C -H -s '%f' -v three_dmn_rec_var %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%f' -v three_dmn_rec_var %tmp_fl_00%";
     $tst_cmd[2]="1";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -4858,7 +4872,7 @@ if(0){
 #ncwa #27
     $dsc_sng="Max flag on type float variable";
     $tst_cmd[0]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -y max -v four_dmn_rec_var $in_pth_arg in.nc %tmp_fl_00% 2> %tmp_fl_02%";
-    $tst_cmd[1]="ncks -C -H -s '%f' -v four_dmn_rec_var %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%f' -v four_dmn_rec_var %tmp_fl_00%";
     $tst_cmd[2]="240";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -4869,7 +4883,7 @@ if(0){
 # will fail SS - ncks not the last cmd
     $dsc_sng="Dimension reduction on type double variable with max switch and missing values";
     push(@tst_cmd, "ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -y max -v three_dmn_var_dbl -a lat,lon $in_pth_arg in.nc %tmp_fl_00%");
-    push(@tst_cmd, "ncks -C -H --no_blank -s '%f' -v three_dmn_var_dbl -d time,3 %tmp_fl_00%");
+    push(@tst_cmd, "ncks -C -H --trd --no_blank -s '%f' -v three_dmn_var_dbl -d time,3 %tmp_fl_00%");
     # used to cut field 4: (1 + 3x1=4) 
     push(@tst_cmd, "-99");
     push(@tst_cmd, "SS_OK");
@@ -4880,7 +4894,7 @@ if(0){
 # will fail SS - ncks not the last cmd
     $dsc_sng="Dimension reduction on type double variable";
     push(@tst_cmd, "ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -y max -v three_dmn_var_dbl -a lat,lon $in_pth_arg in.nc %tmp_fl_00%");
-    push(@tst_cmd, "ncks -C -H -s '%f' -v three_dmn_var_dbl -d time,4 %tmp_fl_00%"); 
+    push(@tst_cmd, "ncks -C -H --trd -s '%f' -v three_dmn_var_dbl -d time,4 %tmp_fl_00%"); 
     # used to cut field 5: (1 + 4x1=5) 
     $prsrv_fl=1;
     push(@tst_cmd, "40");
@@ -4892,7 +4906,7 @@ if(0){
 # will fail SS - ncks not the last cmd
     $dsc_sng="Dimension reduction on type int variable with min switch and missing values";
     push(@tst_cmd, "ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -y max -v three_dmn_var_int -a lat $in_pth_arg in.nc %tmp_fl_00%");
-    push(@tst_cmd, "ncks -C -H --no_blank -s '%d' -v three_dmn_var_int -d time,2 -d lon,0 %tmp_fl_00%");
+    push(@tst_cmd, "ncks -C -H --trd --no_blank -s '%d' -v three_dmn_var_int -d time,2 -d lon,0 %tmp_fl_00%");
     # used to cut field 9: (1 + 2x4 + 0x1=9) 
     push(@tst_cmd, "-99");
     push(@tst_cmd, "SS_OK");
@@ -4903,7 +4917,7 @@ if(0){
 # will fail SS - ncks not the last cmd
     $dsc_sng="Dimension reduction on type int variable";
     push(@tst_cmd, "ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -y max -v three_dmn_var_int -a lat $in_pth_arg in.nc %tmp_fl_00%");
-    push(@tst_cmd, "ncks -C -H -s '%d' -v three_dmn_var_int -d time,3 -d lon,0 %tmp_fl_00%");
+    push(@tst_cmd, "ncks -C -H --trd -s '%d' -v three_dmn_var_int -d time,3 -d lon,0 %tmp_fl_00%");
     # used to cut field 13 = 1 + 3x4 + 0x1
     $prsrv_fl=1;
     push(@tst_cmd, "29");
@@ -4915,7 +4929,7 @@ if(0){
 # will fail SS - ncks not the last cmd
     $dsc_sng="Dimension reduction on type short variable with max switch and missing values";
     push(@tst_cmd, "ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -y max -v three_dmn_var_sht -a lat $in_pth_arg in.nc %tmp_fl_00%");
-    push(@tst_cmd, "ncks -C -H --no_blank -s '%d' -v three_dmn_var_sht -d time,9 -d lon,0 %tmp_fl_00%");
+    push(@tst_cmd, "ncks -C -H --trd --no_blank -s '%d' -v three_dmn_var_sht -d time,9 -d lon,0 %tmp_fl_00%");
     # used to cut field 37 = 1 + 9x4 + 0x1
     push(@tst_cmd, "-99");
     push(@tst_cmd, "SS_OK");
@@ -4926,7 +4940,7 @@ if(0){
 # will fail SS - ncks not the last cmd
     $dsc_sng="Dimension reduction on type short, max switch variable";
     push(@tst_cmd, "ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -y max -v three_dmn_var_sht -a lat $in_pth_arg in.nc %tmp_fl_00%");
-    push(@tst_cmd, "ncks -C -H -s '%d' -v three_dmn_var_sht -d time,8 -d lon,0 %tmp_fl_00%");
+    push(@tst_cmd, "ncks -C -H --trd -s '%d' -v three_dmn_var_sht -d time,8 -d lon,0 %tmp_fl_00%");
     # used to cut field 33 = 1 + 8x4 + 0x1
     $prsrv_fl=1;
     push(@tst_cmd, "69");
@@ -4937,7 +4951,7 @@ if(0){
 #ncwa #34
     $dsc_sng="Weights at root group level";
     $tst_cmd[0]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -w lat_wgt -v lat_cpy $in_pth_arg in.nc %tmp_fl_00% 2> %tmp_fl_02%";
-    $tst_cmd[1]="ncks -C -H -s '%f' -v lat_cpy %tmp_fl_00%";;
+    $tst_cmd[1]="ncks -C -H --trd -s '%f' -v lat_cpy %tmp_fl_00%";;
     $tst_cmd[2]="30";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -4946,7 +4960,7 @@ if(0){
 #ncwa #35
     $dsc_sng="weights would cause SIGFPE without dbl_prc patch";
     $tst_cmd[0]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -w val_half_half -v val_one_one_int $in_pth_arg in.nc %tmp_fl_00% 2> %tmp_fl_02%";
-    $tst_cmd[1]="ncks -C -H -s '%d' -v val_one_one_int %tmp_fl_00%";;
+    $tst_cmd[1]="ncks -C -H --trd -s '%d' -v val_one_one_int %tmp_fl_00%";;
     $tst_cmd[2]="1";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -4954,7 +4968,7 @@ if(0){
 
 #ncwa #36
     $tst_cmd[0]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -y avg -v val_max_max_sht $in_pth_arg in.nc %tmp_fl_00% 2> %tmp_fl_02%";
-    $tst_cmd[1]="ncks -C -H -s '%d' -v val_max_max_sht %tmp_fl_00%";;
+    $tst_cmd[1]="ncks -C -H --trd -s '%d' -v val_max_max_sht %tmp_fl_00%";;
     $dsc_sng="avg would overflow without dbl_prc patch";
     $tst_cmd[2]="17000";
     $tst_cmd[3]="SS_OK";
@@ -4964,7 +4978,7 @@ if(0){
 #ncwa #37
     $dsc_sng="test wrapped ttl with dbl_prc patch (harmless failure expected/OK on all chips since wrap behavior is not IEEE-specified)";
     $tst_cmd[0]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -y ttl -v val_max_max_sht $in_pth_arg in.nc %tmp_fl_00% 2> %tmp_fl_02%";
-    $tst_cmd[1]="ncks -C -H -s '%d' -v val_max_max_sht %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%d' -v val_max_max_sht %tmp_fl_00%";
 #    $nsr_xpc= -31536 ; # Expected on Pentium IV GCC Debian 3.4.3-13, PowerPC xlc
 #    $nsr_xpc= -32768 ; # Expected on Xeon GCC Fedora 3.4.2-6.fc3
 #    $nsr_xpc= -32768 ; # Expected on Opteron
@@ -4978,7 +4992,7 @@ if(0){
 #ncwa #38
     $dsc_sng="min with weights";
     $tst_cmd[0]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -y min -a lat -v lat_cpy -w gw $in_pth_arg in.nc %tmp_fl_00%";;
-    $tst_cmd[1]="ncks -C -H -s '%g' -v lat_cpy %tmp_fl_00%";;
+    $tst_cmd[1]="ncks -C -H --trd -s '%g' -v lat_cpy %tmp_fl_00%";;
     $tst_cmd[2]="-900";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -4987,7 +5001,7 @@ if(0){
 #ncwa #39
     $dsc_sng="max with weights";
     $tst_cmd[0]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -y max -a lat -v lat_cpy -w gw $in_pth_arg in.nc %tmp_fl_00%";;
-    $tst_cmd[1]="ncks -C -H -s '%g' -v lat_cpy %tmp_fl_00%";;
+    $tst_cmd[1]="ncks -C -H --trd -s '%g' -v lat_cpy %tmp_fl_00%";;
     $tst_cmd[2]="900";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -4996,7 +5010,7 @@ if(0){
 #ncwa #40
     $dsc_sng="Return mean time coordinate (when computing totals)";
     $tst_cmd[0]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -y ttl -a time -w one -v time,one_dmn_rec_var $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%f' -v time %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%f' -v time %tmp_fl_00%";
     $tst_cmd[2]="5.5";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -5005,7 +5019,7 @@ if(0){
 #ncwa #41
     $dsc_sng="Return total record (when computing totals)";
     $tst_cmd[0]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -y ttl -a time -w one -v time,one_dmn_rec_var $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -s '%d' -v one_dmn_rec_var %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%d' -v one_dmn_rec_var %tmp_fl_00%";
     $tst_cmd[2]="55";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -5014,7 +5028,7 @@ if(0){
 #ncwa #42
     $dsc_sng="Retain degenerate dimensions (one variable)";
     $tst_cmd[0]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -a lon -b -v lon $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -v lon %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -v lon %tmp_fl_00%";
     $tst_cmd[2]="lon[0]=135";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -5023,7 +5037,7 @@ if(0){
 #ncwa #43
     $dsc_sng="Retain degenerate dimensions (all variables)";
     $tst_cmd[0]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -a lon -b  $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -v lon %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -v lon %tmp_fl_00%";
     $tst_cmd[2]="lon[0]=135";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -5039,14 +5053,14 @@ if(0){
 #NEW NCO 4.3.3
 #same as #ncwa #25
 #ncwa -h -O -y min -g g10 -v three_dmn_rec_var ~/nco/data/in_grp.nc ~/foo.nc
-#ncks -C -H -s '%f' -g g10 -v three_dmn_rec_var ~/foo.nc
+#ncks -C -H --trd -s '%f' -g g10 -v three_dmn_rec_var ~/foo.nc
 #$tst_cmd[0]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -y min -v three_dmn_rec_var $in_pth_arg in.nc %tmp_fl_00% 2> %tmp_fl_02%";
-#$tst_cmd[1]="ncks -C -H -s '%f' -v three_dmn_rec_var %tmp_fl_00%";
+#$tst_cmd[1]="ncks -C -H --trd -s '%f' -v three_dmn_rec_var %tmp_fl_00%";
 #$dsc_sng="Dimension reduction with min flag on type float variable";
 #$tst_cmd[2]="1";
     $dsc_sng="(Groups) Dimension reduction with min flag on type float variable";
     $tst_cmd[0]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -y min -g g10 -v three_dmn_rec_var $in_pth_arg in_grp.nc %tmp_fl_00% 2> %tmp_fl_02%";
-    $tst_cmd[1]="ncks -C -H -s '%f' -g g10 -v three_dmn_rec_var %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -s '%f' -g g10 -v three_dmn_rec_var %tmp_fl_00%";
     $tst_cmd[2]="1";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -5056,11 +5070,11 @@ if(0){
 #NEW NCO 4.3.3
 #same as #ncwa #27
 # ncwa -O -y max -g g19g3 -v three_dmn_var_dbl -a lat,lon ~/nco/data/in_grp_3.nc ~/foo.nc
-# ncks -C -H --no_blank -s '%f' -g g19g3 -v three_dmn_var_dbl -d time,3 ~/foo.nc
+# ncks -C -H --trd --no_blank -s '%f' -g g19g3 -v three_dmn_var_dbl -d time,3 ~/foo.nc
 # will fail SS - ncks not the last cmd
     $dsc_sng="(Groups) Dimension reduction on type double variable with max switch and missing values";
     push(@tst_cmd, "ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -y max -g g19g3 -v three_dmn_var_dbl -a lat,lon $in_pth_arg in_grp_3.nc %tmp_fl_00%");
-    push(@tst_cmd, "ncks -C -H --no_blank -s '%f' -g g19g3 -v three_dmn_var_dbl -d time,3 %tmp_fl_00%");
+    push(@tst_cmd, "ncks -C -H --trd --no_blank -s '%f' -g g19g3 -v three_dmn_var_dbl -d time,3 %tmp_fl_00%");
     # used to cut field 4: (1 + 3x1=4) 
     push(@tst_cmd, "-99");
     push(@tst_cmd, "SS_OK");
@@ -5071,11 +5085,11 @@ if(0){
 #NEW NCO 4.3.3
 #same as #ncwa #28
 # ncwa -h -O  -y max -g g19g3 -v three_dmn_var_dbl -a lat,lon ~/nco/data/in_grp_3.nc ~/foo.nc
-# ncks -C -H -s '%f' -g g19g3 -v three_dmn_var_dbl -d time,4 ~/foo.nc 
+# ncks -C -H --trd -s '%f' -g g19g3 -v three_dmn_var_dbl -d time,4 ~/foo.nc 
 # will fail SS - ncks not the last cmd
     $dsc_sng="(Groups) Dimension reduction on type double variable";
     push(@tst_cmd, "ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -y max -g g19g3 -v three_dmn_var_dbl -a lat,lon $in_pth_arg in_grp_3.nc %tmp_fl_00%");
-    push(@tst_cmd, "ncks -C -H -s '%f' -g g19g3 -v three_dmn_var_dbl -d time,4 %tmp_fl_00%"); 
+    push(@tst_cmd, "ncks -C -H --trd -s '%f' -g g19g3 -v three_dmn_var_dbl -d time,4 %tmp_fl_00%"); 
     # used to cut field 5: (1 + 4x1=5) 
     $prsrv_fl=1;
     push(@tst_cmd, "40");
@@ -5086,10 +5100,10 @@ if(0){
 #ncwa #47
 #NEW NCO 4.3.3
 # ncwa -h -O -w lat_wgt -g g20g1 -C -v lat_cpy ~/nco/data/in_grp_3.nc ~/foo.nc
-# ncks -C -H -s '%f' -g g20g1 -v lat_cpy ~/foo.nc
+# ncks -C -H --trd -s '%f' -g g20g1 -v lat_cpy ~/foo.nc
     $dsc_sng="(Groups) Test weights in group";
     $tst_cmd[0]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -C -w lat_wgt -g g20g1 -v lat_cpy $in_pth_arg in_grp_3.nc %tmp_fl_00% 2> %tmp_fl_02%";
-    $tst_cmd[1]="ncks -C -H -s '%f' -g g20g1 -v lat_cpy %tmp_fl_00%";;
+    $tst_cmd[1]="ncks -C -H --trd -s '%f' -g g20g1 -v lat_cpy %tmp_fl_00%";;
     $tst_cmd[2]="-90";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -5100,7 +5114,7 @@ if(0){
 #ncwa -O -w gw_lat -d lat,1,2 -d lon,0,1 -a lat,lon -g g26 ~/nco/data/in_grp_3.nc ~/foo.nc
     $dsc_sng="(Groups) Weights and hyperslabs";
     $tst_cmd[0]="ncwa $omp_flg -O $fl_fmt $nco_D_flg -w gw_lat -d lat,1,2 -d lon,0,1 -a lat,lon -g g26 $in_pth_arg in_grp_3.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -v a %tmp_fl_00%";;
+    $tst_cmd[1]="ncks --trd -v a %tmp_fl_00%";;
     $tst_cmd[2]="a = 35.5803";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -5112,7 +5126,7 @@ if(0){
 # lev = 241.667 lev_wgt=9,2,1;  /g8/lev
     $dsc_sng="(Groups) Weights and groups (relative weight name test 1)";
     $tst_cmd[0]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -v lev -a lev -w lev_wgt $in_pth_arg in_grp_3.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -g g8 -v lev %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -g g8 -v lev %tmp_fl_00%";
     $tst_cmd[2]="lev = 241.667";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -5124,7 +5138,7 @@ if(0){
 # lev = 241.667 lev_wgt=9,2,1;  /g8/lev
     $dsc_sng="(Groups) Weights and groups (relative weight name test 2)";
     $tst_cmd[0]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -v lev -a lev -w lev_wgt $in_pth_arg in_grp_3.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -g g19 -v lev %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -g g19 -v lev %tmp_fl_00%";
     $tst_cmd[2]="lev = 230.769";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -5136,7 +5150,7 @@ if(0){
 # ncks ~/foo.nc | grep 'time dimension 0'
     $dsc_sng="(Groups) retain degenerate record dimension";
     $tst_cmd[0]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -a time -b -v time $in_pth_arg in_grp.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -H -v /g2/time %tmp_fl_00% | grep '=5.5'";
+    $tst_cmd[1]="ncks -H --trd -v /g2/time %tmp_fl_00% | grep '=5.5'";
     $tst_cmd[2]="time[0]=5.5";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -5149,7 +5163,7 @@ if(0){
 # lev = 241.667 lev_wgt=9,2,1;  /g8/lev
     $dsc_sng="(Groups) Weights and groups (absolute weight name -w /g8/lev_wgt test 1)";
     $tst_cmd[0]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -v lev -a lev -w /g8/lev_wgt $in_pth_arg in_grp_3.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -g g8 -v lev %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -g g8 -v lev %tmp_fl_00%";
     $tst_cmd[2]="lev = 241.667";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -5162,7 +5176,7 @@ if(0){
 # lev = 241.667 lev_wgt=9,2,1;  /g8/lev
     $dsc_sng="(Groups) Weights and groups (absolute weight name -w /g19/lev_wgt test 2)";
     $tst_cmd[0]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -v lev -a lev -w /g8/lev_wgt $in_pth_arg in_grp_3.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -g g19 -v lev %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -g g19 -v lev %tmp_fl_00%";
     $tst_cmd[2]="lev = 241.667";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -5176,7 +5190,7 @@ if(0){
 # lev = 241.667 lev_wgt=9,2,1;  /g8/lev
     $dsc_sng="(Groups) Weights and groups (absolute dimension name -a /g8/lev)";
     $tst_cmd[0]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -v lev -a /g8/lev -w /g8/lev_wgt $in_pth_arg in_grp_3.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -g g8 -v lev %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -g g8 -v lev %tmp_fl_00%";
     $tst_cmd[2]="lev = 241.667";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -5185,10 +5199,10 @@ if(0){
 #NEW 4.4.0	
 #ncwa #55
 #ncwa -O -4 -a time --cnk_min=1 --cnk_plc=xpl --cnk_dmn lon,4 -v byt_3D_rec ~/nco/data/in.nc ~/foo.nc
-#ncks -m ~/foo.nc | grep 'byt_3D_rec dimension 1'
+#ncks -m --trd ~/foo.nc | grep 'byt_3D_rec dimension 1'
     $dsc_sng="Chunking -a time --cnk_dmn lon,4 -v byt_3D_rec";
     $tst_cmd[0]="ncwa $omp_flg -O -4 $nco_D_flg -a time --cnk_min=1 --cnk_plc=xpl --cnk_dmn lon,4 -v byt_3D_rec $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -m %tmp_fl_00% | grep 'byt_3D_rec dimension 1'";
+    $tst_cmd[1]="ncks -m --trd %tmp_fl_00% | grep 'byt_3D_rec dimension 1'";
     $tst_cmd[2]="byt_3D_rec dimension 1: lon, size = 4 NC_FLOAT, chunksize = 4 (Coordinate is lon)";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -5199,7 +5213,7 @@ if(0){
 #ncwa -O -4 -a /time --cnk_dmn /time,1 -v time in.nc ~/foo.nc
     $dsc_sng="Chunking -a /time --cnk_dmn /time,1 -v time";
     $tst_cmd[0]="ncwa $omp_flg -O -4 $nco_D_flg -a /time --cnk_dmn /time,1 -v time $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -m %tmp_fl_00% | grep 'time: type'";
+    $tst_cmd[1]="ncks -m --trd %tmp_fl_00% | grep 'time: type'";
     $tst_cmd[2]="time: type NC_DOUBLE, 0 dimensions, 6 attributes, compressed? no, chunked? no, packed? no";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -5220,10 +5234,10 @@ if(0){
 #NEW 4.4.2	
 #ncwa #58
 #ncwa -O -y avg -a time301 -v time301 -C ~/nco/data/in_grp_3.nc ~/foo.nc
-#ncks -m ~/foo.nc
+#ncks -m --trd ~/foo.nc
     $dsc_sng="Groups (Cell methods) (Create, average) -y avg -a time -v time";
     $tst_cmd[0]="ncwa $omp_flg $nco_D_flg -O -y avg -a time301 -v time301 -C $in_pth_arg in_grp_3.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -m %tmp_fl_00%";
+    $tst_cmd[1]="ncks -m --trd %tmp_fl_00%";
     $tst_cmd[2]="time301 attribute 1: cell_methods, size = 13 NC_CHAR, value = time301: mean";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -5232,10 +5246,10 @@ if(0){
 #NEW 4.4.2	
 #ncwa #59
 #ncwa -O -y max -a time301 -v time301 -C ~/nco/data/in_grp_3.nc ~/foo.nc	  
-#ncks -m ~/foo.nc	
+#ncks -m --trd ~/foo.nc	
     $dsc_sng="Groups (Cell methods) (Create, maximum) -y max -a time -v time";
     $tst_cmd[0]="ncwa $omp_flg $nco_D_flg -O -y max -a time301 -v time301 -C $in_pth_arg in_grp_3.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -m %tmp_fl_00%";
+    $tst_cmd[1]="ncks -m --trd %tmp_fl_00%";
     $tst_cmd[2]="time301 attribute 1: cell_methods, size = 13 NC_CHAR, value = time301: mean";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -5246,10 +5260,10 @@ if(0){
 #NEW 4.4.2	
 #ncwa #60 (part 1)
 #ncwa --op_typ=avg -O -v one,one_dmn_rec_var,three_dmn_rec_var -a time,lon in.nc ~/foo.nc	
-#ncks -m -C -v three_dmn_rec_var ~/foo.nc
+#ncks -m --trd -C -v three_dmn_rec_var ~/foo.nc
     $dsc_sng="Cell methods (Create, average) -v one,one_dmn_rec_var,three_dmn_rec_var -a time,lon";
     $tst_cmd[0]="ncwa $omp_flg $nco_D_flg --op_typ=avg -O -v one,one_dmn_rec_var,three_dmn_rec_var -a time,lon $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -m -C -v three_dmn_rec_var %tmp_fl_00%";
+    $tst_cmd[1]="ncks -m --trd -C -v three_dmn_rec_var %tmp_fl_00%";
     $tst_cmd[2]="three_dmn_rec_var attribute 3: cell_methods, size = 15 NC_CHAR, value = time, lon: mean";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -5258,10 +5272,10 @@ if(0){
 #NEW 4.4.2	
 #ncwa #61 (part 2)
 #ncwa --op_typ=avg -O -v one,one_dmn_rec_var,three_dmn_rec_var -a time,lon in.nc ~/foo.nc	
-#ncks -m -C -v one_dmn_rec_var ~/foo.nc
+#ncks -m --trd -C -v one_dmn_rec_var ~/foo.nc
     $dsc_sng="Cell methods (Create, average) -v one,one_dmn_rec_var,three_dmn_rec_var -a time,lon";
     $tst_cmd[0]="ncwa $omp_flg $nco_D_flg --op_typ=avg -O -v one,one_dmn_rec_var,three_dmn_rec_var -a time,lon $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -m -C -v one_dmn_rec_var %tmp_fl_00%";
+    $tst_cmd[1]="ncks -m --trd -C -v one_dmn_rec_var %tmp_fl_00%";
     $tst_cmd[2]="one_dmn_rec_var attribute 2: cell_methods, size = 10 NC_CHAR, value = time: mean";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -5270,10 +5284,10 @@ if(0){
 #NEW 4.4.2	
 #ncwa #62 max
 #ncwa --op_typ=avg -O -v one,one_dmn_rec_var,three_dmn_rec_var -a time,lon in.nc ~/foo.nc	
-#ncks -m -C -v one_dmn_rec_var ~/foo.nc
+#ncks -m --trd -C -v one_dmn_rec_var ~/foo.nc
     $dsc_sng="Cell methods (Create, maximum) -v one,one_dmn_rec_var,three_dmn_rec_var -a time,lon";
     $tst_cmd[0]="ncwa $omp_flg $nco_D_flg --op_typ=max -O -v one,one_dmn_rec_var,three_dmn_rec_var -a time,lon $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -m -C -v three_dmn_rec_var %tmp_fl_00%";
+    $tst_cmd[1]="ncks -m --trd -C -v three_dmn_rec_var %tmp_fl_00%";
     $tst_cmd[2]="three_dmn_rec_var attribute 3: cell_methods, size = 18 NC_CHAR, value = time, lon: maximum";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -5285,10 +5299,10 @@ if(0){
 #NEW 4.4.3	
 #ncwa #63 
 #ncwa -g cesm,ecmwf -v time -a time -O  cmip5.nc ~/foo.nc	
-#ncks -m ~/foo.nc
+#ncks -m --trd ~/foo.nc
     $dsc_sng="Groups (Cell methods, repeated dimension names) -g cesm,ecmwf -v time -a time";
     $tst_cmd[0]="ncwa $omp_flg $nco_D_flg -O -g cesm,ecmwf -v time -a time $in_pth_arg cmip5.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -m -g ecmwf -v time %tmp_fl_00%";
+    $tst_cmd[1]="ncks -m --trd -g ecmwf -v time %tmp_fl_00%";
     $tst_cmd[2]="time attribute 0: cell_methods, size = 10 NC_CHAR, value = time: mean";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -5298,10 +5312,10 @@ if(0){
 #NEW 4.4.4
 #ncwa #64
 # ncwa -O -C -v Lat -a Lat --mask_condition "Lat < -60.0" ~/Lat.nc ~/foo.nc
-# ncks -H -v Lat ~/foo.nc
+# ncks -H --trd -v Lat ~/foo.nc
     $dsc_sng="Mask condition with negative value";
     $tst_cmd[0]="ncwa $omp_flg $nco_D_flg -O -C -v Lat -a Lat --mask_condition 'Lat < -60.0' $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -H -v Lat %tmp_fl_00%";
+    $tst_cmd[1]="ncks -H --trd -v Lat %tmp_fl_00%";
     $tst_cmd[2]="Lat = _";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -5313,7 +5327,7 @@ if(0){
 # ncks ~/foo.nc
     $dsc_sng="Minimization on packed single-precision float";
     $tst_cmd[0]="ncwa --dbl $omp_flg $nco_D_flg -O -C -y min -a lon -v non_rec_var_flt_pck $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -H -v non_rec_var_flt_pck %tmp_fl_00%";
+    $tst_cmd[1]="ncks -H --trd -v non_rec_var_flt_pck %tmp_fl_00%";
     $tst_cmd[2]="non_rec_var_flt_pck = 100.1";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -5321,10 +5335,10 @@ if(0){
     
 #ncwa #66
 # ncwa -h -O -C -w one_dmn_rec_wgt -v one_dmn_rec_var_flt ~/nco/data/in.nc ~/foo.nc
-# ncks -C -H -s '%f' -v one_dmn_rec_var_flt ~/foo.nc
+# ncks -C -H --trd -s '%f' -v one_dmn_rec_var_flt ~/foo.nc
     $dsc_sng="Simple weights";
     $tst_cmd[0]="ncwa $omp_flg -h -O $fl_fmt $nco_D_flg -C -w one_dmn_rec_wgt -v one_dmn_rec_var_flt $in_pth_arg in.nc %tmp_fl_00% 2> %tmp_fl_02%";
-    $tst_cmd[1]="ncks -C -H -s '%f' -v one_dmn_rec_var_flt %tmp_fl_00%";;
+    $tst_cmd[1]="ncks -C -H --trd -s '%f' -v one_dmn_rec_var_flt %tmp_fl_00%";;
     $tst_cmd[2]="1.333333";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -5332,10 +5346,10 @@ if(0){
 
 #ncwa #67
 # ncwa -O -y mebs -v one_dmn_rec_var_flt -p ~/nco/data in.nc in.nc ~/foo.nc
-# ncks -C -H -v one_dmn_rec_var_flt ~/foo.nc
+# ncks -C -H --trd -v one_dmn_rec_var_flt ~/foo.nc
     $dsc_sng="Test mebs normalization";
     $tst_cmd[0]="ncwa -y mebs -v one_dmn_rec_var_flt $omp_flg -O $fl_fmt $nco_D_flg $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -v one_dmn_rec_var_flt %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -v one_dmn_rec_var_flt %tmp_fl_00%";
     $tst_cmd[2]="one_dmn_rec_var_flt = 5.5";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -5343,10 +5357,10 @@ if(0){
 
 #ncwa #68
 # ncwa -O -y tabs -v one_dmn_rec_var -p ~/nco/data in.nc in.nc ~/foo.nc
-# ncks -C -H -v one_dmn_rec_var ~/foo.nc
+# ncks -C -H --trd -v one_dmn_rec_var ~/foo.nc
     $dsc_sng="Test tabs (total absolute value)";
     $tst_cmd[0]="ncwa -y tabs -v one_dmn_rec_var $omp_flg -O $fl_fmt $nco_D_flg $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -v one_dmn_rec_var %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -v one_dmn_rec_var %tmp_fl_00%";
     $tst_cmd[2]="one_dmn_rec_var = 55";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -5354,10 +5368,10 @@ if(0){
 
 #ncwa #69
 # ncwa -O -y tabs -v lon -p ~/nco/data in.nc in.nc ~/foo.nc
-# ncks -C -H -v lon ~/foo.nc
+# ncks -C -H --trd -v lon ~/foo.nc
     $dsc_sng="Test tabs on coordinate";
     $tst_cmd[0]="ncwa -y tabs -v lon $omp_flg -O $fl_fmt $nco_D_flg $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -C -H -v lon %tmp_fl_00%";
+    $tst_cmd[1]="ncks -C -H --trd -v lon %tmp_fl_00%";
     $tst_cmd[2]="lon = 135";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -5365,10 +5379,10 @@ if(0){
 
 #ncwa #70
 # ncwa -O -C -y ttl -v orog -d lat,0.,90. --mask_condition 'ORO > 0.0' ~/nco/data/in.nc ~/foo.nc
-# ncks -H -v orog ~/foo.nc
+# ncks -H --trd -v orog ~/foo.nc
     $dsc_sng="Mask condition not in variable list (fixed with nco1138 20170804)";
     $tst_cmd[0]="ncwa $omp_flg $nco_D_flg -O -C -y ttl -v orog -d lat,0.,90. --mask_condition 'ORO > 0.0' $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -H -v orog %tmp_fl_00%";
+    $tst_cmd[1]="ncks -H --trd -v orog %tmp_fl_00%";
     $tst_cmd[2]="orog = 4";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -5376,10 +5390,10 @@ if(0){
 
 #ncwa #71 (pvn 20170717)
 # ncwa -O -C -y ttl -v orog2 -d lat,0.,90. -m lat -M 0.0 -T gt ~/nco/data/in.nc ~/foo.nc
-# ncks -H -v orog2 ~/foo.nc
+# ncks -H --trd -v orog2 ~/foo.nc
     $dsc_sng="Mask condition not in variable list (mask is relative coordinate variable) (fixed with nco1138 20170804)";
     $tst_cmd[0]="ncwa $omp_flg $nco_D_flg -O -C -y ttl -v orog2 -d lat,0.,90. -m lat -M 0.0 -T gt $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -H -v orog2 %tmp_fl_00%";
+    $tst_cmd[1]="ncks -H --trd -v orog2 %tmp_fl_00%";
     $tst_cmd[2]="orog2 = 4";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -5387,10 +5401,10 @@ if(0){
 
 #ncwa #72 (pvn 20170810)
 # ncwa -O -C -y ttl -v orog2 -d lat,0.,90. -m lat -M 0.0 -T gt ~/nco/data/in.nc ~/foo.nc
-# ncks -H -v orog2 ~/foo.nc
+# ncks -H --trd -v orog2 ~/foo.nc
     $dsc_sng="Mask condition not in variable list (mask is absolute coordinate variable) (fixed with nco1138 20170804)";
     $tst_cmd[0]="ncwa $omp_flg $nco_D_flg -O -C -y ttl -v orog2 -d lat,0.,90. -m /lat -M 0.0 -T gt $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -H -v orog2 %tmp_fl_00%";
+    $tst_cmd[1]="ncks -H --trd -v orog2 %tmp_fl_00%";
     $tst_cmd[2]="orog2 = 4";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -5412,10 +5426,10 @@ if(0){
 
 #ncwa #73 
 # ncwa -O -C -y ttl -v orog2 -w byt_arr ~/nco/data/in.nc ~/foo.nc ; 28
-# ncks -H -v orog2 ~/foo.nc
+# ncks -H --trd -v orog2 ~/foo.nc
     $dsc_sng="Weight without mask and without hyperslab";
     $tst_cmd[0]="ncwa $omp_flg $nco_D_flg -O -C -y ttl -v orog2 -w byt_arr $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -H -v orog2 %tmp_fl_00%";
+    $tst_cmd[1]="ncks -H --trd -v orog2 %tmp_fl_00%";
     $tst_cmd[2]="orog2 = 28";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -5423,10 +5437,10 @@ if(0){
 
 #ncwa #74
 #ncwa -O -C -y ttl -v orog2 -d lat,0.,90. -w byt_arr ~/nco/data/in.nc ~/foo.nc ; 22
-# ncks -H -v orog2 ~/foo.nc
+# ncks -H --trd -v orog2 ~/foo.nc
     $dsc_sng="Weight without mask and with hyperslab";
     $tst_cmd[0]="ncwa $omp_flg $nco_D_flg -O -C -y ttl -v orog2 -d lat,0.,90. -w byt_arr $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -H -v orog2 %tmp_fl_00%";
+    $tst_cmd[1]="ncks -H --trd -v orog2 %tmp_fl_00%";
     $tst_cmd[2]="orog2 = 22";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -5434,10 +5448,10 @@ if(0){
 
 #ncwa #75
 #ncwa -O -C -y ttl -v orog2 -d lat,0.,90. -w byt_arr -m mask -M 0.0 -T gt ~/nco/data/in.nc ~/foo.nc ; 16
-# ncks -H -v orog2 ~/foo.nc
+# ncks -H --trd -v orog2 ~/foo.nc
     $dsc_sng="Weight with mask and with hyperslab";
     $tst_cmd[0]="ncwa $omp_flg $nco_D_flg -O -C -y ttl -v orog2 -d lat,0.,90. -w byt_arr -m mask -M 0.0 -T gt $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -H -v orog2 %tmp_fl_00%";
+    $tst_cmd[1]="ncks -H --trd -v orog2 %tmp_fl_00%";
     $tst_cmd[2]="orog2 = 16";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -5462,7 +5476,6 @@ if(0){
 #ncrename #1
 #ncrename -O -a .nothing,new_nothing ~/nco/data/in_grp.nc ~/foo.nc 
 #optional relative rename nothing to new_nothing (print warning)
-    
     $dsc_sng="Attributes: Optional relative rename '.nothing' to 'new_nothing'";
     $tst_cmd[0]="ncrename -O $fl_fmt $nco_D_flg -a .nothing,new_nothing $in_pth_arg in_grp.nc %tmp_fl_00%";
     $tst_cmd[1]="ncrename: In total renamed 0 attributes, 0 dimensions, 0 groups, and 0 variables";
@@ -5473,10 +5486,9 @@ if(0){
 #ncrename #2
 #ncrename -O -h -a .history,new_history ~/nco/data/in_grp.nc ~/foo.nc  
 #relative rename history to new_history
-    
     $dsc_sng="Attributes: Relative rename 'history' to 'new_history'";
     $tst_cmd[0]="ncrename -O $fl_fmt $nco_D_flg -h -a .history,new_history $in_pth_arg in_grp.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks %tmp_fl_00% | grep new_history | cut -d ' ' -f 4";
+    $tst_cmd[1]="ncks --trd %tmp_fl_00% | grep new_history | cut -d ' ' -f 4";
     $tst_cmd[2]="new_history,";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -5484,13 +5496,12 @@ if(0){
 
 #ncrename #3
 #ncrename -D 1 -O -a /g1 at history,new_history ~/nco/data/in_grp.nc ~/foo.nc
-#ncks -g g1 ~/foo.nc | grep 'History group attribute'  
+#ncks --trd -g g1 ~/foo.nc | grep 'History group attribute'  
 # absolute rename /g1/history group/global att to /g1/new_history
 # NB: use escape in '/g1\@history,new_history'
-    
     $dsc_sng="Attributes: Absolute rename '/g1\@history' to 'new_history'";
     $tst_cmd[0]="ncrename -O $fl_fmt $nco_D_flg -a '/g1\@history,new_history' $in_pth_arg in_grp.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -g g1 %tmp_fl_00% | grep 'History group attribute'";
+    $tst_cmd[1]="ncks --trd -g g1 %tmp_fl_00% | grep 'History group attribute'";
     $tst_cmd[2]="Group attribute 0: new_history, size = 25 NC_CHAR, value = History group attribute.";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -5500,10 +5511,9 @@ if(0){
 #ncrename #4	
 #ncrename -O -h -a global at history,new_history ~/nco/data/in_grp.nc ~/foo.nc 
 # relative rename history group/global att to new_history
-
     $dsc_sng="Attributes: Relative rename 'global\@history' to 'new_history'";
     $tst_cmd[0]="ncrename -O $fl_fmt $nco_D_flg -h -a 'global\@history,new_history' $in_pth_arg in_grp.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks %tmp_fl_00% | grep new_history | cut -d ' ' -f 4";
+    $tst_cmd[1]="ncks --trd %tmp_fl_00% | grep new_history | cut -d ' ' -f 4";
     $tst_cmd[2]="new_history,";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -5512,11 +5522,11 @@ if(0){
 #ncrename #5
 # Absolute rename /g1/lon at units att to /g1/lon at new_units
 #ncrename -O -a /g1/lon at units,new_units ~/nco/data/in_grp.nc ~/foo.nc 
-#ncks -v /g1/lon ~/foo.nc | grep 'new_units'
+#ncks --trd -v /g1/lon ~/foo.nc | grep 'new_units'
 
     $dsc_sng="Attributes: Absolute rename '/g1/lon\@units' to 'new_units' (failure OK with netCDF < 4.3.3.1)";
     $tst_cmd[0]="ncrename -O $fl_fmt $nco_D_flg -a '/g1/lon\@units,new_units' $in_pth_arg in_grp.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -g g1 %tmp_fl_00% | grep 'new_units'";
+    $tst_cmd[1]="ncks --trd -g g1 %tmp_fl_00% | grep 'new_units'";
     $tst_cmd[2]="lon attribute 0: new_units, size = 12 NC_CHAR, value = degrees_east";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -5528,7 +5538,7 @@ if(0){
 
     $dsc_sng="Attributes: Absolute rename '/g1/lon\@units' to '/g1/lon\@new_units' (failure OK with netCDF < 4.3.3.1)";
     $tst_cmd[0]="ncrename -O $fl_fmt $nco_D_flg -a '/g1/lon\@units,/g1/lon\@new_units' $in_pth_arg in_grp.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -g g1 %tmp_fl_00% | grep 'new_units'";
+    $tst_cmd[1]="ncks --trd -g g1 %tmp_fl_00% | grep 'new_units'";
     $tst_cmd[2]="lon attribute 0: new_units, size = 12 NC_CHAR, value = degrees_east";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -5540,7 +5550,7 @@ if(0){
 
     $dsc_sng="Attributes: Optional absolute rename '/g1/lon\@.units' to '/g1/lon\@new_units' (failure OK with netCDF < 4.3.3.1)";
     $tst_cmd[0]="ncrename -O $fl_fmt $nco_D_flg -a '/g1/lon\@.units,new_units' $in_pth_arg in_grp.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -g g1 %tmp_fl_00% | grep 'new_units'";
+    $tst_cmd[1]="ncks --trd -g g1 %tmp_fl_00% | grep 'new_units'";
     $tst_cmd[2]="lon attribute 0: new_units, size = 12 NC_CHAR, value = degrees_east";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -5556,7 +5566,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 
     $dsc_sng="Dimensions: Relative rename 'lat' to 'new_lat' (expect failure with netCDF < 4.3.1)";
     $tst_cmd[0]="ncrename -O $fl_fmt $nco_D_flg -d lat,new_lat $in_pth_arg in_grp.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -m -v lat %tmp_fl_00% | grep 'new_lat'";
+    $tst_cmd[1]="ncks -m --trd -v lat %tmp_fl_00% | grep 'new_lat'";
     $tst_cmd[2]="lat dimension 0: new_lat, size = 2 (Non-coordinate dimension)";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -5568,7 +5578,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 
     $dsc_sng="Dimensions: Absolute rename '/lat' to 'new_lat' (expect failure with netCDF < 4.3.1)";
     $tst_cmd[0]="ncrename -O $fl_fmt $nco_D_flg -d /lat,new_lat $in_pth_arg in_grp.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -m -v lat %tmp_fl_00% | grep 'new_lat'";
+    $tst_cmd[1]="ncks -m --trd -v lat %tmp_fl_00% | grep 'new_lat'";
     $tst_cmd[2]="lat dimension 0: new_lat, size = 2 (Non-coordinate dimension)";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -5580,7 +5590,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 
     $dsc_sng="Dimensions: Optional existing relative rename '.lat' to 'new_lat' (expect failure with netCDF < 4.3.1)";
     $tst_cmd[0]="ncrename -O $fl_fmt $nco_D_flg -d .lat,new_lat $in_pth_arg in_grp.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -m -v /g6/area %tmp_fl_00% | grep 'new_lat'";
+    $tst_cmd[1]="ncks -m --trd -v /g6/area %tmp_fl_00% | grep 'new_lat'";
     $tst_cmd[2]="area dimension 0: /new_lat, size = 2 (Non-coordinate dimension)";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -5592,7 +5602,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 
     $dsc_sng="Dimensions: Optional existing absolute rename './lat' to 'new_lat' (expect failure with netCDF < 4.3.1)";
     $tst_cmd[0]="ncrename -O $fl_fmt $nco_D_flg -d ./lat,new_lat $in_pth_arg in_grp.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -m -v lat %tmp_fl_00% | grep 'new_lat'";
+    $tst_cmd[1]="ncks -m --trd -v lat %tmp_fl_00% | grep 'new_lat'";
     $tst_cmd[2]="lat dimension 0: new_lat, size = 2 (Non-coordinate dimension)";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -5619,7 +5629,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 
     $dsc_sng="Variables: Absolute rename '/g1/v1' to '/g1/new_v1'";
     $tst_cmd[0]="ncrename -O $fl_fmt $nco_D_flg -v /g1/v1,new_v1 $in_pth_arg in_grp.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -m -g g1 -v new_v1 %tmp_fl_00% | grep /g1/new_v1";
+    $tst_cmd[1]="ncks -m --trd -g g1 -v new_v1 %tmp_fl_00% | grep /g1/new_v1";
     $tst_cmd[2]="/g1/new_v1";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -5632,7 +5642,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 
     $dsc_sng="Variables: Relative rename 'v1' to 'new_v1'";
     $tst_cmd[0]="ncrename -O $fl_fmt $nco_D_flg -v v1,new_v1 $in_pth_arg in_grp.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -m -g g1 -v new_v1 %tmp_fl_00% | grep /g1/new_v1";
+    $tst_cmd[1]="ncks -m --trd -g g1 -v new_v1 %tmp_fl_00% | grep /g1/new_v1";
     $tst_cmd[2]="/g1/new_v1";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -5644,7 +5654,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 
     $dsc_sng="Variables: Optional absolute rename '/g1/v1' to '/g1/new_v1'";
     $tst_cmd[0]="ncrename -O $fl_fmt $nco_D_flg -v ./g1/v1,new_v1 $in_pth_arg in_grp.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -m -g g1 -v new_v1 %tmp_fl_00% | grep /g1/new_v1";
+    $tst_cmd[1]="ncks -m --trd -g g1 -v new_v1 %tmp_fl_00% | grep /g1/new_v1";
     $tst_cmd[2]="/g1/new_v1";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -5656,7 +5666,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 
     $dsc_sng="Variables: Optional relative rename 'v1' to 'new_v1'";
     $tst_cmd[0]="ncrename -O $fl_fmt $nco_D_flg -v .v1,new_v1 $in_pth_arg in_grp.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -m -g g1 -v new_v1 %tmp_fl_00% | grep /g1/new_v1";
+    $tst_cmd[1]="ncks -m --trd -g g1 -v new_v1 %tmp_fl_00% | grep /g1/new_v1";
     $tst_cmd[2]="/g1/new_v1";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -5683,7 +5693,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 
     $dsc_sng="Groups: Relative rename 'g1' to 'new_g1' (expect failure with netCDF < 4.3.1)";
     $tst_cmd[0]="ncrename -O $fl_fmt $nco_D_flg -g g1,new_g1 $in_pth_arg in_grp.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -m -g new_g1 %tmp_fl_00% | grep new_g1";
+    $tst_cmd[1]="ncks -m --trd -g new_g1 %tmp_fl_00% | grep new_g1";
     $tst_cmd[2]="/new_g1";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -5695,7 +5705,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 
     $dsc_sng="Groups: Relative rename 'g1g1' to 'new_g1g1' (expect failure with netCDF < 4.3.1)";
     $tst_cmd[0]="ncrename -O $fl_fmt $nco_D_flg -g g1g1,new_g1g1 $in_pth_arg in_grp.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -m -g new_g1g1 %tmp_fl_00% | grep new_g1g1";
+    $tst_cmd[1]="ncks -m --trd -g new_g1g1 %tmp_fl_00% | grep new_g1g1";
     $tst_cmd[2]="/g1/new_g1g1";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -5707,7 +5717,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 
     $dsc_sng="Groups: Absolute rename '/g1/g1g1' to '/g1/new_g1g1' (expect failure with netCDF < 4.3.1)";
     $tst_cmd[0]="ncrename -O $fl_fmt $nco_D_flg -g /g1/g1g1,new_g1g1 $in_pth_arg in_grp.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -m -g /g1/new_g1g1 %tmp_fl_00% | grep /g1/new_g1g1";
+    $tst_cmd[1]="ncks -m --trd -g /g1/new_g1g1 %tmp_fl_00% | grep /g1/new_g1g1";
     $tst_cmd[2]="/g1/new_g1g1/v1";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -5734,7 +5744,7 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 
     $dsc_sng="Variables: Absolute rename '/g1/v1' to '/g1/new_v1' (input absolute name)";
     $tst_cmd[0]="ncrename -O $fl_fmt $nco_D_flg -v /g1/v1,/g1/new_v1 $in_pth_arg in_grp.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -m -g g1 -v new_v1 %tmp_fl_00% | grep /g1/new_v1";
+    $tst_cmd[1]="ncks -m --trd -g g1 -v new_v1 %tmp_fl_00% | grep /g1/new_v1";
     $tst_cmd[2]="/g1/new_v1";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -5790,11 +5800,11 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 
 #ncrename #28
 #ncrename -O -d time,newrec ~/nco/data/in.nc ~/foo.nc
-#ncks -s %g -H -g // -v time -d newrec,0 -C ~/foo.nc
+#ncks -s %g -H --trd -g // -v time -d newrec,0 -C ~/foo.nc
 # Check for valid values after renaming coordinate dimension in netCDF3 file
     $dsc_sng="netCDF3: Valid values after renaming coordinate dimension in netCDF3 file";
     $tst_cmd[0]="ncrename -O $fl_fmt $nco_D_flg -d time,newrec $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -s %g -H -g // -v time -d newrec,0 -C %tmp_fl_00%";
+    $tst_cmd[1]="ncks -s %g -H --trd -g // -v time -d newrec,0 -C %tmp_fl_00%";
     $tst_cmd[2]="1";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -5802,11 +5812,11 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 
 #ncrename #29
 #ncrename -O -v time,newrec ~/nco/data/in.nc ~/foo.nc
-#ncks -s %g -H -g // -v newrec -d time,0 -C ~/foo.nc
+#ncks -s %g -H --trd -g // -v newrec -d time,0 -C ~/foo.nc
 # Check for valid values after renaming coordinate variable in netCDF3 file
     $dsc_sng="netCDF3: Valid values after renaming coordinate variable in netCDF3 file";
     $tst_cmd[0]="ncrename -O $fl_fmt $nco_D_flg -v time,newrec $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -s %g -H -g // -v newrec -d time,0 -C %tmp_fl_00%";
+    $tst_cmd[1]="ncks -s %g -H --trd -g // -v newrec -d time,0 -C %tmp_fl_00%";
     $tst_cmd[2]="1";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -5814,11 +5824,11 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 
 #ncrename #30
 #ncrename -O -d time,newrec -v time,newrec ~/nco/data/in.nc ~/foo.nc
-#ncks -s %g -H -g // -v newrec -d newrec,0 -C ~/foo.nc
+#ncks -s %g -H --trd -g // -v newrec -d newrec,0 -C ~/foo.nc
 # Check for valid values after renaming coordinate dimension and variable in netCDF3 file
     $dsc_sng="netCDF3: Valid values after renaming coordinate dimension and variable in netCDF3 file";
     $tst_cmd[0]="ncrename -O $fl_fmt $nco_D_flg -d time,newrec -v time,newrec $in_pth_arg in.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -s %g -H -g // -v newrec -d newrec,0 -C %tmp_fl_00%";
+    $tst_cmd[1]="ncks -s %g -H --trd -g // -v newrec -d newrec,0 -C %tmp_fl_00%";
     $tst_cmd[2]="1";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -5826,11 +5836,11 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 
 #ncrename #28
 #ncrename -O -d time,newrec ~/nco/data/in_4c.nc ~/foo.nc
-#ncks -s %g -H -g // -v time -d newrec,0 -C ~/foo.nc
+#ncks -s %g -H --trd -g // -v time -d newrec,0 -C ~/foo.nc
 # Check for valid values after renaming coordinate dimension in netCDF4-classic file
     $dsc_sng="netCDF4-classic: Valid values after renaming coordinate dimension in netCDF4-classic file";
     $tst_cmd[0]="ncrename -O $fl_fmt $nco_D_flg -d time,newrec $in_pth_arg in_4c.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -s %g -H -g // -v time -d newrec,0 -C %tmp_fl_00%";
+    $tst_cmd[1]="ncks -s %g -H --trd -g // -v time -d newrec,0 -C %tmp_fl_00%";
     $tst_cmd[2]="1";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -5838,11 +5848,11 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 
 #ncrename #29
 #ncrename -O -v time,newrec ~/nco/data/in_4c.nc ~/foo.nc
-#ncks -s %g -H -g // -v newrec -d time,0 -C ~/foo.nc
+#ncks -s %g -H --trd -g // -v newrec -d time,0 -C ~/foo.nc
 # Check for valid values after renaming coordinate variable in netCDF4-classic file
     $dsc_sng="netCDF4-classic: Valid values after renaming coordinate variable in netCDF4-classic file";
     $tst_cmd[0]="ncrename -O $fl_fmt $nco_D_flg -v time,newrec $in_pth_arg in_4c.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -s %g -H -g // -v newrec -d time,0 -C %tmp_fl_00%";
+    $tst_cmd[1]="ncks -s %g -H --trd -g // -v newrec -d time,0 -C %tmp_fl_00%";
     $tst_cmd[2]="1";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -5850,11 +5860,11 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 
 #ncrename #30
 #ncrename -O -d time,newrec -v time,newrec ~/nco/data/in_4c.nc ~/foo.nc
-#ncks -s %g -H -g // -v newrec -d newrec,0 -C ~/foo.nc
+#ncks -s %g -H --trd -g // -v newrec -d newrec,0 -C ~/foo.nc
 # Check for valid values after renaming coordinate dimension and variable in netCDF4-classic file
     $dsc_sng="netCDF4-classic: Valid values after renaming coordinate dimension and variable in netCDF4-classic file";
     $tst_cmd[0]="ncrename -O $fl_fmt $nco_D_flg -d time,newrec -v time,newrec $in_pth_arg in_4c.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -s %g -H -g // -v newrec -d newrec,0 -C %tmp_fl_00%";
+    $tst_cmd[1]="ncks -s %g -H --trd -g // -v newrec -d newrec,0 -C %tmp_fl_00%";
     $tst_cmd[2]="1";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -5862,11 +5872,11 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 
 #ncrename #28
 #ncrename -O -d time,newrec ~/nco/data/in_grp.nc ~/foo.nc
-#ncks -s %g -H -g // -v time -d newrec,0 -C ~/foo.nc
+#ncks -s %g -H --trd -g // -v time -d newrec,0 -C ~/foo.nc
 # Check for valid values after renaming coordinate dimension in netCDF4 file
     $dsc_sng="netCDF4: Valid values after renaming coordinate dimension in netCDF4 file";
     $tst_cmd[0]="ncrename -O $fl_fmt $nco_D_flg -d time,newrec $in_pth_arg in_grp.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -s %g -H -g // -v time -d newrec,0 -C %tmp_fl_00%";
+    $tst_cmd[1]="ncks -s %g -H --trd -g // -v time -d newrec,0 -C %tmp_fl_00%";
     $tst_cmd[2]="1";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -5874,11 +5884,11 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 
 #ncrename #29
 #ncrename -O -v time,newrec ~/nco/data/in_grp.nc ~/foo.nc
-#ncks -s %g -H -g // -v newrec -d time,0 -C ~/foo.nc
+#ncks -s %g -H --trd -g // -v newrec -d time,0 -C ~/foo.nc
 # Check for valid values after renaming coordinate variable in netCDF4 file
     $dsc_sng="netCDF4: Valid values after renaming coordinate variable in netCDF4 file";
     $tst_cmd[0]="ncrename -O $fl_fmt $nco_D_flg -v time,newrec $in_pth_arg in_grp.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -s %g -H -g // -v newrec -d time,0 -C %tmp_fl_00%";
+    $tst_cmd[1]="ncks -s %g -H --trd -g // -v newrec -d time,0 -C %tmp_fl_00%";
     $tst_cmd[2]="1";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -5886,11 +5896,11 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 
 #ncrename #30
 #ncrename -O -d time,newrec -v time,newrec ~/nco/data/in_grp.nc ~/foo.nc
-#ncks -s %g -H -g // -v newrec -d newrec,0 -C ~/foo.nc
+#ncks -s %g -H --trd -g // -v newrec -d newrec,0 -C ~/foo.nc
 # Check for valid values after renaming coordinate dimension and variable in netCDF4 file
     $dsc_sng="netCDF4: Valid values after renaming coordinate dimension and variable in netCDF4 file";
     $tst_cmd[0]="ncrename -O $fl_fmt $nco_D_flg -d time,newrec -v time,newrec $in_pth_arg in_grp.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -s %g -H -g // -v newrec -d newrec,0 -C %tmp_fl_00%";
+    $tst_cmd[1]="ncks -s %g -H --trd -g // -v newrec -d newrec,0 -C %tmp_fl_00%";
     $tst_cmd[2]="1";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -5898,11 +5908,11 @@ if($RUN_NETCDF4_TESTS_VERSION_GE_431){
 
 #ncrename #31
 #ncrename -O -d lev,z -d lat,y -d lon,x ~/nco/data/in_grp.nc ~/foo.nc
-#ncks -H -s %d -v one ~/foo.nc
+#ncks -H --trd -s %d -v one ~/foo.nc
 # Check for corruption after simultaneously renaming multiple dimensions in netCDF4 file
-    $dsc_sng="netCDF4: Simultaneously rename multiple dimensions (requires netCDF 4.4.2)";
+    $dsc_sng="netCDF4: Simultaneously rename multiple dimensions (netCDF bug, will require netCDF 4.5.???)";
     $tst_cmd[0]="ncrename -O $fl_fmt $nco_D_flg -d lev,z -d lat,y -d lon,x $in_pth_arg in_grp.nc %tmp_fl_00%";
-    $tst_cmd[1]="ncks -H -s %d -v one %tmp_fl_00%";
+    $tst_cmd[1]="ncks -H --trd -s %d -v one %tmp_fl_00%";
     $tst_cmd[2]="1";
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -5932,7 +5942,7 @@ if(0){ #################  SKIP THESE #####################
     #sftp://dust.ess.uci.edu:/home/ftp/pub/zender/nco
     $tst_cmd[0]="/bin/rm -f /tmp/in.nc";
     $tst_cmd[1]="ncks -O $nco_D_flg -v one -p $sftp_url -l /tmp in.nc";
-    $tst_cmd[2]="ncks -H $nco_D_flg -s '%e' -v one -l /tmp in.nc";
+    $tst_cmd[2]="ncks -H --trd $nco_D_flg -s '%e' -v one -l /tmp in.nc";
     $tst_cmd[3]="1.000000e+00";
     $tst_cmd[4]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -5943,14 +5953,14 @@ if(0){ #################  SKIP THESE #####################
     $dsc_sng="SSH protocol (requires authorized SSH/scp access to dust.ess.uci.edu)";
     if($dust_usr ne ""){$pth_rmt_scp_tst=$dust_usr.'@'.$pth_rmt_scp_tst;}
     $tst_cmd[0]="/bin/rm -f /tmp/in.nc";
-    $tst_cmd[1]="ncks -h -O $fl_fmt $nco_D_flg -s '%e' -v one -p $pth_rmt_scp_tst -l /tmp in.nc | tail -1";
+    $tst_cmd[1]="ncks --trd -h -O $fl_fmt $nco_D_flg -s '%e' -v one -p $pth_rmt_scp_tst -l /tmp in.nc | tail -1";
     $tst_cmd[2]=1;
     $tst_cmd[3]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
     $#tst_cmd=0; # Reset array
     
     $dsc_sng="OPeNDAP protocol (requires OPeNDAP/DODS-enabled NCO)";
-    $tst_cmd[0]="ncks -C -O -d lon,0 -s '%e' -v lon -p http://www.cdc.noaa.gov/cgi-bin/nph-nc/Datasets/ncep.reanalysis.dailyavgs/surface air.sig995.1975.nc";
+    $tst_cmd[0]="ncks --trd -C -O -d lon,0 -s '%e' -v lon -p http://www.cdc.noaa.gov/cgi-bin/nph-nc/Datasets/ncep.reanalysis.dailyavgs/surface air.sig995.1975.nc";
     $tst_cmd[1]="0";
     $tst_cmd[2]="SS_OK";
     NCO_bm::tst_run(\@tst_cmd);
@@ -5959,7 +5969,7 @@ if(0){ #################  SKIP THESE #####################
     if($USER eq 'zender'){
 	$dsc_sng="Password-protected FTP protocol (requires .netrc-based FTP access to climate.llnl.gov)";
 	$tst_cmd[0]="/bin/rm -f /tmp/etr_A4.SRESA1B_9.CCSM.atmd.2000_cat_2099.nc";
-	$tst_cmd[1]="ncks -h -O $fl_fmt $nco_D_flg -s '%e' -d time,0 -v time -p ftp://climate.llnl.gov//sresa1b/atm/yr/etr/ncar_ccsm3_0/run9 -l /tmp etr_A4.SRESA1B_9.CCSM.atmd.2000_cat_2099.nc";
+	$tst_cmd[1]="ncks --trd -h -O $fl_fmt $nco_D_flg -s '%e' -d time,0 -v time -p ftp://climate.llnl.gov//sresa1b/atm/yr/etr/ncar_ccsm3_0/run9 -l /tmp etr_A4.SRESA1B_9.CCSM.atmd.2000_cat_2099.nc";
 	$tst_cmd[2]="182.5";
 	$tst_cmd[3]="SS_OK";
 	NCO_bm::tst_run(\@tst_cmd);
@@ -5967,8 +5977,8 @@ if(0){ #################  SKIP THESE #####################
 	
 	$dsc_sng="msrcp protocol (requires msrcp and authorized access to NCAR MSS)";
 	$tst_cmd[0]="/bin/rm -f /tmp/in.nc";
-	$tst_cmd[1]="ncks -h -O $fl_fmt $nco_D_flg -v one -p mss:/ZENDER/nc -l /tmp in.nc";
-	$tst_cmd[2]="ncks -C -H -s '%e' -v one %tmp_fl_00%";
+	$tst_cmd[1]="ncks --trd -h -O $fl_fmt $nco_D_flg -v one -p mss:/ZENDER/nc -l /tmp in.nc";
+	$tst_cmd[2]="ncks -C -H --trd -s '%e' -v one %tmp_fl_00%";
 	$tst_cmd[3]="1";
 	$tst_cmd[4]="SS_OK";
 	NCO_bm::tst_run(\@tst_cmd);
@@ -5978,7 +5988,7 @@ if(0){ #################  SKIP THESE #####################
     if($USER eq 'zender' || $USER eq 'hjm'){
 	$dsc_sng="HTTP protocol (requires developers to implement wget in NCO nudge nudge wink wink)";
 	$tst_cmd[0]="/bin/rm -f /tmp/in.nc";
-	$tst_cmd[1]="ncks -h -O $fl_fmt $nco_D_flg -s '%e' -v one -p wget://dust.ess.uci.edu/nco -l /tmp in.nc";
+	$tst_cmd[1]="ncks --trd -h -O $fl_fmt $nco_D_flg -s '%e' -v one -p wget://dust.ess.uci.edu/nco -l /tmp in.nc";
  	$tst_cmd[2]="1";
 	$tst_cmd[3]="SS_OK";
 	NCO_bm::tst_run(\@tst_cmd);
diff --git a/bm/nco_bm.pl b/bm/nco_bm.pl
index 5dec176..7fd1e8d 100755
--- a/bm/nco_bm.pl
+++ b/bm/nco_bm.pl
@@ -190,7 +190,7 @@ dbg_msg(1,$lcl_vars); # Print local variables
 if($ARGV == 0){NCO_bm::bm_usg();}
 
 # Test file format
-if ($fl_fmt eq "64bit" || $fl_fmt eq "netcdf4" || $fl_fmt eq "netcdf4_classic") {
+if ($fl_fmt eq "64bit_offset" || $fl_fmt eq "netcdf4" || $fl_fmt eq "netcdf4_classic") {
     $fl_fmt="--fl_fmt=".$fl_fmt;
     dbg_msg(1,"File format set to [$fl_fmt]");
 }elsif ($fl_fmt eq "classic"){
diff --git a/cmake/.gitignore b/cmake/.gitignore
new file mode 100644
index 0000000..2f4c858
--- /dev/null
+++ b/cmake/.gitignore
@@ -0,0 +1,22 @@
+# Git-ignore patterns for ~/nco/cmake
+
+Makefile
+install_manifest.txt
+libnco.a
+ncap2
+ncap_lex.c
+ncap_yacc.c
+ncap_yacc.h
+ncatted
+ncbo
+ncdiff
+ncea
+ncecat
+ncflint
+ncks
+ncpdq
+ncra
+ncrcat
+ncrename
+ncwa
+
diff --git a/cmake/build.bat b/cmake/build.bat
new file mode 100644
index 0000000..17c0542
--- /dev/null
+++ b/cmake/build.bat
@@ -0,0 +1,18 @@
+cmake .. ^
+-DNETCDF_INCLUDE:PATH=I:/grafic_project/netcdf/include ^
+-DNETCDF_LIBRARY:FILE=I:/grafic_project/Debug/netcdf.lib ^
+-DHDF5_LIBRARY:FILE=I:/grafic_project/Debug/hdf5.1.8.5.patch1.lib ^
+-DHDF5_HL_LIBRARY:FILE=I:/grafic_project/Debug/hdf5_hl.1.8.5.patch1.lib ^
+-DZLIB_LIBRARY:FILE=I:/grafic_project/Debug/zlib.lib ^
+-DSZIP_LIBRARY:FILE=I:/grafic_project/Debug/szlib.lib ^
+-DCURL_LIBRARY:FILE=I:/grafic_project/Debug/libcurld.lib ^
+-DANTLR_INCLUDE:PATH=I:/antlr-2.7.7/lib/cpp ^
+-DANTLR_LIBRARY:FILE=I:/antlr-2.7.7/lib/cpp/debug/antlr.lib ^
+-DUDUNITS2_INCLUDE:PATH=I:/udunits2/lib ^
+-DUDUNITS2_LIBRARY:FILE=I:/udunits2/build/lib/Debug/udunits2.lib ^
+-DEXPAT_LIBRARY:FILE=I:/expat/expat/win32/bin/Debug/libexpatMT.lib ^
+-DGSL_INCLUDE:PATH=I:/gsl-1.8/src ^
+-DGSL_LIBRARY:FILE=I:/gsl-1.8/src/gsl/1.8/gsl-1.8/VC8/libgsl/Debug-StaticLib/libgsl_d.lib ^
+-DGSL_CBLAS_LIBRARY:FILE=I:/gsl-1.8/src/gsl/1.8/gsl-1.8/VC8/libgslcblas/Debug-StaticLib/libgslcblas_d.lib
+
+
diff --git a/cmake/clean.sh b/cmake/clean.sh
new file mode 100755
index 0000000..04090de
--- /dev/null
+++ b/cmake/clean.sh
@@ -0,0 +1,2 @@
+#!/usr/bin/env bash
+rm -rf CMakeCache.txt CMakeFiles Makefile install_manifest.txt cmake_install.cmake cmake_uninstall.cmake
diff --git a/cmake/cmake_uninstall.cmake.in b/cmake/cmake_uninstall.cmake.in
new file mode 100644
index 0000000..fe0c2c5
--- /dev/null
+++ b/cmake/cmake_uninstall.cmake.in
@@ -0,0 +1,21 @@
+if(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt")
+  message(FATAL_ERROR "Cannot find install manifest: @CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt")
+endif(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt")
+
+file(READ "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt" files)
+string(REGEX REPLACE "\n" ";" files "${files}")
+foreach(file ${files})
+  message(STATUS "Uninstalling $ENV{DESTDIR}${file}")
+  if(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}")
+    exec_program(
+      "@CMAKE_COMMAND@" ARGS "-E remove \"$ENV{DESTDIR}${file}\""
+      OUTPUT_VARIABLE rm_out
+      RETURN_VALUE rm_retval
+      )
+    if(NOT "${rm_retval}" STREQUAL 0)
+      message(FATAL_ERROR "Problem when removing $ENV{DESTDIR}${file}")
+    endif()
+  else()
+    message(STATUS "File $ENV{DESTDIR}${file} does not exist.")
+  endif()
+endforeach(file)
\ No newline at end of file
diff --git a/config.h.in b/config.h.in
index 6d05074..f998b53 100644
--- a/config.h.in
+++ b/config.h.in
@@ -238,6 +238,9 @@
 /* Define to 1 if compiler finds external `nc_inq_format' function */
 #undef HAVE_NC_INQ_FORMAT
 
+/* Define to 1 if compiler finds external `nc_inq_path' function */
+#undef HAVE_NC_INQ_PATH
+
 /* Define to 1 if compiler finds external `nearbyint' function */
 #undef HAVE_NEARBYINT
 
@@ -421,6 +424,9 @@
 /* Building TeXInfo documentation requires version greater than 4.8 */
 #undef MAKEINFO_VERSION
 
+/* System used to build/install NCO */
+#undef NCO_BUILDENGINE
+
 /* GSL major version number */
 #undef NCO_GSL_MAJOR_VERSION
 
@@ -505,6 +511,9 @@
 /* Define to 1 if compiler needs external `nc_inq_format' function */
 #undef NEED_NC_INQ_FORMAT
 
+/* Define to 1 if compiler needs external `nc_inq_path' function */
+#undef NEED_NC_INQ_PATH
+
 /* Define to 1 if compiler needs external `nearbyint' function */
 #undef NEED_NEARBYINT
 
diff --git a/configure b/configure
index f421926..efaba13 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 NCO netCDF Operators 4.6.8.
+# Generated by GNU Autoconf 2.69 for NCO netCDF Operators 4.6.9.
 #
 # Report bugs to <nco-bugs at lists.sourceforge.net>.
 #
@@ -592,8 +592,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='NCO netCDF Operators'
 PACKAGE_TARNAME='nco'
-PACKAGE_VERSION='4.6.8'
-PACKAGE_STRING='NCO netCDF Operators 4.6.8'
+PACKAGE_VERSION='4.6.9'
+PACKAGE_STRING='NCO netCDF Operators 4.6.9'
 PACKAGE_BUGREPORT='nco-bugs at lists.sourceforge.net'
 PACKAGE_URL=''
 
@@ -1394,7 +1394,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 NCO netCDF Operators 4.6.8 to adapt to many kinds of systems.
+\`configure' configures NCO netCDF Operators 4.6.9 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1465,7 +1465,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of NCO netCDF Operators 4.6.8:";;
+     short | recursive ) echo "Configuration of NCO netCDF Operators 4.6.9:";;
    esac
   cat <<\_ACEOF
 
@@ -1633,7 +1633,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-NCO netCDF Operators configure 4.6.8
+NCO netCDF Operators configure 4.6.9
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2499,7 +2499,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 NCO netCDF Operators $as_me 4.6.8, which was
+It was created by NCO netCDF Operators $as_me 4.6.9, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -3009,6 +3009,11 @@ if test -r doc/VERSION; then
 
 fi
 
+# Set build-engine
+
+$as_echo "#define NCO_BUILDENGINE Autoconf" >>confdefs.h
+
+
 # Set egrep
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
 $as_echo_n "checking for grep that handles long lines and -e... " >&6; }
@@ -3750,7 +3755,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='nco'
- VERSION='4.6.8'
+ VERSION='4.6.9'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -17902,6 +17907,9 @@ $as_echo "#define ENABLE_OPENMP 1" >>confdefs.h
     { $as_echo "$as_me:${as_lineno-$LINENO}: OpenMP support enabled" >&5
 $as_echo "$as_me: OpenMP support enabled" >&6;}
     CFLAGS="${CFLAGS} ${OPENMP_CFLAGS}"
+    # Oddly, linker needs same OpenMP flag(s) as compiler
+    # 20170909 Linux clang on travis does not resolve __kmpc* symbols, apparently needs -lgomp or -lomp
+    # LDFLAGS="${LDFLAGS} ${OPENMP_CFLAGS}"
 fi
 # End OpenMP
 
@@ -18410,6 +18418,20 @@ cat >>confdefs.h <<_ACEOF
 _ACEOF
 
 fi
+ac_fn_c_check_func "$LINENO" "nc_inq_path" "ac_cv_func_nc_inq_path"
+if test "x$ac_cv_func_nc_inq_path" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_NC_INQ_PATH 1
+_ACEOF
+
+else
+
+cat >>confdefs.h <<_ACEOF
+#define NEED_NC_INQ_PATH 1
+_ACEOF
+
+fi
 
 ac_fn_c_check_func "$LINENO" "getopt" "ac_cv_func_getopt"
 if test "x$ac_cv_func_getopt" = xyes; then :
@@ -21504,7 +21526,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 NCO netCDF Operators $as_me 4.6.8, which was
+This file was extended by NCO netCDF Operators $as_me 4.6.9, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -21570,7 +21592,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="\\
-NCO netCDF Operators config.status 4.6.8
+NCO netCDF Operators config.status 4.6.9
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
diff --git a/configure.ac b/configure.ac
index 1771916..819b4e6 100644
--- a/configure.ac
+++ b/configure.ac
@@ -54,7 +54,7 @@
 # 20170808: Choose between traditional version and Git-based version
 # If Git, consider that Linux dynamic libraries will have full messy name, MacOSX will not
 # https://stackoverflow.com/questions/43526939/how-to-insert-git-based-version-in-autoconf-managed-project
-AC_INIT([NCO netCDF Operators],[4.6.8],[nco-bugs at lists.sourceforge.net],[nco])
+AC_INIT([NCO netCDF Operators],[4.6.9],[nco-bugs at lists.sourceforge.net],[nco])
 #AC_INIT([NCO netCDF Operators],m4_esyscmd([git describe --abbrev=7 --dirty --always --tags | tr -d '\n']),[nco-bugs at lists.sourceforge.net],[nco])
 
 # Print GNU copyright in configure script
@@ -82,6 +82,9 @@ if test -r doc/VERSION; then
     AC_SUBST(NCO_VERSION)
 fi
 
+# Set build-engine
+AC_DEFINE(NCO_BUILDENGINE,Autoconf,System used to build/install NCO)
+
 # Set egrep
 AC_PROG_EGREP
 
@@ -318,6 +321,9 @@ if ((test "x${enable_openmp}" != 'xno') && (test "x${enable_netcdf4}" = 'xyes'))
     AC_DEFINE([ENABLE_OPENMP],[1],[Compile operators with OpenMP support])
     AC_MSG_NOTICE([OpenMP support enabled])
     CFLAGS="${CFLAGS} ${OPENMP_CFLAGS}"
+    # Oddly, linker needs same OpenMP flag(s) as compiler
+    # 20170909 Linux clang on travis does not resolve __kmpc* symbols, apparently needs -lgomp or -lomp
+    # LDFLAGS="${LDFLAGS} ${OPENMP_CFLAGS}"
 fi
 # End OpenMP
 
@@ -370,7 +376,7 @@ esac
 # "#define HAVE_XXX 1" and "#undef NEED_XXX" when function xxx() is found and
 # "#undef HAVE_XXX" and "#define NEED_XXX 1" when function xxx() is not found
 # Purpose: CPP macros like "if(NEED_XXX)" are simpler to read than "if(!HAVE_xxx)"
-NCO_CHECK_FUNCS([nc_inq_format])
+NCO_CHECK_FUNCS([nc_inq_format nc_inq_path])
 NCO_CHECK_FUNCS([getopt getopt_long])
 NCO_CHECK_FUNCS([atan2])
 NCO_CHECK_FUNCS([acosf asinf atanf atan2f cosf expf fabsf fmodf log10f logf powf sinf sqrtf tanf])
diff --git a/configure.eg b/configure.eg
index 590a672..28bd6f7 100644
--- a/configure.eg
+++ b/configure.eg
@@ -231,15 +231,15 @@ Status: Works
 Commands for LINUX are the only ones "regularly" used after ~2010
 ************************************************************************
 # Post upgrade requests to sysadmins at ALCF, LCRC, NCAR, NCSA, NERSC, OLCF
-# support at anl.gov # ALCF Maintainer = Adam (email borken)
+# support at alcf.anl.gov # ALCF Maintainer = 
 # conda update nco # Anaconda Maintainer = Filipe Fernandes (github: ocefpaf)
 # support at lcrc.anl.gov # LCRC Maintainer = Adam
 # cislhelp at ucar.edu # NCAR
 # Yan Liu <yanliu at illinois.edu> # NCSA Maintainer = Yan Liu (github: yanliu-chn)
 # https://nersc.service-now.com/navpage.do # NERSC Maintainer = Yun (Helen) He
 # https://www.olcf.ornl.gov/support/submit-ticket # OLCF
-# Subject: Please upgrade NCO module to 4.6.8
-# Request: NCO 4.6.8 was released 5/26 and contains many features of interest to your ACME users. Please upgrade the system NCO module to 4.6.8 and make that the default NCO module. Thanks!
+# Subject: Please upgrade NCO module to 4.6.9
+# Request: NCO 4.6.9 was released 5/26 and contains many features of interest to your ACME users. Please upgrade the system NCO module to 4.6.9 and make that the default NCO module. Thanks!
 
 zender at dust:~/nco$ pvmgetarch;uname -a;~/nco/autobld/config.guess
 LINUX
@@ -269,12 +269,14 @@ make install >> nco.make.${GNU_TRP}.foo 2>&1
 scp nco.configure.${GNU_TRP}.foo nco.config.log.${GNU_TRP}.foo nco.libtool.${GNU_TRP}.foo nco.make.${GNU_TRP}.foo dust.ess.uci.edu:Sites/nco/rgr
 
 # 20150901: gcc/g++ Zender uses this to develop/install/update netCDF4-enabled NCO in personal directories on cooley:
-# Sysadmin upgrade request: fxm
-# Latest sysadmin-compiled module usage:  # fxm
-# Personal recipe last used successfully: 201703??
+# Sysadmin upgrade request: 20170825
+# Latest ticket: alcf-support #345910
+# Latest sysadmin-compiled module usage: soft add +nco-4.6.8, soft add +netcdf-4.4.1.1
+# Personal recipe last modified: 20170825
+# Personal recipe last used successfully: 20170825
 export GNU_TRP=`~/nco/autobld/config.guess`
 cd ~/nco;/bin/rm -f *.${GNU_TRP}.foo;make distclean
-ANTLR_ROOT=${HOME} CC='gcc' CXX='g++' NETCDF_ROOT='/soft/libraries/unsupported/netcdf-4.3.2' UDUNITS2_PATH=${HOME} ./configure --prefix=${HOME} --bindir=${MY_BIN_DIR} --datadir=${HOME}/nco/data --libdir=${MY_LIB_DIR} --mandir=${HOME}/nco/man > nco.configure.${GNU_TRP}.foo 2>&1
+ANTLR_ROOT=${HOME} CC='gcc' CXX='g++' NETCDF_ROOT='/soft/libraries/unsupported/netcdf-4.4.1.1' UDUNITS2_PATH=${HOME} ./configure --prefix=${HOME} --bindir=${MY_BIN_DIR} --datadir=${HOME}/nco/data --libdir=${MY_LIB_DIR} --mandir=${HOME}/nco/man > nco.configure.${GNU_TRP}.foo 2>&1
 /bin/cp -f config.log nco.config.log.${GNU_TRP}.foo
 /bin/cp -f libtool nco.libtool.${GNU_TRP}.foo
 make clean;make > nco.make.${GNU_TRP}.foo 2>&1
@@ -283,8 +285,9 @@ make install >> nco.make.${GNU_TRP}.foo 2>&1
 scp nco.configure.${GNU_TRP}.foo nco.config.log.${GNU_TRP}.foo nco.libtool.${GNU_TRP}.foo nco.make.${GNU_TRP}.foo dust.ess.uci.edu:Sites/nco/rgr
 
 # 20160421: gcc/g++ Zender uses this to develop/install/update netCDF4-enabled NCO in personal directories on mira:
-# Sysadmin upgrade request: fxm
+# Sysadmin upgrade request: 20170825
 # Latest sysadmin-compiled module usage:  # fxm
+# Personal recipe last modified: 2016??
 # Personal recipe last used successfully: 2016??
 export GNU_TRP=`~/nco/autobld/config.guess`
 cd ~/nco;/bin/rm -f *.${GNU_TRP}.foo;make distclean
@@ -299,6 +302,7 @@ scp nco.configure.${GNU_TRP}.foo nco.config.log.${GNU_TRP}.foo nco.libtool.${GNU
 # 20160421: gcc/g++ Zender uses this to develop/install/update netCDF4-enabled NCO in personal directories on roger:
 # Sysadmin upgrade request: Yan Liu <yanliu at illinois.edu>
 # Latest sysadmin-compiled module usage: module load nco/4.6.5 # 20170315
+# Personal recipe last modified: 20170424
 # Personal recipe last used successfully: 20170424
 module load netcdf/4.4.0
 module load udunits
@@ -315,7 +319,8 @@ scp nco.configure.${GNU_TRP}.foo nco.config.log.${GNU_TRP}.foo nco.libtool.${GNU
 # gcc/g++ Zender uses this to develop/install/update netCDF4-enabled NCO in personal directories on cori:
 # Sysadmin upgrade request: https://nersc.service-now.com/navpage.do
 # Latest sysadmin-compiled module usage: module load nco/4.6.7 # 20170612 (without ncap2)
-# Personal recipe last used successfully: 20170411
+# Personal recipe last modified: 20170411
+# Personal recipe last used successfully: 20170816
 module load szip
 module load gsl
 module load udunits
@@ -335,7 +340,8 @@ scp nco.configure.${GNU_TRP}.foo nco.config.log.${GNU_TRP}.foo nco.libtool.${GNU
 # Sysadmin upgrade request: https://nersc.service-now.com/navpage.do
 # Latest ticket: INC0106410 on 20170804
 # Latest sysadmin-compiled module usage: module load nco/4.6.7 # 20170809 (with ncap2)
-# Personal recipe last used successfully: 20170807
+# Personal recipe last modified: 20170807
+# Personal recipe last used successfully: 20170916
 module load szip
 module load gsl
 module load udunits2
@@ -353,7 +359,8 @@ scp nco.configure.${GNU_TRP}.foo nco.config.log.${GNU_TRP}.foo nco.libtool.${GNU
 # gcc/g++ Zender uses this to develop/install/update netCDF4-enabled NCO in personal directories on aims4:
 # Sysadmin upgrade request: 
 # Latest sysadmin-compiled module usage: 
-# Personal recipe last used successfully: 20170428
+# Personal recipe last modified: 2016??
+# Personal recipe last used successfully: 20170816
 export GNU_TRP=`~/nco/autobld/config.guess`
 cd ~/nco;/bin/rm -f *.${GNU_TRP}.foo;make distclean
 ANTLR_ROOT=${HOME} CC='gcc' CXX='g++' NETCDF_ROOT='/usr/local/uvcdat/2016-01-21/Externals' UDUNITS2_PATH='/usr/local/uvcdat/2016-01-21/Externals' ./configure --prefix=${HOME} --bindir=${MY_BIN_DIR} --datadir=${HOME}/nco/data --libdir=${MY_LIB_DIR} --mandir=${HOME}/nco/man > nco.configure.${GNU_TRP}.foo 2>&1
@@ -370,6 +377,7 @@ scp nco.configure.${GNU_TRP}.foo nco.config.log.${GNU_TRP}.foo nco.libtool.${GNU
 # Sysadmin upgrade request: support at lcrc.anl.gov
 # Latest ticket: AREQ0159277 on 20170526
 # Latest sysadmin-compiled module usage: soft add +nco-4.6.7 # 20170526
+# Personal recipe last modified: 20161223
 # Personal recipe last used successfully: 20170526
 # fails to link to udunits...why?
 # nm -a /soft/udunits/2.1.21/lib/libudunits2.a | grep ut_read_xml
@@ -403,7 +411,8 @@ scp nco.configure.${GNU_TRP}.foo nco.config.log.${GNU_TRP}.foo nco.libtool.${GNU
 # Sysadmin upgrade request: cislhelp at ucar.edu
 # Latest ticket: 157798 on 20170526
 # Latest sysadmin-compiled module usage: module load nco/4.5.5 # 20160228
-# Personal recipe last used successfully: 20170526
+# Personal recipe last modified: 20170812
+# Personal recipe last used successfully: 20170816
 module add intel/16.0.3;module add gsl;module add netcdf/4.4.1;
 export PATH=${PATH}:/glade/apps/opt/netcdf/4.4.1/intel/16.0.3/bin # needed for ncgen
 export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/glade/apps/opt/netcdf/4.4.1/intel/16.0.3/lib # needed to run NCO
@@ -414,7 +423,8 @@ cd ~/nco/bld;make NETCDF_ROOT='/glade/apps/opt/netcdf/4.4.1/intel/16.0.3' UDUNIT
 # Sysadmin upgrade request: https://www.olcf.ornl.gov/support/submit-ticket
 # Latest ticket: 358890 on 20170526
 # Latest sysadmin-compiled module usage: module load nco/4.6.6 # 20170515
-# Personal recipe last used successfully: 20170814
+# Personal recipe last modified: 20170814
+# Personal recipe last used successfully: 20170916
 export LINUX_CC='gcc -std=c99 -pedantic -D_DEFAULT_SOURCE -D_BSD_SOURCE -D_POSIX_SOURCE'
 export LINUX_CXX='g++ -std=c++11'
 export LINUX_FC='gfortran'
@@ -432,7 +442,8 @@ cd ~/nco/bld;make ANTLR_ROOT=${HOME} NETCDF_ROOT='/autofs/nccs-svm1_sw/rhea/.swc
 # Sysadmin upgrade request: https://www.olcf.ornl.gov/support/submit-ticket
 # Latest ticket: 347675 on 20170316
 # Latest sysadmin-compiled module usage: module load nco/4.6.6 # 20170411
-# Personal recipe last used successfully: 20170814
+# Personal recipe last modified: 20170814
+# Personal recipe last used successfully: 20170816
 export LINUX_CC='gcc -std=c99 -pedantic -D_DEFAULT_SOURCE -D_BSD_SOURCE -D_POSIX_SOURCE'
 module add gcc # change GCC from v 4.3.4 to 4.9.0
 #module add gsl # not used yet
diff --git a/data/big.cdl b/data/big.cdl
index 1f31ded..c36fd87 100644
--- a/data/big.cdl
+++ b/data/big.cdl
@@ -14,24 +14,26 @@
 // 32-bit machines do not work with files exceeding ~2 GB unless LFS enabled
 // One billion floats are nco_typ_lng(NC_FLOAT)*10^9 = sizeof(float)*10^9 = 4*10^9 B = 4 GB
 
-// Create 4 GB file with one variable 
+// Create file with variable at least 4 GB in size
 // Expect failure on "small RAM" (< ~4 GB) machines:
-// ncap2 --64 -D 3 -O -s "wvl_1e0[wvl_1e0]=1.0f" -s "wvl_1e1[wvl_1e1]=1.0f" -s "wvl_1e2[wvl_1e2]=1.0f" -s "wvl_1e3[wvl_1e3]=1.0f" -s "wvl_1e4[wvl_1e4]=1.0f" -s "wvl_1e5[wvl_1e5]=1.0f" -s "wvl_1e6[wvl_1e6]=1.0f" -s "wvl_1e7[wvl_1e7]=1.0f" -s "wvl_1e8[wvl_1e8]=1.0f" -s "wvl_1e9[wvl_1e9]=1.0f" ~/nco/data/big.nc ${DATA}/nco_bm/big.nc
-// ls -l ${DATA}/nco_bm/big.nc
+// ncap2 -5 -D 3 -O -s "wvl_1e0[wvl_1e0]=1.0f" -s "wvl_1e1[wvl_1e1]=1.0f" -s "wvl_1e2[wvl_1e2]=1.0f" -s "wvl_1e3[wvl_1e3]=1.0f" -s "wvl_1e4[wvl_1e4]=1.0f" -s "wvl_1e5[wvl_1e5]=1.0f" -s "wvl_1e6[wvl_1e6]=1.0f" -s "wvl_1e7[wvl_1e7]=1.0f" -s "wvl_1e8[wvl_1e8]=1.0f" -s "wvl_1e9[wvl_1e9]=1.0f" ~/nco/data/big.nc ~/foo_big.nc
+// ncap2 -5 -D 3 -O -s "wvl_1e0[wvl_1e0]=1.0d" -s "wvl_1e1[wvl_1e1]=1.0d" -s "wvl_1e2[wvl_1e2]=1.0d" -s "wvl_1e3[wvl_1e3]=1.0d" -s "wvl_1e4[wvl_1e4]=1.0d" -s "wvl_1e5[wvl_1e5]=1.0d" -s "wvl_1e6[wvl_1e6]=1.0d" -s "wvl_1e7[wvl_1e7]=1.0d" -s "wvl_1e8[wvl_1e8]=1.0d" -s "wvl_1e9[wvl_1e9]=1.0d" ~/nco/data/big.nc ~/foo_big.nc
+// ncap2 -4 --cnk_dmn=wvl_1e9,100000 -D 3 -O -s "wvl_1e0[wvl_1e0]=1.0d" -s "wvl_1e1[wvl_1e1]=1.0d" -s "wvl_1e2[wvl_1e2]=1.0d" -s "wvl_1e3[wvl_1e3]=1.0d" -s "wvl_1e4[wvl_1e4]=1.0d" -s "wvl_1e5[wvl_1e5]=1.0d" -s "wvl_1e6[wvl_1e6]=1.0d" -s "wvl_1e7[wvl_1e7]=1.0d" -s "wvl_1e8[wvl_1e8]=1.0d" -s "wvl_1e9[wvl_1e9]=1.0d" ~/nco/data/big.nc ~/foo_big.nc
+// ls -l ~/foo_big.nc
 
 // On small-RAM machines, create 4 GB file with multiple variables instead
 // This reduces peak memory usage to ~400 MB, and still tests LFS capability
-// ncap2 --64 -D 3 -O -s "wvl_1e8[wvl_1e8]=1.0f" ~/nco/data/big.nc ${DATA}/nco_bm/big.nc # Data buffer size: 400 MB
-// ncrename -D 3 -d wvl_1e8,wvl ${DATA}/nco_bm/big.nc # Rename because ncecat does not concatenate coordinate variables
+// ncap2 -5 -D 3 -O -s "wvl_1e8[wvl_1e8]=1.0f" ~/nco/data/big.nc ${HOME}/big.nc # Data buffer size: 400 MB
+// ncrename -D 3 -d wvl_1e8,wvl ${HOME}/big.nc # Rename because ncecat does not concatenate coordinate variables
 // Aggregate ten files together
-// ncecat -u time -D 3 -O -p ${DATA}/nco_bm big.nc big.nc big.nc big.nc big.nc big.nc big.nc big.nc big.nc big.nc ${DATA}/nco_bm/big.nc 
-// ls -l ${DATA}/nco_bm/big.nc
+// ncecat -u time -D 3 -O -p ${HOME} big.nc big.nc big.nc big.nc big.nc big.nc big.nc big.nc big.nc big.nc ${HOME}/big.nc 
+// ls -l ${HOME}/big.nc
 
 // Test data access:
 // This is where LFS is useful
 // These commands should work on 32-bit systems with LFS support even though files exceed 2 GB
-// ncks -m -M -H ${DATA}/nco_bm/big.nc | m
-// ncks -H -d wvl_1e9,999999999 ${DATA}/nco_bm/big.nc | m
+// ncks -m -M -H ${HOME}/big.nc | m
+// ncks -H -d wvl_1e9,999999999 ${HOME}/big.nc | m
 
 // Valid CDF/netCDF files need not have any defined variable or data
 // Use ncap LHS-casting to define variables with big dimensions
diff --git a/data/in.cdl b/data/in.cdl
index c6c4a0c..f5105b0 100644
--- a/data/in.cdl
+++ b/data/in.cdl
@@ -679,13 +679,13 @@ variables:
 	zero:long_name = "zero";
 
 	float ppc_zro_flt(time);
-	zero:long_name = "array of single precision floating point zeros";
+	ppc_zro_flt:long_name = "array of single precision floating point zeros";
 
 	double ppc_zro_dbl(time);
-	zero:long_name = "array of double precision floating point zeros";
+	ppc_zro_dbl:long_name = "array of double precision floating point zeros";
 
 	int ppc_zro_int(time);
-	zero:long_name = "array of integer zeros";
+	ppc_zro_int:long_name = "array of integer zeros";
 
 	float one;
 	one:long_name = "one";
diff --git a/data/in_4.cdl b/data/in_4.cdl
index dee9b64..38478d6 100644
--- a/data/in_4.cdl
+++ b/data/in_4.cdl
@@ -9,31 +9,32 @@
 // netCDF4: ncgen arguments depend on version:
 // "-k netCDF-4" for netCDF >= 3.6.3, "-k hdf5" for netCDF < 3.6.3
 // "-k netCDF-4 classic model" for netCDF >= 3.6.3, "-k hdf5-nc3" for netCDF < 3.6.3
-// /usr/local/bin/ncgen -k netCDF-4 -b -o in_4.nc in_4.cdl
-// /usr/local/bin/ncgen -k netCDF-4 -b -o ${HOME}/nco/data/in_4.nc ${HOME}/nco/data/in_4.cdl
+// ncgen -k netCDF-4 -b -o in_4.nc4 in_4.cdl
+// ncgen -k netCDF-4 -b -o ${HOME}/nco/data/in_4.nc4 ${HOME}/nco/data/in_4.cdl
+// ncgen -k cdf5 -b -o ${HOME}/nco/data/in_4.nc5 ${HOME}/nco/data/in_4.cdl
 
 // URL: 
 // http://dust.ess.uci.edu/nco/in.nc
-// http://dust.ess.uci.edu/nco/in_4.nc
+// http://dust.ess.uci.edu/nco/in_4.nc4
 // http://motherlode.ucar.edu:8080/thredds/dodsC/testdods/in.nc
-// http://motherlode.ucar.edu:8080/thredds/dodsC/testdods/in_4.nc
+// http://motherlode.ucar.edu:8080/thredds/dodsC/testdods/in_4.nc4
 
 // netCDF3:
-// ncgen -b -o in_4.nc in_4.cdl
-// ncgen -b -o ${HOME}/nco/data/in_4.nc ${HOME}/nco/data/in_4.cdl
-// scp ~/nco/data/in_4.cdl ~/nco/data/in_4.nc dust.ess.uci.edu:nco/data
-// scp ~/nco/data/in_4.nc ~/nco/data/in_4.nc dust.ess.uci.edu:/var/www/html/nco
-// scp ~/nco/data/in_4.nc ~/nco/data/in_4.nc dust.ess.uci.edu:/data/home/www/html/dodsdata
-// mswrite -t 365 ~/nco/data/in_4.nc /ZENDER/tmp/in_4.nc
-// mswrite -t 365 ~/nco/data/in_4.nc /ZENDER/tmp/h0001.nc
-// mswrite -t 365 ~/nco/data/in_4.nc /ZENDER/tmp/h0002.nc
-// mswrite -t 365 ~/nco/data/in_4.nc /ZENDER/tmp/h0003.nc
-// mswrite -t 365 ~/nco/data/in_4.nc /ZENDER/tmp/h0004.nc
-// msrcp -period 365 ~/nco/data/in_4.nc mss:/ZENDER/tmp/in_4.nc
-// msrcp -period 365 ~/nco/data/in_4.nc mss:/ZENDER/tmp/h0001.nc
-// msrcp -period 365 ~/nco/data/in_4.nc mss:/ZENDER/tmp/h0002.nc
-// msrcp -period 365 ~/nco/data/in_4.nc mss:/ZENDER/tmp/h0003.nc
-// msrcp -period 365 ~/nco/data/in_4.nc mss:/ZENDER/tmp/h0004.nc
+// ncgen -b -o in_4.nc4 in_4.cdl
+// ncgen -b -o ${HOME}/nco/data/in_4.nc4 ${HOME}/nco/data/in_4.cdl
+// scp ~/nco/data/in_4.cdl ~/nco/data/in_4.nc4 dust.ess.uci.edu:nco/data
+// scp ~/nco/data/in_4.nc4 ~/nco/data/in_4.nc4 dust.ess.uci.edu:/var/www/html/nco
+// scp ~/nco/data/in_4.nc4 ~/nco/data/in_4.nc4 dust.ess.uci.edu:/data/home/www/html/dodsdata
+// mswrite -t 365 ~/nco/data/in_4.nc4 /ZENDER/tmp/in_4.nc4
+// mswrite -t 365 ~/nco/data/in_4.nc4 /ZENDER/tmp/h0001.nc
+// mswrite -t 365 ~/nco/data/in_4.nc4 /ZENDER/tmp/h0002.nc
+// mswrite -t 365 ~/nco/data/in_4.nc4 /ZENDER/tmp/h0003.nc
+// mswrite -t 365 ~/nco/data/in_4.nc4 /ZENDER/tmp/h0004.nc
+// msrcp -period 365 ~/nco/data/in_4.nc4 mss:/ZENDER/tmp/in_4.nc4
+// msrcp -period 365 ~/nco/data/in_4.nc4 mss:/ZENDER/tmp/h0001.nc
+// msrcp -period 365 ~/nco/data/in_4.nc4 mss:/ZENDER/tmp/h0002.nc
+// msrcp -period 365 ~/nco/data/in_4.nc4 mss:/ZENDER/tmp/h0003.nc
+// msrcp -period 365 ~/nco/data/in_4.nc4 mss:/ZENDER/tmp/h0004.nc
 
 // WARNING: Changing values of variables below, especially coordinate variables, affects outcome of nco_tst.pl test script
 // Other programs, e.g., ~/f/fff.F90, ~/c++/ccc.cc, ~/c/c.c may also break
@@ -49,7 +50,7 @@
 // double: 1.0, 1.d, 1.0e-20 (decimal point is required, d is not required)
 
 // NCL usage:
-// id_in=addfile("/home/zender/nco/data/in_4.nc","r")
+// id_in=addfile("/home/zender/nco/data/in_4.nc4","r")
 // print(id_in)
 // list_filevars(id_in)
 
@@ -64,6 +65,9 @@ variables:
 	string :sng_att = "Test global string attribute"; // 20130723 This is how to specify global string attributes
 
 //	netCDF4-only atomic types
+	int64 int64_var_max;
+	int64_var_max:long_name = "int64-type variable";
+
 	int64 int64_var;
 	int64_var:long_name = "int64-type variable";
 
@@ -82,6 +86,9 @@ variables:
 	ubyte ubyte_var;
 	ubyte_var:long_name = "ubyte-type variable";
 
+	uint uint_var_max;
+	uint_var_max:long_name = "uint-type variable";
+
 	uint uint_var;
 	uint_var:long_name = "uint-type variable";
 
@@ -955,7 +962,8 @@ variables:
 
 data:
 //	netCDF4-specific atomic types:
-	int64_var=9223372036854775807;
+	int64_var_max=9223372036854775807;
+	int64_var=73;
 	string_var="If you prick us, do we not bleed? If you tickle us, do we not laugh? If you poison us, do we not die? And if you wrong us, shall we not revenge?";
 	string_arr_var="20130723: Arrays of NC_STRING are simply separated by commas.","If there are commas within a string, well, then, be careful. Did we \"jump the shark\"?","This array comprises three sentences.","Woops, I mean four.";
          
@@ -964,7 +972,8 @@ data:
 	string_var2="20131121: This NC_STRING contains NCO's default XML string separator, *. And it contains multiple sequential copies of that separator, ***. Be sure ncks automatically switches to a different separator, aka the backup separator, the string obtained by removing the two spaces from this:\"* | *\". As of 20131121, ncks handles this correctly, yet toolsui breaks when trying to input the ncks-generated NcML. Appears to be a toolsui bug.";
 
 	ubyte_var='z';
-	uint_var=4294967295;
+	uint_var_max=4294967295;
+	uint_var=73;
 //	uint64_var = 18446744073709551615; // 20131120: XML treats unsigned as signed types, so toolsui produces errors when reading maximum uint64 values (though not when reading maxium ubyte, ushort, and uint values)
 	uint64_var=0;
 	ushort_var=65535;
diff --git a/data/in_grp.cdl b/data/in_grp.cdl
index 7607a94..5fdf630 100644
--- a/data/in_grp.cdl
+++ b/data/in_grp.cdl
@@ -137,7 +137,7 @@ netcdf in_grp {
   ppc_dbl:purpose = "test --ppc switches";
   ppc_dbl:original_values="123456789e-10,123456789e-9,123456789e-8,123456789e-7,123456789e-6,123456789e-5,123456789e-4,123456789e-3,123456789e-2,123456789e-1";
   
-    //coordinate variable (/lon)
+    // Coordinate variable (/lon)
     float lon(lon);
     lon:units = "degrees_east";
     float scl;
@@ -188,7 +188,7 @@ netcdf in_grp {
   
  group: g2 { 
   variables:
-    //coordinate variable (dimension at root)
+    // Coordinate variable (dimension at root)
     double time(time);
     float lon(lon);
     float scl;
@@ -276,7 +276,7 @@ netcdf in_grp {
         ppc_dbl:original_values="123456789e-10,123456789e-9,123456789e-8,123456789e-7,123456789e-6,123456789e-5,123456789e-4,123456789e-3,123456789e-2,123456789e-1";
 
   
-    //coordinate variable (/g7/gds_crd)
+    // Coordinate variable (/g7/gds_crd)
     float gds_crd(gds_crd);
     gds_crd:long_name = "Geodesic coordinate";
     gds_crd:units = "degree";
diff --git a/data/ncclimo b/data/ncclimo
index 0d3b186..cdf0b03 100755
--- a/data/ncclimo
+++ b/data/ncclimo
@@ -1,6 +1,6 @@
 #!/bin/bash
 
-# Purpose: Climatology script tailored to CESM'ish monthly input and ACME output guidelines
+# Purpose: Climatology script tailored to CESM'ish monthly input and E3SM/ACME output guidelines
 # Produces and optionally regrids climatological monthly means, seasonal means, annual mean
 
 # Copyright (C) 2015--2017 Charlie Zender
@@ -34,7 +34,7 @@
 # Documentation: http://nco.sf.net/nco.html#ncclimo
 # Additional Documentation:
 # HowTo: https://acme-climate.atlassian.net/wiki/display/SIM/Generate%2C+Regrid%2C+and+Split+Climatologies+%28climo+files%29+with+ncclimo+and+ncremap
-# ACME Climatology Requirements: https://acme-climate.atlassian.net/wiki/display/ATM/Climo+Files+-+v0.3+AMIP+runs
+# E3SM/ACME Climatology Requirements: https://acme-climate.atlassian.net/wiki/display/ATM/Climo+Files+-+v0.3+AMIP+runs
 
 # Insta-install:
 # scp ~/nco/data/ncclimo aims4.llnl.gov:bin
@@ -62,7 +62,7 @@ while [ -h "${spt_src}" ]; do # Recursively resolve ${spt_src} until file is no
 done
 cmd_ln="${spt_src} ${@}"
 drc_spt="$( cd -P "$( dirname "${spt_src}" )" && pwd )"
-spt_nm=$(basename ${spt_src}) # [sng] Script name (Unlike $0, ${BASH_SOURCE[0]} works well with 'source <script>')
+spt_nm=$(basename ${spt_src}) # [sng] Script name (unlike $0, ${BASH_SOURCE[0]} works well with 'source <script>')
 spt_pid=$$ # [nbr] Script PID (process ID)
 
 # Configure paths at High-Performance Computer Centers (HPCCs) based on ${HOSTNAME}
@@ -86,83 +86,114 @@ if [ -z "${DATA}" ]; then
 	* ) DATA='/tmp' ; ;; # Other
     esac # !HOSTNAME
 fi # DATA
-# Ensure batch jobs access correct 'mpirun' (or, with SLURM, 'srun') command, netCDF library, and NCO executables and library:
-case "${HOSTNAME}" in 
-    aims* )
-	export PATH='/export/zender1/bin'\:${PATH}
-        export LD_LIBRARY_PATH='/export/zender1/lib'\:${LD_LIBRARY_PATH} ; ;;
-    blues* | blogin* | b[0123456789][0123456789][0123456789] )
-	soft add @openmpi-gcc
-	export PATH='/home/zender/bin'\:${PATH}
-	export LD_LIBRARY_PATH='/home/zender/lib'\:${LD_LIBRARY_PATH} ; ;;
-    cooley* )
-	# 20160421: Split cooley from mira binary locations to allow for different system libraries
-	# http://www.mcs.anl.gov/hs/software/systems/softenv/softenv-intro.html
-	soft add +mvapich2 
-        export PBS_NUM_PPN=12 # Spoof PBS on Soft (which knows nothing about node capabilities)
-	export PATH='/home/zender/bin_cooley'\:${PATH}
-	export LD_LIBRARY_PATH='/home/zender/lib_cooley'\:${LD_LIBRARY_PATH} ; ;;
-    mira* )
-	export PATH='/home/zender/bin_mira'\:${PATH}
-	export LD_LIBRARY_PATH='/soft/libraries/netcdf/current/library:/home/zender/lib_mira'\:${LD_LIBRARY_PATH} ; ;;
-    cori* )
-	# 20160407: Separate cori from edison binary locations to allow for different system libraries
-	# 20160420: module load gsl, udunits required for non-interactive batch submissions by Wuyin Lin
-	# Not necessary for interactive, nor for CSZ non-interactive, batch submisssions
-	# Must be due to home environment differences between CSZ and other users
-	# Loading gsl and udunits seems to do no harm, so always do it
-	# This is equivalent to LD_LIBRARY_PATH method used for netCDF and SZIP on rhea
-	# Why do cori/edison and rhea require workarounds for different packages?
-	module load gsl
-	module load udunits
-	# On cori and edison, module load ncl installs ERWG 5.2 (from 2012) in ${NCARG_ROOT}/../intel/bin
-	# module load ncl/6.3.0 
-	if [ -n "${NCARG_ROOT}" ]; then
-            export PATH="${NCARG_ROOT}/bin:${PATH}"
-	fi # !NCARG_ROOT
-	export PATH='/global/homes/z/zender/bin_cori'\:${PATH}
-        export LD_LIBRARY_PATH='/global/homes/z/zender/lib_cori'\:${LD_LIBRARY_PATH} ; ;;
-    edison* )
-	module load gsl
-	module load udunits
-	export PATH='/global/homes/z/zender/bin_edison'\:${PATH}
-        export LD_LIBRARY_PATH='/global/homes/z/zender/lib_edison'\:${LD_LIBRARY_PATH} ; ;;
-    pileus* )
-	export PATH='/home/zender/bin'\:${PATH}
-	export LD_LIBRARY_PATH='/opt/ACME/uvcdat-2.2-build/install/Externals/lib:/home/zender/lib'\:${LD_LIBRARY_PATH} ; ;;
-    rhea* )
-	# 20151017: CSZ next three lines guarantee finding mpirun
-	source ${MODULESHOME}/init/sh # 20150607: PMC Ensures find module commands will be found
-	module unload PE-intel # Remove Intel-compiled mpirun environment
-	module load PE-gnu # Provides GCC-compiled mpirun environment (CSZ uses GCC to build NCO on rhea)
-	# 20160219: CSZ UVCDAT setup causes failures with mpirun, attempting a work-around
-	if [ -n "${UVCDAT_SETUP_PATH}" ]; then
-	    module unload python ompi paraview PE-intel PE-gnu
+
+# Ensure batch jobs access correct 'mpirun' (or, with SLURM, 'srun') command, netCDF library, and NCO executables and library
+# 20170914 Entire block is identical between ncclimo and ncremap---keep it that way!
+# hrd_pth a placeholder no-op that could one day be used as a command-line option to control environment
+# Set NCO_PATH_OVERRIDE to 'No' to prevent NCO from executing next block that overrides PATH:
+# export NCO_PATH_OVERRIDE='No'
+hrd_pth='Yes' # [sng] Hard-code machine-dependent paths/modules if HOSTNAME in database
+if [ "${hrd_pth}" != 'No' ] && [ "${NCO_PATH_OVERRIDE}" != 'No' ]; then
+    # If HOSTNAME is not in database, change hrd_pth_fnd to 'No' in case-statement default fall-through
+    hrd_pth_fnd='Yes' # [sng] Machine-dependent paths/modules for HOSTNAME found in database
+    case "${HOSTNAME}" in 
+	aims* )
+	    export PATH='/export/zender1/bin'\:${PATH}
+            export LD_LIBRARY_PATH='/export/zender1/lib'\:${LD_LIBRARY_PATH} ; ;;
+	blues* | blogin* | b[0123456789][0123456789][0123456789] )
+	    soft add @openmpi-gcc
+	    export PATH='/home/zender/bin'\:${PATH}
+	    export LD_LIBRARY_PATH='/home/zender/lib'\:${LD_LIBRARY_PATH} ; ;;
+	cooley* )
+	    # 20160421: Split cooley from mira binary locations to allow for different system libraries
+	    # http://www.mcs.anl.gov/hs/software/systems/softenv/softenv-intro.html
+	    soft add +mvapich2 
+            export PBS_NUM_PPN=12 # Spoof PBS on Soft (which knows nothing about node capabilities)
+	    export PATH='/home/zender/bin_cooley'\:${PATH}
+	    export LD_LIBRARY_PATH='/home/zender/lib_cooley'\:${LD_LIBRARY_PATH} ; ;;
+	mira* )
+	    export PATH='/home/zender/bin_mira'\:${PATH}
+	    export LD_LIBRARY_PATH='/soft/libraries/netcdf/current/library:/home/zender/lib_mira'\:${LD_LIBRARY_PATH} ; ;;
+	cori* )
+	    # 20160407: Separate cori from edison binary locations to allow for different system libraries
+	    # 20160420: module load gsl, udunits required for non-interactive batch submissions by Wuyin Lin
+	    # Not necessary for interactive, nor for CSZ non-interactive, batch submisssions
+	    # Must be due to home environment differences between CSZ and other users
+	    # Loading gsl and udunits seems to do no harm, so always do it
+	    # This is equivalent to LD_LIBRARY_PATH method used for netCDF and SZIP on rhea
+	    # Why do cori/edison and rhea require workarounds for different packages?
+	    module load gsl
+	    module load udunits
+	    if [ ${spt_nm} = 'ncremap' ]; then
+		module load ncl # 20170916 OK
+	    fi # !ncremap
+	    if [ -n "${NCARG_ROOT}" ]; then
+		export PATH="${PATH}:${NCARG_ROOT}/bin"
+	    fi # !NCARG_ROOT
+	    export PATH='/global/homes/z/zender/bin_cori'\:${PATH}
+            export LD_LIBRARY_PATH='/global/homes/z/zender/lib_cori'\:${LD_LIBRARY_PATH} ; ;;
+	edison* )
+	    module load gsl
+	    module load udunits2 # 20170816 Name changed to udunits2
+	    if [ ${spt_nm} = 'ncremap' ]; then
+		module load ncl # 20170916 OK
+	    fi # !ncremap
+	    if [ -n "${NCARG_ROOT}" ]; then
+		export PATH="${PATH}:${NCARG_ROOT}/bin"
+	    fi # !NCARG_ROOT
+	    export PATH='/global/homes/z/zender/bin_edison'\:${PATH}
+            export LD_LIBRARY_PATH='/global/homes/z/zender/lib_edison'\:${LD_LIBRARY_PATH} ; ;;
+	pileus* )
+	    export PATH='/home/zender/bin'\:${PATH}
+	    export LD_LIBRARY_PATH='/opt/ACME/uvcdat-2.2-build/install/Externals/lib:/home/zender/lib'\:${LD_LIBRARY_PATH} ; ;;
+	rhea* )
+	    # 20151017: CSZ next three lines guarantee finding mpirun
+	    source ${MODULESHOME}/init/sh # 20150607: PMC Ensures find module commands will be found
+	    module unload PE-intel # Remove Intel-compiled mpirun environment
+	    module load PE-gnu # Provides GCC-compiled mpirun environment (CSZ uses GCC to build NCO on rhea)
+	    # 20160219: CSZ UVCDAT setup causes failures with mpirun, attempting a work-around
+	    if [ -n "${UVCDAT_SETUP_PATH}" ]; then
+		module unload python ompi paraview PE-intel PE-gnu
+		module load gcc
+		source /lustre/atlas1/cli900/world-shared/sw/rhea/uvcdat/latest_full/bin/setup_runtime.sh
+		export ${UVCDAT_SETUP_PATH}
+	    fi # !UVCDAT_SETUP_PATH
+	    if [ ${spt_nm} = 'ncremap' ]; then
+		# 20170825: Use module load ncl/6.3.0 (6.4.0 lacks ERWG)
+		module load ncl/6.3.0
+	    fi # !ncremap
+	    if [ -n "${NCARG_ROOT}" ]; then
+		export PATH="${PATH}:${NCARG_ROOT}/bin"
+	    fi # !NCARG_ROOT
+            export PATH='/ccs/home/zender/bin_rhea'\:${PATH}
+	    export LD_LIBRARY_PATH='/autofs/nccs-svm1_sw/rhea/.swci/0-core/opt/spack/20170224/linux-rhel6-x86_64/gcc-4.4.7/netcdf-4.4.1-uroyzcwi6fc3kerfidguoof7g2vimo57/lib:/sw/redhat6/szip/2.1/rhel6.6_gnu4.8.2/lib:/ccs/home/zender/lib_rhea'\:${LD_LIBRARY_PATH} ; ;;
+	titan* )
+	    source ${MODULESHOME}/init/sh # 20150607: PMC Ensures find module commands will be found
 	    module load gcc
-	    source /lustre/atlas1/cli900/world-shared/sw/rhea/uvcdat/latest_full/bin/setup_runtime.sh
-	    export ${UVCDAT_SETUP_PATH}
-	fi # !UVCDAT_SETUP_PATH
-	# On rhea, module load ncl installs ERWG in ${NCL_DIR}/bin
-	if [ -n "${NCL_DIR}" ]; then
-            export PATH="${NCL_DIR}/bin:${PATH}"
-	fi # !NCL_DIR
-        export PATH='/ccs/home/zender/bin_rhea'\:${PATH}
-	export LD_LIBRARY_PATH='/autofs/nccs-svm1_sw/rhea/.swci/0-core/opt/spack/20170224/linux-rhel6-x86_64/gcc-4.4.7/netcdf-4.4.1-uroyzcwi6fc3kerfidguoof7g2vimo57/lib:/sw/redhat6/szip/2.1/rhel6.6_gnu4.8.2/lib:/ccs/home/zender/lib_rhea'\:${LD_LIBRARY_PATH} ; ;;
-    titan* )
-	source ${MODULESHOME}/init/sh # 20150607: PMC Ensures find module commands will be found
-	module load gcc
-        export PATH='/ccs/home/zender/bin_titan'\:${PATH}
-	export LD_LIBRARY_PATH='/opt/cray/netcdf/4.4.1.1/GNU/49/lib:/sw/xk6/udunits/2.1.24/sl_gcc4.5.3/lib:/ccs/home/zender/lib_titan'\:${LD_LIBRARY_PATH} ; ;;
-    ys* )
-	# 20151018: Yellowstone support not yet tested in batch mode
-	# On yellowstone, module load ncl installs ERWG in /glade/apps/opt/ncl/6.4.0/intel/12.1.5/bin (not in ${NCARG_ROOT}/bin)
-	if [ -n "${NCARG_ROOT}" ]; then
-#            export PATH="${NCARG_ROOT}/bin:${PATH}"
-            export PATH="${PATH}:/glade/apps/opt/ncl/6.4.0/intel/12.1.5/bin"
-	fi # !NCARG_ROOT
-        export PATH='/glade/u/home/zender/bin'\:${PATH}
-        export LD_LIBRARY_PATH='/glade/apps/opt/netcdf/4.4.1/intel/16.0.3/lib:/glade/u/home/zender/lib'\:${LD_LIBRARY_PATH}
-esac # !HOSTNAME
+	    if [ ${spt_nm} = 'ncremap' ]; then
+		# 20170831: Use module load ncl (6.3.0 lacks ERWG)
+		module load ncl # 20170916 OK
+	    fi # !ncremap
+	    if [ -n "${NCARG_ROOT}" ]; then
+		export PATH="${PATH}:${NCARG_ROOT}/bin"
+	    fi # !NCARG_ROOT
+            export PATH='/ccs/home/zender/bin_titan'\:${PATH}
+	    export LD_LIBRARY_PATH='/opt/cray/netcdf/4.4.1.1/GNU/49/lib:/sw/xk6/udunits/2.1.24/sl_gcc4.5.3/lib:/ccs/home/zender/lib_titan'\:${LD_LIBRARY_PATH} ; ;;
+	ys* )
+	    # 20151018: Yellowstone support not yet tested in batch mode
+	    if [ ${spt_nm} = 'ncremap' ]; then
+		# On yellowstone, module load ncl installs ERWG in /glade/apps/opt/ncl/6.4.0/intel/12.1.5/bin (not in ${NCARG_ROOT}/bin)
+		module load ncl
+	    fi # !ncremap
+	    if [ -n "${NCARG_ROOT}" ]; then
+		export PATH="${PATH}:/glade/apps/opt/ncl/6.4.0/intel/12.1.5/bin"
+	    fi # !NCARG_ROOT
+            export PATH='/glade/u/home/zender/bin'\:${PATH}
+            export LD_LIBRARY_PATH='/glade/apps/opt/netcdf/4.4.1/intel/16.0.3/lib:/glade/u/home/zender/lib'\:${LD_LIBRARY_PATH} ; ;;
+	* ) # Default fall-through
+	    hrd_pth_fnd='No' ; ;;
+    esac # !HOSTNAME
+fi # !hrd_pth && !NCO_PATH_OVERRIDE
 
 # Production usage:
 # ncclimo -c famipc5_ne30_v0.3_00003 -s 1980 -e 1983 -i /lustre/atlas1/cli115/world-shared/mbranst/famipc5_ne30_v0.3_00003-wget-test -o ${DATA}/ne30/clm
@@ -302,9 +333,9 @@ esac # !HOSTNAME
 #          SCD seasonal averages are inconsistent with (calendar-year-based) annual averages, but better capture seasonal the "natural" (not calendar-year-based) climate year
 #          SDD seasonal averages are fully consistent with (calendar-year-based) annual averages
 # drc_rgr: Regridding directory---store regridded files, if any, in drc_rgr rather than drc_out
-# lnk_flg: Link ACME-climo to AMWG-climo filenames
+# lnk_flg: Link E3SM/ACME-climo to AMWG-climo filenames
 #          AMWG omits the YYYYMM components of climo filenames, resulting in shorter names
-#          This switch (on by default) symbolically links the full (ACME) filename to the shorter (AMWG) name
+#          This switch (on by default) symbolically links the full (E3SM/ACME) filename to the shorter (AMWG) name
 #          AMWG diagnostics scripts can produce plots directly from these linked filenames
 # par_typ: Parallelism type---all values _except_ exact matches to "bck" and "mpi" are interpreted as "nil" (and invoke serial mode)
 #          bck = Background: Spawn children (basic blocks) as background processes on control node then wait()
@@ -355,8 +386,9 @@ lbr_vrs=$(ncks --library 2>&1 > /dev/null | awk '{print $6}')
 
 # Detect and warn about mixed modules (for Qi Tang 20170531)
 if [ "${drc_spt}" != "${drc_nco}" ]; then
-    echo "WARNING: Possible mixture of NCO versions from different locations. Script ${spt_nm} is from directory ${drc_spt} while NCO binaries are from directory ${drc_nco}. Normally the script and binaries are from the same executables directory. This WARNING may be safely ignore for customized scripts and/or binaries that the user has intentionally split into different directories."
-    echo "HINT: Conflicting script and binary directories may result from 1) Hardcoding an NCO script and/or binary pathname, 2) Having incomplete NCO installations in one or more directories in the \$PATH environment variable, 3) Loading multiple NCO modules with different locations."
+    echo "WARNING: Possible mixture of NCO versions from different locations. Script ${spt_nm} is from directory ${drc_spt} while NCO binaries are from directory ${drc_nco}. Normally this script and the binaries are from the same executables directory. This WARNING may be safely ignored for customized scripts and/or binaries that the user has intentionally split into different directories."
+    echo "HINT (All-users): Conflicting script and binary directories may result from 1) Hardcoding an NCO script and/or binary pathnames, 2) Having incomplete NCO installations in one or more directories in the \$PATH environment variable, 3) Loading multiple NCO modules with different locations."
+    echo "HINT (E3SM-only): The ncclimo and ncremap scripts hard-code the NCO binary executable and library paths to point to C. Zender's home directories on the major E3SM machines. This facilitates quicker feature and fix updates to NCO binaries, and means users need only scripts to run climatologies and regridding with the latest NCO. However, this can be counterproductive for those employing carefully coordinated paths, such as MPAS Analysis or A-Prime, which use a Conda-based enviro [...]
 fi # drc_spt
 
 # When running in a terminal window (not in an non-interactive batch queue)...
@@ -412,7 +444,7 @@ inp_glb='No' # [sng] Input file list from globbing directory
 inp_psn='No' # [sng] Input file list from positional arguments
 inp_std='No' # [sng] Input file list from stdin
 job_nbr=2 # [nbr] Job simultaneity for parallelism
-lnk_flg='Yes' # [sng] Link ACME-climo to AMWG-climo filenames
+lnk_flg='Yes' # [sng] Link E3SM/ACME-climo to AMWG-climo filenames
 mdl_nm='cam' # [sng] Model name (e.g., 'cam', 'cam2', 'cice', 'cism', 'clm', 'clm2', 'ice', 'mpascice', 'mpaso', 'ocn')
 mdl_typ='cesm' # [sng] Model type ('cesm', 'mpas') (for filenames and regridding)
 mpi_flg='No' # [sng] Parallelize over nodes
@@ -432,6 +464,7 @@ thr_nbr=2 # [nbr] Thread number for regridder
 tpd_out=1 # [nbr] Timesteps-per-day in ouput
 #var_lst='FSNT,AODVIS' # [sng] Variables to process (empty means all)
 var_lst='' # [sng] Variables to process (empty means all)
+var_lst_rx_xtr='No' # [sng] Process var_lst to expand rx
 vrs_prn='No' # [sng] Print version information
 xtn_flg='No' # [sng] Produce extended climatology
 ypf_max=50 # [yr] Years-per-output-file
@@ -454,7 +487,7 @@ function fnc_usg_prn { # NB: dash supports fnc_nm (){} syntax, not function fnc_
     echo "${fnt_rvr}-h${fnt_nrm} ${fnt_bld}hst_nm${fnt_nrm}   History volume name (default ${fnt_bld}${hst_nm}${fnt_nrm}) [${fnt_tlc}hst_nm, history_name, history${fnt_nrm}]"
     echo "${fnt_rvr}-i${fnt_nrm} ${fnt_bld}drc_in${fnt_nrm}   Input directory (default ${fnt_bld}${drc_in}${fnt_nrm}) [${fnt_tlc}drc_in, in_drc, dir_in, in_dir, input${fnt_nrm}]"
     echo "${fnt_rvr}-j${fnt_nrm} ${fnt_bld}job_nbr${fnt_nrm}  Job simultaneity for parallelism (default ${fnt_bld}${job_nbr}${fnt_nrm}) [${fnt_tlc}job_nbr, job_number, jobs${fnt_nrm}]"
-    echo "${fnt_rvr}-l${fnt_nrm} ${fnt_bld}lnk_flg${fnt_nrm}  Link ACME-climo to AMWG-climo filenames (default ${fnt_bld}${lnk_flg}${fnt_nrm}) [${fnt_tlc}lnk_flg, link_flag, no_amwg_links${fnt_nrm}]"
+    echo "${fnt_rvr}-l${fnt_nrm} ${fnt_bld}lnk_flg${fnt_nrm}  Link E3SM/ACME-climo to AMWG-climo filenames (default ${fnt_bld}${lnk_flg}${fnt_nrm}) [${fnt_tlc}lnk_flg, link_flag, no_amwg_links${fnt_nrm}]"
     echo "${fnt_rvr}-m${fnt_nrm} ${fnt_bld}mdl_nm${fnt_nrm}   Model name (default ${fnt_bld}${mdl_nm}${fnt_nrm}) [${fnt_tlc}mdl_nm, model_name, model${fnt_nrm}]"
     echo "${fnt_rvr}-n${fnt_nrm} ${fnt_bld}nco_opt${fnt_nrm}  NCO options (empty means none) (default ${fnt_bld}${nco_opt}${fnt_nrm}) [${fnt_tlc}nco_opt, nco, nco_options${fnt_nrm}]"
     echo " ${fnt_bld}--no_cll_msr${fnt_nrm}  Omit cell_measures variables (e.g., 'area') [${fnt_tlc}no_area, no_cll_msr, no_cell_measures${fnt_nrm}]"
@@ -555,7 +588,7 @@ while getopts :a:C:c:d:E:e:f:h:i:j:l:m:n:O:o:p:R:r:S:s:t:v:X:x:Y:y:-: OPT; do
 	h) hst_nm="${OPTARG}" ;; # History tape name
 	i) drc_in="${OPTARG}" ;; # Input directory
 	j) job_usr="${OPTARG}" ;; # Job simultaneity
-	l) lnk_flg="${OPTARG}" ;; # Link ACME to AMWG name
+	l) lnk_flg="${OPTARG}" ;; # Link E3SM/ACME to AMWG name
 	m) mdl_nm="${OPTARG}" ;; # Model name
 	n) nco_opt="${OPTARG}" ;; # NCO options
 	o) drc_out_usr="${OPTARG}" ;; # Output directory
@@ -588,8 +621,8 @@ while getopts :a:C:c:d:E:e:f:h:i:j:l:m:n:O:o:p:R:r:S:s:t:v:X:x:Y:y:-: OPT; do
 	       hst_nm=?* | history_name=?* | history=?* ) hst_nm="${LONG_OPTARG}" ;; # -h # History tape name
 	       drc_in=?* | in_drc=?* | dir_in=?* | in_dir=?* | input=?* ) drc_in="${LONG_OPTARG}" ;; # -i # Input directory
 	       job_nbr=?* | job_number=?* | jobs=?* ) job_usr="${LONG_OPTARG}" ;; # -j # Job simultaneity
-	       lnk_flg | link_flag | no_amwg_link | no_amwg_links | no_AMWG_link | no_AMWG_links ) lnk_flg='No' ;; # -l # Link ACME to AMWG name
-	       lnk_flg=?* | link_flag=?* | no_amwg_link=?* | no_amwg_links=?* | no_AMWG_link=?* | no_AMWG_links=?* ) echo "No argument allowed for --${OPTARG switch}" >&2; exit 1 ;; # -l # Link ACME to AMWG name
+	       lnk_flg | link_flag | no_amwg_link | no_amwg_links | no_AMWG_link | no_AMWG_links ) lnk_flg='No' ;; # -l # Link E3SM/ACME to AMWG name
+	       lnk_flg=?* | link_flag=?* | no_amwg_link=?* | no_amwg_links=?* | no_AMWG_link=?* | no_AMWG_links=?* ) echo "No argument allowed for --${OPTARG switch}" >&2; exit 1 ;; # -l # Link E3SM/ACME to AMWG name
 	       mdl_nm=?* | model_name=?* | model=?* ) mdl_nm="${LONG_OPTARG}" ;; # -m # Model name
 	       nco_opt=?* | nco=?* | nco_options=?* ) nco_opt="${LONG_OPTARG}" ;; # -n # NCO options
 	       no_area | no_cll_msr | no_cell_measures ) no_cll_msr='Yes' ;; # # Omit cell_measures variables
@@ -644,6 +677,12 @@ if [ ${vrs_prn} = 'Yes' ]; then
     printf "Config: ${spt_nm} running from directory ${drc_spt}\n"
     printf "Config: calling NCO binaries in directory ${drc_nco}\n"
     printf "Config: binaries linked to netCDF library version ${lbr_vrs}\n"
+    if [ "${hrd_pth_fnd}" = 'Yes' ]; then
+	printf "Config: Employ NCO machine-dependent hardcoded paths/modules for ${HOSTNAME}\n"
+	printf "Config: (Turn-off NCO hardcoded paths with \"export NCO_PATH_OVERRIDE=No\")\n"
+    else
+	printf "Config: No hardcoded path/module overrides\n"
+    fi # !hrd_pth_fnd
     exit 0
 fi # !vrs_prn
 
@@ -855,7 +894,10 @@ if [ ${dbg_lvl} -ge 2 ]; then
     nco_opt="-D ${dbg_lvl} ${nco_opt}"
 fi # !dbg_lvl
 if [ -n "${var_lst}" ] && [ "${sbs_flg}" != 'Yes' ]; then
+    # 20170825: Use nco_xtr_lst() to parse regular expressions for monthly climos
+    # if [ ${clm_flg} != 'Yes' ] && [ ${clm_md} != 'mth' ]; then
     nco_opt="${nco_opt} -v ${var_lst}"
+    # fi # !mth
 fi # !var_lst
 if [ -n "${hdr_pad}" ]; then
     nco_opt="${nco_opt} --hdr_pad=${hdr_pad}"
@@ -945,7 +987,7 @@ if [ ${clm_flg} = 'Yes' ] && [ ${clm_md} = 'mth' ]; then
     inp_std='No' # fxm: 20170123 hack for false positives in non-interactive batch mode on PBS
 fi # !clm_flg
 if [ ${inp_glb} = 'Yes' ]; then 
-    for fl in "${drc_in}"/*.nc "${drc_in}"/*.nc3 "${drc_in}"/*.nc4 "${drc_in}"/*.cdf "${drc_in}"/*.hdf "${drc_in}"/*.he5 "${drc_in}"/*.h5 ; do
+    for fl in "${drc_in}"/*.nc "${drc_in}"/*.nc3 "${drc_in}"/*.nc4 "${drc_in}"/*.nc5 "${drc_in}"/*.nc6 "${drc_in}"/*.nc7 "${drc_in}"/*.cdf "${drc_in}"/*.hdf "${drc_in}"/*.he5 "${drc_in}"/*.h5 ; do
 	if [ -f "${fl}" ]; then
 	    fl_in[${fl_nbr}]=${fl}
 	    let fl_nbr=${fl_nbr}+1
@@ -971,11 +1013,7 @@ fi # !inp_std
 if [ "${sbs_flg}" = 'Yes' ]; then
     if [ -z "${var_lst}" ]; then
 	echo "${spt_nm}: WARNING Splitter mode without explicitly specified variable list (i.e., -v var_lst) splits all variables of rank >= 2 into separate files, thus doubling the on-disk data amount"
-#	echo "${spt_nm}: ERROR Splitter mode requires explicitly specified variable list"
-#	echo "${spt_nm}: HINT Supply the variable list with -v var_lst"
-#	exit 1
 	var_lst=`ncks --lst_rnk_ge2 ${fl_in[0]}`
-	echo "${var_lst}"
     fi # !var_lst
     # http://stackoverflow.com/questions/27702452/loop-through-a-comma-separated-shell-variable
     var_nbr=0 # [sng] Split (subset) files
@@ -1003,7 +1041,7 @@ if [ "${sbs_flg}" = 'Yes' ]; then
     if [ ${yr_sbs} -ne ${yr_nbr} ]; then
 	# Sanity check that number of files specified matches number expected from date switches
 	printf "${spt_nm}: ERROR ${fl_nbr} files specified (via stdin pipe, positional, or input directory) expected to contain ${yr_sbs} years of data but date options specified ${yr_nbr} years of data\n"
-	printf "${spt_nm}: HINT Number of files at ${fpy} files-per-year must match number of years implied by arguments to start- and end-year switches (which are --yr_srt=${yr_srt} and --yr_end=${yr_end}, respectively)\n"
+	printf "${spt_nm}: HINT Number of files at ${fpy} files-per-year must match number of years implied by arguments to start- and end-year switches (--yr_srt=${yr_srt} and --yr_end=${yr_end}, respectively)\n"
 	exit 1
     fi # !yr_sbs
 
@@ -1133,7 +1171,7 @@ if [ "${csn_flg}" = 'Yes' ]; then
     csn_nom[${csn_fm}]=2
     csn_nom[${csn_ann}]=12
 
-    # Seasonal monthly weights (ncra -w argument)
+    # Seasonal monthly weights (ncra -w argument), assumes calendar = 365 dpy
     csn_wgt[${csn_mam}]='31,30,31'
     csn_wgt[${csn_jja}]='30,31,31'
     csn_wgt[${csn_son}]='30,31,30'
@@ -1153,10 +1191,6 @@ if [ "${csn_flg}" = 'Yes' ]; then
 	csn_rqs[${csn_nbr}]=${csn}
 	# NB: Requested seasons are 0-based, defined seasons are 0-based
 	for ((csn_dfn_idx=${csn_idx_srt};csn_dfn_idx<${csn_nbr_max};csn_dfn_idx++)); do
-	    if [[ "${csn}" =~ 'ANN' ]] || [[ "${csn}" =~ 'ann' ]]; then
-		printf "${spt_nm}: ERROR Requested season ${csn} not yet supported\n"
-#		exit 1
-	    fi # !ANN
 	    if [[ "${csn}" =~ "${csn_abb[${csn_dfn_idx}]}" ]] || [[ "${csn}" =~ "${csn_abb_lc[${csn_dfn_idx}]}" ]]; then
 		# Map requested to defined (r2d) seasons and inverse (d2r)
 		# map_r2d[0]=3 means first season that user requested (i.e., in csn_lst) is fourth defined in table
@@ -1297,6 +1331,7 @@ if [ ${dbg_lvl} -ge 2 ]; then
     printf "dbg: fml_nm   = ${fml_nm}\n"
     printf "dbg: gaa_sng  = ${gaa_sng}\n"
     printf "dbg: hdr_pad  = ${hdr_pad}\n"
+    printf "dbg: hrd_pth  = ${hrd_pth}\n"
     printf "dbg: hst_nm   = ${hst_nm}\n"
     printf "dbg: inp_aut  = ${inp_aut}\n"
     printf "dbg: inp_glb  = ${inp_glb}\n"
@@ -1438,17 +1473,17 @@ if [ "${clm_flg}" = 'Yes' ]; then
     if [ "${mdl_typ}" = 'yyyymm' ]; then
 	printf "Filenames will be constructed with generic conventions as ${bs_nm}_YYYYMM.${bs_sfx}\n"
     else # !mdl_typ
-	printf "Filenames will be constructed with CESM'ish or ACME'ish conventions\n"
+	printf "Filenames will be constructed with CESM'ish or E3SM/ACME'ish conventions\n"
     fi # !mdl_typ
     if [ ${clm_md} = 'ann' ]; then 
 	printf "Each input file assumed to contain mean of one year\n"
     elif [ ${clm_md} = 'dly' ]; then 
-	printf "Each input file assumed to contain mean of one day\n"
+	printf "Each input file assumed to contain one or more daily or sub-daily (e.g., 3-hourly) means\n"
     elif [ ${clm_md} = 'mth' ]; then 
 	printf "Each input file assumed to contain mean of one month\n"
     fi # !mth
     if [ ${csn_flg} = 'No' ]; then 
-	printf "Seasons and therefore annual means have been turned-off and will not be computed\n"
+	printf "Seasons and therefore annual means derived from seasonal means have been turned-off and will not be computed\n"
     elif [ ${clm_md} = 'mth' ]; then 
 	if [ ${dec_md} = 'scd' ]; then 
 	    printf "Winter statistics based on seasonally contiguous December (scd-mode): DJF sequences are consecutive and cross calendar-year boundaries\n"
@@ -1518,6 +1553,16 @@ if [ "${clm_flg}" = 'Yes' ] && [ "${clm_md}" = 'mth' ]; then
 	    # In binary mode drc_out is actually used to locate input files from climatology B (same as output files in incremental mode)
 	    drc_out="${drc_in}"
 	fi # !bnr_flg
+	if [ -n "${var_lst}" ] && [ "${var_lst_rx_xtr}" = 'Yes' ] ; then
+	    # Match var_lst regular expressions to contents of first file to create real extraction list
+	    # https://stackoverflow.com/questions/2440414/how-to-retrieve-the-first-word-of-the-output-of-a-command-in-bash
+	    fl_arr=( ${fl_all} ) # Create file array
+	    #echo "${spt_nm}: DEBUG var_lst before expansion = ${var_lst}"
+	    var_lst=`ncks -v ${var_lst} --lst_xtr ${drc_in}/${fl_arr[0]}`
+	    #echo "${spt_nm}: DEBUG var_lst after  expansion = ${var_lst}"
+	    nco_opt="${nco_opt} -v ${var_lst}"
+	    var_lst_rx_xtr='No'
+	fi # !var_lst
 	fl_out[${clm_idx}]="${drc_out}/${out_nm}_${MM}_${yyyy_clm_srt}${MM}_${yyyy_clm_end}${MM}_climo.nc"
 	cmd_clm[${clm_idx}]="${cmd_mpi[${clm_idx}]} ncra --cb -O ${nco_opt} ${gaa_sng} -p ${drc_in} ${fl_all} ${fl_out[${clm_idx}]}"
     done # !mth
@@ -2271,11 +2316,11 @@ if [ "${clm_flg}" = 'Yes' ] && [ "${clm_md}" = 'mth' ] && [ "${bnr_flg}" = 'No'
 	fi # !rgr_map
     fi # !ann_flg
     
-    # Link ACME-climo to AMWG-climo filenames
+    # Link E3SM/ACME-climo to AMWG-climo filenames
     # drc_pwd is always fully qualified path but drc_out and drc_rgr may be relative paths
     # Strategy: Start in drc_pwd, cd to drc_rgr, then link so return code comes from ln not cd
     if [ ${lnk_flg} = 'Yes' ]; then
-	printf "Link ACME-climo to AMWG-climo filenames...\n"
+	printf "Link E3SM/ACME-climo to AMWG-climo filenames...\n"
 	for ((clm_idx=1;clm_idx<=clm_nbr;clm_idx++)); do
 	    if [ -n "${rgr_map}" ]; then 
 		cmd_lnk[${clm_idx}]="cd ${drc_pwd};cd ${drc_rgr};ln -s -f ${fl_rgr[${clm_idx}]/${drc_rgr}\//} ${fl_amwg[${clm_idx}]/${drc_rgr}\//}"
@@ -2288,7 +2333,7 @@ if [ "${clm_flg}" = 'Yes' ] && [ "${clm_md}" = 'mth' ] && [ "${bnr_flg}" = 'No'
 	    if [ ${dbg_lvl} -le 1 ]; then
 		eval ${cmd_lnk[${clm_idx}]}
 		if [ $? -ne 0 ]; then
-		    printf "${spt_nm}: ERROR linking ACME to AMWG filename cmd_lnk[${clm_idx}] failed. Debug this:\n${cmd_lnk[${clm_idx}]}\n"
+		    printf "${spt_nm}: ERROR linking E3SM/ACME to AMWG filename cmd_lnk[${clm_idx}] failed. Debug this:\n${cmd_lnk[${clm_idx}]}\n"
 		    exit 1
 		fi # !err
 	    fi # !dbg
@@ -2483,11 +2528,11 @@ if [ "${clm_flg}" = 'Yes' ] && [ "${xtn_flg}" = 'Yes' ]; then
 	    wait
 	fi # !rgr_map
 	
-	# Link ACME-climo to AMWG-climo filenames
+	# Link E3SM/ACME-climo to AMWG-climo filenames
 	# drc_pwd is always fully qualified path but drc_out and drc_rgr may be relative paths
 	# Strategy: Start in drc_pwd, cd to drc_rgr, then link so return code comes from ln not cd
 	if [ ${lnk_flg} = 'Yes' ]; then
-	    printf "Link extended ACME-climo to AMWG-climo filenames...\n"
+	    printf "Link extended E3SM/ACME-climo to AMWG-climo filenames...\n"
 	    for ((clm_idx=1;clm_idx<=clm_nbr;clm_idx++)); do
 		if [ -n "${rgr_map}" ]; then 
 		    cmd_lnk_xtn[${clm_idx}]="cd ${drc_pwd};cd ${drc_rgr_xtn};ln -s -f ${fl_rgr_xtn[${clm_idx}]/${drc_rgr_xtn}\//} ${fl_amwg[${clm_idx}]/${drc_rgr_xtn}\//}"
@@ -2500,7 +2545,7 @@ if [ "${clm_flg}" = 'Yes' ] && [ "${xtn_flg}" = 'Yes' ]; then
 		if [ ${dbg_lvl} -le 1 ]; then
 		    eval ${cmd_lnk_xtn[${clm_idx}]}
 		    if [ $? -ne 0 ]; then
-			printf "${spt_nm}: ERROR linking ACME to AMWG filename cmd_lnk_xtn[${clm_idx}] failed. Debug this:\n${cmd_lnk_xtn[${clm_idx}]}\n"
+			printf "${spt_nm}: ERROR linking E3SM/ACME to AMWG filename cmd_lnk_xtn[${clm_idx}] failed. Debug this:\n${cmd_lnk_xtn[${clm_idx}]}\n"
 			exit 1
 		    fi # !err
 		fi # !dbg
diff --git a/data/ncclimo_tst.py b/data/ncclimo_tst.py
new file mode 100644
index 0000000..5c023c3
--- /dev/null
+++ b/data/ncclimo_tst.py
@@ -0,0 +1,19 @@
+# Purpose: Sample Pythong script to run ncclimo
+
+# Source: Xylar Asay-Davis, 20170815
+
+import subprocess
+
+def ncclimo_tst():
+
+    args = ['/global/homes/z/zender/bin_edison/ncclimo', '--clm_md=mth', '-a', 'sdd', '-m', 'mpaso',
+            '-p', 'serial', '-v', 'timeMonthly_avg_meridionalHeatTransportLat,'
+            'timeMonthly_avg_meridionalHeatTransportLatZ', '--seasons=ANN',
+            '-s', '0022', '-e', '0022', '-i',
+            '/global/cscratch1/sd/sprice/acme_scratch/edison/g60to30_SSSrestore/run',
+            '-o', '/tmp/zender/MHT_oEC60to30v3wLI']
+
+    subprocess.check_call(args)
+
+if __name__ == "__main__":
+    ncclimo_tst()
diff --git a/data/ncclimo_tst.slurm b/data/ncclimo_tst.slurm
new file mode 100644
index 0000000..393627f
--- /dev/null
+++ b/data/ncclimo_tst.slurm
@@ -0,0 +1,24 @@
+#!/bin/bash -l
+
+# Purpose: Sample SLURM script to run ncclimo via Python
+
+# Source: Xylar Asay-Davis, 20170815
+
+#SBATCH --partition=debug
+#SBATCH --nodes=1
+#SBATCH --time=0:05:00
+#SBATCH --account=acme
+#SBATCH --job-name=ncclimo_tst
+#SBATCH --output=ncclimo_tst%j
+#SBATCH --error=ncclimo_tst%j
+#SBATCH -L cscratch1,SCRATCH,project
+
+cd $SLURM_SUBMIT_DIR   # optional, since this is the default behavior
+
+export OMP_NUM_THREADS=1
+
+module use /global/project/projectdirs/acme/software/modulefiles/all
+module load python/anaconda-2.7-acme
+export PATH=/global/homes/z/zender/bin_${NERSC_HOST}:${PATH}
+
+srun -n 1 -N 1 python ncclimo_tst.py
diff --git a/data/ncremap b/data/ncremap
index 75bc5ab..4554f60 100755
--- a/data/ncremap
+++ b/data/ncremap
@@ -34,7 +34,7 @@
 # Documentation: http://nco.sf.net/nco.html#ncremap
 # Additional Documentation:
 # HowTo: https://acme-climate.atlassian.net/wiki/display/SIM/Generate%2C+Regrid%2C+and+Split+Climatologies+%28climo+files%29+with+ncclimo+and+ncremap
-# ACME Climatology Requirements: https://acme-climate.atlassian.net/wiki/display/ATM/Climo+Files+-+v0.3+AMIP+runs
+# E3SM/ACME Climatology Requirements: https://acme-climate.atlassian.net/wiki/display/ATM/Climo+Files+-+v0.3+AMIP+runs
 
 # Regridder works in one of four modes:
 # 1. Free-will: Infer source and destination grids to generate map-file, then regrid
@@ -70,7 +70,7 @@ while [ -h "${spt_src}" ]; do # Recursively resolve ${spt_src} until file is no
 done
 cmd_ln="${spt_src} ${@}"
 drc_spt="$( cd -P "$( dirname "${spt_src}" )" && pwd )"
-spt_nm=$(basename ${spt_src}) # [sng] Script name (Unlike $0, ${BASH_SOURCE[0]} works well with 'source <script>')
+spt_nm=$(basename ${spt_src}) # [sng] Script name (unlike $0, ${BASH_SOURCE[0]} works well with 'source <script>')
 spt_pid=$$ # [nbr] Script PID (process ID)
 
 # Configure paths at High-Performance Computer Centers (HPCCs) based on ${HOSTNAME}
@@ -94,88 +94,114 @@ if [ -z "${DATA}" ]; then
 	* ) DATA='/tmp' ; ;; # Other
     esac # !HOSTNAME
 fi # DATA
-# Ensure batch jobs access correct 'mpirun' (or, with SLURM, 'srun') command, netCDF library, and NCO executables and library:
-case "${HOSTNAME}" in 
-    aims* )
-	export PATH='/export/zender1/bin'\:${PATH}
-        export LD_LIBRARY_PATH='/export/zender1/lib'\:${LD_LIBRARY_PATH} ; ;;
-    blues* | blogin* | b[0123456789][0123456789][0123456789] )
-	soft add @openmpi-gcc
-	export PATH='/home/zender/bin'\:${PATH}
-	export LD_LIBRARY_PATH='/home/zender/lib'\:${LD_LIBRARY_PATH} ; ;;
-    cooley* )
-	# 20160421: Split cooley from mira binary locations to allow for different system libraries
-	# http://www.mcs.anl.gov/hs/software/systems/softenv/softenv-intro.html
-	soft add +mvapich2 
-        export PBS_NUM_PPN=12 # Spoof PBS on Soft (which knows nothing about node capabilities)
-	export PATH='/home/zender/bin_cooley'\:${PATH}
-	export LD_LIBRARY_PATH='/home/zender/lib_cooley'\:${LD_LIBRARY_PATH} ; ;;
-    mira* )
-	export PATH='/home/zender/bin_mira'\:${PATH}
-	export LD_LIBRARY_PATH='/soft/libraries/netcdf/current/library:/home/zender/lib_mira'\:${LD_LIBRARY_PATH} ; ;;
-    cori* )
-	# 20160407: Separate cori from edison binary locations to allow for different system libraries
-	# 20160420: module load gsl, udunits required for non-interactive batch submissions by Wuyin Lin
-	# Not necessary for interactive, nor for CSZ non-interactive, batch submisssions
-	# Must be due to home environment differences between CSZ and other users
-	# Loading gsl and udunits seems to do no harm, so always do it
-	# This is equivalent to LD_LIBRARY_PATH method used for netCDF and SZIP on rhea
-	# Why do cori/edison and rhea require workarounds for different packages?
-	module load gsl
-	module load udunits
-	# On cori and edison, module load ncl installs ERWG 5.2 (from 2012) in ${NCARG_ROOT}/../intel/bin
-	# module load ncl/6.3.0 
-	if [ -n "${NCARG_ROOT}" ]; then
-            export PATH="${NCARG_ROOT}/bin:${PATH}"
-	fi # !NCARG_ROOT
-	export PATH='/global/homes/z/zender/bin_cori'\:${PATH}
-        export LD_LIBRARY_PATH='/global/homes/z/zender/lib_cori'\:${LD_LIBRARY_PATH} ; ;;
-    edison* )
-	module load gsl
-	module load udunits
-	# On cori and edison, module load ncl installs ERWG 5.2 (from 2012) in ${NCARG_ROOT}/../intel/bin
-	# module load ncl/6.3.0 
-	if [ -n "${NCARG_ROOT}" ]; then
-            export PATH="${NCARG_ROOT}/bin:${PATH}"
-	fi # !NCARG_ROOT
-	export PATH='/global/homes/z/zender/bin_edison'\:${PATH}
-        export LD_LIBRARY_PATH='/global/homes/z/zender/lib_edison'\:${LD_LIBRARY_PATH} ; ;;
-    pileus* )
-	export PATH='/home/zender/bin'\:${PATH}
-	export LD_LIBRARY_PATH='/opt/ACME/uvcdat-2.2-build/install/Externals/lib:/home/zender/lib'\:${LD_LIBRARY_PATH} ; ;;
-    rhea* )
-	# 20151017: CSZ next three lines guarantee finding mpirun
-	source ${MODULESHOME}/init/sh # 20150607: PMC Ensures find module commands will be found
-	module unload PE-intel # Remove Intel-compiled mpirun environment
-	module load PE-gnu # Provides GCC-compiled mpirun environment (CSZ uses GCC to build NCO on rhea)
-	# 20160219: CSZ UVCDAT setup causes failures with mpirun, attempting a work-around
-	if [ -n "${UVCDAT_SETUP_PATH}" ]; then
-	    module unload python ompi paraview PE-intel PE-gnu
+
+# Ensure batch jobs access correct 'mpirun' (or, with SLURM, 'srun') command, netCDF library, and NCO executables and library
+# 20170914 Entire block is identical between ncclimo and ncremap---keep it that way!
+# hrd_pth a placeholder no-op that could one day be used as a command-line option to control environment
+# Set NCO_PATH_OVERRIDE to 'No' to prevent NCO from executing next block that overrides PATH:
+# export NCO_PATH_OVERRIDE='No'
+hrd_pth='Yes' # [sng] Hard-code machine-dependent paths/modules if HOSTNAME in database
+if [ "${hrd_pth}" != 'No' ] && [ "${NCO_PATH_OVERRIDE}" != 'No' ]; then
+    # If HOSTNAME is not in database, change hrd_pth_fnd to 'No' in case-statement default fall-through
+    hrd_pth_fnd='Yes' # [sng] Machine-dependent paths/modules for HOSTNAME found in database
+    case "${HOSTNAME}" in 
+	aims* )
+	    export PATH='/export/zender1/bin'\:${PATH}
+            export LD_LIBRARY_PATH='/export/zender1/lib'\:${LD_LIBRARY_PATH} ; ;;
+	blues* | blogin* | b[0123456789][0123456789][0123456789] )
+	    soft add @openmpi-gcc
+	    export PATH='/home/zender/bin'\:${PATH}
+	    export LD_LIBRARY_PATH='/home/zender/lib'\:${LD_LIBRARY_PATH} ; ;;
+	cooley* )
+	    # 20160421: Split cooley from mira binary locations to allow for different system libraries
+	    # http://www.mcs.anl.gov/hs/software/systems/softenv/softenv-intro.html
+	    soft add +mvapich2 
+            export PBS_NUM_PPN=12 # Spoof PBS on Soft (which knows nothing about node capabilities)
+	    export PATH='/home/zender/bin_cooley'\:${PATH}
+	    export LD_LIBRARY_PATH='/home/zender/lib_cooley'\:${LD_LIBRARY_PATH} ; ;;
+	mira* )
+	    export PATH='/home/zender/bin_mira'\:${PATH}
+	    export LD_LIBRARY_PATH='/soft/libraries/netcdf/current/library:/home/zender/lib_mira'\:${LD_LIBRARY_PATH} ; ;;
+	cori* )
+	    # 20160407: Separate cori from edison binary locations to allow for different system libraries
+	    # 20160420: module load gsl, udunits required for non-interactive batch submissions by Wuyin Lin
+	    # Not necessary for interactive, nor for CSZ non-interactive, batch submisssions
+	    # Must be due to home environment differences between CSZ and other users
+	    # Loading gsl and udunits seems to do no harm, so always do it
+	    # This is equivalent to LD_LIBRARY_PATH method used for netCDF and SZIP on rhea
+	    # Why do cori/edison and rhea require workarounds for different packages?
+	    module load gsl
+	    module load udunits
+	    if [ ${spt_nm} = 'ncremap' ]; then
+		module load ncl # 20170916 OK
+	    fi # !ncremap
+	    if [ -n "${NCARG_ROOT}" ]; then
+		export PATH="${PATH}:${NCARG_ROOT}/bin"
+	    fi # !NCARG_ROOT
+	    export PATH='/global/homes/z/zender/bin_cori'\:${PATH}
+            export LD_LIBRARY_PATH='/global/homes/z/zender/lib_cori'\:${LD_LIBRARY_PATH} ; ;;
+	edison* )
+	    module load gsl
+	    module load udunits2 # 20170816 Name changed to udunits2
+	    if [ ${spt_nm} = 'ncremap' ]; then
+		module load ncl # 20170916 OK
+	    fi # !ncremap
+	    if [ -n "${NCARG_ROOT}" ]; then
+		export PATH="${PATH}:${NCARG_ROOT}/bin"
+	    fi # !NCARG_ROOT
+	    export PATH='/global/homes/z/zender/bin_edison'\:${PATH}
+            export LD_LIBRARY_PATH='/global/homes/z/zender/lib_edison'\:${LD_LIBRARY_PATH} ; ;;
+	pileus* )
+	    export PATH='/home/zender/bin'\:${PATH}
+	    export LD_LIBRARY_PATH='/opt/ACME/uvcdat-2.2-build/install/Externals/lib:/home/zender/lib'\:${LD_LIBRARY_PATH} ; ;;
+	rhea* )
+	    # 20151017: CSZ next three lines guarantee finding mpirun
+	    source ${MODULESHOME}/init/sh # 20150607: PMC Ensures find module commands will be found
+	    module unload PE-intel # Remove Intel-compiled mpirun environment
+	    module load PE-gnu # Provides GCC-compiled mpirun environment (CSZ uses GCC to build NCO on rhea)
+	    # 20160219: CSZ UVCDAT setup causes failures with mpirun, attempting a work-around
+	    if [ -n "${UVCDAT_SETUP_PATH}" ]; then
+		module unload python ompi paraview PE-intel PE-gnu
+		module load gcc
+		source /lustre/atlas1/cli900/world-shared/sw/rhea/uvcdat/latest_full/bin/setup_runtime.sh
+		export ${UVCDAT_SETUP_PATH}
+	    fi # !UVCDAT_SETUP_PATH
+	    if [ ${spt_nm} = 'ncremap' ]; then
+		# 20170825: Use module load ncl/6.3.0 (6.4.0 lacks ERWG)
+		module load ncl/6.3.0
+	    fi # !ncremap
+	    if [ -n "${NCARG_ROOT}" ]; then
+		export PATH="${PATH}:${NCARG_ROOT}/bin"
+	    fi # !NCARG_ROOT
+            export PATH='/ccs/home/zender/bin_rhea'\:${PATH}
+	    export LD_LIBRARY_PATH='/autofs/nccs-svm1_sw/rhea/.swci/0-core/opt/spack/20170224/linux-rhel6-x86_64/gcc-4.4.7/netcdf-4.4.1-uroyzcwi6fc3kerfidguoof7g2vimo57/lib:/sw/redhat6/szip/2.1/rhel6.6_gnu4.8.2/lib:/ccs/home/zender/lib_rhea'\:${LD_LIBRARY_PATH} ; ;;
+	titan* )
+	    source ${MODULESHOME}/init/sh # 20150607: PMC Ensures find module commands will be found
 	    module load gcc
-	    source /lustre/atlas1/cli900/world-shared/sw/rhea/uvcdat/latest_full/bin/setup_runtime.sh
-	    export ${UVCDAT_SETUP_PATH}
-	fi # !UVCDAT_SETUP_PATH
-	# On rhea, module load ncl installs ERWG in ${NCL_DIR}/bin
-	if [ -n "${NCL_DIR}" ]; then
-            export PATH="${NCL_DIR}/bin:${PATH}"
-	fi # !NCL_DIR
-        export PATH='/ccs/home/zender/bin_rhea'\:${PATH}
-	export LD_LIBRARY_PATH='/autofs/nccs-svm1_sw/rhea/.swci/0-core/opt/spack/20170224/linux-rhel6-x86_64/gcc-4.4.7/netcdf-4.4.1-uroyzcwi6fc3kerfidguoof7g2vimo57/lib:/sw/redhat6/szip/2.1/rhel6.6_gnu4.8.2/lib:/ccs/home/zender/lib_rhea'\:${LD_LIBRARY_PATH} ; ;;
-    titan* )
-	source ${MODULESHOME}/init/sh # 20150607: PMC Ensures find module commands will be found
-	module load gcc
-        export PATH='/ccs/home/zender/bin_titan'\:${PATH}
-	export LD_LIBRARY_PATH='/opt/cray/netcdf/4.4.1.1/GNU/49/lib:/sw/xk6/udunits/2.1.24/sl_gcc4.5.3/lib:/ccs/home/zender/lib_titan'\:${LD_LIBRARY_PATH} ; ;;
-    ys* )
-	# 20151018: Yellowstone support not yet tested in batch mode
-	# On yellowstone, module load ncl installs ERWG in /glade/apps/opt/ncl/6.4.0/intel/12.1.5/bin (not in ${NCARG_ROOT}/bin)
-	if [ -n "${NCARG_ROOT}" ]; then
-#            export PATH="${NCARG_ROOT}/bin:${PATH}"
-            export PATH="${PATH}:/glade/apps/opt/ncl/6.4.0/intel/12.1.5/bin"
-	fi # !NCARG_ROOT
-        export PATH='/glade/u/home/zender/bin'\:${PATH}
-        export LD_LIBRARY_PATH='/glade/apps/opt/netcdf/4.4.1/intel/16.0.3/lib:/glade/u/home/zender/lib'\:${LD_LIBRARY_PATH}
-esac # !HOSTNAME
+	    if [ ${spt_nm} = 'ncremap' ]; then
+		# 20170831: Use module load ncl (6.3.0 lacks ERWG)
+		module load ncl # 20170916 OK
+	    fi # !ncremap
+	    if [ -n "${NCARG_ROOT}" ]; then
+		export PATH="${PATH}:${NCARG_ROOT}/bin"
+	    fi # !NCARG_ROOT
+            export PATH='/ccs/home/zender/bin_titan'\:${PATH}
+	    export LD_LIBRARY_PATH='/opt/cray/netcdf/4.4.1.1/GNU/49/lib:/sw/xk6/udunits/2.1.24/sl_gcc4.5.3/lib:/ccs/home/zender/lib_titan'\:${LD_LIBRARY_PATH} ; ;;
+	ys* )
+	    # 20151018: Yellowstone support not yet tested in batch mode
+	    if [ ${spt_nm} = 'ncremap' ]; then
+		# On yellowstone, module load ncl installs ERWG in /glade/apps/opt/ncl/6.4.0/intel/12.1.5/bin (not in ${NCARG_ROOT}/bin)
+		module load ncl
+	    fi # !ncremap
+	    if [ -n "${NCARG_ROOT}" ]; then
+		export PATH="${PATH}:/glade/apps/opt/ncl/6.4.0/intel/12.1.5/bin"
+	    fi # !NCARG_ROOT
+            export PATH='/glade/u/home/zender/bin'\:${PATH}
+            export LD_LIBRARY_PATH='/glade/apps/opt/netcdf/4.4.1/intel/16.0.3/lib:/glade/u/home/zender/lib'\:${LD_LIBRARY_PATH} ; ;;
+	* ) # Default fall-through
+	    hrd_pth_fnd='No' ; ;;
+    esac # !HOSTNAME
+fi # !hrd_pth && !NCO_PATH_OVERRIDE
 
 # Test cases (for Charlie's machines)
 # Map-only:
@@ -199,7 +225,7 @@ esac # !HOSTNAME
 # ncremap -x TSurfStd_ct -i ${DATA}/sld/raw/AIRS.2014.10.01.202.L2.TSurfStd.Regrid010.1DLatLon.hole.nc -g ${DATA}/grids/180x360_SCRIP.20150901.nc -O ~/rgr
 # ncremap -i ${DATA}/hdf/cice_hi_flt.nc -g ${DATA}/grids/180x360_SCRIP.20150901.nc -O ~/rgr
 # ncremap -i ${DATA}/hdf/cam_time.nc -g ${DATA}/grids/180x360_SCRIP.20150901.nc -O ~/rgr
-# CESM & ACME:
+# CESM & E3SM/ACME:
 # ncremap -s ${DATA}/grids/ne120np4_pentagons.100310.nc -i ${DATA}/ne120/raw/b1850c5_m2a.cam.h0.0060-01.nc -g ${DATA}/grids/180x360_SCRIP.20150901.nc -O ~/rgr
 # ncremap -s ${DATA}/grids/ne120np4_pentagons.100310.nc -i ${DATA}/ne120/raw/b1850c5_m2a.clm2.h0.0060-01.nc -g ${DATA}/grids/180x360_SCRIP.20150901.nc -O ~/rgr
 # ncremap -i ${DATA}/ne120/raw/b1850c5_m2a.cice.h.0060-01.nc -g ${DATA}/grids/180x360_SCRIP.20150901.nc -O ~/rgr
@@ -211,7 +237,7 @@ esac # !HOSTNAME
 # New MPAS filename conventions (as of ~201612):
 # ncremap -P mpas -i ${DATA}/hdf/mpaso.hist.am.timeSeriesStatsMonthly.0001-01-01.nc -m ${DATA}/maps/map_oEC60to30_to_t62_bilin.20160301.nc -O ~/rgr
 # ncremap -P mpas -i ${DATA}/hdf/mpascice.hist.am.timeSeriesStatsMonthly.0251-01-01.nc -m ${DATA}/maps/map_oEC60to30_to_t62_bilin.20160301.nc -O ~/rgr
-# ACME benchmarks:
+# E3SM/ACME benchmarks:
 # ncremap -v FSNT,AODVIS -a conserve -i ${DATA}/ne30/raw/famipc5_ne30_v0.3_00003.cam.h0.1979-01.nc -m ${DATA}/maps/map_ne30np4_to_fv129x256_aave.20150901.nc -O ~/rgr
 # ncremap -v FSNT,AODVIS -i ${DATA}/ne30/raw/famipc5_ne30_v0.3_00003.cam.h0.1979-01.nc -s ${DATA}/grids/ne30np4_pentagons.091226.nc -g ${DATA}/grids/129x256_SCRIP.20150901.nc -O ~/rgr
 # ncremap -v FSNT,AODVIS -a tempest -i ${DATA}/ne30/raw/famipc5_ne30_v0.3_00003.cam.h0.1979-01.nc -s ${DATA}/grids/ne30np4_pentagons.091226.nc -g ${DATA}/grids/129x256_SCRIP.20150901.nc -O ~/rgr
@@ -261,7 +287,7 @@ lbr_vrs=$(ncks --library 2>&1 > /dev/null | awk '{print $6}')
 
 # Detect and warn about mixed modules (for Qi Tang 20170531)
 if [ "${drc_spt}" != "${drc_nco}" ]; then
-    echo "WARNING: Possible mixture of NCO versions from different locations. Script ${spt_nm} is from directory ${drc_spt} while NCO binaries are from directory ${drc_nco}. Normally the script and binaries are from the same executables directory. This WARNING may be safely ignore for customized scripts and/or binaries that the user has intentionally split into different directories."
+    echo "WARNING: Possible mixture of NCO versions from different locations. Script ${spt_nm} is from directory ${drc_spt} while NCO binaries are from directory ${drc_nco}. Normally the script and binaries are from the same executables directory. This WARNING may be safely ignored for customized scripts and/or binaries that the user has intentionally split into different directories."
     echo "HINT: Conflicting script and binary directories may result from 1) Hardcoding an NCO script and/or binary pathname, 2) Having incomplete NCO installations in one or more directories in the \$PATH environment variable, 3) Loading multiple NCO modules with different locations."
 fi # drc_spt
 
@@ -377,7 +403,7 @@ function fnc_usg_prn { # NB: dash supports fnc_nm (){} syntax, not function fnc_
     echo "Command-line options [long-option synonyms in ${fnt_tlc}italics${fnt_nrm}]:"
     echo "${fnt_rvr}-3${fnt_nrm}          Output file format CLASSIC (netCDF3 classic) [${fnt_tlc}fl_fmt, file_format=classic${fnt_nrm}]"
     echo "${fnt_rvr}-4${fnt_nrm}          Output file format NETCDF4 (netCDF4 extended) [${fnt_tlc}fl_fmt, file_format=netcdf4${fnt_nrm}]"
-    echo "${fnt_rvr}-5${fnt_nrm}          Output file format 64BIT_DATA (pnetCDF3) [${fnt_tlc}fl_fmt, file_format=64bit_data${fnt_nrm}]"
+    echo "${fnt_rvr}-5${fnt_nrm}          Output file format 64BIT_DATA (netCDF3 CDF5) [${fnt_tlc}fl_fmt, file_format=64bit_data${fnt_nrm}]"
     echo "${fnt_rvr}-6${fnt_nrm}          Output file format 64BIT_OFFSET (netCDF3 64bit) [${fnt_tlc}fl_fmt, file_format=64bit_offset${fnt_nrm}]"
     echo "${fnt_rvr}-7${fnt_nrm}          Output file format NETCDF4_CLASSIC (netCDF4 classic) [${fnt_tlc}fl_fmt, file_format=netcdf4_classic${fnt_nrm}]"
     echo "${fnt_rvr}-a${fnt_nrm} ${fnt_bld}alg_typ${fnt_nrm}  Algorithm for weight generation (default ${fnt_bld}${alg_typ}${fnt_nrm}) [${fnt_tlc}alg_typ, algorithm, regrid_algorithm${fnt_nrm}]"
@@ -583,6 +609,12 @@ if [ ${vrs_prn} = 'Yes' ]; then
     printf "Config: ${spt_nm} running from directory ${drc_spt}\n"
     printf "Config: calling NCO binaries in directory ${drc_nco}\n"
     printf "Config: binaries linked to netCDF library version ${lbr_vrs}\n"
+    if [ "${hrd_pth_fnd}" = 'Yes' ]; then
+	printf "Config: Employ NCO machine-dependent hardcoded paths/modules for ${HOSTNAME}\n"
+	printf "Config: (Turn-off NCO hardcoded paths with \"export NCO_PATH_OVERRIDE=No\")\n"
+    else
+	printf "Config: No hardcoded path/module overrides\n"
+    fi # !hrd_pth_fnd
     tst_cmd=${wgt_exe_esmf}
     cmd_wgt=`command -v ${tst_cmd} 2> /dev/null`
     if [ $? -eq 0 ]; then
@@ -723,7 +755,7 @@ if [ -n "${fl_fmt}" ]; then
 	nco_fl_fmt='--fl_fmt=netcdf4'
 	wgt_opt_esmf="${wgt_opt_esmf} --netcdf4"
     fi # !fl_fmt
-    if [ "${fl_fmt}" = '5' ] || [ "${fl_fmt}" = '64bit_data' ] || [ "${fl_fmt}" = 'pnetcdf' ]; then
+    if [ "${fl_fmt}" = '5' ] || [ "${fl_fmt}" = '64bit_data' ] || [ "${fl_fmt}" = 'cdf5' ]; then
 	nco_fl_fmt='--fl_fmt=64bit_data'
 	wgt_opt_esmf="${wgt_opt_esmf} --64bit_offset" # Change when ERWG supports netCDF5
     fi # !fl_fmt
@@ -1116,6 +1148,7 @@ if [ ${dbg_lvl} -ge 2 ]; then
     printf "dbg: grd_sng  = ${grd_sng}\n"
     printf "dbg: grd_src  = ${grd_src}\n"
     printf "dbg: hdr_pad  = ${hdr_pad}\n"
+    printf "dbg: hrd_pth  = ${hrd_pth}\n"
     printf "dbg: job_nbr  = ${job_nbr}\n"
     printf "dbg: in_fl    = ${in_fl}\n"
     printf "dbg: map_fl   = ${map_fl}\n"
diff --git a/data/string.nco b/data/string.nco
index f6f11e4..bf2672a 100644
--- a/data/string.nco
+++ b/data/string.nco
@@ -25,11 +25,7 @@ ss_ram(4:7)="Buy"s;
 ss_ram(8:9)={"bb"s,"cc"s};
 ss_ram(10:11)=lon at str(2:3);
 ss_ram(12:19:2)="two_stride"s;
-ss_ram(13:19:2)=greek(0);
-
- 
+ss_ram(13:19:2)=greek(0); 
 ram_write(ss_ram); 
 
-
-
 nbr_err_ttl=0;
diff --git a/debian/changelog b/debian/changelog
index 203665d..0eb8f8b 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+nco (4.6.9-1) unstable; urgency=low
+
+  * new upstream version CDF5, CMake, MPAS-O/I
+
+ -- Charlie Zender <zender at uci.edu>  Mon, 18 Sep 2017 12:25:25 -0700
+
 nco (4.6.8-1) unstable; urgency=low
 
   * new upstream version ncap2 cnk, ncks dt_fmt, seasons, msk=none, ncwa_hyp_msk_wgt bug
diff --git a/doc/ANNOUNCE b/doc/ANNOUNCE
index c2a2689..9bada1b 100644
--- a/doc/ANNOUNCE
+++ b/doc/ANNOUNCE
@@ -1,128 +1,99 @@
 $Header$ -*-text-*-
 
-The netCDF Operators NCO version 4.6.8 are ready. 
+The netCDF Operators NCO version 4.6.9 are released. 
 
 http://nco.sf.net (Homepage, Mailing lists)
 http://github.com/nco (Source Code, Releases, Developers)
 
 What's new?
-Many new features in 4.6.8 are, as usual, related to climatologies and
-regridding. ncclimo can now be given an explicit list of seasons to
-compute instead of, or in addition to, MAM,JJA,SON,DJF. ncremap has
-improved mask and format handling. There are also a collection of
-minor bugfixes and improvements, including JSON tweaks, ISO8601
-printing, and GCC7 and netCDF 4.5.x compatibility. 
-
-This release includes an important ncwa fix that prevents incorrect
-answers when hyperslabs are used with masks and/or weights.
-Upgrade if you use ncwa with -d hyperslabs.
-
-PLEASE READ THIS IF YOU USE NCKS TO PRINT DATA:
-The ncks default printing will change to CDL in NCO 4.7.0.
-For 20+ years ncks has, by default, printed the text representation
-of a file in what we now call "traditional" mode. This mode best
-facilitates meticulous data examination in line-by-line format.
-ncdump produces CDL format that is more useful for most NCO users.
-ncdump has always printed clean CDL and for many years there was
-little point in defaulting ncks printed output to CDL.
-However, ncks CDL mode now rivals ncdump in many ways.
-In particular, ncks --cln now prints times as human-readable calendar
-dates, the last ncdump feature that I used which ncks lacked. 
-Hence in NCO 4.7.0 ncks default printed output will change to CDL. 
-Then one will type simply "ncks" instead of "ncks --cdl". 
-We just added a new "--trd" option to print traditional output.
-Add --trd to your scripts and their behavior will not change.
-Otherwise your printing scripts will start to print CDL.
-You have been warned :)
-
-Work on NCO 4.7.0 has commenced. Planned changes include printing
-CDL by default, and planned improvements include support for conda
-installs on MS Windows, and more ncclimo and ncremap features.
+Version 4.6.9 fixes a few issues has no new major features.
+Most improvements relate to CDF5 handling and CMake builds.
+Also, ncks now prints CDL by default.
+
+I shelved my plans to skip 4.6.9 because we discovered a
+consequential bug with the netCDF CDF5 implementation.
+This led to a flurry of mini-features to diagnose and warn
+users who might inadvertently stumble on corrupt CDF5 data.
+Understanding the ramifications of this CDF5 bug is ongoing.
+The best case scenario now, after a month of investigation,
+is that Unidata will soon declare the bug solved and put the 
+appropriate patches in netCDF 4.5.0. We may make final
+adjustments to diagnose/handle CDF5 issues based on those
+patches, and release NCO 4.7.0 soon thereafter.
+
+Work on NCO 4.7.0 has commenced. Planned changes include
+better diagnosis and workarounds for the netCDF CDF5 bug,
+and more ncclimo and ncremap features, and CMake polishing. 
 
 Enjoy,
 Charlie
 
 NEW FEATURES (full details always in ChangeLog):
 
-A. ncap2 now fully implements NCO chunking maps and policies.
-   Previously ncap2 preserved existing chunking in variables,
-   but could not be told to do anythin different. Now all command-line
-   chunking behavior supported by NCO works in ncap2.
-   ncap2 --cnk_plc=unchunk -S cnk.nco in.nc4 out.nc4
-   http://nco.sf.net/nco.html#cnk
-
-B. ncks CDL printing supports finer-grained control of date formats,
-   including an ISO 8601 "T" option. Previously ncks printed
-   UDUnits-compliant times as dates when invoked with the --cdl and
-   --cal options. A third option, --dt_fmt, now exposes finer
-   control of the format with short, regular, and ISO8601 options:
-   ncks -H -m -v time_bnds -C --cdl --dt_fmt=1 ~/nco/data/in.nc
-   ncks -H -m -v time_bnds -C --cdl --dt_fmt=2 ~/nco/data/in.nc
-   ncks -H -m -v time_bnds -C --cdl --dt_fmt=3 ~/nco/data/in.nc
-   dt_fmt:   Output:
-   0,1       1964-03-13 09:08:16 (Default, short format)
-   2	     1964-03-13 09:08:16.000000 (regular format)
-   3         1964-03-13T09:08:16.000000 (ISO8601 "T" format)
-   Note that --dt_fmt automatically implies --cal.
-   http://nco.sf.net/nco.html#cln
-
-C. Some data are best evaluated with custom-defined seasons, e.g., JFM
-   instead of DJF, or two-month seasons such as FM or ON. ncclimo now
-   supports up to eleven (and counting) seasons, although by default it
-   only computes MAM, JJA, SON, and DJF. As of NCO 4.6.8, use the
-   seasons option to specify additional or alternate seasons: 
-   ncclimo --seasons=jfm,jas,ann -s 1980 -e 1983 -i drc_in -o drc_out
-   Use "–seasons=none" to completely turn-off seasonal and annual-mean
-   climatologies:
-   ncclimo --seasons=none -s 1980 -e 1983 -i drc_in -o drc_out
+A. CDF5: NCO warns when CDF5 files may be corrupted by the newly
+   discovered (!) netCDF CDF5 bug: http://nco.sf.net#bug_cdf5
+
+B. CDF5: All NCO operators now fully support CDF5.
+   Previously some operators would not output it.
+   Now, all output CDF5 with the -5 switch:
+   ncra -5 in*.nc out.nc
+   This includes auto-conversion.
+   ncks converts among netCDF's five-different binary formats:
+   ncks [-3 -4 -5 -6 -7] in.nc out.nc
+   http://nco.sf.net/nco.html#autoconversion
+
+C. CDF5: In support of detecting the CDF5 bug, and also for more
+   general use, are new ncks features to print, in CDL comments,
+   the uncompressed RAM size of every variable (when dbg_lvl >= 1).
+   When dbg_lvl >= 2, the RAM size of all the data in a file,
+   and the variable ID of each variable, are also printed.
+   ncks -D 1 -v one ~/nco/data/in.nc
+   ncks -D 2 -v one ~/nco/data/in.nc
+   ncks -M -D 2 -v one ~/nco/data/in.nc
+   http://nco.sf.net#cdl
+
+D. Pedro Vicente has generously contributed a CMake build-engine. 
+   CMake can build NCO on any architecture, including MS Windows,
+   and makes available nearly all important features, including ncap2, 
+   GSL, DAP, and UDUnits2. A few esoteric NCO features (intrinsic math
+   functions like erf(),erff(),gamm()...) remain to be implemented. 
+   Please give us feedback on any wrinkles in the CMake build. 
+   To build with CMake and install in /usr/local: 
+   cd nco/cmake
+   cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local
+   make
+   sudo make install
+   Additional examples in cmake/build.bat
+   http://nco.sf.net#bld
+
+E. ncks now prints CDL by default.
+   Advance notice of this change was first given in May.
+   Use the --trd switch to print with "traditional" syntax:
+   ncks in.nc
+   ncks --trd in.nc
+   http://nco.sf.net/nco.html#trd
+   http://nco.sf.net/nco.html#cdl
+
+F. ncclimo and ncremap have changes "under-the-hood".
+   E3SM/ACME users may notice cosmetic differences.
+   Hard-coded paths on DOE machines can now be avoided by
+   export NCO_PATH_OVERRIDE='No'
+   in the shell where ncclimo/ncremap are invoked.
    http://nco.sf.net/nco.html#ncclimo
 
-D. ncremap --msk_src and --msk_dst options now accept the value 'none'
-   to prevent the regridder from interpreting any variable as a mask
-   in files from which source or destination grids are inferred.
-   ncremap -i ~/ed.nc --msk_src=none -d ~/ed.nc -o ~/foo.nc
-   ncremap -i ~/ed.nc -d ~/ed.nc --msk_dst=none -o ~/foo.nc
-   http://nco.sf.net/nco.html#ncremap
-
-E. ncremap now accepts standard NCO arguments for output file type.
-   The -3, -4, -5, -6, and -7 flags, or their long-option equivalents
-   --fl_fmt=fmt or --file_format=fmt where fmt is classic, netcdf4,
-   64bit_data, 64bit_offset, or netcdf4_classic (or some synonyms)
-   causes the output files created by ncremap, e.g., the regridded
-   files and the grid files, to have the requested format.
-   The ERWG and TempestRemap weight-generators support only a subset
-   of these formats.
-   ncremap -7 -i ~/deepthroat.nc -d ~/wapo.nc -o ~/foo.nc
-   http://nco.sf.net/nco.html#fl_fmt_ncremap
-
 BUG FIXES:
 
-A. The ncap2 implementation of mibs()/mabs()/mebs() is fixed.
-   Thanks to Dominique Briand for reporting this.
-
-B. JSON now prints "null" instead of "NaN" for non-normal
-   floating-point values like NaN and Infinity.
-   This makes output fully JSON-compliant, although it simultaneously 
-   makes it impossible for JSON parsers to determine whether a "null"
-   floating-point value is NaN, or +/-Infinity.
-   Thanks to Bob Simons for noticing this.
+A. ncclimo false-positive messages about 'ANN' eliminated
 
-C. Fix longstanding (since ~4.2.3) ncwa issue where hyperslabs
-   were not correctly handled for masks and weights. Hyperslabs
-   that started after the first array element could lead to incorrect
-   answers. Thanks to Tony Leboissetier for reporting the problem,
-   and to Pedro Vicente for fixing it.   	    
-   http://nco.sf.net#bug_ncwa_hyp_msk_wgt
+B. ncclimo/ncremap updated udunits2 module for edison
 
-D. Ensure ncclimo and ncremap load netCDF libraries 4.4.x+ on
-   certain clusters so that CDF5 capabilities always available.
-   Thanks to Milena Veneziani for reporting this.
+Full release statement at http://nco.sf.net/ANNOUNCE
 
 KNOWN PROBLEMS DUE TO NCO:
 
    This section of ANNOUNCE reports and reminds users of the
    existence and severity of known, not yet fixed, problems. 
-   These problems occur with NCO 4.6.8 built/tested under
+   These problems occur with NCO 4.6.9 built/tested under
    MacOS 10.12.6 with netCDF 4.4.1.1 on HDF5 1.10.1 and with
    Linux with netCDF 4.5.1-development (20170811) on HDF5 1.8.19.
 
diff --git a/doc/ChangeLog b/doc/ChangeLog
index 2afe1f3..43d9be0 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -1,5 +1,191 @@
+2017-09-18  Charlie Zender  <zender at uci.edu>
+
+	* NCO 4.6.9 release procedure:
+	cd ~/nco;git commit -a -m 'Version 4.6.9 final changes';git push
+	git tag -a 4.6.9 -m 'CDF5, CMake, MPAS-O/I';git push --tags
+
+	* Document NCO_PATH_OVERRIDE in ncclimo/ncremap screen output
+
+2017-09-17  Charlie Zender  <zender at uci.edu>
+
+	* Load ncl modules for cori, edison, rhea, titan only in ncremap not ncclimo
+
+2017-09-16  Charlie Zender  <zender at uci.edu>
+
+	* Update and auto-load ncl modules for cori, edison, rhea, titan
+
+	* Fix ncremap bracket error
+
+2017-09-15  Charlie Zender  <zender at uci.edu>
+
+	* NCO 4.6.9-beta01 release procedure:
+	cd ~/nco;git commit -a -m 'Version 4.6.9-beta01 final changes';git push
+	git tag -a 4.6.9-beta01 -m 'Documentation for release';git push --tags
+
+	* Fix printing of CDL summary strings and RAM sizes
+
+	* Turn-off var_lst_rx_xtr so ncclimo 4.6.9-alphaXX works with 4.6.8 binaries
+
+	* Echo hardpath/NCO_PATH_OVERRIDE status as Config:
+
+2017-09-14  Charlie Zender  <zender at uci.edu>
+
+	* NCO 4.6.9-alpha05 release procedure:
+	cd ~/nco;git commit -a -m 'Version 4.6.9-alpha05 final changes';git push
+	git tag -a 4.6.9-alpha05 -m 'CMake hardening;CDF5 bug diagnosis;NCO_PATH_OVERRIDE';git push --tags
+
+	* De-activate CDF5 workaround
+
+	* If NCO_PATH_OVERRIDE is set to 'No' do not override user PATH with database of HPCC machine-dependent paths
+
+	* Workaround fails because nc_close() hangs. Dang.
+
+	* Implement CDF5 bug-workaround to use descending qsort on -v timeMonthly_avg_vertVelocityTop,timeMonthly_avg_normalVelocity
+
+	* Deprecate ncks --get_grp_info, --get_file_info, -z (GET_LIST)
+
+	* Modify trv_tbl_srt() to allow ascending and descending qsort()
+
+2017-09-13  Charlie Zender  <zender at uci.edu>
+
+	* Refine and test CDF5 diagnostics
+
+	* CDL output ID = xxx in comments when dbg_lvl >= 2
+
+	* Add/use nco_inq_path() to improve CDF5 diagnostics
+
+2017-09-12  Charlie Zender  <zender at uci.edu>
+
+	* Passes all expected regression tests
+
+	* Allow ncks thr_nbr > 1 only when regridder is activated
+
+	* Automatically detect and warn about possibly corrupt CDF5 files in nco_close()
+
+2017-09-09  Charlie Zender  <zender at uci.edu>
+
+	* NCO 4.6.9-alpha04 release procedure:
+	cd ~/nco;git commit -a -m 'Version 4.6.9-alpha04 final changes';git push
+	git tag -a 4.6.9-alpha04 -m 'CMake hardening;Fix Traditional bld/Makefile';git push --tags
+
+	* Travis Linux clang build of ncap2 fails after upgrade to Ubuntu Trusty due to unresolved
+	link errors to __kmpc_*() (OpenMP) because ncap2 erroneously links with g++ instead of clang
+
+	* Change custom build to use simple VERSION string
+
+	* Fix Custom build on MacOSX by modifying ARFLAGS
+
+	* Distinguish MD5 output with different debugging levels
+
+	* Add nco_fl_sz_est() and print smr_fl_sz_sng to CDL
+
+	* clang builds on Linux does not build ncap2 because NCO_GSL_VERSION not defined
+
+	* Add ncks --bld, --build_engine to print NCO_BUILDENGINE
+
+	* Define NCO_BUILDENGINE for all three build types
+
+2017-09-07  Charlie Zender  <zender at uci.edu>
+
+	* NCO 4.6.9-alpha03 release procedure:
+	cd ~/nco;git commit -a -m 'Version 4.6.9-alpha03 final changes';git push
+	git tag -a 4.6.9-alpha03 -m 'CMake implementation;data size estimates with ncks -D 2;--lst_xtr';git push --tags
+
+	* Fix calculation of ram_sz_crr in nco_prn()
+
+2017-09-05  Charlie Zender  <zender at uci.edu>
+
+	* Add CDF5 presence to ncks -r report
+
+	* Refine CMake templates
+
+	* CMake implementation from Pedro
+
+	* round() filesize estimates instead of truncating them
+
+2017-09-04  Charlie Zender  <zender at uci.edu>
+
+	* fnc_nm (only!) must be explicit shared for g++ 4.8.4 (travis)
+
+	* Update travis to work with Ubuntu 14.04, move from libnetcdf6 to libnetcdfc7
+
+	* Discriminate between KiB and KB (kibibytes and kilobytes) in diagnostics
+
+2017-09-01  Charlie Zender  <zender at uci.edu>
+
+	* ncks report computed data size when dbg_lvl >= 2
+
+2017-08-31  Charlie Zender  <zender at uci.edu>
+
+	* Add stubs to compute/report total expected uncompressed data size
+
+2017-08-30  Charlie Zender  <zender at uci.edu>
+
+	* Clean-up MD5 messages and nco_fl_utl.c INFO messages
+
+2017-08-29  Charlie Zender  <zender at uci.edu>
+
+	* ncclimo -v var_lst_rx finally works as intended!
+
+	* ncclimo fix --lst_xtr to exclude bounds coordinates so, e.g., time_bnds not explicitly
+	passed to seasonal climos that have replaced it	with climatology_bounds
+
+2017-08-25  Charlie Zender  <zender at uci.edu>
+
+	* Add --lst_xtr stubs to ncclimo to expand var_lst rx
+
+	* Add ncks --lst_xtr to print extraction list for ncremap and ncclimo
+
+	* ncremap/ncclimo correct ERWG location for module load ncl/6.3.0 on rhea
+
+	* Use appropriate fl_out_fmt to print ncgen hint in CDL
+
+2017-08-24  Charlie Zender  <zender at uci.edu>
+
+	* Add/clarify syntax to some regridder HINTs
+
+	* Put MD5 in operator self-help for ncks
+
+2017-08-23  Charlie Zender  <zender at uci.edu>
+
+	* NCO 4.6.9-alpha02 release procedure:
+	cd ~/nco;git commit -a -m 'Version 4.6.9-alpha02 final changes';git push
+	git tag -a 4.6.9-alpha02 -m 'support CDF5 autoconversion in ncks;CDF5 in all operators';git push --tags
+
+2017-08-22  Charlie Zender  <zender at uci.edu>
+
+	* Implement auto-conversion for CDF5 destination files
+
+2017-08-20  Charlie Zender  <zender at uci.edu>
+
+	* Skip autoconversion of atomic types to CDF5 destination files
+
+	* Add explicitly supported suffixes .nc5, .nc6, .nc7 to ncclimo, nco.texi, ncecat.c
+
+	* Fix getopt() --64bit_offset code path
+
+	* Implement CDF5 choices in getopt() for all operators
+
+2017-08-18  Charlie Zender  <zender at uci.edu>
+
+	* NCO 4.6.9-alpha01 release procedure:
+	cd ~/nco;git commit -a -m 'Version 4.6.9-alpha01 final changes';git push
+	git tag -a 4.6.9-alpha01 -m 'default print CDL, ANN false-positive, edison module udunits2';git push --tags
+
+	* Add --trd where needed in regression tests
+
+	* Change default printing from TRD to CDL
+
+2017-08-17  Charlie Zender  <zender at uci.edu>
+
+	* Replace ACME by E3SM or ACME/E3SM as appropriate
+
 2017-08-16  Charlie Zender  <zender at uci.edu>
 
+	* Fix ncclimo false-positive warning about ANN
+
+	* ncclimo on edison now loads module udunits2 not udunits
+
 	* NCO 4.6.8 release procedure:
 	cd ~/nco;git commit -a -m 'Version 4.6.8 final changes';git push
 	git tag -a 4.6.8 -m 'ncap2 cnk, ncks dt_fmt, seasons, msk=none,	ncwa_hyp_msk_wgt bug';git push --tags
diff --git a/doc/VERSION b/doc/VERSION
index d3acad0..ded82a9 100644
--- a/doc/VERSION
+++ b/doc/VERSION
@@ -1 +1 @@
-4.6.8
+4.6.9
diff --git a/doc/debian.txt b/doc/debian.txt
index e76681e..1cd051a 100644
--- a/doc/debian.txt
+++ b/doc/debian.txt
@@ -29,18 +29,18 @@ apt-get install dh-make debhelper devscripts fakeroot gnupg debian-policy develo
 
 2. Debian build procedure recommends placing entire package source in
    subdirectory of main package. 
-   For starters, we wish to create .debs of tagged releases, e.g., nco-4.6.8
-   First we create a clean source distribution of nco and place it in nco-4.6.8
+   For starters, we wish to create .debs of tagged releases, e.g., nco-4.6.9
+   First we create a clean source distribution of nco and place it in nco-4.6.9
    Until we know what is necessary, however, we just copy a snapshot
    
    2.1 Clean all build files from development directory
 
 cd ~/nco;make distclean;cd bld;make clean;cd ~
 tar cvzf ./nco/nco.tar.gz ./nco/*
-cd ~/nco;tar xvzf nco.tar.gz;mv nco nco-4.6.8
-/bin/rm nco.tar.gz;tar cvzf nco-4.6.8.tar.gz ./nco-4.6.8/*
-cd ~/nco/nco-4.6.8
-dh_make -e zender at uci.edu -f ../nco-4.6.8.tar.gz
+cd ~/nco;tar xvzf nco.tar.gz;mv nco nco-4.6.9
+/bin/rm nco.tar.gz;tar cvzf nco-4.6.9.tar.gz ./nco-4.6.9/*
+cd ~/nco/nco-4.6.9
+dh_make -e zender at uci.edu -f ../nco-4.6.9.tar.gz
 
     2.2 The preceding steps created template debian files for a .deb,
     Those files now reside in ~/nco/debian.
@@ -55,7 +55,7 @@ dh_make -e zender at uci.edu -f ../nco-4.6.8.tar.gz
    from previous build
 
    cd ~/nco;/bin/rm *.gz
-   cd ~/nco/nco-4.6.8
+   cd ~/nco/nco-4.6.9
    dpkg-buildpackage -rfakeroot > foo 2>&1
    dpkg-buildpackage -rsudo > foo 2>&1
 
@@ -84,33 +84,33 @@ patch -p0 < nco_X.Y.Z-3.diff   # Patch destination with Debian diff
    make tags
 # Put cute version-specific string in nco_ctl.c:nco_nmn_get()
 # Install correct version numbers before updating Debian
-# tags-query replace 4.6.8 with X.Y.Z+1
+# tags-query replace 4.6.9 with X.Y.Z+1
 # If tags-query replace does not work, be sure to manually change
 # versions in configure.ac, debian/files, doc/ANNOUNCE, doc/debian.txt,
 # doc/index.shtml, doc/nco.texi, bld/nco_dst.pl, doc/VERSION
 # 20141201: Change NCO_VERSION_PATCH in src/nco.h!!!!!!!!!!!!!!!!!!!!!!
-   cd ~/nco/debian;dch -b --force-distribution --distribution=unstable -v 4.6.8-1 # Update changelog (-b forces this version number)
+   cd ~/nco/debian;dch -b --force-distribution --distribution=unstable -v 4.6.9-1 # Update changelog (-b forces this version number)
    emacs ~/nco/bld/nco.spec # Update changelog
 # For unknown reason rules file may lose its executable bit
    chmod a+x ~/nco/debian/rules
 # Rebuild autotools so new version # propagates
    cd ~/nco;aclocal;autoheader;automake --foreign;autoconf
 # Save all files in emacs before tagging
-   ${HOME}/nco/bld/nco_dst.pl --dbg=2 --bld --cln nco-4.6.8
+   ${HOME}/nco/bld/nco_dst.pl --dbg=2 --bld --cln nco-4.6.9
 # Upload tarball to SF https://sourceforge.net/projects/nco/files 
-   cd;scp dust.ess.uci.edu:/var/www/html/nco/src/nco-4.6.8.tar.gz .
+   cd;scp dust.ess.uci.edu:/var/www/html/nco/src/nco-4.6.9.tar.gz .
 
 7. Ubuntu PPA
 https://help.launchpad.net/Packaging/PPA
-dput NCO nco_4.6.8-2~ppa1_source.changes
+dput NCO nco_4.6.9-2~ppa1_source.changes
 sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com
 
 # Location of build diagnostics for mentors to help 
-http://dust.ess.uci.edu/nco/src/nco_4.6.8-1.dpkg-buildpackage.txt
-http://dust.ess.uci.edu/nco/src/nco_4.6.8-1.dsc
-http://dust.ess.uci.edu/nco/src/nco_4.6.8-1_i386.changes
-http://dust.ess.uci.edu/nco/src/nco_4.6.8-1_i386.deb
-http://dust.ess.uci.edu/nco/src/nco_4.6.8.orig.tar.gz
+http://dust.ess.uci.edu/nco/src/nco_4.6.9-1.dpkg-buildpackage.txt
+http://dust.ess.uci.edu/nco/src/nco_4.6.9-1.dsc
+http://dust.ess.uci.edu/nco/src/nco_4.6.9-1_i386.changes
+http://dust.ess.uci.edu/nco/src/nco_4.6.9-1_i386.deb
+http://dust.ess.uci.edu/nco/src/nco_4.6.9.orig.tar.gz
 
 # Becoming a Debian developer
 http://www.debian.org/devel/join/newmaint
@@ -164,31 +164,31 @@ Matej Vela <vela at debian.org>, Daniel Baumann <daniel at debian.org>, Warren Turkal
 # export LD_LIBRARY_PATH=/usr/lib:/lib:/usr/X11R6/lib
 # sudo aptitude install antlr bison flex gsl-bin libgsl0-dev libantlr-dev netcdf-bin libnetcdfc7 libnetcdf-dev texinfo libcurl4-gnutls-dev libexpat1-dev libxml2-dev udunits-bin libudunits2-0 libudunits2-dev
 cd ~/nco;cvc
-sudo /bin/rm -rf ${DATA}/nco-4.6.8 ${DATA}/nco_4.6.8* ${DATA}/debian # Cleanup last build. sudo necessary for removal because dpkg-buildpackage uses sudo?
-# cd ${DATA};cvs -d zender at nco.cvs.sf.net:/cvsroot/nco export -kkv -r nco-4.6.8-1 -d nco-4.6.8 nco # Export based on tag
-cd ${DATA};cvs -d zender at nco.cvs.sf.net:/cvsroot/nco export -kkv -D "1 second ago" -d nco-4.6.8 nco # Export most recent
-tar cvzf ./nco_4.6.8.orig.tar.gz --exclude='nco-4.6.8/debian*' --exclude='.cvsignore' --exclude='ncap_lex.c' --exclude='ncap_yacc.[ch]' ./nco-4.6.8 
-/bin/rm -rf ${DATA}/nco-4.6.8 # Remove cvs-exported directory
-tar xvzf ./nco_4.6.8.orig.tar.gz # Untar to get directory without excluded files
-mkdir -p ${DATA}/nco-4.6.8/debian/source;cd ~/nco/debian;/bin/cp changelog compat control convert copyright doc-base files info rules ${DATA}/nco-4.6.8/debian;cd ~/nco/debian/source;/bin/cp format ${DATA}/nco-4.6.8/debian/source # Replace debian directory with _CURRENT_ (main trunk) settings
+sudo /bin/rm -rf ${DATA}/nco-4.6.9 ${DATA}/nco_4.6.9* ${DATA}/debian # Cleanup last build. sudo necessary for removal because dpkg-buildpackage uses sudo?
+# cd ${DATA};cvs -d zender at nco.cvs.sf.net:/cvsroot/nco export -kkv -r nco-4.6.9-1 -d nco-4.6.9 nco # Export based on tag
+cd ${DATA};cvs -d zender at nco.cvs.sf.net:/cvsroot/nco export -kkv -D "1 second ago" -d nco-4.6.9 nco # Export most recent
+tar cvzf ./nco_4.6.9.orig.tar.gz --exclude='nco-4.6.9/debian*' --exclude='.cvsignore' --exclude='ncap_lex.c' --exclude='ncap_yacc.[ch]' ./nco-4.6.9 
+/bin/rm -rf ${DATA}/nco-4.6.9 # Remove cvs-exported directory
+tar xvzf ./nco_4.6.9.orig.tar.gz # Untar to get directory without excluded files
+mkdir -p ${DATA}/nco-4.6.9/debian/source;cd ~/nco/debian;/bin/cp changelog compat control convert copyright doc-base files info rules ${DATA}/nco-4.6.9/debian;cd ~/nco/debian/source;/bin/cp format ${DATA}/nco-4.6.9/debian/source # Replace debian directory with _CURRENT_ (main trunk) settings
 #export DEB_BUILD_OPTIONS='disable-dap-netcdf disable-netcdf4 disable-udunits2'; # Disable optional packages based on available Debian support
-#cd ${DATA}/nco-4.6.8;dpkg-buildpackage -rsudo -uc -us > ~/foo.nco 2>&1 # -uc -us: Do not sign changes or source files
-#cd ${DATA}/nco-4.6.8;dpkg-buildpackage -rsudo -sa > ~/foo.nco 2>&1 # -sa: Include _orig.tar.gz in .changes 
-cd ${DATA}/nco-4.6.8;dpkg-buildpackage -rsudo > ~/foo.nco 2>&1
+#cd ${DATA}/nco-4.6.9;dpkg-buildpackage -rsudo -uc -us > ~/foo.nco 2>&1 # -uc -us: Do not sign changes or source files
+#cd ${DATA}/nco-4.6.9;dpkg-buildpackage -rsudo -sa > ~/foo.nco 2>&1 # -sa: Include _orig.tar.gz in .changes 
+cd ${DATA}/nco-4.6.9;dpkg-buildpackage -rsudo > ~/foo.nco 2>&1
 sudo dpkg --remove nco
-sudo dpkg --install ${DATA}/nco_4.6.8-1_*.deb
+sudo dpkg --install ${DATA}/nco_4.6.9-1_*.deb
 cd ~/nco/bld;MY_BIN_DIR=/usr/bin ../bm/nco_bm.pl --regress
 # http://lintian.debian.org/full/zender@uci.edu.html
-lintian ${DATA}/nco_4.6.8-1_*.deb
-ls -l ${DATA}/nco_4.6.8*
+lintian ${DATA}/nco_4.6.9-1_*.deb
+ls -l ${DATA}/nco_4.6.9*
 m ~/foo.nco
 # Upload Ubuntu (rather than Debian) packages to websites
-scp ${DATA}/nco_4.6.8* dust.ess.uci.edu:/var/www/html/nco/src
-scp ${DATA}/nco_4.6.8* zender,nco at web.sf.net:/home/project-web/nco/htdocs/src
+scp ${DATA}/nco_4.6.9* dust.ess.uci.edu:/var/www/html/nco/src
+scp ${DATA}/nco_4.6.9* zender,nco at web.sf.net:/home/project-web/nco/htdocs/src
 # NB: Make sure RPMs build before uploading to debian, since changing
 # Debian versions is a PITA
 # NB: Only upload pbuilder Debian Sid (not personal Ubuntu) .deb builds to Debian mentors
-# cd ${DATA};dupload -t mentors nco_4.6.8-1_*.changes
+# cd ${DATA};dupload -t mentors nco_4.6.9-1_*.changes
 bsrc # Reset shell environment for regular development
 
 # New build system #2
@@ -202,52 +202,52 @@ DIST=sid sudo pbuilder update # Update chroot before building package in it
 # dget http://ftp.debian.org/debian/pool/main/n/nco/nco_3.9.0-1.dsc
 # dget http://ftp.debian.org/debian/pool/main/n/netcdf/netcdf_3.6.1-1.dsc
 # apt-get source nco # Get package source
-sudo /bin/rm /var/cache/pbuilder/result/nco_4.6.8* # Cleanup prior build
+sudo /bin/rm /var/cache/pbuilder/result/nco_4.6.9* # Cleanup prior build
 # To pass DEB_BUILD_OPTIONS to pbuilder while using sudo, one must first
 # modify sudoers with visudo to prevent sudo from resetting environment
 #export DEB_BUILD_OPTIONS='disable-dap-netcdf disable-netcdf4 disable-udunits2'; # Disable optional packages based on available Debian support
-cd ${DATA};DIST=sid sudo pbuilder build nco_4.6.8-1.dsc > ~/foo.nco.pbuilder 2>&1
-cd /var/cache/pbuilder/result;debsign -k6F635D10 nco_4.6.8-1_*.changes
-lintian /var/cache/pbuilder/result/nco_4.6.8-1_*.deb
+cd ${DATA};DIST=sid sudo pbuilder build nco_4.6.9-1.dsc > ~/foo.nco.pbuilder 2>&1
+cd /var/cache/pbuilder/result;debsign -k6F635D10 nco_4.6.9-1_*.changes
+lintian /var/cache/pbuilder/result/nco_4.6.9-1_*.deb
 sudo dpkg --remove nco
-sudo dpkg --install /var/cache/pbuilder/result/nco_4.6.8-1_*.deb
+sudo dpkg --install /var/cache/pbuilder/result/nco_4.6.9-1_*.deb
 cd ~/nco/bld;MY_BIN_DIR=/usr/bin ../bm/nco_bm.pl --regress
 # NB: Upload pbuilder Debian Sid packages to Debian mentors, but not
 # to personal or NCO websites since most people use Ubuntu not Debian
 # NB: Debian versions are a PITA, ensure RPMs build before uploading to Debian
-cd /var/cache/pbuilder/result;dupload -t mentors nco_4.6.8-1_*.changes
+cd /var/cache/pbuilder/result;dupload -t mentors nco_4.6.9-1_*.changes
 
 # RPM builds as root
 export rpm_root='/usr/src/redhat'
 # export sudo_sng='' # sudo not-necessary when builing in user directories
 export sudo_sng='sudo' # sudo necessary when building in system directories
 cd ~/nco;cvc;cvu
-/bin/rm -rf ${DATA}/nco-4.6.8 ${DATA}/nco-4.6.8* # Cleanup last build
+/bin/rm -rf ${DATA}/nco-4.6.9 ${DATA}/nco-4.6.9* # Cleanup last build
 ${sudo_sng} /bin/rm -r -f \
-${rpm_root}/BUILD/nco-4.6.8 \
-${rpm_root}/RPMS/i386/nco-4.6.8-?.i386.rpm \
-${rpm_root}/RPMS/i386/nco-debuginfo-4.6.8-?.i386.rpm \
-${rpm_root}/RPMS/i386/nco-devel-4.6.8-?.i386.rpm \
-${rpm_root}/SOURCES/nco-4.6.8.tar.gz \
-${rpm_root}/SPECS/nco-4.6.8.spec \
-${rpm_root}/SRPMS/nco-4.6.8-?.src.rpm
-cd ${DATA};cvs -d zender at nco.cvs.sf.net:/cvsroot/nco export -kkv -r nco-4.6.8-1 -d nco-4.6.8 nco # Export based on tag
-${sudo_sng} ln -s ${HOME}/nco/bld/nco.spec ${rpm_root}/SPECS/nco-4.6.8.spec
-tar cvzf ./nco-4.6.8.tar.gz --exclude='nco-4.6.8/debian*' --exclude='.cvsignore' --exclude='ncap_lex.c' --exclude='ncap_yacc.[ch]' ./nco-4.6.8 
-${sudo_sng} /bin/cp ${DATA}/nco-4.6.8.tar.gz ${rpm_root}/SOURCES
+${rpm_root}/BUILD/nco-4.6.9 \
+${rpm_root}/RPMS/i386/nco-4.6.9-?.i386.rpm \
+${rpm_root}/RPMS/i386/nco-debuginfo-4.6.9-?.i386.rpm \
+${rpm_root}/RPMS/i386/nco-devel-4.6.9-?.i386.rpm \
+${rpm_root}/SOURCES/nco-4.6.9.tar.gz \
+${rpm_root}/SPECS/nco-4.6.9.spec \
+${rpm_root}/SRPMS/nco-4.6.9-?.src.rpm
+cd ${DATA};cvs -d zender at nco.cvs.sf.net:/cvsroot/nco export -kkv -r nco-4.6.9-1 -d nco-4.6.9 nco # Export based on tag
+${sudo_sng} ln -s ${HOME}/nco/bld/nco.spec ${rpm_root}/SPECS/nco-4.6.9.spec
+tar cvzf ./nco-4.6.9.tar.gz --exclude='nco-4.6.9/debian*' --exclude='.cvsignore' --exclude='ncap_lex.c' --exclude='ncap_yacc.[ch]' ./nco-4.6.9 
+${sudo_sng} /bin/cp ${DATA}/nco-4.6.9.tar.gz ${rpm_root}/SOURCES
 cd ${rpm_root}/SPECS
-${sudo_sng} rpmbuild -ba --sign nco-4.6.8.spec > ~/foo.nco 2>&1
+${sudo_sng} rpmbuild -ba --sign nco-4.6.9.spec > ~/foo.nco 2>&1
 scp \
-${rpm_root}/RPMS/i386/nco-4.6.8-?.i386.rpm \
-${rpm_root}/RPMS/i386/nco-debuginfo-4.6.8-?.i386.rpm \
-${rpm_root}/RPMS/i386/nco-devel-4.6.8-?.i386.rpm \
-${rpm_root}/SRPMS/nco-4.6.8-?.src.rpm \
+${rpm_root}/RPMS/i386/nco-4.6.9-?.i386.rpm \
+${rpm_root}/RPMS/i386/nco-debuginfo-4.6.9-?.i386.rpm \
+${rpm_root}/RPMS/i386/nco-devel-4.6.9-?.i386.rpm \
+${rpm_root}/SRPMS/nco-4.6.9-?.src.rpm \
 dust.ess.uci.edu:/var/www/html/nco/src
 scp \
-${rpm_root}/RPMS/i386/nco-4.6.8-?.i386.rpm \
-${rpm_root}/RPMS/i386/nco-debuginfo-4.6.8-?.i386.rpm \
-${rpm_root}/RPMS/i386/nco-devel-4.6.8-?.i386.rpm \
-${rpm_root}/SRPMS/nco-4.6.8-?.src.rpm \
+${rpm_root}/RPMS/i386/nco-4.6.9-?.i386.rpm \
+${rpm_root}/RPMS/i386/nco-debuginfo-4.6.9-?.i386.rpm \
+${rpm_root}/RPMS/i386/nco-devel-4.6.9-?.i386.rpm \
+${rpm_root}/SRPMS/nco-4.6.9-?.src.rpm \
 zender,nco at web.sf.net:/home/project-web/nco/htdocs/src
 
 # RPM builds as user
@@ -256,33 +256,33 @@ zender,nco at web.sf.net:/home/project-web/nco/htdocs/src
 export rpm_root="${DATA}/rpm/nco"
 #cd ~/nco;cvc;cvu # This risks committing unwanted *.[ch]pp files
 mkdir -p ${DATA}/rpm/nco/TMP ${DATA}/rpm/nco/BUILD
-/bin/rm -rf ${DATA}/nco-4.6.8 ${DATA}/nco-4.6.8* # Cleanup last build
+/bin/rm -rf ${DATA}/nco-4.6.9 ${DATA}/nco-4.6.9* # Cleanup last build
 /bin/rm -r -f \
-${rpm_root}/nco-4.6.8-?.src.rpm \
-${rpm_root}/nco-4.6.8.spec \
-${rpm_root}/nco-4.6.8.tar.gz \
-${rpm_root}/*/nco-4.6.8-?.*.rpm \
-${rpm_root}/*/nco-debuginfo-4.6.8-?.*.rpm \
-${rpm_root}/*/nco-devel-4.6.8-?.*.rpm
-# cd ${DATA};cvs -d zender at nco.cvs.sf.net:/cvsroot/nco export -kkv -r nco-4.6.8-1 -d nco-4.6.8 nco # Export based on tag
-cd ${DATA};cvs -d zender at nco.cvs.sf.net:/cvsroot/nco export -kkv -D "1 second ago" -dnco-4.6.8 nco # Export most recent and build as 4.6.8-1
-tar cvzf ./nco-4.6.8.tar.gz --exclude='nco-4.6.8/debian*' --exclude='.cvsignore' --exclude='ncap_lex.c' --exclude='ncap_yacc.[ch]' ./nco-4.6.8 
-/bin/cp ${DATA}/nco-4.6.8.tar.gz ${rpm_root}
+${rpm_root}/nco-4.6.9-?.src.rpm \
+${rpm_root}/nco-4.6.9.spec \
+${rpm_root}/nco-4.6.9.tar.gz \
+${rpm_root}/*/nco-4.6.9-?.*.rpm \
+${rpm_root}/*/nco-debuginfo-4.6.9-?.*.rpm \
+${rpm_root}/*/nco-devel-4.6.9-?.*.rpm
+# cd ${DATA};cvs -d zender at nco.cvs.sf.net:/cvsroot/nco export -kkv -r nco-4.6.9-1 -d nco-4.6.9 nco # Export based on tag
+cd ${DATA};cvs -d zender at nco.cvs.sf.net:/cvsroot/nco export -kkv -D "1 second ago" -dnco-4.6.9 nco # Export most recent and build as 4.6.9-1
+tar cvzf ./nco-4.6.9.tar.gz --exclude='nco-4.6.9/debian*' --exclude='.cvsignore' --exclude='ncap_lex.c' --exclude='ncap_yacc.[ch]' ./nco-4.6.9 
+/bin/cp ${DATA}/nco-4.6.9.tar.gz ${rpm_root}
 ln -s ${HOME}/nco/bld/nco.spec ${rpm_root}/nco.spec
 cd ${rpm_root}
 rpmbuild -ba --sign nco.spec > ~/foo.nco 2>&1
-rpmlint ${rpm_root}/*/nco-4.6.8-?.*.rpm
+rpmlint ${rpm_root}/*/nco-4.6.9-?.*.rpm
 sudo yum remove nco
-sudo yum install ${rpm_root}/*/nco-4.6.8-?.*.rpm
+sudo yum install ${rpm_root}/*/nco-4.6.9-?.*.rpm
 scp \
-${rpm_root}/*/nco-4.6.8-?.*.rpm \
-${rpm_root}/*/nco-debuginfo-4.6.8-?.*.rpm \
-${rpm_root}/*/nco-devel-4.6.8-?.*.rpm \
-${rpm_root}/nco-4.6.8-?.*.src.rpm \
+${rpm_root}/*/nco-4.6.9-?.*.rpm \
+${rpm_root}/*/nco-debuginfo-4.6.9-?.*.rpm \
+${rpm_root}/*/nco-devel-4.6.9-?.*.rpm \
+${rpm_root}/nco-4.6.9-?.*.src.rpm \
 dust.ess.uci.edu:/var/www/html/nco/src
 scp \
-${rpm_root}/*/nco-4.6.8-?.*.rpm \
-${rpm_root}/*/nco-debuginfo-4.6.8-?.*.rpm \
-${rpm_root}/*/nco-devel-4.6.8-?.*.rpm \
-${rpm_root}/nco-4.6.8-?.*.src.rpm \
+${rpm_root}/*/nco-4.6.9-?.*.rpm \
+${rpm_root}/*/nco-debuginfo-4.6.9-?.*.rpm \
+${rpm_root}/*/nco-devel-4.6.9-?.*.rpm \
+${rpm_root}/nco-4.6.9-?.*.src.rpm \
 zender,nco at web.sf.net:/home/project-web/nco/htdocs/src
diff --git a/doc/index.shtml b/doc/index.shtml
index 363968f..d613ed7 100644
--- a/doc/index.shtml
+++ b/doc/index.shtml
@@ -70,7 +70,7 @@ Try to disable Spammers' machines:
 <p><h1 align="center">Bienvenue sur le netCDF Operator (NCO) site</h1>
 
 <p><h2>
-Current stable NCO version is 4.6.8 released <!--#flastmod file="src/nco-4.6.8.tar.gz"-->
+Current stable NCO version is 4.6.9 released <!--#flastmod file="src/nco-4.6.9.tar.gz"-->
 </h2>
 
 <table border=0 width=100%>
@@ -149,7 +149,8 @@ and
 <h2>Recent Releases & Milestones</h2>
 
 <ul>
-<li>2017 Sep ??: 4.7.0 <i>In Progress...</i>
+<li>2017 Oct ??: 4.7.0 <i>In Progress...</i>
+<li>2017 Sep 18: 4.6.9 CDF5, CMake
 <li>2017 Aug 16: 4.6.8 Sundry features/fixes
 <li>2017 May 26: 4.6.7 Sub-gridscale regridding
 <li>2017 Apr 21: 4.6.6 UGRID
@@ -628,15 +629,23 @@ Identical copies of those tarballs are also stored
 <a href="http://nco.sf.net/src">here</a> on SourceForge for historical
 continuity.
 You may retrieve the source of tagged versions directly with, e.g.,
-<tt>git clone -b 4.6.8 http://github.com/nco/nco.git nco-4.6.8</tt></a>.
+<tt>git clone -b 4.6.9 http://github.com/nco/nco.git nco-4.6.9</tt></a>.
 <ul>
-<li><b>NCO 4.7.1</b>: (<i>Future</i>)
+<li><b>NCO 4.7.1</b>:  (<i>Future</i>)
 Chunking bytes not elements;
 extensive hashing?;
 netCDF4 compound types?;</li>
 <li><b>NCO 4.7.0</b>: (<i>In Progress, features in-progress or complete include</i>) 
+CMake build-engine intrinsic math, networking support on MS Windows;
+<tt>ncclimo -v</tt> splitter support for regular expressions;
 <tt>ncks --xtn</tt> better extensive variable treatment;</li>
-<li><b>NCO 4.6.8</b>: (<i>Current Stable Release</i>)
+<li><b>NCO 4.6.9</b>: (<i>Current Stable Release</i>)
+CDF5 autoconversion, features to help detect <a href="#bug_cdf5">corruption</a>;
+CMake build-engine is mature;
+<tt>ncks</tt> estimates correct filesizes;
+<tt>ncks</tt> CDL prints variable RAM size;
+<tt>ncks</tt> prints CDL by default;</li>
+<li><b>NCO 4.6.8</b>:
 <tt>ncap2</tt> full chunking options;
 <tt>ncclimo --seasons</tt> custom season support;
 <tt>ncks --dt_fmt</tt> put the “T” in time;
@@ -695,7 +704,7 @@ Multi-argument support for <tt>--gaa</tt>, <tt>--rgr</tt>, <tt>--ppc</tt>, <tt>-
 <tt>ncremap</tt> uses CF to find coordinates;
 <tt>ncremap</tt> uses $TMPDIR;</li>
 <li><b>NCO 4.5.5</b>:
-All operators support CDF5 format;
+Initial CDF5 support;
 <tt>ncap2</tt> fix negative dimension indices handling;
 <tt>ncremap -P airs,hirdls,mls,mpas</tt>;
 <tt>nces/ncra</tt> fix <tt>-y mebs</tt> normalization, add <tt>-y tabs</tt>;
@@ -813,12 +822,12 @@ Thanks to NSF for supporting AIX machines at NCAR over the years.
 cross-platform Python environment that utilizes the <tt>conda</tt> package manager.
 Up-to-date versions of NCO for Linux and MacOS are maintained at <a href="https://github.com/conda-forge/nco-feedstock">conda-forge</a>.
 Install NCO in your Anaconda framework with one command ‘<tt>conda install -c conda-forge nco</tt>’.
-Or, alternatively, permanently add conda-forge (which has numerous
+Or, alternatively, permanently add conda-forge (which teems with
 goodies besides NCO) to your automatically-searched channels with
 ‘<tt>conda config --add channels --conda-forge</tt>’, then
 install NCO with ‘<tt>conda install nco</tt>’.
 The default NCO installed by <tt>conda</tt> is generally within a month of the latest release. 
-<li><a href="https://github.com/conda-forge/nco-feedstock">nco-4.6.8</a> Executables Anaconda-compatible. Maintained by Filipe Fernandes.</li>
+<li><a href="https://github.com/conda-forge/nco-feedstock">nco-4.6.9</a> Executables Anaconda-compatible. Maintained by Filipe Fernandes.</li>
 Thanks to Rich Signell, Filipe Fernandes (and others?) for developing and maintaining the NCO package for conda.
 </ul>
 
@@ -827,7 +836,7 @@ Thanks to Rich Signell, Filipe Fernandes (and others?) for developing and mainta
 <h3><a href="http://www.debian.org">Debian</a> and <a href="http://www.ubuntu.com">Ubuntu</a> GNU/Linux</a></h3>
 <ul>
 <!--
-<li><a href="http://www.debian.org">Debian</a> and <a href="http://www.ubuntu.com">Ubuntu</a> GNU/Linux-compatible Intel systems, prebuilt binary executable <a href="http://www.debian.org">deb</a>: <a href="http://packages.debian.org/testing/math/nco.html">nco-4.6.8</a></li>
+<li><a href="http://www.debian.org">Debian</a> and <a href="http://www.ubuntu.com">Ubuntu</a> GNU/Linux-compatible Intel systems, prebuilt binary executable <a href="http://www.debian.org">deb</a>: <a href="http://packages.debian.org/testing/math/nco.html">nco-4.6.9</a></li>
 -->
 <a href="http://packages.debian.org/unstable/science/nco">Debian NCO</a> and 
 <a href="https://launchpad.net/ubuntu/+source/nco">Ubuntu NCO</a> homepages.
@@ -835,8 +844,8 @@ Thanks to Rich Signell, Filipe Fernandes (and others?) for developing and mainta
 NCO packages in the Debian/Ubuntu repositories (e.g., Sid and Raring) generally lag the packages distributed here by 6–12 months.
 <a name="beta"></a><a name="prerelease"> <!-- http://nco.sf.net#beta -->
 Newer (beta- or pre-release) packages are often available for intrepid Debian/Ubuntu users as described <a href="https://github.com/nco/nco/tree/master/doc/beta.txt">here</a>.
-<dt>Debian package for most recent NCO release (install with, e.g., ‘<tt>dpkg --install nco_4.6.8-1_i386.deb</tt>’):</dt>
-<li><a href="https://launchpad.net/ubuntu/+source/nco/4.6.8-1">nco_4.6.8-1_amd64.deb</a> : Executables AMD64-compatible</li>
+<dt>Debian package for most recent NCO release (install with, e.g., ‘<tt>dpkg --install nco_4.6.9-1_i386.deb</tt>’):</dt>
+<li><a href="https://launchpad.net/ubuntu/+source/nco/4.6.9-1">nco_4.6.9-1_amd64.deb</a> : Executables AMD64-compatible</li>
 Thanks to Daniel Baumann, Sebastian Couwenberg, Barry deFreese, Francesco Lovergine, 
 Brian Mays, Rorik Peterson, and Matej Vela for their help packaging
 NCO for Debian over the years. 
@@ -880,10 +889,10 @@ Thanks to Gavin Burris and Kyle Wilcox for documenting build procedures for RHEL
 <!-- 
 # Mac OS X 10.12 (Sierra) systems (aerosol):
 /usr/bin/scp ~/nco/doc/index.shtml zender,nco at web.sf.net:/home/project-web/nco/htdocs
-cd ~/bin;tar cvzf ${DATA}/nco-4.6.8.macosx.10.12.tar.gz nc*;scp ${DATA}/nco-4.6.8.macosx.10.12.tar.gz zender,nco at web.sf.net:/home/project-web/nco/htdocs/src
+cd ~/bin;tar cvzf ${DATA}/nco-4.6.9.macosx.10.12.tar.gz nc*;scp ${DATA}/nco-4.6.9.macosx.10.12.tar.gz zender,nco at web.sf.net:/home/project-web/nco/htdocs/src
 -->
 The most up-to-date executables are probably those in the tarball below. Those unfamiliar with installing executables from tarballs may try the (older) <a href="http://en.wikipedia.org/wiki/Apple_Disk_Image">DMG</a> files (you may need to add <tt>/opt/local/bin</tt> to your executable path to access those operators).
-<li><a href="src/nco-4.6.8.macosx.10.12.tar.gz">nco-4.6.8.macosx.10.12.tar.gz</a> (<!--#fsize file="src/nco-4.6.8.macosx.10.12.tar.gz"-->): Executables MacOSX 10.12-compatible (last updated <!--#flastmod file="src/nco-4.6.8.macosx.10.12.tar.gz"-->). 
+<li><a href="src/nco-4.6.9.macosx.10.12.tar.gz">nco-4.6.9.macosx.10.12.tar.gz</a> (<!--#fsize file="src/nco-4.6.9.macosx.10.12.tar.gz"-->): Executables MacOSX 10.12-compatible (last updated <!--#flastmod file="src/nco-4.6.9.macosx.10.12.tar.gz"-->). 
 (NB: These executables require
   the <a href="http://trac.macosforge.org/projects/macports/wiki">MacPorts</a>
   <a href="#bld_macports">dependencies</a> for <a href="http://svn.macports.org/repository/macports/trunk/dports/science/nco">NCO</a>). Maintained by NCO Project.</li>
@@ -901,13 +910,13 @@ The most up-to-date executables are probably those in the tarball below. Those u
 These native Windows executables should be stand-alone, i.e., not
 require users to have any additional software. 
 This is a new feature as of 20120615, please send us feedback. 
-To build NCO from source yourself using MSVC or Qt, please see the <a href="nco_qt_msvc.shtml">NCO Qt/MSVC build</a> page.
+To build NCO from source yourself using MSVC with CMake, please see nco/cmake/build.bat.
 <ul>
 <!-- Copy files from http://glace.ess.uci.edu
 /usr/bin/scp /home/pvicente/nco/doc/index.shtml pvicente,nco at web.sf.net:/home/project-web/nco/htdocs
-/usr/bin/scp /home/pvicente/windows_setup/nco-4.6.8.windows.mvs.exe pvicente,nco at web.sf.net:/home/project-web/nco/htdocs/src
+/usr/bin/scp /home/pvicente/windows_setup/nco-4.6.9.windows.mvs.exe pvicente,nco at web.sf.net:/home/project-web/nco/htdocs/src
 -->
-<li><a href="src/nco-4.6.6.windows.mvs.exe">nco-4.6.8.windows.mvs.exe</a> (<!--#fsize file="src/nco-4.6.8.windows.mvs.exe"-->) : Windows Self-Extracting Installer (last updated <!--#flastmod file="src/nco-4.6.8.windows.mvs.exe"-->). Maintained by Pedro Vicente.</li>
+<li><a href="src/nco-4.6.9.windows.mvs.exe">nco-4.6.9.windows.mvs.exe</a> (<!--#fsize file="src/nco-4.6.9.windows.mvs.exe"-->) : Windows Self-Extracting Installer (last updated <!--#flastmod file="src/nco-4.6.9.windows.mvs.exe"-->). Maintained by Pedro Vicente.</li>
 </ul>
 
 <a name="cygwin"></a> <!-- http://nco.sf.net#cygwin -->
@@ -1078,12 +1087,12 @@ site.</li>
 The simplest way to acquire the source is to download the compressed tarball:
 <ul>
 <li>
-<!-- scp ${DATA}/nco-4.6.8.tar.gz zender,nco at web.sf.net:/home/project-web/nco/htdocs/src -->
-<a href="https://github.com/nco/nco/archive/4.6.8.tar.gz">nco-4.6.8.tar.gz</a> 
-(<!--#fsize file="src/nco-4.6.8.tar.gz"--> compressed tar-file)<br>
-<!--#exec cmd="openssl dgst -md5 src/nco-4.6.8.tar.gz"--><br>
-<!--#exec cmd="openssl dgst -sha1 src/nco-4.6.8.tar.gz"--><br>
-<!--#exec cmd="openssl dgst -sha256 src/nco-4.6.8.tar.gz"--> 
+<!-- scp ${DATA}/nco-4.6.9.tar.gz zender,nco at web.sf.net:/home/project-web/nco/htdocs/src -->
+<a href="https://github.com/nco/nco/archive/4.6.9.tar.gz">nco-4.6.9.tar.gz</a> 
+(<!--#fsize file="src/nco-4.6.9.tar.gz"--> compressed tar-file)<br>
+<!--#exec cmd="openssl dgst -md5 src/nco-4.6.9.tar.gz"--><br>
+<!--#exec cmd="openssl dgst -sha1 src/nco-4.6.9.tar.gz"--><br>
+<!--#exec cmd="openssl dgst -sha256 src/nco-4.6.9.tar.gz"--> 
 </li>
 </ul>
 
@@ -1102,8 +1111,8 @@ You may retrieve any NCO distribution you wish from
 <a href="https://help.github.com">GitHub</a>. 
 Usually you wish to retrieve a recent tagged (i.e., released) version.
 This command retrieves the entire NCO repository (< 20 MB) and
-then checks out NCO version <tt>4.6.8</tt>:
-<p><tt>git clone https://github.com/nco/nco.git;cd nco;git checkout 4.6.8</tt></p>
+then checks out NCO version <tt>4.6.9</tt>:
+<p><tt>git clone https://github.com/nco/nco.git;cd nco;git checkout 4.6.9</tt></p>
 These commands retrieve the current (“bleeding edge”)
 development version of NCO into a local directory named <tt>nco</tt>:
 <p><tt>git clone https://github.com/nco/nco.git ~/nco</tt></p> or
@@ -1111,9 +1120,9 @@ development version of NCO into a local directory named <tt>nco</tt>:
 Track changes to the development version using
 <p><tt>cd nco;git pull</tt></p>
 One difference between running a "tagged" release 
-(e.g., <tt>4.6.8</tt>) and the development version is that the
+(e.g., <tt>4.6.9</tt>) and the development version is that the
 tagged release operators will print a valid version number (e.g.,
-<tt>4.6.8</tt>) when asked to do so with the <tt>-r</tt> flag
+<tt>4.6.9</tt>) when asked to do so with the <tt>-r</tt> flag
 (e.g., <tt>ncks -r</tt>).
 The development version simply places today's date in place of the
 version.
@@ -1201,8 +1210,8 @@ For Debian-based systems (like Ubuntu) (<tt>aptitude</tt> is similar to and inte
 <tt>
 <dt>sudo aptitude install antlr libantlr-dev # ANTLR</dt>
 <dt>sudo aptitude install libcurl4-gnutls-dev libexpat1-dev libxml2-dev # DAP-prereqs (curl, expat XML parser) </dt>
-<dt>sudo aptitude install bison flex gcc g++ # GNU toolchain</dt>
-<dt>sudo aptitude install gsl-bin libgsl0-dev # GSL</dt>
+<dt>sudo aptitude install bison cmake flex gcc g++ # GNU toolchain</dt>
+<dt>sudo aptitude install gsl-bin libgsl-dev # GSL</dt>
 <dt>sudo aptitude install libnetcdf11 libnetcdf-dev netcdf-bin # netCDF and DAP</dt>
 <dt>sudo aptitude install libhdf5-serial-dev # HDF5</dt>
 <dt>sudo aptitude install ncl-ncarg # ESMF_RegridWeightGen (for ncremap)</dt>
@@ -1219,10 +1228,11 @@ For RPM-based systems like Fedora and CentOS (substitute <tt>yum</tt> for <tt>dn
 <dt>sudo dnf install curl-devel libxml2-devel -y # DAP-prereqs</dt>
 <dt>sudo dnf install expat expat-devel -y # expat XML parser, a UDUnits-prereq (RHEL only?)</dt>
 <dt>sudo dnf install libdap libdap-devel -y # DAP</dt>
-<dt>sudo dnf install bison flex gcc gcc-c++ -y # GNU toolchain</dt>
+<dt>sudo dnf install bison cmake flex gcc gcc-c++ -y # GNU toolchain</dt>
 <dt>sudo dnf install ncl # ESMF_RegridWeightGen (for ncremap)</dt>
 <dt>sudo dnf install gsl gsl-devel -y # GSL</dt>
 <dt>sudo dnf install netcdf netcdf-devel -y # netCDF</dt>
+<dt>sudo dnf install zlib-devel -y # zlib</dt>
 <dt>sudo dnf install librx librx-devel -y # RX</dt>
 <dt>sudo dnf install udunits2 udunits2-devel -y # UDUnits</dt>
 </tt>
@@ -1232,6 +1242,7 @@ For RPM-based systems like Fedora and CentOS (substitute <tt>yum</tt> for <tt>dn
 For Mac OS X with MacPorts:
 <tt>
 <dt>sudo port install antlr # Antlr</dt>
+<dt>sudo port install cmake # CMake</dt>
 <dt>sudo port install esmf # ESMF_RegridWeightGen (for ncremap)</dt>
 <dt>sudo port install libdap # DAP</dt>
 <dt>sudo port install gsl # GSL</dt>
@@ -1258,34 +1269,28 @@ Users should instead first download and install the ANTLR found <a href="http://
 
 <li>Once you have installed the pre-requisites as shown above, you may then build the latest stable NCO and install it in, e.g., <tt>/usr/local</tt> with: 
 <tt>
-<dt>wget https://github.com/nco/nco/archive/4.6.8.tar.gz</dt>
-<dt>tar xvzf 4.6.8.tar.gz</dt>
-<dt>cd nco-4.6.8</dt>
+<dt>wget https://github.com/nco/nco/archive/4.6.9.tar.gz</dt>
+<dt>tar xvzf 4.6.9.tar.gz</dt>
+<dt>cd nco-4.6.9</dt>
 <dt>./configure --prefix=/usr/local</dt>
 <dt>make</dt>
 <dt>sudo make install</dt>
 <dt>export PATH=/usr/local/bin\:${PATH}</dt>
 <dt>export LD_LIBRARY_PATH=/usr/local/lib\:${LD_LIBRARY_PATH}</dt>
 </tt>
-<dt><a name="bonobo"></a></dt> <!-- http://nco.sf.net#bonobo -->
-<dt><a name="bnb"></a></dt> <!-- http://nco.sf.net#bnb -->
-Please post questions about building or installing NCO to the 
-<a href="http://sf.net/p/nco/discussion/9830">list</a>
-only after reading and attempting to follow these instructions.
-To indicate you have done this, include the word “bonobo”
-in the first sentence of your post. 
-Yes, “bonobo”.
-Otherwise we will likely redirect you here.
-For more sophisticated build/install options, see the next section.
-<li>CMake build. To build with CMake, do:
+<dt><a name="cmake"></a></dt> <!-- http://nco.sf.net#cmake -->
+<dt><a name="CMake"></a></dt> <!-- http://nco.sf.net#CMake -->
+<li>The CMake-equivalent to the autoconf/configure build-engine
+  example above is:
 <tt>
-<dt>mkdir build</dt>
-<dt>cd build</dt>
-<dt>cmake ..</dt>
+<dt>cd ~/nco/cmake</dt>
+<dt>cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local</dt>
 <dt>make</dt>
+<dt>sudo make install</dt>
 </tt>
-The CMake script tries to find header and dependency libraries in standard locations.
-They can also be set manually with, e.g., 
+Unlike autoconf/configure, CMake works well on MS Windows. 
+CMake tries to find header and dependency libraries in standard locations.
+Override these manually with, e.g., 
 <tt>
 <dt>cmake .. -DNETCDF_INCLUDE:PATH=/my/netcdf/include/path 
 -DNETCDF_LIBRARY=/my/netcdf/library/file 
@@ -1295,6 +1300,17 @@ They can also be set manually with, e.g.,
 -DZLIB_LIBRARY=/my/zlib/library/file 
 -DCURL_LIBRARY=/my/curl/library/file</dt>
 </tt>
+</p>
+<dt><a name="bonobo"></a></dt> <!-- http://nco.sf.net#bonobo -->
+<dt><a name="bnb"></a></dt> <!-- http://nco.sf.net#bnb -->
+Please post questions about building or installing NCO to the 
+<a href="http://sf.net/p/nco/discussion/9830">list</a>
+only after reading and attempting to follow these instructions.
+To indicate you have done this, include the word “bonobo”
+in the first sentence of your post. 
+Yes, “bonobo”.
+Otherwise we will likely redirect you here.
+For more sophisticated build/install options, see the next section.
 </ul>
 
 <dt><a name="Makefile"></a></dt> <!-- http://nco.sf.net#Makefile -->
@@ -1383,7 +1399,42 @@ LAM installs easily with our own testing environment (latest Ubuntu).
 <h2>Known Problems from 2013 (version 4.2.4) Onwards</h2>
 
 <ul><b>Recent Generic Run-time Problems:</b>
-<!-- http://nco.sf.net#bug_nc4_srd -->
+
+<!-- http://nco.sf.net#bug_cdf5 -->
+<a name="bug_cdf5"></a>
+<li><i>netCDF CDF5 corruption:</i>
+  netCDF library 4.4.x supports the CDF5 binary format.
+  Unfortunately the CDF5 implementation is buggy for large (> 4 GiB)
+  variables. 
+  Writing CDF5 files with large variables is buggy in netCDF library
+  versions 4.4.0–4.4.1 unless there is only one such
+  “large” variable and it is the last to be defined.
+  If the file is an input dataset (i.e., NCO <i>reads</i> it) written
+  by PnetCDF then the input data are fine (because PnetCDF writes CDF5
+  through a different mechanism than serial programs like NCO's
+  writer).
+  And if the CDF5 dataset was originally written by any netCDF version
+  4.5.0 or greater, then it is fine. 
+  However, an input file with large variables written by any serial
+  netCDF writer (like NCO) employing netCDF library 4.4.x, is likely
+  corrupt and variables were silently truncated when writing it.
+  Output files (that NCO wrote) with large variables will definitely
+  be corrupt if NCO was linked to netCDF library version 4.4.x (so
+  upgrade to netCDF 4.5.x ASAP).
+  Here are two potential workarounds for data affected by this bug:
+  1. Re-write (using any netCDF version) original input files in
+  netCDF4 format instead of CDF5, then process these as normal and
+  write netCDF4 output (instead of CDF5); 
+  2. Re-compile NCO with netCDF library 4.5.0 or later and use it to
+  convert non-corrupt datasets to netCDF4 format, then process the
+  data.
+  For more information on this nasty bug, see
+  <a href="https://github.com/Unidata/netcdf-c/issues/463">here</a>.
+  Our understanding of this bug is still evolving and salient updates
+  will be posted here.
+</li>
+  
+  <!-- http://nco.sf.net#bug_nc4_srd -->
 <a name="bug_nc4_srd"></a>
 <li><i>netCDF4 Strided Hyperslab bug:</i>
 Multiple users complain that access to strided hyperslabs of
@@ -1650,7 +1701,7 @@ former Assistant Professor of Electrical Engineering and Computer Science
 <li>
 <a name="vicente"></a><a name="Vicente"></a> <!-- http://nco.sf.net#vicente -->
 <a href="http://dust.ess.uci.edu/pvicente">Pedro Vicente</a>, 
-software engineer, 201206—201405.
+software engineer, 201206—201405, and continuing as volunteer
 <!--
 <i>Roles</i>: Scientific programmer
 <i>Current Research</i>: 
diff --git a/doc/nco.texi b/doc/nco.texi
index 5ebe2d3..cefe944 100644
--- a/doc/nco.texi
+++ b/doc/nco.texi
@@ -119,12 +119,12 @@ Octave TeXInfo manual shows clean TeXInfo structure
 @setfilename nco.info
 
 @c Define edition, date, ...
- at set nco-edition 4.6.8
- at set doc-edition 4.6.8
+ at set nco-edition 4.6.9
+ at set doc-edition 4.6.9
 @set copyright-years 1995--2017
 @set update-year 2017
- at set update-date 15 August 2017
- at set update-month August 2017
+ at set update-date 18 September 2017
+ at set update-month September 2017
 
 @settitle @acronym{NCO} @value{nco-edition} User Guide
 
@@ -569,8 +569,9 @@ Irvine, California@*
 The @acronym{DOE} Energy Exascale Earth System Model (@acronym{E3SM})
 project (formerly @acronym{ACME}) has generously supported @acronym{NCO}
 development in support of high-performance climate modeling research.  
-This has allowed Henry Butowsky to re-join our efforts.
-Without him, much of this work would have been impossible.
+This allowed Henry Butowsky to re-join our efforts.
+Without him, @command{ncap2} development would cease, new @acronym{NCO}
+features would slacken, and our user-support would greatly suffer.
 
 @sp 1
 @noindent
@@ -2402,8 +2403,8 @@ For example, @command{ncra}, @command{nces}, and @command{ncwa} all
 promote integer types to double-precision floating-point prior to
 arithmetic, then perform the arithmetic, then demote back to the
 original integer type after arithmetic.
-This preserves the on-disk storage type while obtaining the accuracy
-advantages of floating-point arithmetic. 
+This preserves the on-disk storage type while obtaining the precision
+advantages of double-precision floating-point arithmetic. 
 Since version 4.3.6 (released in September, 2013), @acronym{NCO} also
 by default converts single-precision floating-point to double-precision
 prior to arithmetic, which incurs the same @acronym{RAM} penalty.
@@ -2435,15 +2436,19 @@ one input weight, one conformed/working weight, one weight tally,
 one input mask, one conformed/working mask, and
 one output variable. 
 @acronym{NCO}'s tally arrays are of type C-type @code{long}, whose size 
-is 8-bytes on all modern computers, the same as @code{NC_DOUBLE}.
+is eight-bytes on all modern computers, the same as @code{NC_DOUBLE}
+ at footnote{By contrast @code{NC_INT} and its deprecated synonym
+ at code{NC_LONG} are only four-bytes.
+Perhaps this is one reason why the @code{NC_LONG} token is
+deprecated.}. 
 When invoked, the weighting and masking features contribute up to
 three-eighths and two-eighths of these requirements apiece.
 If weights and masks are @emph{not} specified 
 (i.e., no @samp{-w} or @samp{-a} options)
 then @command{ncwa} requirements drop to @math{MS <= 3VT}
 (one input variable, one tally array, and the output variable). 
-The output variable is the same size as the input variable when
-averaging over a degenerate dimension.
+The output variable is the same size as the input variable when 
+averaging only over a degenerate dimension.
 However, normally the output variable is much smaller than the input, 
 and is often a simple scalar, in which case the memory requirements
 drop by @math{1VT} since the output array requires essentially no
@@ -2453,7 +2458,7 @@ All of this is subject to the type promotion rules mentioned above.
 For example, @command{ncwa} averaging a variable of type
 @code{NC_FLOAT} requires @math{MS <= 16VT} (rather than @math{MS <= 8VT}) 
 since all arrays are (at least temporarily) composed of eight-byte
-elements.
+elements, twice the size of the values on disk.
 Without mask or weights, the requirements for @code{NC_FLOAT} are
 @math{MS <= 6VT} (rather than @math{MS <= 3VT} as for @code{NC_DOUBLE}) 
 due to temporary internal promotion of both the input variable and the
@@ -3872,20 +3877,31 @@ these formats.
 Datasets in the default @code{CLASSIC} or the newer @code{64BIT_OFFSET}
 formats have maximum backwards-compatibility with older applications. 
 @acronym{NCO} has deep support for @code{NETCDF4} formats.
-If performance or disk-space as important as backwards compatibility,
-then use @code{NETCDF4_CLASSIC} instead of @code{CLASSIC} format files. 
-As of 2014, @acronym{NCO} support for the @code{NETCDF4} format is
-nearly complete and the most powerful and disk/@acronym{RAM} efficient 
-workflows will utilize this format.
+If backwards compatibility is important, and your datasets are too large
+for netCDF3, use @code{NETCDF4_CLASSIC} instead of @code{CLASSIC} format
+files.  
+ at acronym{NCO} support for the @code{NETCDF4} format is complete and many
+high-performance disk/@acronym{RAM} efficient workflows utilize this
+format.   
 
 As mentioned above, all operators write use the input file format for
 output files unless told otherwise.
 Toggling the short option @samp{-6} or the long option @samp{--6} or
 @samp{--64bit_offset} (or their @var{key}- at var{value} equivalent
- at samp{--fl_fmt=64bit_offset}) produces the netCDF3 64-bit offset format
+ at samp{--fl_fmt=64bit_offset}) produces the netCDF3 64-bit offset format 
 named @code{64BIT_OFFSET}.
 @acronym{NCO} must be built with @w{netCDF 3.6} or higher to produce
 a @code{64BIT_OFFSET} file.
+As of @acronym{NCO} version 4.6.9 (September, 2017), toggling the short
+option @samp{-5} or the long options @samp{--5}, @samp{--64bit_data},
+ at samp{--cdf5}, or @samp{--pnetcdf} (or their @var{key}- at var{value}
+equivalent @samp{--fl_fmt=64bit_data}) produces the netCDF3 64-bit data
+format named @code{64BIT_DATA}. 
+This format is widely used by @acronym{MPI}-enabled modeling codes
+because of its long association with PnetCDF.
+ at acronym{NCO} must be built with @w{netCDF 4.4} or higher to produce
+a @code{64BIT_DATA} file.
+
 Using the @samp{-4} switch (or its long option equivalents
 @samp{--4} or @samp{--netcdf4}), or setting its @var{key}- at var{value}
 equivalent @samp{--fl_fmt=netcdf4} produces a @code{NETCDF4} file
@@ -6474,6 +6490,10 @@ ncks --rgr grd_ttl='Equi-Angular grid 180x360'#latlon=180,360#lat_typ=uni#lon_ty
 ncks --rgr grd_ttl='CAM-FV scalar grid 129x256'#latlon=129,256#lat_typ=fv#lon_typ=grn_ctr \
      --rgr scrip=${DATA}/grids/129x256_SCRIP.20150901.nc ~zender/nco/data/in.nc ~/foo.nc
 
+# 1441x2880 CAM-FV grid, first longitude centered at Greenwich
+ncks --rgr grd_ttl='CAM-FV scalar grid 1441x2880'#latlon=1441,2880#lat_typ=fv#lon_typ=grn_ctr \
+     --rgr scrip=${DATA}/grids/1441x2880_SCRIP.20170901.nc ~zender/nco/data/in.nc ~/foo.nc
+
 # 91x180 CAM-FV grid, first longitude centered at Greenwich (2 degree grid)
 ncks --rgr grd_ttl='CAM-FV scalar grid 91x180'#latlon=91,180#lat_typ=fv#lon_typ=grn_ctr \
      --rgr scrip=${DATA}/grids/91x180_SCRIP.20170401.nc ~zender/nco/data/in.nc ~/foo.nc
@@ -6498,7 +6518,7 @@ ncks -7 -L 1 \
      --rgr grd_ttl='Equi-Angular grid 3600x7200 (NASA CMG)'#latlon=3600,7200#lat_typ=uni#lon_typ=180_wst \
      --rgr scrip=${DATA}/grids/3600x7200_SCRIP.20160301.nc ~zender/nco/data/in.nc ~/foo.nc
 
-# DOE ACME High Resolution Topography (1 x 1 km grid) for Elevation Classes
+# DOE E3SM/ACME High Resolution Topography (1 x 1 km grid) for Elevation Classes
 # Write to compressed netCDF4-classic file to reduce filesize from ~85 GB to 607 MB
 ncks -O -7 -L 1 \
      --rgr grd_ttl='Global latxlon = 18000x36000 ~ 1 x 1 km'#latlon=18000,36000#lat_typ=uni#lon_typ=grn_ctr \
@@ -7312,9 +7332,9 @@ Here are some quick examples of regridding from common models.
 All examples require @samp{in.nc out.nc} at the end.
 @example
 @verbatim
-# Identity re-map ACME CAM-SE Cubed-Sphere output (to improve metadata)
+# Identity re-map E3SM/ACME CAM-SE Cubed-Sphere output (to improve metadata)
 ncks --map=${DATA}/maps/map_ne30np4_to_ne30np4_aave.20150603.nc
-# Convert ACME CAM-SE Cubed Sphere output to rectangular lat/lon
+# Convert E3SM/ACME CAM-SE Cubed Sphere output to rectangular lat/lon
 ncks --map=${DATA}/maps/map_ne30np4_to_fv129x256_aave.150418.nc
 # Convert CAM3 T42 output to Cubed-Sphere grid
 ncks --map=${DATA}/maps/map_ne30np4_to_t42_aave.20150601.nc
@@ -9340,9 +9360,9 @@ that the user simply wishes to see the digest of every variable and this
 is done when the debugging level exceeds one.
 This incurs only the minor overhead of performing the hash algorithm for
 each variable read.
- at acronym{MD5} digests may be activated in both the one- and two-filename
-argument forms of @command{ncks}, which are used for printing and for
-sub-setting, respectively.
+ at acronym{MD5} digests may be activated in both @command{ncks} invocation
+type, the one-filename argument form for printing and the two-filename
+argument form for sub-setting.
 The @acronym{MD5} digests are shown as a 32-character hexadecimal string 
 in which each two characters represent one byte of the 16-byte digest:
 @example
@@ -9375,7 +9395,7 @@ as when it is subsequently read from disk.
 This incurs the major additional overhead of reading in each variable
 after it is written and performing the hash algorithm again on that to
 compare to the original hash.
-Moreover, it is assumed that such operations are generally done
+Moreover, it is assumed that such operations are generally done in
 ``production mode'' where the user is not interested in actually
 examining the digests herself.
 The digests proceed silently unless the debugging level exceeds three:
@@ -10556,11 +10576,11 @@ of higher precision.
 @item Aggressive, aka C Convention
 The @w{C language} is by default much more aggressive (and thus
 wasteful) than Fortran, and will always implicitly convert single- 
-to double-precision numbers for no good reason.
+to double-precision numbers, even when there is no good reason.
 All real-number standard @w{C library} functions are double-precision, 
 and @w{C programmers} must take extra steps to only utilize single
 precision arithmetic.
-The high level interpreted data analysis languages @acronym{IDL},
+The high-level interpreted data analysis languages @acronym{IDL},
 Matlab, and @acronym{NCL} all adopt the @w{C Convention}.
 @end enumerate
 
@@ -11195,12 +11215,16 @@ may amount to many thousands of filenames in a metadata attribute.
 <a name="cnv_ACME"></a> <!-- http://nco.sf.net/nco.html#cnv_ACME -->
 <a name="ACME"></a> <!-- http://nco.sf.net/nco.html#ACME -->
 <a name="acme"></a> <!-- http://nco.sf.net/nco.html#acme -->
+<a name="cnv_E3SM"></a> <!-- http://nco.sf.net/nco.html#cnv_E3SM -->
+<a name="E3SM"></a> <!-- http://nco.sf.net/nco.html#E3SM -->
+<a name="e3sm"></a> <!-- http://nco.sf.net/nco.html#e3sm -->
 <a name="cnv_CF"></a> <!-- http://nco.sf.net/nco.html#cnv_CF -->
 <a name="cnv_CCSM"></a> <!-- http://nco.sf.net/nco.html#cnv_CCSM -->
 @end html
 @node CF Conventions, ARM Conventions, File List Attributes, Shared features
 @section @acronym{CF} Conventions
 @cindex @acronym{ACME} conventions
+ at cindex @acronym{E3SM} conventions
 @cindex @acronym{CF} conventions
 @cindex @acronym{CCSM} conventions
 @cindex UDUnits
@@ -11322,14 +11346,14 @@ is considered to be a ``mask'' or a ``weight'' and is thus preserved
 (not operated on when arithmetic can be avoided). 
 
 As of @acronym{NCO} version 4.5.0 (June, 2015), @acronym{NCO} began
-to support behavior required for the @acronym{DOE} @acronym{ACME}
-program, and we refer to these rules collectively as the @acronym{ACME} 
+to support behavior required for the @acronym{DOE} @acronym{E3SM/ACME}
+program, and we refer to these rules collectively as the @acronym{E3SM/ACME} 
 convention. 
 @cindex @acronym{GMT}
 @cindex @code{date_written}
 @cindex @code{time_written}
 @cindex @code{gmtime()}
-The first @acronym{ACME} rule implemented is that the contents of
+The first @acronym{E3SM/ACME} rule implemented is that the contents of
 @var{input-file} variables named @code{date_written} and
 @code{time_written}, if any, will be updated to the current 
 system-supplied (with @code{gmtime()}) @acronym{GMT}-time as the
@@ -17187,10 +17211,23 @@ The last month is December of the end year specified with @samp{-e}.
 @cindex @code{--climatology}
 @item -C @var{clm_md} (@code{--clm_md}, @code{--climatology_mode}, @code{--mode}, @code{--climatology})
 Climatology mode.
-Valid values are @samp{ann} and @samp{mth}.
-The value indicates the timespan of the averages in each input file.  
-The default mode is @samp{mth}, which means input files are monthly averages. 
-Use @samp{ann} if the input files are a series of annual means.
+Valid values are for @var{clm_md} are @samp{ann}, @samp{mth}, and @samp{dly}.
+The value indicates the timespan of each input file for annual and
+monthly climatologies.
+The default mode is @samp{mth}, which means input files are monthly
+averages.  
+Use @samp{ann} when the input files are a series of annual means 
+(a common temporal resolution for ice-sheet simulations).
+The value @samp{dly} is used for all input files whose temporal
+resolution is daily or finer.
+The data could be a daily average, or diurnally-resolved, e.g.,
+3-hourly. 
+The climatology generator and splitter do not require that daily-mode
+input files begin or end on daily boundaries.
+These tools hyperslab the input files using the date information
+required to performed their analysis.
+This facilitates analyzing datasets with varying numbers of days per
+input file.
 
 @cindex @code{-c @var{caseid}}
 @cindex @var{caseid}
@@ -17295,6 +17332,7 @@ The use of @var{drc_in} is mandatory in climate generation mode but is
 optional in timeseries reshaping mode.
 In timeseries reshaping mode, @command{ncclimo} uses all netCDF files
 (meaning files with suffixes @code{.nc}, @code{.nc3}, @code{.nc4},
+ at code{.nc5}, @code{.nc6}, @code{.nc7},
 @code{.cdf}, @code{.hdf}, @code{.he5}, or @code{.h5}) in @var{drc_in} to 
 create the list of input files when no list is provided through
 @code{stdin} or as positional arguments to the command-line. 
@@ -17346,11 +17384,11 @@ throughput much more in @command{ncremap} than in @command{ncclimo}.
 @cindex @code{--no_amwg_links}
 @item -l (@code{--lnk_flg}, @code{--link_flag}, @code{--no_amwg_links})
 This switch (which takes no argument) turns-off the default linking of
- at acronym{ACME}-climo to @acronym{AMWG}-climo filenames.   
+ at acronym{E3SM/ACME}-climo to @acronym{AMWG}-climo filenames.   
 @acronym{AMWG} omits the @acronym{YYYYMM} components of climo filenames,
 resulting in shorter names.
 By default @command{ncclimo} symbolically links the full
-(@acronym{ACME}) filename to the shorter (@acronym{AMWG}) name.
+(@acronym{E3SM/ACME}) filename to the shorter (@acronym{AMWG}) name.
 @acronym{AMWG} diagnostics scripts can produce plots directly from
 these linked filenames. 
 Use this switch to turn-off that linking and reduce filename
@@ -17622,6 +17660,10 @@ This option only takes effect in daily-average climatology mode.
 Variables to subset or to split.
 Same behavior as @ref{Subsetting Files}.
 The use of @var{var_lst} is optional in climate generation mode.
+We suggest using this feature to test whether an @command{ncclimo}
+command, especially one that is lengthy and/or time-consuming, works as
+intended on one or a few variables with, e.g., @samp{-v T,FSNT} before
+generating the full climatology (by omitting this option). 
 Invoking this switch was required in the original splitter released in 
 version 4.6.5 (March, 2017), and became optional as of version 4.6.6
 (May, 2017). 
@@ -17629,7 +17671,7 @@ This option is recommended in timeseries reshaping mode to prevent
 inadvertently copying the results of an entire model simulation. 
 Regular expressions are allowed so, e.g., @samp{PREC.?} extracts
 the variables @samp{PRECC,PRECL,PRECSC,PRECSL} if present.
-Current in reshaping mode all matches to a regular expression are
+Currently in reshaping mode all matches to a regular expression are
 placed in the same output file.
 We hope to remove this limitation in the future.
 
@@ -18021,10 +18063,10 @@ ncclimo -c caseid -S 1980 -E 1981 -x prv -s 1980 -e 1981 -i crr -o clm
 @end example
 
 @unnumberedsubsec Coupled Runs
- at command{ncclimo} works on all @acronym{ACME} and @acronym{CESM} models. 
+ at command{ncclimo} works on all @acronym{E3SM/ACME} and @acronym{CESM} models. 
 It can simultaneously generate climatologies for a coupled run, where
 climatologies mean both native and regridded monthly, seasonal, and
-annual averages as per @acronym{ACME} specifications (which mandate
+annual averages as per @acronym{E3SM/ACME} specifications (which mandate
 the inclusion of certain helpful metadata and provenance information).
 Here are template commands for a recent simulation:
 @example
@@ -18300,7 +18342,7 @@ annual mean (@acronym{ANN}) and then regridding that.
 Other climatologies (e.g., daily to monthly, or
 annual-to-climatological) involve similar choices. 
 
- at acronym{ACME} (and @acronym{CESM}) computes fields in @acronym{DP} and
+ at acronym{E3SM/ACME} (and @acronym{CESM}) computes fields in @acronym{DP} and
 outputs history (not restart) files as monthly means in @acronym{SP}. 
 The @acronym{NCO} climatology generator (@command{ncclimo}) processes
 these data in four stages. 
@@ -18331,7 +18373,7 @@ annual mean.
 @w{Stage 2} weights each input month by its number of days (e.g., 31 for 
 January), and @w{Stage 3} weights each input season by its number of days 
 (e.g., 92 for @acronym{MAM}). 
- at acronym{ACME} runs @acronym{CAM-SE} with a 365-day calendar, so these
+ at acronym{E3SM/ACME} runs @acronym{CAM-SE} with a 365-day calendar, so these
 weights are independent of year and never change. 
 The treatment of missing values in @w{Stages 1--3} is limited by the
 lack of missing value tallies provided by @w{Stage 0} (model) output. 
@@ -18377,17 +18419,17 @@ Instead, @acronym{NCO} copies these fields directly from the first input
 file.  
 @w{Stage 4} uses a mapfile to regrid climos from the native to the
 desired analysis grid. 
- at acronym{ACME} currently uses mapfiles generated by
+ at acronym{E3SM/ACME} currently uses mapfiles generated by
 @command{ESMF_RegridWeightGen} (@acronym{ERWG}) and by TempestRemap.  
 
 The algorithmic choices, approximations, and commands used to generate
 mapfiles from input gridfiles are separate issues.
 We mention only some of these issues here for brevity.
-Input gridfiles used by @acronym{ACME} until ~20150901, and by
+Input gridfiles used by @acronym{E3SM/ACME} until ~20150901, and by
 @acronym{CESM} (then and currently, at least for Gaussian grids)
 contained flaws that effectively reduced their precision, especially at
 regional scales, and especially for Gaussian grids. 
- at acronym{ACME} (and @acronym{CESM}) mapfiles continue to approximate
+ at acronym{E3SM/ACME} (and @acronym{CESM}) mapfiles continue to approximate
 grids as connected by great circles, whereas most analysis grids (and
 some models) use great circles for longitude and small circles for
 latitude. 
@@ -20461,7 +20503,7 @@ narrow the verbose output of @command{ncks} into more precise targets.
 For example, to obtain an uncluttered listing of the variables in a file
 try 
 @example
-ncks -m in.nc | grep -E ': type' | cut -f 1 -d ' ' | sed 's/://' | sort
+ncks --trd -m in.nc | grep -E ': type' | cut -f 1 -d ' ' | sed 's/://' | sort
 @end example
 A Bash user could alias the previous filter to the shell command
 @command{nclist} as shown below.
@@ -20471,17 +20513,17 @@ of an attribute, e.g., for textual file examination or for passing to
 another shell command.
 Say the attribute is @code{purpose}, the variable is @code{z}, and the
 file is @code{in.nc}.
-In this example, @command{ncks -m -v z} is too verbose so a robust
+In this example, @command{ncks --trd -m -v z} is too verbose so a robust
 @command{grep} and @command{cut} filter is desirable, such as
 @example
-ncks -M -m in.nc | grep -E -i "^z attribute [0-9]+: purpose" | cut -f 11- -d ' ' | sort
+ncks --trd -M -m in.nc | grep -E -i "^z attribute [0-9]+: purpose" | cut -f 11- -d ' ' | sort
 @end example
 The filters are clearly too complex to remember on-the-fly so the entire 
 procedure could be implemented as a shell command or function called,
 say, @command{ncattget}
 @example
 @verbatim
-function ncattget { ncks -M -m ${3} | grep -E -i "^${2} attribute [0-9]+: ${1}" | cut -f 11- -d ' ' | sort ; }
+function ncattget { ncks --trd -M -m ${3} | grep -E -i "^${2} attribute [0-9]+: ${1}" | cut -f 11- -d ' ' | sort ; }
 @end verbatim
 @end example
 The shell @command{ncattget} is invoked with three arugments that are,
@@ -20535,47 +20577,51 @@ These files are usually named @file{.bashrc}, @file{.cshrc}, and
 @example
 @verbatim
 # NB: Untested on Csh, Ksh, Sh, Zsh! Send us feedback!
-# Bash shell (/bin/bash) users place these in .bashrc
+# Bash shell (/bin/bash), .bashrc examples
 # ncattget $att_nm $var_nm $fl_nm : What attributes does variable have?
-function ncattget { ncks -M -m ${3} | grep -E -i "^${2} attribute [0-9]+: ${1}" | cut -f 11- -d ' ' | sort ; }
+function ncattget { ncks --trd -M -m ${3} | grep -E -i "^${2} attribute [0-9]+: ${1}" | cut -f 11- -d ' ' | sort ; }
 # ncunits $att_val $fl_nm : Which variables have given units?
-function ncunits { ncks -m ${2} | grep -E -i " attribute [0-9]+: units.+ ${1}" | cut -f 1 -d ' ' | sort ; }
+function ncunits { ncks --trd -m ${2} | grep -E -i " attribute [0-9]+: units.+ ${1}" | cut -f 1 -d ' ' | sort ; }
 # ncavg $var_nm $fl_nm : What is mean of variable?
-function ncavg { ncwa -y avg -O -C -v ${1} ${2} ~/foo.nc ; ncks -H -C -v ${1} ~/foo.nc | cut -f 3- -d ' ' ; }
+function ncavg { ncwa -y avg -O -C -v ${1} ${2} ~/foo.nc ; ncks --trd -H -C -v ${1} ~/foo.nc | cut -f 3- -d ' ' ; }
 # ncavg $var_nm $fl_nm : What is mean of variable?
 function ncavg { ncap2 -O -C -v -s "foo=${1}.avg();print(foo)" ${2} ~/foo.nc | cut -f 3- -d ' ' ; }
 # ncdmnlist $fl_nm : What dimensions are in file?
-ncdmnlist { ncks --cdl -m ${1} | cut -d ':' -f 1 | cut -d '=' -s -f 1 ; }
+function ncdmnlist { ncks --cdl -m ${1} | cut -d ':' -f 1 | cut -d '=' -s -f 1 ; }
 # ncdmnsz $dmn_nm $fl_nm : What is dimension size?
-function ncdmnsz { ncks -m -M ${2} | grep -E -i ": ${1}, size =" | cut -f 7 -d ' ' | uniq ; }
+function ncdmnsz { ncks --trd -m -M ${2} | grep -E -i ": ${1}, size =" | cut -f 7 -d ' ' | uniq ; }
 # ncgrplist $fl_nm : What groups are in file?
 function ncgrplist { ncks --cdl -m ${1} | grep 'group:' | cut -d ':' -f 2 | cut -d ' ' -f 2 | sort ; }
 # nclist $fl_nm : What variables are in file?
-function nclist { ncks -m ${1} | grep -E ': type' | cut -f 1 -d ' ' | sed 's/://' | sort ; }
+function nclist { ncks --trd -m ${1} | grep -E ': type' | cut -f 1 -d ' ' | sed 's/://' | sort ; }
 # ncmax $var_nm $fl_nm : What is maximum of variable?
-function ncmax { ncwa -y max -O -C -v ${1} ${2} ~/foo.nc ; ncks -H -C -v ${1} ~/foo.nc | cut -f 3- -d ' ' ; }
+function ncmax { ncwa -y max -O -C -v ${1} ${2} ~/foo.nc ; ncks --trd -H -C -v ${1} ~/foo.nc | cut -f 3- -d ' ' ; }
 # ncmax $var_nm $fl_nm : What is maximum of variable?
 function ncmax { ncap2 -O -C -v -s "foo=${1}.max();print(foo)" ${2} ~/foo.nc | cut -f 3- -d ' ' ; }
 # ncmdn $var_nm $fl_nm : What is median of variable?
 function ncmdn { ncap2 -O -C -v -s "foo=gsl_stats_median_from_sorted_data(${1}.sort());print(foo)" ${2} ~/foo.nc | cut -f 3- -d ' ' ; }
+# ncmin $var_nm $fl_nm : What is minimum of variable?
+function ncmin { ncap2 -O -C -v -s "foo=${1}.min();print(foo)" ${2} ~/foo.nc | cut -f 3- -d ' ' ; }
 # ncrng $var_nm $fl_nm : What is range of variable?
 function ncrng { ncap2 -O -C -v -s "foo_min=${1}.min();foo_max=${1}.max();print(foo_min,\"%f\");print(\" to \");print(foo_max,\"%f\")" ${2} ~/foo.nc ; }
 # ncmode $var_nm $fl_nm : What is mode of variable?
 function ncmode { ncap2 -O -C -v -s "foo=gsl_stats_median_from_sorted_data(${1}.sort());print(foo)" ${2} ~/foo.nc | cut -f 3- -d ' ' ; }
 # ncrecsz $fl_nm : What is record dimension size?
-function ncrecsz { ncks -M ${1} | grep -E -i "^Record dimension:" | cut -f 8- -d ' ' ; }
+function ncrecsz { ncks --trd -M ${1} | grep -E -i "^Record dimension:" | cut -f 8- -d ' ' ; }
 # nctypget $var_nm $fl_nm : What type is variable?
-function nctypget { ncks -m -v ${1} ${2} | grep -E -i "^${1}: type" | cut -f 3 -d ' ' | cut -f 1 -d ',' ; }
-# Csh shell (/bin/csh) users place these in .cshrc
-ncattget() { ncks -M -m -v ${3} | grep -E -i "^${2} attribute [0-9]+: ${1}" | cut -f 11- -d ' ' | sort ; }
-ncdmnsz() { ncks -m -M ${2} | grep -E -i ": ${1}, size =" | cut -f 7 -d ' ' | uniq ; }
-nclist() { ncks -m ${1} | grep -E ': type' | cut -f 1 -d ' ' | sed 's/://' | sort ; }
-ncrecsz() { ncks -M ${1} | grep -E -i "^Record dimension:" | cut -f 8- -d ' ' ; }
-# Sh shell (/bin/sh) users place these in .profile
-ncattget() { ncks -M -m ${3} | grep -E -i "^${2} attribute [0-9]+: ${1}" | cut -f 11- -d ' ' | sort ; }
-ncdmnsz() { ncks -m -M ${2} | grep -E -i ": ${1}, size =" | cut -f 7 -d ' ' | uniq ; }
-nclist() { ncks -m ${1} | grep -E ': type' | cut -f 1 -d ' ' | sed 's/://' | sort ; }
-ncrecsz() { ncks -M ${1} | grep -E -i "^Record dimension:" | cut -f 8- -d ' ' ; }
+function nctypget { ncks --trd -m -v ${1} ${2} | grep -E -i "^${1}: type" | cut -f 3 -d ' ' | cut -f 1 -d ',' ; }
+
+# Csh shell (/bin/csh), .cshrc examples (derive others from Bash definitions):
+ncattget() { ncks --trd -M -m -v ${3} | grep -E -i "^${2} attribute [0-9]+: ${1}" | cut -f 11- -d ' ' | sort ; }
+ncdmnsz() { ncks --trd -m -M ${2} | grep -E -i ": ${1}, size =" | cut -f 7 -d ' ' | uniq ; }
+nclist() { ncks --trd -m ${1} | grep -E ': type' | cut -f 1 -d ' ' | sed 's/://' | sort ; }
+ncrecsz() { ncks --trd -M ${1} | grep -E -i "^Record dimension:" | cut -f 8- -d ' ' ; }
+
+# Sh shell (/bin/sh), .profile examples (derive others from Bash definitions):
+ncattget() { ncks --trd -M -m ${3} | grep -E -i "^${2} attribute [0-9]+: ${1}" | cut -f 11- -d ' ' | sort ; }
+ncdmnsz() { ncks --trd -m -M ${2} | grep -E -i ": ${1}, size =" | cut -f 7 -d ' ' | uniq ; }
+nclist() { ncks --trd -m ${1} | grep -E ': type' | cut -f 1 -d ' ' | sed 's/://' | sort ; }
+ncrecsz() { ncks --trd -M ${1} | grep -E -i "^Record dimension:" | cut -f 8- -d ' ' ; }
 @end verbatim
 @end example
 
@@ -22118,7 +22164,8 @@ constructed by appending a slash and the filename to the directory:
 @samp{@var{in_drc}/@var{in_fl}}.
 Specifying @var{in_drc} without @var{in_fl} causes @command{ncremap}
 to attempt to remap every file in @var{in_drc} that ends with one of
-these suffixes: @code{.nc}, @code{.nc3}, @code{.nc4}, @code{.cdf},
+these suffixes: @code{.nc}, @code{.nc3}, @code{.nc4}, @code{.nc5},
+ at code{.nc6}, @code{.nc7}, @code{.cdf},
 @code{.hdf}, @code{.he5}, or @code{.h5}.
 When multiple files are regridded, each output file takes the name
 of the corresponding input file.
@@ -25093,9 +25140,9 @@ for mth in {1..12}; do
 done # end loop over mth
 
 Make sure the output file averages correct input files!
-ncks -M prints global metadata: 
+ncks --trd -M prints global metadata: 
 
-  ncks -M ${drc_out}/${caseid}_clm01.nc
+  ncks --trd -M ${drc_out}/${caseid}_clm01.nc
 
 The input files ncra used to create the climatological monthly mean
 will appear in the global attribute named 'history'.
@@ -25203,13 +25250,13 @@ Task 4: Accessing data stored remotely
 OPeNDAP server examples:
 
 UCI DAP servers:
-ncks -M -p http://dust.ess.uci.edu/cgi-bin/dods/nph-dods/dodsdata in.nc
+ncks --trd -M -p http://dust.ess.uci.edu/cgi-bin/dods/nph-dods/dodsdata in.nc
 ncrcat -O -C -D 3 \
   -p http://dust.ess.uci.edu/cgi-bin/dods/nph-dods/dodsdata \
   -l /tmp in.nc in.nc ~/foo.nc
 
 Unidata DAP servers:
-ncks -M -p http://thredds-test.ucar.edu/thredds/dodsC/testdods in.nc
+ncks --trd -M -p http://thredds-test.ucar.edu/thredds/dodsC/testdods in.nc
 ncrcat -O -C -D 3 \
   -p http://thredds-test.ucar.edu/thredds/dodsC/testdods \
   -l /tmp in.nc in.nc ~/foo.nc
@@ -25220,7 +25267,7 @@ http://www.esrl.noaa.gov/psd/thredds/dodsC/Datasets/ncep.reanalysis.dailyavgs/su
 pres.sfc.1969.nc ~/foo.nc
 
 LLNL PCMDI IPCC OPeNDAP Data Portal: 
-ncks -M -p http://username:password@esgcet.llnl.gov/cgi-bin/dap-cgi.py/ipcc4/sresa1b/ncar_ccsm3_0 pcmdi.ipcc4.ncar_ccsm3_0.sresa1b.run1.atm.mo.xml
+ncks --trd -M -p http://username:password@esgcet.llnl.gov/cgi-bin/dap-cgi.py/ipcc4/sresa1b/ncar_ccsm3_0 pcmdi.ipcc4.ncar_ccsm3_0.sresa1b.run1.atm.mo.xml
 
 Earth System Grid (ESG): http://www.earthsystemgrid.org
 
diff --git a/qt/libnco/libnco.pro b/qt/libnco/libnco.pro
deleted file mode 100644
index 8b0cc1e..0000000
--- a/qt/libnco/libnco.pro
+++ /dev/null
@@ -1,118 +0,0 @@
-TEMPLATE = lib
-TARGET = libnco
-CONFIG += staticlib
-CONFIG -= qt
-CONFIG += debug_and_release
-
-unix:CONFIG( debug, debug|release ) {
-        DESTDIR = ./debug
-} else {
-        DESTDIR = ./release
-}
-
-unix {
- DEFINES += HAVE_CONFIG_H
- INCLUDEPATH += ../../
- INCLUDEPATH += /usr/local/include
- INCLUDEPATH += /usr/local
- DEFINES += _BSD_SOURCE
- DEFINES += _POSIX_SOURCE
- LIBS +=
- QMAKE_CFLAGS += -std=c99
-}
-
-include (../nco.pri)
-
-SOURCES += ../../src/nco/nco_getopt.c
-HEADERS += ../../src/nco/nco_getopt.h
-HEADERS += ../../src/nco/libnco.h \
-../../src/nco/ncap.h \
-../../src/nco/nco.h \
-../../src/nco/nco_att_utl.h \
-../../src/nco/nco_aux.h \
-../../src/nco/nco_bnr.h \
-../../src/nco/nco_cln_utl.h \
-../../src/nco/nco_cnf_dmn.h \
-../../src/nco/nco_cnf_typ.h \
-../../src/nco/nco_cnk.h \
-../../src/nco/nco_cnv_arm.h \
-../../src/nco/nco_cnv_csm.h \
-../../src/nco/nco_ctl.h \
-../../src/nco/nco_dbg.h \
-../../src/nco/nco_dmn_utl.h \
-../../src/nco/nco_fl_utl.h \
-../../src/nco/nco_grp_trv.h \
-../../src/nco/nco_grp_utl.h \
-../../src/nco/nco_lmt.h \
-../../src/nco/nco_lst_utl.h \
-../../src/nco/nco_md5.h \
-../../src/nco/nco_mmr.h \
-../../src/nco/nco_mpi.h \
-../../src/nco/nco_msa.h \
-../../src/nco/nco_mss_val.h \
-../../src/nco/nco_netcdf.h \
-../../src/nco/nco_omp.h \
-../../src/nco/nco_pck.h \
-../../src/nco/nco_ppc.h \
-../../src/nco/nco_prn.h \
-../../src/nco/nco_rec_var.h \
-../../src/nco/nco_rgr.h \
-../../src/nco/nco_rth_flt.h \
-../../src/nco/nco_rth_utl.h \
-../../src/nco/nco_scl_utl.h \
-../../src/nco/nco_scm.h \
-../../src/nco/nco_sld.h \
-../../src/nco/nco_sng_utl.h \
-../../src/nco/nco_srm.h \
-../../src/nco/nco_typ.h \
-../../src/nco/nco_uthash.h \
-../../src/nco/nco_var_avg.h \
-../../src/nco/nco_var_lst.h \
-../../src/nco/nco_var_rth.h \
-../../src/nco/nco_var_scv.h \
-../../src/nco/nco_var_utl.h \
-../../src/nco/nco_mta.h
-
-SOURCES += ../../src/nco/nco_att_utl.c \
-../../src/nco/nco_att_utl.c \
-../../src/nco/nco_aux.c \
-../../src/nco/nco_bnr.c \
-../../src/nco/nco_cln_utl.c \
-../../src/nco/nco_cnf_dmn.c \
-../../src/nco/nco_cnf_typ.c \
-../../src/nco/nco_cnk.c \
-../../src/nco/nco_cnv_arm.c \
-../../src/nco/nco_cnv_csm.c \
-../../src/nco/nco_ctl.c \
-../../src/nco/nco_dbg.c \
-../../src/nco/nco_dmn_utl.c \
-../../src/nco/nco_fl_utl.c \
-../../src/nco/nco_grp_trv.c \
-../../src/nco/nco_grp_utl.c \
-../../src/nco/nco_lmt.c \
-../../src/nco/nco_lst_utl.c \
-../../src/nco/nco_md5.c \
-../../src/nco/nco_mmr.c \
-../../src/nco/nco_msa.c \
-../../src/nco/nco_mss_val.c \
-../../src/nco/nco_netcdf.c \
-../../src/nco/nco_omp.c \
-../../src/nco/nco_pck.c \
-../../src/nco/nco_ppc.c \
-../../src/nco/nco_prn.c \
-../../src/nco/nco_rec_var.c \
-../../src/nco/nco_rgr.c \
-../../src/nco/nco_rth_flt.c \
-../../src/nco/nco_rth_utl.c \
-../../src/nco/nco_scl_utl.c \
-../../src/nco/nco_sld.c \
-../../src/nco/nco_scm.c \
-../../src/nco/nco_sng_utl.c \
-../../src/nco/nco_srm.c \
-../../src/nco/nco_var_avg.c \
-../../src/nco/nco_var_lst.c \
-../../src/nco/nco_var_rth.c \
-../../src/nco/nco_var_scv.c \
-../../src/nco/nco_var_utl.c \
-../../src/nco/nco_mta.c
-
diff --git a/qt/libnco/libnco.vcxproj b/qt/libnco/libnco.vcxproj
deleted file mode 100644
index f96d678..0000000
--- a/qt/libnco/libnco.vcxproj
+++ /dev/null
@@ -1,224 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{E8AACE7E-513A-3A65-B16B-0661B6089A03}</ProjectGuid>
-    <RootNamespace>libnco</RootNamespace>
-    <Keyword>Qt4VSv1.0</Keyword>
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <PlatformToolSet>v140</PlatformToolSet>
-    <OutputDirectory>debug\</OutputDirectory>
-    <ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
-    <CharacterSet>NotSet</CharacterSet>
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <IntermediateDirectory>debug\</IntermediateDirectory>
-    <PrimaryOutput>libnco</PrimaryOutput>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <PlatformToolSet>v140</PlatformToolSet>
-    <OutputDirectory>release\</OutputDirectory>
-    <ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
-    <CharacterSet>NotSet</CharacterSet>
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <IntermediateDirectory>release\</IntermediateDirectory>
-    <PrimaryOutput>libnco</PrimaryOutput>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings" />
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\$(Configuration)\</IntDir>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">libnco</TargetName>
-    <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</IgnoreImportLibrary>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\$(Configuration)\</IntDir>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">libnco</TargetName>
-    <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</IgnoreImportLibrary>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <AdditionalIncludeDirectories>.;$(HEADER_NETCDF);$(HEADER_GSL);$(HEADER_UDUNITS);$(QTDIR)\win32-msvc2013;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <AdditionalOptions>-w34100 -w34189 -w44996 %(AdditionalOptions)</AdditionalOptions>
-      <AssemblerListingLocation>debug\</AssemblerListingLocation>
-      <BrowseInformation>false</BrowseInformation>
-      <CompileAs>CompileAsCpp</CompileAs>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <ExceptionHandling>Sync</ExceptionHandling>
-      <ObjectFileName>$(IntDir)</ObjectFileName>
-      <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;ENABLE_UDUNITS;HAVE_UDUNITS2_H;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;%(PreprocessorDefinitions);NEED_STRSEP</PreprocessorDefinitions>
-      <PreprocessToFile>false</PreprocessToFile>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <RuntimeTypeInfo>true</RuntimeTypeInfo>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <WarningLevel>Level3</WarningLevel>
-      <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
-    </ClCompile>
-    <Lib>
-      <OutputFile>$(OutDir)\libnco.lib</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-    </Lib>
-    <Midl>
-      <DefaultCharType>Unsigned</DefaultCharType>
-      <EnableErrorChecks>None</EnableErrorChecks>
-      <WarningLevel>0</WarningLevel>
-    </Midl>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;ENABLE_UDUNITS;HAVE_UDUNITS2_H;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ResourceCompile>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <AdditionalIncludeDirectories>.;$(HEADER_NETCDF);$(HEADER_GSL);$(HEADER_UDUNITS);$(QTDIR)\win32-msvc2013;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <AdditionalOptions>-Zc:strictStrings -w34100 -w34189 -w44996 %(AdditionalOptions)</AdditionalOptions>
-      <AssemblerListingLocation>release\</AssemblerListingLocation>
-      <BrowseInformation>false</BrowseInformation>
-      <CompileAs>CompileAsCpp</CompileAs>
-      <DebugInformationFormat>None</DebugInformationFormat>
-      <ExceptionHandling>Sync</ExceptionHandling>
-      <ObjectFileName>$(IntDir)</ObjectFileName>
-      <Optimization>MaxSpeed</Optimization>
-      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;ENABLE_UDUNITS;HAVE_UDUNITS2_H;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessToFile>false</PreprocessToFile>
-      <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <RuntimeTypeInfo>true</RuntimeTypeInfo>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <WarningLevel>Level3</WarningLevel>
-    </ClCompile>
-    <Lib>
-      <OutputFile>$(OutDir)\libnco.lib</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-    </Lib>
-    <Midl>
-      <DefaultCharType>Unsigned</DefaultCharType>
-      <EnableErrorChecks>None</EnableErrorChecks>
-      <WarningLevel>0</WarningLevel>
-    </Midl>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;ENABLE_UDUNITS;HAVE_UDUNITS2_H;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ResourceCompile>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\src\nco\nco_att_utl.c" />
-    <ClCompile Include="..\..\src\nco\nco_aux.c" />
-    <ClCompile Include="..\..\src\nco\nco_bnr.c" />
-    <ClCompile Include="..\..\src\nco\nco_cln_utl.c" />
-    <ClCompile Include="..\..\src\nco\nco_cnf_dmn.c" />
-    <ClCompile Include="..\..\src\nco\nco_cnf_typ.c" />
-    <ClCompile Include="..\..\src\nco\nco_cnk.c" />
-    <ClCompile Include="..\..\src\nco\nco_cnv_arm.c" />
-    <ClCompile Include="..\..\src\nco\nco_cnv_csm.c" />
-    <ClCompile Include="..\..\src\nco\nco_ctl.c" />
-    <ClCompile Include="..\..\src\nco\nco_dbg.c" />
-    <ClCompile Include="..\..\src\nco\nco_dmn_utl.c" />
-    <ClCompile Include="..\..\src\nco\nco_fl_utl.c" />
-    <ClCompile Include="..\..\src\nco\nco_getopt.c" />
-    <ClCompile Include="..\..\src\nco\nco_grp_trv.c" />
-    <ClCompile Include="..\..\src\nco\nco_grp_utl.c" />
-    <ClCompile Include="..\..\src\nco\nco_lmt.c" />
-    <ClCompile Include="..\..\src\nco\nco_lst_utl.c" />
-    <ClCompile Include="..\..\src\nco\nco_md5.c" />
-    <ClCompile Include="..\..\src\nco\nco_mmr.c" />
-    <ClCompile Include="..\..\src\nco\nco_msa.c" />
-    <ClCompile Include="..\..\src\nco\nco_mss_val.c" />
-    <ClCompile Include="..\..\src\nco\nco_mta.c" />
-    <ClCompile Include="..\..\src\nco\nco_netcdf.c" />
-    <ClCompile Include="..\..\src\nco\nco_omp.c" />
-    <ClCompile Include="..\..\src\nco\nco_pck.c" />
-    <ClCompile Include="..\..\src\nco\nco_ppc.c" />
-    <ClCompile Include="..\..\src\nco\nco_prn.c" />
-    <ClCompile Include="..\..\src\nco\nco_rec_var.c" />
-    <ClCompile Include="..\..\src\nco\nco_rgr.c" />
-    <ClCompile Include="..\..\src\nco\nco_rth_flt.c" />
-    <ClCompile Include="..\..\src\nco\nco_rth_utl.c" />
-    <ClCompile Include="..\..\src\nco\nco_scl_utl.c" />
-    <ClCompile Include="..\..\src\nco\nco_scm.c" />
-    <ClCompile Include="..\..\src\nco\nco_sld.c" />
-    <ClCompile Include="..\..\src\nco\nco_sng_utl.c" />
-    <ClCompile Include="..\..\src\nco\nco_srm.c" />
-    <ClCompile Include="..\..\src\nco\nco_var_avg.c" />
-    <ClCompile Include="..\..\src\nco\nco_var_lst.c" />
-    <ClCompile Include="..\..\src\nco\nco_var_rth.c" />
-    <ClCompile Include="..\..\src\nco\nco_var_scv.c" />
-    <ClCompile Include="..\..\src\nco\nco_var_utl.c" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\src\nco\libnco.h" />
-    <ClInclude Include="..\..\src\nco\ncap.h" />
-    <ClInclude Include="..\..\src\nco\nco.h" />
-    <ClInclude Include="..\..\src\nco\nco_att_utl.h" />
-    <ClInclude Include="..\..\src\nco\nco_aux.h" />
-    <ClInclude Include="..\..\src\nco\nco_bnr.h" />
-    <ClInclude Include="..\..\src\nco\nco_cln_utl.h" />
-    <ClInclude Include="..\..\src\nco\nco_cnf_dmn.h" />
-    <ClInclude Include="..\..\src\nco\nco_cnf_typ.h" />
-    <ClInclude Include="..\..\src\nco\nco_cnk.h" />
-    <ClInclude Include="..\..\src\nco\nco_cnv_arm.h" />
-    <ClInclude Include="..\..\src\nco\nco_cnv_csm.h" />
-    <ClInclude Include="..\..\src\nco\nco_ctl.h" />
-    <ClInclude Include="..\..\src\nco\nco_dbg.h" />
-    <ClInclude Include="..\..\src\nco\nco_dmn_utl.h" />
-    <ClInclude Include="..\..\src\nco\nco_fl_utl.h" />
-    <ClInclude Include="..\..\src\nco\nco_getopt.h" />
-    <ClInclude Include="..\..\src\nco\nco_grp_trv.h" />
-    <ClInclude Include="..\..\src\nco\nco_grp_utl.h" />
-    <ClInclude Include="..\..\src\nco\nco_lmt.h" />
-    <ClInclude Include="..\..\src\nco\nco_lst_utl.h" />
-    <ClInclude Include="..\..\src\nco\nco_md5.h" />
-    <ClInclude Include="..\..\src\nco\nco_mmr.h" />
-    <ClInclude Include="..\..\src\nco\nco_mpi.h" />
-    <ClInclude Include="..\..\src\nco\nco_msa.h" />
-    <ClInclude Include="..\..\src\nco\nco_mss_val.h" />
-    <ClInclude Include="..\..\src\nco\nco_mta.h" />
-    <ClInclude Include="..\..\src\nco\nco_netcdf.h" />
-    <ClInclude Include="..\..\src\nco\nco_omp.h" />
-    <ClInclude Include="..\..\src\nco\nco_pck.h" />
-    <ClInclude Include="..\..\src\nco\nco_ppc.h" />
-    <ClInclude Include="..\..\src\nco\nco_prn.h" />
-    <ClInclude Include="..\..\src\nco\nco_rec_var.h" />
-    <ClInclude Include="..\..\src\nco\nco_rgr.h" />
-    <ClInclude Include="..\..\src\nco\nco_rth_flt.h" />
-    <ClInclude Include="..\..\src\nco\nco_rth_utl.h" />
-    <ClInclude Include="..\..\src\nco\nco_scl_utl.h" />
-    <ClInclude Include="..\..\src\nco\nco_scm.h" />
-    <ClInclude Include="..\..\src\nco\nco_sld.h" />
-    <ClInclude Include="..\..\src\nco\nco_sng_utl.h" />
-    <ClInclude Include="..\..\src\nco\nco_srm.h" />
-    <ClInclude Include="..\..\src\nco\nco_typ.h" />
-    <ClInclude Include="..\..\src\nco\nco_uthash.h" />
-    <ClInclude Include="..\..\src\nco\nco_var_avg.h" />
-    <ClInclude Include="..\..\src\nco\nco_var_lst.h" />
-    <ClInclude Include="..\..\src\nco\nco_var_rth.h" />
-    <ClInclude Include="..\..\src\nco\nco_var_scv.h" />
-    <ClInclude Include="..\..\src\nco\nco_var_utl.h" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets" />
-  <ProjectExtensions>
-    <VisualStudio>
-      <UserProperties UicDir=".\GeneratedFiles" RccDir=".\GeneratedFiles" Qt5Version_x0020_Win32="qtbase" />
-    </VisualStudio>
-  </ProjectExtensions>
-</Project>
\ No newline at end of file
diff --git a/qt/libnco/libnco.vcxproj.filters b/qt/libnco/libnco.vcxproj.filters
deleted file mode 100644
index 261c393..0000000
--- a/qt/libnco/libnco.vcxproj.filters
+++ /dev/null
@@ -1,295 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Header Files">
-      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
-      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
-    </Filter>
-    <Filter Include="Header Files">
-      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
-      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
-    </Filter>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\src\nco\nco_att_utl.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\nco\nco_aux.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\nco\nco_bnr.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\nco\nco_cln_utl.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\nco\nco_cnf_dmn.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\nco\nco_cnf_typ.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\nco\nco_cnk.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\nco\nco_cnv_arm.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\nco\nco_cnv_csm.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\nco\nco_ctl.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\nco\nco_dbg.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\nco\nco_dmn_utl.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\nco\nco_fl_utl.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\nco\nco_getopt.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\nco\nco_grp_trv.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\nco\nco_grp_utl.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\nco\nco_lmt.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\nco\nco_lst_utl.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\nco\nco_md5.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\nco\nco_mmr.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\nco\nco_msa.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\nco\nco_mss_val.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\nco\nco_netcdf.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\nco\nco_omp.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\nco\nco_pck.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\nco\nco_ppc.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\nco\nco_prn.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\nco\nco_rec_var.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\nco\nco_rgr.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\nco\nco_rth_flt.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\nco\nco_rth_utl.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\nco\nco_scl_utl.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\nco\nco_scm.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\nco\nco_sld.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\nco\nco_sng_utl.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\nco\nco_srm.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\nco\nco_var_avg.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\nco\nco_var_lst.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\nco\nco_var_rth.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\nco\nco_var_scv.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\nco\nco_var_utl.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\nco\nco_mta.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\src\nco\libnco.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\nco\ncap.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\nco\nco.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\nco\nco_att_utl.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\nco\nco_aux.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\nco\nco_bnr.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\nco\nco_cln_utl.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\nco\nco_cnf_dmn.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\nco\nco_cnf_typ.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\nco\nco_cnk.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\nco\nco_cnv_arm.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\nco\nco_cnv_csm.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\nco\nco_ctl.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\nco\nco_dbg.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\nco\nco_dmn_utl.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\nco\nco_fl_utl.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\nco\nco_getopt.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\nco\nco_grp_trv.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\nco\nco_grp_utl.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\nco\nco_lmt.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\nco\nco_lst_utl.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\nco\nco_md5.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\nco\nco_mmr.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\nco\nco_mpi.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\nco\nco_msa.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\nco\nco_mss_val.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\nco\nco_netcdf.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\nco\nco_omp.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\nco\nco_pck.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\nco\nco_ppc.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\nco\nco_prn.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\nco\nco_rec_var.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\nco\nco_rgr.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\nco\nco_rth_flt.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\nco\nco_rth_utl.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\nco\nco_scl_utl.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\nco\nco_scm.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\nco\nco_sld.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\nco\nco_sng_utl.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\nco\nco_srm.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\nco\nco_typ.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\nco\nco_uthash.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\nco\nco_var_avg.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\nco\nco_var_lst.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\nco\nco_var_rth.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\nco\nco_var_scv.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\nco\nco_var_utl.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\nco\nco_mta.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-  </ItemGroup>
-</Project>
\ No newline at end of file
diff --git a/qt/libnco_c++/libnco_c++.pro b/qt/libnco_c++/libnco_c++.pro
deleted file mode 100644
index 0eb5834..0000000
--- a/qt/libnco_c++/libnco_c++.pro
+++ /dev/null
@@ -1,49 +0,0 @@
-TEMPLATE = lib
-TARGET = libnco_c++
-CONFIG += console 
-CONFIG += static
-CONFIG -= qt
-CONFIG += debug_and_release
-
-INCLUDEPATH += ../../src/nco_c++
-
-unix:CONFIG( debug, debug|release ) {
-        DESTDIR = ./debug
-} else {
-        DESTDIR = ./release
-}
-
-unix {
- INCLUDEPATH += /usr/local/include
- INCLUDEPATH += /usr/local
-}
-win32 {
- QMAKE_CFLAGS_RELEASE += /MT
- QMAKE_CXXFLAGS_RELEASE += /MT
- QMAKE_CFLAGS_DEBUG += /MTd
- QMAKE_CXXFLAGS_DEBUG += /MTd
- DEFINES += _CRT_SECURE_NO_WARNINGS
- DEFINES += _CRT_NONSTDC_NO_DEPRECATE
- DEFINES += ENABLE_NETCDF4
- DEFINES += HAVE_NETCDF4_H
- DEFINES += ENABLE_GSL
- DEFINES += ENABLE_UDUNITS
- DEFINES += HAVE_UDUNITS2_H
- INCLUDEPATH += $(HEADER_NETCDF) 
- INCLUDEPATH += $(HEADER_GSL)
-}
-
-HEADERS += ../../src/nco_c++/libnco_c++.hh \
-../../src/nco_c++/nco_dmn.hh \
-../../src/nco_c++/nco_hgh.hh \
-../../src/nco_c++/nco_var.hh \
-../../src/nco_c++/nco_att.hh \
-../../src/nco_c++/nco_fl.hh \
-../../src/nco_c++/nco_utl.hh 
-
-SOURCES += ../../src/nco_c++/nco_att.cc \
-../../src/nco_c++/nco_dmn.cc \
-../../src/nco_c++/nco_fl.cc \
-../../src/nco_c++/nco_hgh.cc \
-../../src/nco_c++/nco_utl.cc \
-../../src/nco_c++/nco_var.cc
diff --git a/qt/libnco_c++/libnco_c++.vcxproj b/qt/libnco_c++/libnco_c++.vcxproj
deleted file mode 100644
index 0f957e3..0000000
--- a/qt/libnco_c++/libnco_c++.vcxproj
+++ /dev/null
@@ -1,145 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{BF383AEF-8F0C-39FD-96F6-393FDA23EAB4}</ProjectGuid>
-    <RootNamespace>libnco_c++</RootNamespace>
-    <Keyword>Qt4VSv1.0</Keyword>
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <PlatformToolSet>v140</PlatformToolSet>
-    <OutputDirectory>debug\</OutputDirectory>
-    <ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
-    <CharacterSet>NotSet</CharacterSet>
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <IntermediateDirectory>debug\</IntermediateDirectory>
-    <PrimaryOutput>libnco_c++</PrimaryOutput>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <PlatformToolSet>v140</PlatformToolSet>
-    <OutputDirectory>release\</OutputDirectory>
-    <ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
-    <CharacterSet>NotSet</CharacterSet>
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <IntermediateDirectory>release\</IntermediateDirectory>
-    <PrimaryOutput>libnco_c++</PrimaryOutput>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings" />
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\$(Configuration)\</IntDir>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">libnco_c++</TargetName>
-    <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</IgnoreImportLibrary>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\$(Configuration)\</IntDir>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">libnco_c++</TargetName>
-    <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</IgnoreImportLibrary>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <AdditionalIncludeDirectories>.;..\..\src\nco_c++;$(HEADER_NETCDF);$(HEADER_GSL);$(QTDIR)\win32-msvc2013;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <AdditionalOptions>-w34100 -w34189 -w44996 %(AdditionalOptions)</AdditionalOptions>
-      <AssemblerListingLocation>debug\</AssemblerListingLocation>
-      <BrowseInformation>false</BrowseInformation>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <ExceptionHandling>Sync</ExceptionHandling>
-      <ObjectFileName>$(IntDir)</ObjectFileName>
-      <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;ENABLE_NETCDF4;HAVE_NETCDF4_H;ENABLE_GSL;ENABLE_UDUNITS;HAVE_UDUNITS2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessToFile>false</PreprocessToFile>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <RuntimeTypeInfo>true</RuntimeTypeInfo>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <WarningLevel>Level3</WarningLevel>
-      <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
-    </ClCompile>
-    <Lib>
-      <OutputFile>$(OutDir)\libnco_c++.lib</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-    </Lib>
-    <Midl>
-      <DefaultCharType>Unsigned</DefaultCharType>
-      <EnableErrorChecks>None</EnableErrorChecks>
-      <WarningLevel>0</WarningLevel>
-    </Midl>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;ENABLE_NETCDF4;HAVE_NETCDF4_H;ENABLE_GSL;ENABLE_UDUNITS;HAVE_UDUNITS2_H;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ResourceCompile>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <AdditionalIncludeDirectories>.;..\..\src\nco_c++;$(HEADER_NETCDF);$(HEADER_GSL);$(QTDIR)\win32-msvc2013;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <AdditionalOptions>-Zc:strictStrings -w34100 -w34189 -w44996 %(AdditionalOptions)</AdditionalOptions>
-      <AssemblerListingLocation>release\</AssemblerListingLocation>
-      <BrowseInformation>false</BrowseInformation>
-      <DebugInformationFormat>None</DebugInformationFormat>
-      <ExceptionHandling>Sync</ExceptionHandling>
-      <ObjectFileName>$(IntDir)</ObjectFileName>
-      <Optimization>MaxSpeed</Optimization>
-      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;ENABLE_NETCDF4;HAVE_NETCDF4_H;ENABLE_GSL;ENABLE_UDUNITS;HAVE_UDUNITS2_H;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessToFile>false</PreprocessToFile>
-      <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <RuntimeTypeInfo>true</RuntimeTypeInfo>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <WarningLevel>Level3</WarningLevel>
-    </ClCompile>
-    <Lib>
-      <OutputFile>$(OutDir)\libnco_c++.lib</OutputFile>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-    </Lib>
-    <Midl>
-      <DefaultCharType>Unsigned</DefaultCharType>
-      <EnableErrorChecks>None</EnableErrorChecks>
-      <WarningLevel>0</WarningLevel>
-    </Midl>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;ENABLE_NETCDF4;HAVE_NETCDF4_H;ENABLE_GSL;ENABLE_UDUNITS;HAVE_UDUNITS2_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ResourceCompile>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\src\nco_c++\nco_att.cc" />
-    <ClCompile Include="..\..\src\nco_c++\nco_dmn.cc" />
-    <ClCompile Include="..\..\src\nco_c++\nco_fl.cc" />
-    <ClCompile Include="..\..\src\nco_c++\nco_hgh.cc" />
-    <ClCompile Include="..\..\src\nco_c++\nco_utl.cc" />
-    <ClCompile Include="..\..\src\nco_c++\nco_var.cc" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\src\nco_c++\libnco_c++.hh" />
-    <ClInclude Include="..\..\src\nco_c++\nco_att.hh" />
-    <ClInclude Include="..\..\src\nco_c++\nco_dmn.hh" />
-    <ClInclude Include="..\..\src\nco_c++\nco_fl.hh" />
-    <ClInclude Include="..\..\src\nco_c++\nco_hgh.hh" />
-    <ClInclude Include="..\..\src\nco_c++\nco_utl.hh" />
-    <ClInclude Include="..\..\src\nco_c++\nco_var.hh" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets" />
-  <ProjectExtensions>
-    <VisualStudio>
-      <UserProperties UicDir=".\GeneratedFiles" RccDir=".\GeneratedFiles" Qt5Version_x0020_Win32="qtbase" />
-    </VisualStudio>
-  </ProjectExtensions>
-</Project>
\ No newline at end of file
diff --git a/qt/libnco_c++/libnco_c++.vcxproj.filters b/qt/libnco_c++/libnco_c++.vcxproj.filters
deleted file mode 100644
index 3ba20a5..0000000
--- a/qt/libnco_c++/libnco_c++.vcxproj.filters
+++ /dev/null
@@ -1,64 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Header Files">
-      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
-      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
-    </Filter>
-    <Filter Include="Header Files">
-      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
-      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
-    </Filter>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\src\nco_c++\nco_att.cc">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\nco_c++\nco_dmn.cc">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\nco_c++\nco_fl.cc">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\nco_c++\nco_hgh.cc">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\nco_c++\nco_utl.cc">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\nco_c++\nco_var.cc">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\src\nco_c++\libnco_c++.hh">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\nco_c++\nco_att.hh">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\nco_c++\nco_dmn.hh">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\nco_c++\nco_fl.hh">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\nco_c++\nco_hgh.hh">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\nco_c++\nco_utl.hh">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\nco_c++\nco_var.hh">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-  </ItemGroup>
-</Project>
\ No newline at end of file
diff --git a/qt/ncap2/ncap2.pro b/qt/ncap2/ncap2.pro
deleted file mode 100644
index 2ee0ec8..0000000
--- a/qt/ncap2/ncap2.pro
+++ /dev/null
@@ -1,70 +0,0 @@
-TEMPLATE = app
-TARGET = ncap2
-CONFIG -= qt
-CONFIG += debug_and_release
-
-CONFIG( debug, debug|release ) {
-        win32:LIBS += ../libnco/debug/libnco.lib
-        unix:LIBS  += ../libnco/debug/liblibnco.a
-        win32:LIBS += $(LIB_ANTLR) 
-} else {
-        win32:LIBS += ../libnco/release/libnco.lib
-        unix:LIBS  += ../libnco/release/liblibnco.a
-        win32:LIBS += $(LIB_ANTLR_REL)
-}
-
-unix {
- LIBS += -lhdf5_hl -lhdf5 -lgsl -lgslcblas -lnetcdf -lm
- LIBS += -L/usr/lib/x86_64-linux-gnu/ -L/usr/lib/i386-linux-gnu/ -lz -ludunits2 -lexpat 
- LIBS += -lantlr
-}
-
-include (../nco.pri)
-
-win32 {
- INCLUDEPATH += $(HEADER_ANTLR)
-}
-
-INCLUDEPATH += ../../src/nco
-INCLUDEPATH += ../../src/nco++
-
-HEADERS   = ../../src/nco++/fmc_all_cls.hh \
-../../src/nco++/fmc_cls.hh \
-../../src/nco++/Invoke.hh \
-../../src/nco++/fmc_cls.hh \
-../../src/nco++/libnco++.hh \
-../../src/nco++/fmc_cls.hh \
-../../src/nco++/map_srt_tmp.hh \
-../../src/nco++/ncap2.hh \
-../../src/nco++/ncap2_utl.hh \
-../../src/nco++/ncap2_utl.hh \
-../../src/nco++/NcapVar.hh \
-../../src/nco++/NcapVarVector.hh  \
-../../src/nco++/NcapVector.hh \
-../../src/nco++/ncoEnumTokenTypes.hpp \
-../../src/nco++/ncoTree.hpp \
-../../src/nco++/prs_cls.hh \
-../../src/nco++/sdo_utl.hh \
-../../src/nco++/sym_cls.hh \
-../../src/nco++/sdo_utl.hh \
-../../src/nco++/VarOp.hh \
-../../src/nco++/vtl_cls.hh \
-../../src/nco++/fmc_gsl_cls.hh \
-../../src/nco++/nco_gsl.h
-
-SOURCES   = ../../src/nco++/Invoke.cc \
-../../src/nco++/ncap2.cc \
-../../src/nco++/ncap2_utl.cc \
-../../src/nco++/sdo_utl.cc \
-../../src/nco++/sym_cls.cc \
-../../src/nco++/fmc_cls.cc \
-../../src/nco++/fmc_all_cls.cc \
-../../src/nco++/fmc_gsl_cls.cc \
-../../src/nco++/NcapVar.cc \
-../../src/nco++/NcapVarVector.cc \
-../../src/nco++/ncoLexer.cpp \
-../../src/nco++/ncoParser.cpp \
-../../src/nco++/ncoTree.cpp \
-../../src/nco++/prs_cls.cc \
-../../src/nco++/nco_gsl.c
-
diff --git a/qt/ncap2/ncap2.vcxproj b/qt/ncap2/ncap2.vcxproj
deleted file mode 100644
index 7a0ec9b..0000000
--- a/qt/ncap2/ncap2.vcxproj
+++ /dev/null
@@ -1,186 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{DEBDE623-1A7F-3850-AFE7-37FDF3D6EC7F}</ProjectGuid>
-    <RootNamespace>ncap2</RootNamespace>
-    <Keyword>Qt4VSv1.0</Keyword>
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <PlatformToolSet>v140</PlatformToolSet>
-    <OutputDirectory>debug\</OutputDirectory>
-    <ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
-    <CharacterSet>NotSet</CharacterSet>
-    <ConfigurationType>Application</ConfigurationType>
-    <IntermediateDirectory>debug\</IntermediateDirectory>
-    <PrimaryOutput>ncap2</PrimaryOutput>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <PlatformToolSet>v140</PlatformToolSet>
-    <OutputDirectory>release\</OutputDirectory>
-    <ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
-    <CharacterSet>NotSet</CharacterSet>
-    <ConfigurationType>Application</ConfigurationType>
-    <IntermediateDirectory>release\</IntermediateDirectory>
-    <PrimaryOutput>ncap2</PrimaryOutput>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings" />
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\$(Configuration)\</IntDir>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">ncap2</TargetName>
-    <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</IgnoreImportLibrary>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\$(Configuration)\</IntDir>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">ncap2</TargetName>
-    <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</IgnoreImportLibrary>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <AdditionalIncludeDirectories>.;$(HEADER_NETCDF);$(HEADER_GSL);$(HEADER_UDUNITS);$(HEADER_ANTLR);..\..\src\nco;..\..\src\nco++;$(QTDIR)\win32-msvc2013;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <AdditionalOptions>-w34100 -w34189 -w44996 %(AdditionalOptions)</AdditionalOptions>
-      <AssemblerListingLocation>debug\</AssemblerListingLocation>
-      <BrowseInformation>false</BrowseInformation>
-      <CompileAs>CompileAsCpp</CompileAs>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <ExceptionHandling>Sync</ExceptionHandling>
-      <ObjectFileName>$(IntDir)</ObjectFileName>
-      <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;ENABLE_UDUNITS;HAVE_UDUNITS2_H;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessToFile>false</PreprocessToFile>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <RuntimeTypeInfo>true</RuntimeTypeInfo>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <WarningLevel>Level3</WarningLevel>
-      <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>../libnco/debug/libnco.lib;$(LIB_ANTLR);$(LIB_NETCDF);$(LIB_HDF5);$(LIB_HDF5_HL);$(LIB_ZLIB);$(LIB_SZIP);$(LIB_GSL);$(LIB_UDUNITS);$(LIB_EXPAT);$(LIB_CURL);%(AdditionalDependencies);ws2_32.lib;winmm.lib;wldap32.lib</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(QTDIR)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <AdditionalOptions>"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions)</AdditionalOptions>
-      <DataExecutionPrevention>true</DataExecutionPrevention>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <IgnoreImportLibrary>true</IgnoreImportLibrary>
-      <OutputFile>$(OutDir)\ncap2.exe</OutputFile>
-      <RandomizedBaseAddress>true</RandomizedBaseAddress>
-      <SubSystem>Console</SubSystem>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-    </Link>
-    <Midl>
-      <DefaultCharType>Unsigned</DefaultCharType>
-      <EnableErrorChecks>None</EnableErrorChecks>
-      <WarningLevel>0</WarningLevel>
-    </Midl>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;ENABLE_UDUNITS;HAVE_UDUNITS2_H;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ResourceCompile>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <AdditionalIncludeDirectories>.;$(HEADER_NETCDF);$(HEADER_GSL);$(HEADER_UDUNITS);$(HEADER_ANTLR);..\..\src\nco;..\..\src\nco++;$(QTDIR)\win32-msvc2013;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <AdditionalOptions>-Zc:strictStrings -w34100 -w34189 -w44996 %(AdditionalOptions)</AdditionalOptions>
-      <AssemblerListingLocation>release\</AssemblerListingLocation>
-      <BrowseInformation>false</BrowseInformation>
-      <CompileAs>CompileAsCpp</CompileAs>
-      <DebugInformationFormat>None</DebugInformationFormat>
-      <ExceptionHandling>Sync</ExceptionHandling>
-      <ObjectFileName>$(IntDir)</ObjectFileName>
-      <Optimization>MaxSpeed</Optimization>
-      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;ENABLE_UDUNITS;HAVE_UDUNITS2_H;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessToFile>false</PreprocessToFile>
-      <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <RuntimeTypeInfo>true</RuntimeTypeInfo>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <WarningLevel>Level3</WarningLevel>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>../libnco/release/libnco.lib;$(LIB_ANTLR_REL);$(LIB_NETCDF);$(LIB_HDF5);$(LIB_HDF5_HL);$(LIB_ZLIB);$(LIB_SZIP);$(LIB_GSL);$(LIB_UDUNITS);$(LIB_EXPAT);$(LIB_CURL);%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(QTDIR)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <AdditionalOptions>"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions)</AdditionalOptions>
-      <DataExecutionPrevention>true</DataExecutionPrevention>
-      <GenerateDebugInformation>false</GenerateDebugInformation>
-      <IgnoreImportLibrary>true</IgnoreImportLibrary>
-      <LinkIncremental>false</LinkIncremental>
-      <OutputFile>$(OutDir)\ncap2.exe</OutputFile>
-      <RandomizedBaseAddress>true</RandomizedBaseAddress>
-      <SubSystem>Console</SubSystem>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-    </Link>
-    <Midl>
-      <DefaultCharType>Unsigned</DefaultCharType>
-      <EnableErrorChecks>None</EnableErrorChecks>
-      <WarningLevel>0</WarningLevel>
-    </Midl>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;ENABLE_UDUNITS;HAVE_UDUNITS2_H;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ResourceCompile>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\src\nco++\Invoke.cc" />
-    <ClCompile Include="..\..\src\nco++\NcapVar.cc" />
-    <ClCompile Include="..\..\src\nco++\NcapVarVector.cc" />
-    <ClCompile Include="..\..\src\nco++\fmc_all_cls.cc" />
-    <ClCompile Include="..\..\src\nco++\fmc_cls.cc" />
-    <ClCompile Include="..\..\src\nco++\fmc_gsl_cls.cc" />
-    <ClCompile Include="..\..\src\nco++\ncap2.cc" />
-    <ClCompile Include="..\..\src\nco++\ncap2_utl.cc" />
-    <ClCompile Include="..\..\src\nco++\ncoLexer.cpp" />
-    <ClCompile Include="..\..\src\nco++\ncoParser.cpp" />
-    <ClCompile Include="..\..\src\nco++\ncoTree.cpp" />
-    <ClCompile Include="..\..\src\nco++\nco_gsl.c" />
-    <ClCompile Include="..\..\src\nco++\prs_cls.cc" />
-    <ClCompile Include="..\..\src\nco++\sdo_utl.cc" />
-    <ClCompile Include="..\..\src\nco++\sym_cls.cc" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\src\nco++\Invoke.hh" />
-    <ClInclude Include="..\..\src\nco++\NcapVar.hh" />
-    <ClInclude Include="..\..\src\nco++\NcapVarVector.hh" />
-    <ClInclude Include="..\..\src\nco++\NcapVector.hh" />
-    <ClInclude Include="..\..\src\nco++\VarOp.hh" />
-    <ClInclude Include="..\..\src\nco++\fmc_all_cls.hh" />
-    <ClInclude Include="..\..\src\nco++\fmc_cls.hh" />
-    <ClInclude Include="..\..\src\nco++\fmc_gsl_cls.hh" />
-    <ClInclude Include="..\..\src\nco++\libnco++.hh" />
-    <ClInclude Include="..\..\src\nco++\map_srt_tmp.hh" />
-    <ClInclude Include="..\..\src\nco++\ncap2.hh" />
-    <ClInclude Include="..\..\src\nco++\ncap2_utl.hh" />
-    <ClInclude Include="..\..\src\nco++\ncoEnumTokenTypes.hpp" />
-    <ClInclude Include="..\..\src\nco++\ncoTree.hpp" />
-    <ClInclude Include="..\..\src\nco++\nco_gsl.h" />
-    <ClInclude Include="..\..\src\nco++\prs_cls.hh" />
-    <ClInclude Include="..\..\src\nco++\sdo_utl.hh" />
-    <ClInclude Include="..\..\src\nco++\sym_cls.hh" />
-    <ClInclude Include="..\..\src\nco++\vtl_cls.hh" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets" />
-  <ProjectExtensions>
-    <VisualStudio>
-      <UserProperties UicDir=".\GeneratedFiles" RccDir=".\GeneratedFiles" Qt5Version_x0020_Win32="qtbase" />
-    </VisualStudio>
-  </ProjectExtensions>
-</Project>
\ No newline at end of file
diff --git a/qt/ncap2/ncap2.vcxproj.filters b/qt/ncap2/ncap2.vcxproj.filters
deleted file mode 100644
index 42a14dc..0000000
--- a/qt/ncap2/ncap2.vcxproj.filters
+++ /dev/null
@@ -1,127 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Header Files">
-      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
-      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
-    </Filter>
-    <Filter Include="Header Files">
-      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
-      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
-    </Filter>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\src\nco++\Invoke.cc">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\nco++\NcapVar.cc">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\nco++\NcapVarVector.cc">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\nco++\fmc_all_cls.cc">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\nco++\fmc_cls.cc">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\nco++\fmc_gsl_cls.cc">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\nco++\ncap2.cc">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\nco++\ncap2_utl.cc">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\nco++\ncoLexer.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\nco++\ncoParser.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\nco++\ncoTree.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\nco++\nco_gsl.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\nco++\prs_cls.cc">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\nco++\sdo_utl.cc">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\nco++\sym_cls.cc">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\src\nco++\Invoke.hh">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\nco++\NcapVar.hh">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\nco++\NcapVarVector.hh">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\nco++\NcapVector.hh">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\nco++\VarOp.hh">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\nco++\fmc_all_cls.hh">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\nco++\fmc_cls.hh">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\nco++\fmc_gsl_cls.hh">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\nco++\libnco++.hh">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\nco++\map_srt_tmp.hh">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\nco++\ncap2.hh">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\nco++\ncap2_utl.hh">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\nco++\ncoEnumTokenTypes.hpp">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\nco++\ncoTree.hpp">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\nco++\nco_gsl.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\nco++\prs_cls.hh">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\nco++\sdo_utl.hh">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\nco++\sym_cls.hh">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\nco++\vtl_cls.hh">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-  </ItemGroup>
-</Project>
\ No newline at end of file
diff --git a/qt/ncatted/ncatted.pro b/qt/ncatted/ncatted.pro
deleted file mode 100644
index bbcd999..0000000
--- a/qt/ncatted/ncatted.pro
+++ /dev/null
@@ -1,18 +0,0 @@
-TARGET = ncatted
-TEMPLATE = app
-CONFIG -= qt
-CONFIG += debug_and_release
-
-CONFIG( debug, debug|release ) {
-        win32:LIBS += ../libnco/debug/libnco.lib
-        unix:LIBS  += ../libnco/debug/liblibnco.a
-} else {
-        win32:LIBS += ../libnco/release/libnco.lib
-        unix:LIBS  += ../libnco/release/liblibnco.a
-}
-
-include (../nco.pri)
-
-HEADERS   = 
-SOURCES   = ../../src/nco/ncatted.c
-
diff --git a/qt/ncatted/ncatted.vcxproj b/qt/ncatted/ncatted.vcxproj
deleted file mode 100644
index b289a4b..0000000
--- a/qt/ncatted/ncatted.vcxproj
+++ /dev/null
@@ -1,151 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{662B7468-C1B2-3EA3-98DE-D2B8A870CAAE}</ProjectGuid>
-    <RootNamespace>ncatted</RootNamespace>
-    <Keyword>Qt4VSv1.0</Keyword>
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <PlatformToolSet>v140</PlatformToolSet>
-    <OutputDirectory>debug\</OutputDirectory>
-    <ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
-    <CharacterSet>NotSet</CharacterSet>
-    <ConfigurationType>Application</ConfigurationType>
-    <IntermediateDirectory>debug\</IntermediateDirectory>
-    <PrimaryOutput>ncatted</PrimaryOutput>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <PlatformToolSet>v140</PlatformToolSet>
-    <OutputDirectory>release\</OutputDirectory>
-    <ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
-    <CharacterSet>NotSet</CharacterSet>
-    <ConfigurationType>Application</ConfigurationType>
-    <IntermediateDirectory>release\</IntermediateDirectory>
-    <PrimaryOutput>ncatted</PrimaryOutput>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings" />
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\$(Configuration)\</IntDir>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">ncatted</TargetName>
-    <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</IgnoreImportLibrary>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\$(Configuration)\</IntDir>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">ncatted</TargetName>
-    <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</IgnoreImportLibrary>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <AdditionalIncludeDirectories>.;$(HEADER_NETCDF);$(HEADER_GSL);$(HEADER_UDUNITS);$(QTDIR)\win32-msvc2013;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <AdditionalOptions>-w34100 -w34189 -w44996 %(AdditionalOptions)</AdditionalOptions>
-      <AssemblerListingLocation>debug\</AssemblerListingLocation>
-      <BrowseInformation>false</BrowseInformation>
-      <CompileAs>CompileAsCpp</CompileAs>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <ExceptionHandling>Sync</ExceptionHandling>
-      <ObjectFileName>$(IntDir)</ObjectFileName>
-      <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;ENABLE_UDUNITS;HAVE_UDUNITS2_H;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessToFile>false</PreprocessToFile>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <RuntimeTypeInfo>true</RuntimeTypeInfo>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <WarningLevel>Level3</WarningLevel>
-      <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>../libnco/debug/libnco.lib;$(LIB_NETCDF);$(LIB_HDF5);$(LIB_HDF5_HL);$(LIB_ZLIB);$(LIB_SZIP);$(LIB_GSL);$(LIB_UDUNITS);$(LIB_EXPAT);$(LIB_CURL);%(AdditionalDependencies);ws2_32.lib;winmm.lib;wldap32.lib</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(QTDIR)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <AdditionalOptions>"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions)</AdditionalOptions>
-      <DataExecutionPrevention>true</DataExecutionPrevention>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <IgnoreImportLibrary>true</IgnoreImportLibrary>
-      <OutputFile>$(OutDir)\ncatted.exe</OutputFile>
-      <RandomizedBaseAddress>true</RandomizedBaseAddress>
-      <SubSystem>Console</SubSystem>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-    </Link>
-    <Midl>
-      <DefaultCharType>Unsigned</DefaultCharType>
-      <EnableErrorChecks>None</EnableErrorChecks>
-      <WarningLevel>0</WarningLevel>
-    </Midl>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;ENABLE_UDUNITS;HAVE_UDUNITS2_H;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ResourceCompile>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <AdditionalIncludeDirectories>.;$(HEADER_NETCDF);$(HEADER_GSL);$(HEADER_UDUNITS);$(QTDIR)\win32-msvc2013;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <AdditionalOptions>-Zc:strictStrings -w34100 -w34189 -w44996 %(AdditionalOptions)</AdditionalOptions>
-      <AssemblerListingLocation>release\</AssemblerListingLocation>
-      <BrowseInformation>false</BrowseInformation>
-      <CompileAs>CompileAsCpp</CompileAs>
-      <DebugInformationFormat>None</DebugInformationFormat>
-      <ExceptionHandling>Sync</ExceptionHandling>
-      <ObjectFileName>$(IntDir)</ObjectFileName>
-      <Optimization>MaxSpeed</Optimization>
-      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;ENABLE_UDUNITS;HAVE_UDUNITS2_H;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessToFile>false</PreprocessToFile>
-      <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <RuntimeTypeInfo>true</RuntimeTypeInfo>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <WarningLevel>Level3</WarningLevel>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>../libnco/release/libnco.lib;$(LIB_NETCDF);$(LIB_HDF5);$(LIB_HDF5_HL);$(LIB_ZLIB);$(LIB_SZIP);$(LIB_GSL);$(LIB_UDUNITS);$(LIB_EXPAT);$(LIB_CURL);%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(QTDIR)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <AdditionalOptions>"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions)</AdditionalOptions>
-      <DataExecutionPrevention>true</DataExecutionPrevention>
-      <GenerateDebugInformation>false</GenerateDebugInformation>
-      <IgnoreImportLibrary>true</IgnoreImportLibrary>
-      <LinkIncremental>false</LinkIncremental>
-      <OutputFile>$(OutDir)\ncatted.exe</OutputFile>
-      <RandomizedBaseAddress>true</RandomizedBaseAddress>
-      <SubSystem>Console</SubSystem>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-    </Link>
-    <Midl>
-      <DefaultCharType>Unsigned</DefaultCharType>
-      <EnableErrorChecks>None</EnableErrorChecks>
-      <WarningLevel>0</WarningLevel>
-    </Midl>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;ENABLE_UDUNITS;HAVE_UDUNITS2_H;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ResourceCompile>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\src\nco\ncatted.c" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets" />
-  <ProjectExtensions>
-    <VisualStudio>
-      <UserProperties UicDir=".\GeneratedFiles" RccDir=".\GeneratedFiles" Qt5Version_x0020_Win32="qtbase" />
-    </VisualStudio>
-  </ProjectExtensions>
-</Project>
\ No newline at end of file
diff --git a/qt/ncatted/ncatted.vcxproj.filters b/qt/ncatted/ncatted.vcxproj.filters
deleted file mode 100644
index 79047ac..0000000
--- a/qt/ncatted/ncatted.vcxproj.filters
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\src\nco\ncatted.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
-</Project>
\ No newline at end of file
diff --git a/qt/ncbo/ncbo.pro b/qt/ncbo/ncbo.pro
deleted file mode 100644
index 3cd785d..0000000
--- a/qt/ncbo/ncbo.pro
+++ /dev/null
@@ -1,17 +0,0 @@
-TARGET = ncbo
-TEMPLATE = app
-CONFIG -= qt
-CONFIG += debug_and_release
-
-CONFIG( debug, debug|release ) {
-        win32:LIBS += ../libnco/debug/libnco.lib
-        unix:LIBS  += ../libnco/debug/liblibnco.a
-} else {
-        win32:LIBS += ../libnco/release/libnco.lib
-        unix:LIBS  += ../libnco/release/liblibnco.a
-}
-
-include (../nco.pri)
-
-HEADERS   = 
-SOURCES   = ../../src/nco/ncbo.c
diff --git a/qt/ncbo/ncbo.vcxproj b/qt/ncbo/ncbo.vcxproj
deleted file mode 100644
index 2a75636..0000000
--- a/qt/ncbo/ncbo.vcxproj
+++ /dev/null
@@ -1,151 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{05AA5FAF-8D8D-32F1-8215-3712F8CC38E0}</ProjectGuid>
-    <RootNamespace>ncbo</RootNamespace>
-    <Keyword>Qt4VSv1.0</Keyword>
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <PlatformToolSet>v140</PlatformToolSet>
-    <OutputDirectory>debug\</OutputDirectory>
-    <ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
-    <CharacterSet>NotSet</CharacterSet>
-    <ConfigurationType>Application</ConfigurationType>
-    <IntermediateDirectory>debug\</IntermediateDirectory>
-    <PrimaryOutput>ncbo</PrimaryOutput>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <PlatformToolSet>v140</PlatformToolSet>
-    <OutputDirectory>release\</OutputDirectory>
-    <ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
-    <CharacterSet>NotSet</CharacterSet>
-    <ConfigurationType>Application</ConfigurationType>
-    <IntermediateDirectory>release\</IntermediateDirectory>
-    <PrimaryOutput>ncbo</PrimaryOutput>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings" />
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\$(Configuration)\</IntDir>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">ncbo</TargetName>
-    <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</IgnoreImportLibrary>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\$(Configuration)\</IntDir>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">ncbo</TargetName>
-    <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</IgnoreImportLibrary>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <AdditionalIncludeDirectories>.;$(HEADER_NETCDF);$(HEADER_GSL);$(HEADER_UDUNITS);$(QTDIR)\win32-msvc2013;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <AdditionalOptions>-w34100 -w34189 -w44996 %(AdditionalOptions)</AdditionalOptions>
-      <AssemblerListingLocation>debug\</AssemblerListingLocation>
-      <BrowseInformation>false</BrowseInformation>
-      <CompileAs>CompileAsCpp</CompileAs>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <ExceptionHandling>Sync</ExceptionHandling>
-      <ObjectFileName>$(IntDir)</ObjectFileName>
-      <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;ENABLE_UDUNITS;HAVE_UDUNITS2_H;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessToFile>false</PreprocessToFile>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <RuntimeTypeInfo>true</RuntimeTypeInfo>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <WarningLevel>Level3</WarningLevel>
-      <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>../libnco/debug/libnco.lib;$(LIB_NETCDF);$(LIB_HDF5);$(LIB_HDF5_HL);$(LIB_ZLIB);$(LIB_SZIP);$(LIB_GSL);$(LIB_UDUNITS);$(LIB_EXPAT);$(LIB_CURL);%(AdditionalDependencies);ws2_32.lib;winmm.lib;wldap32.lib</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(QTDIR)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <AdditionalOptions>"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions)</AdditionalOptions>
-      <DataExecutionPrevention>true</DataExecutionPrevention>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <IgnoreImportLibrary>true</IgnoreImportLibrary>
-      <OutputFile>$(OutDir)\ncbo.exe</OutputFile>
-      <RandomizedBaseAddress>true</RandomizedBaseAddress>
-      <SubSystem>Console</SubSystem>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-    </Link>
-    <Midl>
-      <DefaultCharType>Unsigned</DefaultCharType>
-      <EnableErrorChecks>None</EnableErrorChecks>
-      <WarningLevel>0</WarningLevel>
-    </Midl>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;ENABLE_UDUNITS;HAVE_UDUNITS2_H;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ResourceCompile>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <AdditionalIncludeDirectories>.;$(HEADER_NETCDF);$(HEADER_GSL);$(HEADER_UDUNITS);$(QTDIR)\win32-msvc2013;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <AdditionalOptions>-Zc:strictStrings -w34100 -w34189 -w44996 %(AdditionalOptions)</AdditionalOptions>
-      <AssemblerListingLocation>release\</AssemblerListingLocation>
-      <BrowseInformation>false</BrowseInformation>
-      <CompileAs>CompileAsCpp</CompileAs>
-      <DebugInformationFormat>None</DebugInformationFormat>
-      <ExceptionHandling>Sync</ExceptionHandling>
-      <ObjectFileName>$(IntDir)</ObjectFileName>
-      <Optimization>MaxSpeed</Optimization>
-      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;ENABLE_UDUNITS;HAVE_UDUNITS2_H;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessToFile>false</PreprocessToFile>
-      <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <RuntimeTypeInfo>true</RuntimeTypeInfo>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <WarningLevel>Level3</WarningLevel>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>../libnco/release/libnco.lib;$(LIB_NETCDF);$(LIB_HDF5);$(LIB_HDF5_HL);$(LIB_ZLIB);$(LIB_SZIP);$(LIB_GSL);$(LIB_UDUNITS);$(LIB_EXPAT);$(LIB_CURL);%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(QTDIR)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <AdditionalOptions>"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions)</AdditionalOptions>
-      <DataExecutionPrevention>true</DataExecutionPrevention>
-      <GenerateDebugInformation>false</GenerateDebugInformation>
-      <IgnoreImportLibrary>true</IgnoreImportLibrary>
-      <LinkIncremental>false</LinkIncremental>
-      <OutputFile>$(OutDir)\ncbo.exe</OutputFile>
-      <RandomizedBaseAddress>true</RandomizedBaseAddress>
-      <SubSystem>Console</SubSystem>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-    </Link>
-    <Midl>
-      <DefaultCharType>Unsigned</DefaultCharType>
-      <EnableErrorChecks>None</EnableErrorChecks>
-      <WarningLevel>0</WarningLevel>
-    </Midl>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;ENABLE_UDUNITS;HAVE_UDUNITS2_H;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ResourceCompile>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\src\nco\ncbo.c" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets" />
-  <ProjectExtensions>
-    <VisualStudio>
-      <UserProperties UicDir=".\GeneratedFiles" RccDir=".\GeneratedFiles" Qt5Version_x0020_Win32="qtbase" />
-    </VisualStudio>
-  </ProjectExtensions>
-</Project>
\ No newline at end of file
diff --git a/qt/ncbo/ncbo.vcxproj.filters b/qt/ncbo/ncbo.vcxproj.filters
deleted file mode 100644
index f2d7dec..0000000
--- a/qt/ncbo/ncbo.vcxproj.filters
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\src\nco\ncbo.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
-</Project>
\ No newline at end of file
diff --git a/qt/ncea/ncea.pro b/qt/ncea/ncea.pro
deleted file mode 100644
index c9343ae..0000000
--- a/qt/ncea/ncea.pro
+++ /dev/null
@@ -1,16 +0,0 @@
-TARGET = ncea
-TEMPLATE = app
-CONFIG -= qt
-CONFIG += debug_and_release
-
-CONFIG( debug, debug|release ) {
-        win32:LIBS += ../libnco/debug/libnco.lib
-        unix:LIBS  += ../libnco/debug/liblibnco.a
-} else {
-        win32:LIBS += ../libnco/release/libnco.lib
-        unix:LIBS  += ../libnco/release/liblibnco.a
-}
-
-include (../nco.pri)
-HEADERS   = 
-SOURCES   = ../../src/nco/ncra.c
\ No newline at end of file
diff --git a/qt/ncea/ncea.vcxproj b/qt/ncea/ncea.vcxproj
deleted file mode 100644
index ab973ab..0000000
--- a/qt/ncea/ncea.vcxproj
+++ /dev/null
@@ -1,151 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{ED83DCD6-3659-3227-8BAE-CAE51E45E95D}</ProjectGuid>
-    <RootNamespace>ncea</RootNamespace>
-    <Keyword>Qt4VSv1.0</Keyword>
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <PlatformToolSet>v140</PlatformToolSet>
-    <OutputDirectory>debug\</OutputDirectory>
-    <ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
-    <CharacterSet>NotSet</CharacterSet>
-    <ConfigurationType>Application</ConfigurationType>
-    <IntermediateDirectory>debug\</IntermediateDirectory>
-    <PrimaryOutput>ncea</PrimaryOutput>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <PlatformToolSet>v140</PlatformToolSet>
-    <OutputDirectory>release\</OutputDirectory>
-    <ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
-    <CharacterSet>NotSet</CharacterSet>
-    <ConfigurationType>Application</ConfigurationType>
-    <IntermediateDirectory>release\</IntermediateDirectory>
-    <PrimaryOutput>ncea</PrimaryOutput>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings" />
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\$(Configuration)\</IntDir>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">ncea</TargetName>
-    <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</IgnoreImportLibrary>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\$(Configuration)\</IntDir>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">ncea</TargetName>
-    <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</IgnoreImportLibrary>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <AdditionalIncludeDirectories>.;$(HEADER_NETCDF);$(HEADER_GSL);$(HEADER_UDUNITS);$(QTDIR)\win32-msvc2013;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <AdditionalOptions>-w34100 -w34189 -w44996 %(AdditionalOptions)</AdditionalOptions>
-      <AssemblerListingLocation>debug\</AssemblerListingLocation>
-      <BrowseInformation>false</BrowseInformation>
-      <CompileAs>CompileAsCpp</CompileAs>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <ExceptionHandling>Sync</ExceptionHandling>
-      <ObjectFileName>$(IntDir)</ObjectFileName>
-      <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;ENABLE_UDUNITS;HAVE_UDUNITS2_H;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessToFile>false</PreprocessToFile>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <RuntimeTypeInfo>true</RuntimeTypeInfo>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <WarningLevel>Level3</WarningLevel>
-      <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>../libnco/debug/libnco.lib;$(LIB_NETCDF);$(LIB_HDF5);$(LIB_HDF5_HL);$(LIB_ZLIB);$(LIB_SZIP);$(LIB_GSL);$(LIB_UDUNITS);$(LIB_EXPAT);$(LIB_CURL);%(AdditionalDependencies);ws2_32.lib;winmm.lib;wldap32.lib</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(QTDIR)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <AdditionalOptions>"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions)</AdditionalOptions>
-      <DataExecutionPrevention>true</DataExecutionPrevention>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <IgnoreImportLibrary>true</IgnoreImportLibrary>
-      <OutputFile>$(OutDir)\ncea.exe</OutputFile>
-      <RandomizedBaseAddress>true</RandomizedBaseAddress>
-      <SubSystem>Console</SubSystem>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-    </Link>
-    <Midl>
-      <DefaultCharType>Unsigned</DefaultCharType>
-      <EnableErrorChecks>None</EnableErrorChecks>
-      <WarningLevel>0</WarningLevel>
-    </Midl>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;ENABLE_UDUNITS;HAVE_UDUNITS2_H;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ResourceCompile>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <AdditionalIncludeDirectories>.;$(HEADER_NETCDF);$(HEADER_GSL);$(HEADER_UDUNITS);$(QTDIR)\win32-msvc2013;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <AdditionalOptions>-Zc:strictStrings -w34100 -w34189 -w44996 %(AdditionalOptions)</AdditionalOptions>
-      <AssemblerListingLocation>release\</AssemblerListingLocation>
-      <BrowseInformation>false</BrowseInformation>
-      <CompileAs>CompileAsCpp</CompileAs>
-      <DebugInformationFormat>None</DebugInformationFormat>
-      <ExceptionHandling>Sync</ExceptionHandling>
-      <ObjectFileName>$(IntDir)</ObjectFileName>
-      <Optimization>MaxSpeed</Optimization>
-      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;ENABLE_UDUNITS;HAVE_UDUNITS2_H;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessToFile>false</PreprocessToFile>
-      <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <RuntimeTypeInfo>true</RuntimeTypeInfo>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <WarningLevel>Level3</WarningLevel>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>../libnco/release/libnco.lib;$(LIB_NETCDF);$(LIB_HDF5);$(LIB_HDF5_HL);$(LIB_ZLIB);$(LIB_SZIP);$(LIB_GSL);$(LIB_UDUNITS);$(LIB_EXPAT);$(LIB_CURL);%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(QTDIR)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <AdditionalOptions>"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions)</AdditionalOptions>
-      <DataExecutionPrevention>true</DataExecutionPrevention>
-      <GenerateDebugInformation>false</GenerateDebugInformation>
-      <IgnoreImportLibrary>true</IgnoreImportLibrary>
-      <LinkIncremental>false</LinkIncremental>
-      <OutputFile>$(OutDir)\ncea.exe</OutputFile>
-      <RandomizedBaseAddress>true</RandomizedBaseAddress>
-      <SubSystem>Console</SubSystem>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-    </Link>
-    <Midl>
-      <DefaultCharType>Unsigned</DefaultCharType>
-      <EnableErrorChecks>None</EnableErrorChecks>
-      <WarningLevel>0</WarningLevel>
-    </Midl>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;ENABLE_UDUNITS;HAVE_UDUNITS2_H;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ResourceCompile>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\src\nco\ncra.c" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets" />
-  <ProjectExtensions>
-    <VisualStudio>
-      <UserProperties UicDir=".\GeneratedFiles" RccDir=".\GeneratedFiles" Qt5Version_x0020_Win32="qtbase" />
-    </VisualStudio>
-  </ProjectExtensions>
-</Project>
\ No newline at end of file
diff --git a/qt/ncea/ncea.vcxproj.filters b/qt/ncea/ncea.vcxproj.filters
deleted file mode 100644
index 7e2d907..0000000
--- a/qt/ncea/ncea.vcxproj.filters
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\src\nco\ncra.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
-</Project>
\ No newline at end of file
diff --git a/qt/ncecat/ncecat.pro b/qt/ncecat/ncecat.pro
deleted file mode 100644
index aeecf42..0000000
--- a/qt/ncecat/ncecat.pro
+++ /dev/null
@@ -1,18 +0,0 @@
-TARGET = ncecat
-TEMPLATE = app
-CONFIG -= qt
-CONFIG += debug_and_release
-
-CONFIG( debug, debug|release ) {
-        win32:LIBS += ../libnco/debug/libnco.lib
-        unix:LIBS  += ../libnco/debug/liblibnco.a
-} else {
-        win32:LIBS += ../libnco/release/libnco.lib
-        unix:LIBS  += ../libnco/release/liblibnco.a
-}
-
-include (../nco.pri)
-HEADERS   = 
-SOURCES   = ../../src/nco/ncecat.c
-
-
diff --git a/qt/ncecat/ncecat.vcxproj b/qt/ncecat/ncecat.vcxproj
deleted file mode 100644
index bddd9ae..0000000
--- a/qt/ncecat/ncecat.vcxproj
+++ /dev/null
@@ -1,151 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{62931E91-8CDE-3A32-BE30-3CED418E09CF}</ProjectGuid>
-    <RootNamespace>ncecat</RootNamespace>
-    <Keyword>Qt4VSv1.0</Keyword>
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <PlatformToolSet>v140</PlatformToolSet>
-    <OutputDirectory>debug\</OutputDirectory>
-    <ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
-    <CharacterSet>NotSet</CharacterSet>
-    <ConfigurationType>Application</ConfigurationType>
-    <IntermediateDirectory>debug\</IntermediateDirectory>
-    <PrimaryOutput>ncecat</PrimaryOutput>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <PlatformToolSet>v140</PlatformToolSet>
-    <OutputDirectory>release\</OutputDirectory>
-    <ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
-    <CharacterSet>NotSet</CharacterSet>
-    <ConfigurationType>Application</ConfigurationType>
-    <IntermediateDirectory>release\</IntermediateDirectory>
-    <PrimaryOutput>ncecat</PrimaryOutput>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings" />
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\$(Configuration)\</IntDir>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">ncecat</TargetName>
-    <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</IgnoreImportLibrary>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\$(Configuration)\</IntDir>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">ncecat</TargetName>
-    <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</IgnoreImportLibrary>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <AdditionalIncludeDirectories>.;$(HEADER_NETCDF);$(HEADER_GSL);$(HEADER_UDUNITS);$(QTDIR)\win32-msvc2013;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <AdditionalOptions>-w34100 -w34189 -w44996 %(AdditionalOptions)</AdditionalOptions>
-      <AssemblerListingLocation>debug\</AssemblerListingLocation>
-      <BrowseInformation>false</BrowseInformation>
-      <CompileAs>CompileAsCpp</CompileAs>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <ExceptionHandling>Sync</ExceptionHandling>
-      <ObjectFileName>$(IntDir)</ObjectFileName>
-      <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;ENABLE_UDUNITS;HAVE_UDUNITS2_H;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessToFile>false</PreprocessToFile>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <RuntimeTypeInfo>true</RuntimeTypeInfo>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <WarningLevel>Level3</WarningLevel>
-      <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>../libnco/debug/libnco.lib;$(LIB_NETCDF);$(LIB_HDF5);$(LIB_HDF5_HL);$(LIB_ZLIB);$(LIB_SZIP);$(LIB_GSL);$(LIB_UDUNITS);$(LIB_EXPAT);$(LIB_CURL);%(AdditionalDependencies);ws2_32.lib;winmm.lib;wldap32.lib</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(QTDIR)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <AdditionalOptions>"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions)</AdditionalOptions>
-      <DataExecutionPrevention>true</DataExecutionPrevention>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <IgnoreImportLibrary>true</IgnoreImportLibrary>
-      <OutputFile>$(OutDir)\ncecat.exe</OutputFile>
-      <RandomizedBaseAddress>true</RandomizedBaseAddress>
-      <SubSystem>Console</SubSystem>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-    </Link>
-    <Midl>
-      <DefaultCharType>Unsigned</DefaultCharType>
-      <EnableErrorChecks>None</EnableErrorChecks>
-      <WarningLevel>0</WarningLevel>
-    </Midl>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;ENABLE_UDUNITS;HAVE_UDUNITS2_H;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ResourceCompile>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <AdditionalIncludeDirectories>.;$(HEADER_NETCDF);$(HEADER_GSL);$(HEADER_UDUNITS);$(QTDIR)\win32-msvc2013;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <AdditionalOptions>-Zc:strictStrings -w34100 -w34189 -w44996 %(AdditionalOptions)</AdditionalOptions>
-      <AssemblerListingLocation>release\</AssemblerListingLocation>
-      <BrowseInformation>false</BrowseInformation>
-      <CompileAs>CompileAsCpp</CompileAs>
-      <DebugInformationFormat>None</DebugInformationFormat>
-      <ExceptionHandling>Sync</ExceptionHandling>
-      <ObjectFileName>$(IntDir)</ObjectFileName>
-      <Optimization>MaxSpeed</Optimization>
-      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;ENABLE_UDUNITS;HAVE_UDUNITS2_H;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessToFile>false</PreprocessToFile>
-      <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <RuntimeTypeInfo>true</RuntimeTypeInfo>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <WarningLevel>Level3</WarningLevel>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>../libnco/release/libnco.lib;$(LIB_NETCDF);$(LIB_HDF5);$(LIB_HDF5_HL);$(LIB_ZLIB);$(LIB_SZIP);$(LIB_GSL);$(LIB_UDUNITS);$(LIB_EXPAT);$(LIB_CURL);%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(QTDIR)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <AdditionalOptions>"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions)</AdditionalOptions>
-      <DataExecutionPrevention>true</DataExecutionPrevention>
-      <GenerateDebugInformation>false</GenerateDebugInformation>
-      <IgnoreImportLibrary>true</IgnoreImportLibrary>
-      <LinkIncremental>false</LinkIncremental>
-      <OutputFile>$(OutDir)\ncecat.exe</OutputFile>
-      <RandomizedBaseAddress>true</RandomizedBaseAddress>
-      <SubSystem>Console</SubSystem>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-    </Link>
-    <Midl>
-      <DefaultCharType>Unsigned</DefaultCharType>
-      <EnableErrorChecks>None</EnableErrorChecks>
-      <WarningLevel>0</WarningLevel>
-    </Midl>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;ENABLE_UDUNITS;HAVE_UDUNITS2_H;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ResourceCompile>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\src\nco\ncecat.c" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets" />
-  <ProjectExtensions>
-    <VisualStudio>
-      <UserProperties UicDir=".\GeneratedFiles" RccDir=".\GeneratedFiles" Qt5Version_x0020_Win32="qtbase" />
-    </VisualStudio>
-  </ProjectExtensions>
-</Project>
\ No newline at end of file
diff --git a/qt/ncecat/ncecat.vcxproj.filters b/qt/ncecat/ncecat.vcxproj.filters
deleted file mode 100644
index 4eebc7e..0000000
--- a/qt/ncecat/ncecat.vcxproj.filters
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\src\nco\ncecat.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
-</Project>
\ No newline at end of file
diff --git a/qt/ncflint/ncflint.pro b/qt/ncflint/ncflint.pro
deleted file mode 100644
index b272e2e..0000000
--- a/qt/ncflint/ncflint.pro
+++ /dev/null
@@ -1,17 +0,0 @@
-TARGET = ncflint
-TEMPLATE = app
-CONFIG -= qt
-CONFIG += debug_and_release
-
-CONFIG( debug, debug|release ) {
-        win32:LIBS += ../libnco/debug/libnco.lib
-        unix:LIBS  += ../libnco/debug/liblibnco.a
-} else {
-        win32:LIBS += ../libnco/release/libnco.lib
-        unix:LIBS  += ../libnco/release/liblibnco.a
-}
-
-include (../nco.pri)
-HEADERS   = 
-SOURCES   = ../../src/nco/ncflint.c
-
diff --git a/qt/ncflint/ncflint.vcxproj b/qt/ncflint/ncflint.vcxproj
deleted file mode 100644
index feaf970..0000000
--- a/qt/ncflint/ncflint.vcxproj
+++ /dev/null
@@ -1,151 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{4F01E3BE-0797-3130-88FA-F5C1CD8A0651}</ProjectGuid>
-    <RootNamespace>ncflint</RootNamespace>
-    <Keyword>Qt4VSv1.0</Keyword>
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <PlatformToolSet>v140</PlatformToolSet>
-    <OutputDirectory>debug\</OutputDirectory>
-    <ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
-    <CharacterSet>NotSet</CharacterSet>
-    <ConfigurationType>Application</ConfigurationType>
-    <IntermediateDirectory>debug\</IntermediateDirectory>
-    <PrimaryOutput>ncflint</PrimaryOutput>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <PlatformToolSet>v140</PlatformToolSet>
-    <OutputDirectory>release\</OutputDirectory>
-    <ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
-    <CharacterSet>NotSet</CharacterSet>
-    <ConfigurationType>Application</ConfigurationType>
-    <IntermediateDirectory>release\</IntermediateDirectory>
-    <PrimaryOutput>ncflint</PrimaryOutput>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings" />
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\$(Configuration)\</IntDir>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">ncflint</TargetName>
-    <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</IgnoreImportLibrary>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\$(Configuration)\</IntDir>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">ncflint</TargetName>
-    <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</IgnoreImportLibrary>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <AdditionalIncludeDirectories>.;$(HEADER_NETCDF);$(HEADER_GSL);$(HEADER_UDUNITS);$(QTDIR)\win32-msvc2013;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <AdditionalOptions>-w34100 -w34189 -w44996 %(AdditionalOptions)</AdditionalOptions>
-      <AssemblerListingLocation>debug\</AssemblerListingLocation>
-      <BrowseInformation>false</BrowseInformation>
-      <CompileAs>CompileAsCpp</CompileAs>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <ExceptionHandling>Sync</ExceptionHandling>
-      <ObjectFileName>$(IntDir)</ObjectFileName>
-      <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;ENABLE_UDUNITS;HAVE_UDUNITS2_H;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessToFile>false</PreprocessToFile>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <RuntimeTypeInfo>true</RuntimeTypeInfo>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <WarningLevel>Level3</WarningLevel>
-      <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>../libnco/debug/libnco.lib;$(LIB_NETCDF);$(LIB_HDF5);$(LIB_HDF5_HL);$(LIB_ZLIB);$(LIB_SZIP);$(LIB_GSL);$(LIB_UDUNITS);$(LIB_EXPAT);$(LIB_CURL);%(AdditionalDependencies);ws2_32.lib;winmm.lib;wldap32.lib</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(QTDIR)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <AdditionalOptions>"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions)</AdditionalOptions>
-      <DataExecutionPrevention>true</DataExecutionPrevention>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <IgnoreImportLibrary>true</IgnoreImportLibrary>
-      <OutputFile>$(OutDir)\ncflint.exe</OutputFile>
-      <RandomizedBaseAddress>true</RandomizedBaseAddress>
-      <SubSystem>Console</SubSystem>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-    </Link>
-    <Midl>
-      <DefaultCharType>Unsigned</DefaultCharType>
-      <EnableErrorChecks>None</EnableErrorChecks>
-      <WarningLevel>0</WarningLevel>
-    </Midl>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;ENABLE_UDUNITS;HAVE_UDUNITS2_H;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ResourceCompile>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <AdditionalIncludeDirectories>.;$(HEADER_NETCDF);$(HEADER_GSL);$(HEADER_UDUNITS);$(QTDIR)\win32-msvc2013;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <AdditionalOptions>-Zc:strictStrings -w34100 -w34189 -w44996 %(AdditionalOptions)</AdditionalOptions>
-      <AssemblerListingLocation>release\</AssemblerListingLocation>
-      <BrowseInformation>false</BrowseInformation>
-      <CompileAs>CompileAsCpp</CompileAs>
-      <DebugInformationFormat>None</DebugInformationFormat>
-      <ExceptionHandling>Sync</ExceptionHandling>
-      <ObjectFileName>$(IntDir)</ObjectFileName>
-      <Optimization>MaxSpeed</Optimization>
-      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;ENABLE_UDUNITS;HAVE_UDUNITS2_H;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessToFile>false</PreprocessToFile>
-      <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <RuntimeTypeInfo>true</RuntimeTypeInfo>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <WarningLevel>Level3</WarningLevel>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>../libnco/release/libnco.lib;$(LIB_NETCDF);$(LIB_HDF5);$(LIB_HDF5_HL);$(LIB_ZLIB);$(LIB_SZIP);$(LIB_GSL);$(LIB_UDUNITS);$(LIB_EXPAT);$(LIB_CURL);%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(QTDIR)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <AdditionalOptions>"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions)</AdditionalOptions>
-      <DataExecutionPrevention>true</DataExecutionPrevention>
-      <GenerateDebugInformation>false</GenerateDebugInformation>
-      <IgnoreImportLibrary>true</IgnoreImportLibrary>
-      <LinkIncremental>false</LinkIncremental>
-      <OutputFile>$(OutDir)\ncflint.exe</OutputFile>
-      <RandomizedBaseAddress>true</RandomizedBaseAddress>
-      <SubSystem>Console</SubSystem>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-    </Link>
-    <Midl>
-      <DefaultCharType>Unsigned</DefaultCharType>
-      <EnableErrorChecks>None</EnableErrorChecks>
-      <WarningLevel>0</WarningLevel>
-    </Midl>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;ENABLE_UDUNITS;HAVE_UDUNITS2_H;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ResourceCompile>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\src\nco\ncflint.c" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets" />
-  <ProjectExtensions>
-    <VisualStudio>
-      <UserProperties UicDir=".\GeneratedFiles" RccDir=".\GeneratedFiles" Qt5Version_x0020_Win32="qtbase" />
-    </VisualStudio>
-  </ProjectExtensions>
-</Project>
\ No newline at end of file
diff --git a/qt/ncflint/ncflint.vcxproj.filters b/qt/ncflint/ncflint.vcxproj.filters
deleted file mode 100644
index d8bedc8..0000000
--- a/qt/ncflint/ncflint.vcxproj.filters
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\src\nco\ncflint.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
-</Project>
\ No newline at end of file
diff --git a/qt/ncks/ncks.pro b/qt/ncks/ncks.pro
deleted file mode 100644
index 3cea7ff..0000000
--- a/qt/ncks/ncks.pro
+++ /dev/null
@@ -1,16 +0,0 @@
-TARGET = ncks
-TEMPLATE = app
-CONFIG -= qt
-CONFIG += debug_and_release
-
-CONFIG( debug, debug|release ) {
-        win32:LIBS += ../libnco/debug/libnco.lib
-        unix:LIBS  += ../libnco/debug/liblibnco.a
-} else {
-        win32:LIBS += ../libnco/release/libnco.lib
-        unix:LIBS  += ../libnco/release/liblibnco.a
-}
-
-include (../nco.pri)
-HEADERS   = 
-SOURCES   = ../../src/nco/ncks.c
diff --git a/qt/ncks/ncks.vcxproj b/qt/ncks/ncks.vcxproj
deleted file mode 100644
index b062e3e..0000000
--- a/qt/ncks/ncks.vcxproj
+++ /dev/null
@@ -1,151 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{D6E82FA7-5C29-3C68-B0B7-1B352E18E98E}</ProjectGuid>
-    <RootNamespace>ncks</RootNamespace>
-    <Keyword>Qt4VSv1.0</Keyword>
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <PlatformToolSet>v140</PlatformToolSet>
-    <OutputDirectory>debug\</OutputDirectory>
-    <ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
-    <CharacterSet>NotSet</CharacterSet>
-    <ConfigurationType>Application</ConfigurationType>
-    <IntermediateDirectory>debug\</IntermediateDirectory>
-    <PrimaryOutput>ncks</PrimaryOutput>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <PlatformToolSet>v140</PlatformToolSet>
-    <OutputDirectory>release\</OutputDirectory>
-    <ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
-    <CharacterSet>NotSet</CharacterSet>
-    <ConfigurationType>Application</ConfigurationType>
-    <IntermediateDirectory>release\</IntermediateDirectory>
-    <PrimaryOutput>ncks</PrimaryOutput>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings" />
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\$(Configuration)\</IntDir>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">ncks</TargetName>
-    <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</IgnoreImportLibrary>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\$(Configuration)\</IntDir>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">ncks</TargetName>
-    <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</IgnoreImportLibrary>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <AdditionalIncludeDirectories>.;$(HEADER_NETCDF);$(HEADER_GSL);$(HEADER_UDUNITS);$(QTDIR)\win32-msvc2013;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <AdditionalOptions>-w34100 -w34189 -w44996 %(AdditionalOptions)</AdditionalOptions>
-      <AssemblerListingLocation>debug\</AssemblerListingLocation>
-      <BrowseInformation>false</BrowseInformation>
-      <CompileAs>CompileAsCpp</CompileAs>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <ExceptionHandling>Sync</ExceptionHandling>
-      <ObjectFileName>$(IntDir)</ObjectFileName>
-      <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;ENABLE_UDUNITS;HAVE_UDUNITS2_H;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessToFile>false</PreprocessToFile>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <RuntimeTypeInfo>true</RuntimeTypeInfo>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <WarningLevel>Level3</WarningLevel>
-      <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>../libnco/debug/libnco.lib;$(LIB_NETCDF);$(LIB_HDF5);$(LIB_HDF5_HL);$(LIB_ZLIB);$(LIB_SZIP);$(LIB_GSL);$(LIB_UDUNITS);$(LIB_EXPAT);$(LIB_CURL);%(AdditionalDependencies);ws2_32.lib;winmm.lib;wldap32.lib</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(QTDIR)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <AdditionalOptions>"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions)</AdditionalOptions>
-      <DataExecutionPrevention>true</DataExecutionPrevention>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <IgnoreImportLibrary>true</IgnoreImportLibrary>
-      <OutputFile>$(OutDir)\ncks.exe</OutputFile>
-      <RandomizedBaseAddress>true</RandomizedBaseAddress>
-      <SubSystem>Console</SubSystem>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-    </Link>
-    <Midl>
-      <DefaultCharType>Unsigned</DefaultCharType>
-      <EnableErrorChecks>None</EnableErrorChecks>
-      <WarningLevel>0</WarningLevel>
-    </Midl>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;ENABLE_UDUNITS;HAVE_UDUNITS2_H;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ResourceCompile>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <AdditionalIncludeDirectories>.;$(HEADER_NETCDF);$(HEADER_GSL);$(HEADER_UDUNITS);$(QTDIR)\win32-msvc2013;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <AdditionalOptions>-Zc:strictStrings -w34100 -w34189 -w44996 %(AdditionalOptions)</AdditionalOptions>
-      <AssemblerListingLocation>release\</AssemblerListingLocation>
-      <BrowseInformation>false</BrowseInformation>
-      <CompileAs>CompileAsCpp</CompileAs>
-      <DebugInformationFormat>None</DebugInformationFormat>
-      <ExceptionHandling>Sync</ExceptionHandling>
-      <ObjectFileName>$(IntDir)</ObjectFileName>
-      <Optimization>MaxSpeed</Optimization>
-      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;ENABLE_UDUNITS;HAVE_UDUNITS2_H;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessToFile>false</PreprocessToFile>
-      <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <RuntimeTypeInfo>true</RuntimeTypeInfo>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <WarningLevel>Level3</WarningLevel>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>../libnco/release/libnco.lib;$(LIB_NETCDF);$(LIB_HDF5);$(LIB_HDF5_HL);$(LIB_ZLIB);$(LIB_SZIP);$(LIB_GSL);$(LIB_UDUNITS);$(LIB_EXPAT);$(LIB_CURL);%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(QTDIR)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <AdditionalOptions>"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions)</AdditionalOptions>
-      <DataExecutionPrevention>true</DataExecutionPrevention>
-      <GenerateDebugInformation>false</GenerateDebugInformation>
-      <IgnoreImportLibrary>true</IgnoreImportLibrary>
-      <LinkIncremental>false</LinkIncremental>
-      <OutputFile>$(OutDir)\ncks.exe</OutputFile>
-      <RandomizedBaseAddress>true</RandomizedBaseAddress>
-      <SubSystem>Console</SubSystem>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-    </Link>
-    <Midl>
-      <DefaultCharType>Unsigned</DefaultCharType>
-      <EnableErrorChecks>None</EnableErrorChecks>
-      <WarningLevel>0</WarningLevel>
-    </Midl>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;ENABLE_UDUNITS;HAVE_UDUNITS2_H;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ResourceCompile>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\src\nco\ncks.c" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets" />
-  <ProjectExtensions>
-    <VisualStudio>
-      <UserProperties UicDir=".\GeneratedFiles" RccDir=".\GeneratedFiles" Qt5Version_x0020_Win32="qtbase" />
-    </VisualStudio>
-  </ProjectExtensions>
-</Project>
\ No newline at end of file
diff --git a/qt/ncks/ncks.vcxproj.filters b/qt/ncks/ncks.vcxproj.filters
deleted file mode 100644
index e5b9d65..0000000
--- a/qt/ncks/ncks.vcxproj.filters
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\src\nco\ncks.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
-</Project>
\ No newline at end of file
diff --git a/qt/nco.pri b/qt/nco.pri
deleted file mode 100644
index 626049a..0000000
--- a/qt/nco.pri
+++ /dev/null
@@ -1,57 +0,0 @@
-CONFIG += console 
-CONFIG += static
-CONFIG -= qt
-
-unix {
- CONFIG += largefile
- DEFINES += HAVE_CONFIG_H
- INCLUDEPATH += ../../
- DEFINES += _BSD_SOURCE
- DEFINES += _POSIX_SOURCE
- QMAKE_CFLAGS += -std=c99
- LIBS += -L/usr/local/lib/
- LIBS += -lhdf5_hl -lhdf5 -lgsl -lgslcblas -lnetcdf -lm
- LIBS += -L/usr/lib/x86_64-linux-gnu/ -L/usr/lib/i386-linux-gnu/ -lz -ludunits2 -lexpat
-}
-
-win32{
- QMAKE_CFLAGS_RELEASE += /MT
- QMAKE_CXXFLAGS_RELEASE += /MT
- QMAKE_CFLAGS_DEBUG += /MTd
- QMAKE_CXXFLAGS_DEBUG += /MTd
- QMAKE_CXXFLAGS += /TP 
- DEFINES += _CRT_SECURE_NO_WARNINGS
- DEFINES += _CRT_NONSTDC_NO_DEPRECATE
- DEFINES += ENABLE_UDUNITS
- DEFINES += HAVE_UDUNITS2_H
- DEFINES += ENABLE_GSL
- DEFINES += ENABLE_DAP
- DEFINES += NEED_STRSEP
- DEFINES += _MATH_DEFINES_DEFINED
-}
-
-win32{
- netcdf3 {
- INCLUDEPATH += $(HEADER_NETCDF3)
- LIBS += $(LIB_NETCDF3)
- } else {
- INCLUDEPATH += $(HEADER_NETCDF)
- LIBS += $(LIB_NETCDF)
- LIBS += $(LIB_HDF5)
- LIBS += $(LIB_HDF5_HL)
- LIBS += $(LIB_ZLIB)
- LIBS += $(LIB_SZIP)
- DEFINES += ENABLE_NETCDF4
- DEFINES += HAVE_NETCDF4_H
-}
- INCLUDEPATH += $(HEADER_GSL)
- INCLUDEPATH += $(HEADER_UDUNITS)
- LIBS += $(LIB_GSL)
- LIBS += $(LIB_UDUNITS)
- LIBS += $(LIB_EXPAT)
- LIBS += $(LIB_CURL)
- LIBS += ws2_32.lib
- LIBS += winmm.lib
- LIBS += wldap32.lib
-}
-
diff --git a/qt/nco.pro b/qt/nco.pro
deleted file mode 100644
index cbc5179..0000000
--- a/qt/nco.pro
+++ /dev/null
@@ -1,17 +0,0 @@
-TEMPLATE = subdirs
-CONFIG += ordered
-SUBDIRS += libnco
-SUBDIRS += ncatted
-SUBDIRS += ncbo
-SUBDIRS += ncecat
-SUBDIRS += ncflint
-SUBDIRS += ncks
-SUBDIRS += ncpdq
-SUBDIRS += ncra
-SUBDIRS += ncrename
-SUBDIRS += ncwa
-SUBDIRS += ncrcat
-SUBDIRS += ncea
-SUBDIRS += libnco_c++
-SUBDIRS += tst_nco_c++
-SUBDIRS += ncap2
diff --git a/qt/nco.sln b/qt/nco.sln
deleted file mode 100644
index 7508a0c..0000000
--- a/qt/nco.sln
+++ /dev/null
@@ -1,150 +0,0 @@
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 14
-VisualStudioVersion = 14.0.25420.1
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libnco", "libnco\libnco.vcxproj", "{E8AACE7E-513A-3A65-B16B-0661B6089A03}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ncatted", "ncatted\ncatted.vcxproj", "{662B7468-C1B2-3EA3-98DE-D2B8A870CAAE}"
-	ProjectSection(ProjectDependencies) = postProject
-		{E8AACE7E-513A-3A65-B16B-0661B6089A03} = {E8AACE7E-513A-3A65-B16B-0661B6089A03}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ncbo", "ncbo\ncbo.vcxproj", "{05AA5FAF-8D8D-32F1-8215-3712F8CC38E0}"
-	ProjectSection(ProjectDependencies) = postProject
-		{E8AACE7E-513A-3A65-B16B-0661B6089A03} = {E8AACE7E-513A-3A65-B16B-0661B6089A03}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ncecat", "ncecat\ncecat.vcxproj", "{62931E91-8CDE-3A32-BE30-3CED418E09CF}"
-	ProjectSection(ProjectDependencies) = postProject
-		{E8AACE7E-513A-3A65-B16B-0661B6089A03} = {E8AACE7E-513A-3A65-B16B-0661B6089A03}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ncflint", "ncflint\ncflint.vcxproj", "{4F01E3BE-0797-3130-88FA-F5C1CD8A0651}"
-	ProjectSection(ProjectDependencies) = postProject
-		{E8AACE7E-513A-3A65-B16B-0661B6089A03} = {E8AACE7E-513A-3A65-B16B-0661B6089A03}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ncks", "ncks\ncks.vcxproj", "{D6E82FA7-5C29-3C68-B0B7-1B352E18E98E}"
-	ProjectSection(ProjectDependencies) = postProject
-		{E8AACE7E-513A-3A65-B16B-0661B6089A03} = {E8AACE7E-513A-3A65-B16B-0661B6089A03}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ncpdq", "ncpdq\ncpdq.vcxproj", "{0FD04465-7DAA-322F-9F66-241608F4423F}"
-	ProjectSection(ProjectDependencies) = postProject
-		{E8AACE7E-513A-3A65-B16B-0661B6089A03} = {E8AACE7E-513A-3A65-B16B-0661B6089A03}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ncra", "ncra\ncra.vcxproj", "{D6FDCE37-425F-33B0-87F4-92A8CBC20C8A}"
-	ProjectSection(ProjectDependencies) = postProject
-		{E8AACE7E-513A-3A65-B16B-0661B6089A03} = {E8AACE7E-513A-3A65-B16B-0661B6089A03}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ncrename", "ncrename\ncrename.vcxproj", "{B5D4FE11-143A-3C0A-8540-C2B86CF3898A}"
-	ProjectSection(ProjectDependencies) = postProject
-		{E8AACE7E-513A-3A65-B16B-0661B6089A03} = {E8AACE7E-513A-3A65-B16B-0661B6089A03}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ncwa", "ncwa\ncwa.vcxproj", "{24FE043D-0522-3D7C-A57A-FE178EF42806}"
-	ProjectSection(ProjectDependencies) = postProject
-		{E8AACE7E-513A-3A65-B16B-0661B6089A03} = {E8AACE7E-513A-3A65-B16B-0661B6089A03}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ncrcat", "ncrcat\ncrcat.vcxproj", "{D9A7EC37-F172-3427-AD47-6B0A1B89B67F}"
-	ProjectSection(ProjectDependencies) = postProject
-		{E8AACE7E-513A-3A65-B16B-0661B6089A03} = {E8AACE7E-513A-3A65-B16B-0661B6089A03}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ncea", "ncea\ncea.vcxproj", "{ED83DCD6-3659-3227-8BAE-CAE51E45E95D}"
-	ProjectSection(ProjectDependencies) = postProject
-		{E8AACE7E-513A-3A65-B16B-0661B6089A03} = {E8AACE7E-513A-3A65-B16B-0661B6089A03}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libnco_c++", "libnco_c++\libnco_c++.vcxproj", "{BF383AEF-8F0C-39FD-96F6-393FDA23EAB4}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tst_nco_c++", "tst_nco_c++\tst_nco_c++.vcxproj", "{0F656B77-3E08-343A-96F8-2875D7A0B3D0}"
-	ProjectSection(ProjectDependencies) = postProject
-		{E8AACE7E-513A-3A65-B16B-0661B6089A03} = {E8AACE7E-513A-3A65-B16B-0661B6089A03}
-		{BF383AEF-8F0C-39FD-96F6-393FDA23EAB4} = {BF383AEF-8F0C-39FD-96F6-393FDA23EAB4}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ncap2", "ncap2\ncap2.vcxproj", "{DEBDE623-1A7F-3850-AFE7-37FDF3D6EC7F}"
-	ProjectSection(ProjectDependencies) = postProject
-		{0F656B77-3E08-343A-96F8-2875D7A0B3D0} = {0F656B77-3E08-343A-96F8-2875D7A0B3D0}
-		{E8AACE7E-513A-3A65-B16B-0661B6089A03} = {E8AACE7E-513A-3A65-B16B-0661B6089A03}
-		{BF383AEF-8F0C-39FD-96F6-393FDA23EAB4} = {BF383AEF-8F0C-39FD-96F6-393FDA23EAB4}
-	EndProjectSection
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|Win32 = Debug|Win32
-		Release|Win32 = Release|Win32
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{E8AACE7E-513A-3A65-B16B-0661B6089A03}.Debug|Win32.ActiveCfg = Debug|Win32
-		{E8AACE7E-513A-3A65-B16B-0661B6089A03}.Debug|Win32.Build.0 = Debug|Win32
-		{E8AACE7E-513A-3A65-B16B-0661B6089A03}.Release|Win32.ActiveCfg = Release|Win32
-		{E8AACE7E-513A-3A65-B16B-0661B6089A03}.Release|Win32.Build.0 = Release|Win32
-		{662B7468-C1B2-3EA3-98DE-D2B8A870CAAE}.Debug|Win32.ActiveCfg = Debug|Win32
-		{662B7468-C1B2-3EA3-98DE-D2B8A870CAAE}.Debug|Win32.Build.0 = Debug|Win32
-		{662B7468-C1B2-3EA3-98DE-D2B8A870CAAE}.Release|Win32.ActiveCfg = Release|Win32
-		{662B7468-C1B2-3EA3-98DE-D2B8A870CAAE}.Release|Win32.Build.0 = Release|Win32
-		{05AA5FAF-8D8D-32F1-8215-3712F8CC38E0}.Debug|Win32.ActiveCfg = Debug|Win32
-		{05AA5FAF-8D8D-32F1-8215-3712F8CC38E0}.Debug|Win32.Build.0 = Debug|Win32
-		{05AA5FAF-8D8D-32F1-8215-3712F8CC38E0}.Release|Win32.ActiveCfg = Release|Win32
-		{05AA5FAF-8D8D-32F1-8215-3712F8CC38E0}.Release|Win32.Build.0 = Release|Win32
-		{62931E91-8CDE-3A32-BE30-3CED418E09CF}.Debug|Win32.ActiveCfg = Debug|Win32
-		{62931E91-8CDE-3A32-BE30-3CED418E09CF}.Debug|Win32.Build.0 = Debug|Win32
-		{62931E91-8CDE-3A32-BE30-3CED418E09CF}.Release|Win32.ActiveCfg = Release|Win32
-		{62931E91-8CDE-3A32-BE30-3CED418E09CF}.Release|Win32.Build.0 = Release|Win32
-		{4F01E3BE-0797-3130-88FA-F5C1CD8A0651}.Debug|Win32.ActiveCfg = Debug|Win32
-		{4F01E3BE-0797-3130-88FA-F5C1CD8A0651}.Debug|Win32.Build.0 = Debug|Win32
-		{4F01E3BE-0797-3130-88FA-F5C1CD8A0651}.Release|Win32.ActiveCfg = Release|Win32
-		{4F01E3BE-0797-3130-88FA-F5C1CD8A0651}.Release|Win32.Build.0 = Release|Win32
-		{D6E82FA7-5C29-3C68-B0B7-1B352E18E98E}.Debug|Win32.ActiveCfg = Debug|Win32
-		{D6E82FA7-5C29-3C68-B0B7-1B352E18E98E}.Debug|Win32.Build.0 = Debug|Win32
-		{D6E82FA7-5C29-3C68-B0B7-1B352E18E98E}.Release|Win32.ActiveCfg = Release|Win32
-		{D6E82FA7-5C29-3C68-B0B7-1B352E18E98E}.Release|Win32.Build.0 = Release|Win32
-		{0FD04465-7DAA-322F-9F66-241608F4423F}.Debug|Win32.ActiveCfg = Debug|Win32
-		{0FD04465-7DAA-322F-9F66-241608F4423F}.Debug|Win32.Build.0 = Debug|Win32
-		{0FD04465-7DAA-322F-9F66-241608F4423F}.Release|Win32.ActiveCfg = Release|Win32
-		{0FD04465-7DAA-322F-9F66-241608F4423F}.Release|Win32.Build.0 = Release|Win32
-		{D6FDCE37-425F-33B0-87F4-92A8CBC20C8A}.Debug|Win32.ActiveCfg = Debug|Win32
-		{D6FDCE37-425F-33B0-87F4-92A8CBC20C8A}.Debug|Win32.Build.0 = Debug|Win32
-		{D6FDCE37-425F-33B0-87F4-92A8CBC20C8A}.Release|Win32.ActiveCfg = Release|Win32
-		{D6FDCE37-425F-33B0-87F4-92A8CBC20C8A}.Release|Win32.Build.0 = Release|Win32
-		{B5D4FE11-143A-3C0A-8540-C2B86CF3898A}.Debug|Win32.ActiveCfg = Debug|Win32
-		{B5D4FE11-143A-3C0A-8540-C2B86CF3898A}.Debug|Win32.Build.0 = Debug|Win32
-		{B5D4FE11-143A-3C0A-8540-C2B86CF3898A}.Release|Win32.ActiveCfg = Release|Win32
-		{B5D4FE11-143A-3C0A-8540-C2B86CF3898A}.Release|Win32.Build.0 = Release|Win32
-		{24FE043D-0522-3D7C-A57A-FE178EF42806}.Debug|Win32.ActiveCfg = Debug|Win32
-		{24FE043D-0522-3D7C-A57A-FE178EF42806}.Debug|Win32.Build.0 = Debug|Win32
-		{24FE043D-0522-3D7C-A57A-FE178EF42806}.Release|Win32.ActiveCfg = Release|Win32
-		{24FE043D-0522-3D7C-A57A-FE178EF42806}.Release|Win32.Build.0 = Release|Win32
-		{D9A7EC37-F172-3427-AD47-6B0A1B89B67F}.Debug|Win32.ActiveCfg = Debug|Win32
-		{D9A7EC37-F172-3427-AD47-6B0A1B89B67F}.Debug|Win32.Build.0 = Debug|Win32
-		{D9A7EC37-F172-3427-AD47-6B0A1B89B67F}.Release|Win32.ActiveCfg = Release|Win32
-		{D9A7EC37-F172-3427-AD47-6B0A1B89B67F}.Release|Win32.Build.0 = Release|Win32
-		{ED83DCD6-3659-3227-8BAE-CAE51E45E95D}.Debug|Win32.ActiveCfg = Debug|Win32
-		{ED83DCD6-3659-3227-8BAE-CAE51E45E95D}.Debug|Win32.Build.0 = Debug|Win32
-		{ED83DCD6-3659-3227-8BAE-CAE51E45E95D}.Release|Win32.ActiveCfg = Release|Win32
-		{ED83DCD6-3659-3227-8BAE-CAE51E45E95D}.Release|Win32.Build.0 = Release|Win32
-		{BF383AEF-8F0C-39FD-96F6-393FDA23EAB4}.Debug|Win32.ActiveCfg = Debug|Win32
-		{BF383AEF-8F0C-39FD-96F6-393FDA23EAB4}.Debug|Win32.Build.0 = Debug|Win32
-		{BF383AEF-8F0C-39FD-96F6-393FDA23EAB4}.Release|Win32.ActiveCfg = Release|Win32
-		{BF383AEF-8F0C-39FD-96F6-393FDA23EAB4}.Release|Win32.Build.0 = Release|Win32
-		{0F656B77-3E08-343A-96F8-2875D7A0B3D0}.Debug|Win32.ActiveCfg = Debug|Win32
-		{0F656B77-3E08-343A-96F8-2875D7A0B3D0}.Debug|Win32.Build.0 = Debug|Win32
-		{0F656B77-3E08-343A-96F8-2875D7A0B3D0}.Release|Win32.ActiveCfg = Release|Win32
-		{0F656B77-3E08-343A-96F8-2875D7A0B3D0}.Release|Win32.Build.0 = Release|Win32
-		{DEBDE623-1A7F-3850-AFE7-37FDF3D6EC7F}.Debug|Win32.ActiveCfg = Debug|Win32
-		{DEBDE623-1A7F-3850-AFE7-37FDF3D6EC7F}.Debug|Win32.Build.0 = Debug|Win32
-		{DEBDE623-1A7F-3850-AFE7-37FDF3D6EC7F}.Release|Win32.ActiveCfg = Release|Win32
-		{DEBDE623-1A7F-3850-AFE7-37FDF3D6EC7F}.Release|Win32.Build.0 = Release|Win32
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-	GlobalSection(ExtensibilityGlobals) = postSolution
-		Qt5Version = qtbase
-	EndGlobalSection
-EndGlobal
diff --git a/qt/ncpdq/ncpdq.pro b/qt/ncpdq/ncpdq.pro
deleted file mode 100644
index 171d8b7..0000000
--- a/qt/ncpdq/ncpdq.pro
+++ /dev/null
@@ -1,17 +0,0 @@
-TARGET = ncpdq
-TEMPLATE = app
-CONFIG -= qt
-CONFIG += debug_and_release
-
-CONFIG( debug, debug|release ) {
-        win32:LIBS += ../libnco/debug/libnco.lib
-        unix:LIBS  += ../libnco/debug/liblibnco.a
-} else {
-        win32:LIBS += ../libnco/release/libnco.lib
-        unix:LIBS  += ../libnco/release/liblibnco.a
-}
-
-include (../nco.pri)
-HEADERS   = 
-SOURCES   = ../../src/nco/ncpdq.c
-
diff --git a/qt/ncpdq/ncpdq.vcxproj b/qt/ncpdq/ncpdq.vcxproj
deleted file mode 100644
index 311b28a..0000000
--- a/qt/ncpdq/ncpdq.vcxproj
+++ /dev/null
@@ -1,151 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{0FD04465-7DAA-322F-9F66-241608F4423F}</ProjectGuid>
-    <RootNamespace>ncpdq</RootNamespace>
-    <Keyword>Qt4VSv1.0</Keyword>
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <PlatformToolSet>v140</PlatformToolSet>
-    <OutputDirectory>debug\</OutputDirectory>
-    <ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
-    <CharacterSet>NotSet</CharacterSet>
-    <ConfigurationType>Application</ConfigurationType>
-    <IntermediateDirectory>debug\</IntermediateDirectory>
-    <PrimaryOutput>ncpdq</PrimaryOutput>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <PlatformToolSet>v140</PlatformToolSet>
-    <OutputDirectory>release\</OutputDirectory>
-    <ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
-    <CharacterSet>NotSet</CharacterSet>
-    <ConfigurationType>Application</ConfigurationType>
-    <IntermediateDirectory>release\</IntermediateDirectory>
-    <PrimaryOutput>ncpdq</PrimaryOutput>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings" />
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\$(Configuration)\</IntDir>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">ncpdq</TargetName>
-    <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</IgnoreImportLibrary>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\$(Configuration)\</IntDir>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">ncpdq</TargetName>
-    <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</IgnoreImportLibrary>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <AdditionalIncludeDirectories>.;$(HEADER_NETCDF);$(HEADER_GSL);$(HEADER_UDUNITS);$(QTDIR)\win32-msvc2013;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <AdditionalOptions>-w34100 -w34189 -w44996 %(AdditionalOptions)</AdditionalOptions>
-      <AssemblerListingLocation>debug\</AssemblerListingLocation>
-      <BrowseInformation>false</BrowseInformation>
-      <CompileAs>CompileAsCpp</CompileAs>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <ExceptionHandling>Sync</ExceptionHandling>
-      <ObjectFileName>$(IntDir)</ObjectFileName>
-      <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;ENABLE_UDUNITS;HAVE_UDUNITS2_H;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessToFile>false</PreprocessToFile>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <RuntimeTypeInfo>true</RuntimeTypeInfo>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <WarningLevel>Level3</WarningLevel>
-      <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>../libnco/debug/libnco.lib;$(LIB_NETCDF);$(LIB_HDF5);$(LIB_HDF5_HL);$(LIB_ZLIB);$(LIB_SZIP);$(LIB_GSL);$(LIB_UDUNITS);$(LIB_EXPAT);$(LIB_CURL);%(AdditionalDependencies);ws2_32.lib;winmm.lib;wldap32.lib</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(QTDIR)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <AdditionalOptions>"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions)</AdditionalOptions>
-      <DataExecutionPrevention>true</DataExecutionPrevention>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <IgnoreImportLibrary>true</IgnoreImportLibrary>
-      <OutputFile>$(OutDir)\ncpdq.exe</OutputFile>
-      <RandomizedBaseAddress>true</RandomizedBaseAddress>
-      <SubSystem>Console</SubSystem>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-    </Link>
-    <Midl>
-      <DefaultCharType>Unsigned</DefaultCharType>
-      <EnableErrorChecks>None</EnableErrorChecks>
-      <WarningLevel>0</WarningLevel>
-    </Midl>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;ENABLE_UDUNITS;HAVE_UDUNITS2_H;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ResourceCompile>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <AdditionalIncludeDirectories>.;$(HEADER_NETCDF);$(HEADER_GSL);$(HEADER_UDUNITS);$(QTDIR)\win32-msvc2013;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <AdditionalOptions>-Zc:strictStrings -w34100 -w34189 -w44996 %(AdditionalOptions)</AdditionalOptions>
-      <AssemblerListingLocation>release\</AssemblerListingLocation>
-      <BrowseInformation>false</BrowseInformation>
-      <CompileAs>CompileAsCpp</CompileAs>
-      <DebugInformationFormat>None</DebugInformationFormat>
-      <ExceptionHandling>Sync</ExceptionHandling>
-      <ObjectFileName>$(IntDir)</ObjectFileName>
-      <Optimization>MaxSpeed</Optimization>
-      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;ENABLE_UDUNITS;HAVE_UDUNITS2_H;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessToFile>false</PreprocessToFile>
-      <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <RuntimeTypeInfo>true</RuntimeTypeInfo>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <WarningLevel>Level3</WarningLevel>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>../libnco/release/libnco.lib;$(LIB_NETCDF);$(LIB_HDF5);$(LIB_HDF5_HL);$(LIB_ZLIB);$(LIB_SZIP);$(LIB_GSL);$(LIB_UDUNITS);$(LIB_EXPAT);$(LIB_CURL);%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(QTDIR)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <AdditionalOptions>"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions)</AdditionalOptions>
-      <DataExecutionPrevention>true</DataExecutionPrevention>
-      <GenerateDebugInformation>false</GenerateDebugInformation>
-      <IgnoreImportLibrary>true</IgnoreImportLibrary>
-      <LinkIncremental>false</LinkIncremental>
-      <OutputFile>$(OutDir)\ncpdq.exe</OutputFile>
-      <RandomizedBaseAddress>true</RandomizedBaseAddress>
-      <SubSystem>Console</SubSystem>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-    </Link>
-    <Midl>
-      <DefaultCharType>Unsigned</DefaultCharType>
-      <EnableErrorChecks>None</EnableErrorChecks>
-      <WarningLevel>0</WarningLevel>
-    </Midl>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;ENABLE_UDUNITS;HAVE_UDUNITS2_H;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ResourceCompile>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\src\nco\ncpdq.c" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets" />
-  <ProjectExtensions>
-    <VisualStudio>
-      <UserProperties UicDir=".\GeneratedFiles" RccDir=".\GeneratedFiles" Qt5Version_x0020_Win32="qtbase" />
-    </VisualStudio>
-  </ProjectExtensions>
-</Project>
\ No newline at end of file
diff --git a/qt/ncpdq/ncpdq.vcxproj.filters b/qt/ncpdq/ncpdq.vcxproj.filters
deleted file mode 100644
index a4f5189..0000000
--- a/qt/ncpdq/ncpdq.vcxproj.filters
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\src\nco\ncpdq.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
-</Project>
\ No newline at end of file
diff --git a/qt/ncra/ncra.pro b/qt/ncra/ncra.pro
deleted file mode 100644
index ae51af9..0000000
--- a/qt/ncra/ncra.pro
+++ /dev/null
@@ -1,17 +0,0 @@
-TARGET = ncra
-TEMPLATE = app
-CONFIG -= qt
-CONFIG += debug_and_release
-
-CONFIG( debug, debug|release ) {
-        win32:LIBS += ../libnco/debug/libnco.lib
-        unix:LIBS  += ../libnco/debug/liblibnco.a
-} else {
-        win32:LIBS += ../libnco/release/libnco.lib
-        unix:LIBS  += ../libnco/release/liblibnco.a
-}
-
-include (../nco.pri)
-HEADERS   = 
-SOURCES   = ../../src/nco/ncra.c
-
diff --git a/qt/ncra/ncra.vcxproj b/qt/ncra/ncra.vcxproj
deleted file mode 100644
index 31a1041..0000000
--- a/qt/ncra/ncra.vcxproj
+++ /dev/null
@@ -1,151 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{D6FDCE37-425F-33B0-87F4-92A8CBC20C8A}</ProjectGuid>
-    <RootNamespace>ncra</RootNamespace>
-    <Keyword>Qt4VSv1.0</Keyword>
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <PlatformToolSet>v140</PlatformToolSet>
-    <OutputDirectory>debug\</OutputDirectory>
-    <ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
-    <CharacterSet>NotSet</CharacterSet>
-    <ConfigurationType>Application</ConfigurationType>
-    <IntermediateDirectory>debug\</IntermediateDirectory>
-    <PrimaryOutput>ncra</PrimaryOutput>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <PlatformToolSet>v140</PlatformToolSet>
-    <OutputDirectory>release\</OutputDirectory>
-    <ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
-    <CharacterSet>NotSet</CharacterSet>
-    <ConfigurationType>Application</ConfigurationType>
-    <IntermediateDirectory>release\</IntermediateDirectory>
-    <PrimaryOutput>ncra</PrimaryOutput>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings" />
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\$(Configuration)\</IntDir>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">ncra</TargetName>
-    <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</IgnoreImportLibrary>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\$(Configuration)\</IntDir>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">ncra</TargetName>
-    <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</IgnoreImportLibrary>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <AdditionalIncludeDirectories>.;$(HEADER_NETCDF);$(HEADER_GSL);$(HEADER_UDUNITS);$(QTDIR)\win32-msvc2013;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <AdditionalOptions>-w34100 -w34189 -w44996 %(AdditionalOptions)</AdditionalOptions>
-      <AssemblerListingLocation>debug\</AssemblerListingLocation>
-      <BrowseInformation>false</BrowseInformation>
-      <CompileAs>CompileAsCpp</CompileAs>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <ExceptionHandling>Sync</ExceptionHandling>
-      <ObjectFileName>$(IntDir)</ObjectFileName>
-      <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;ENABLE_UDUNITS;HAVE_UDUNITS2_H;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessToFile>false</PreprocessToFile>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <RuntimeTypeInfo>true</RuntimeTypeInfo>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <WarningLevel>Level3</WarningLevel>
-      <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>../libnco/debug/libnco.lib;$(LIB_NETCDF);$(LIB_HDF5);$(LIB_HDF5_HL);$(LIB_ZLIB);$(LIB_SZIP);$(LIB_GSL);$(LIB_UDUNITS);$(LIB_EXPAT);$(LIB_CURL);%(AdditionalDependencies);ws2_32.lib;winmm.lib;wldap32.lib</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(QTDIR)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <AdditionalOptions>"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions)</AdditionalOptions>
-      <DataExecutionPrevention>true</DataExecutionPrevention>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <IgnoreImportLibrary>true</IgnoreImportLibrary>
-      <OutputFile>$(OutDir)\ncra.exe</OutputFile>
-      <RandomizedBaseAddress>true</RandomizedBaseAddress>
-      <SubSystem>Console</SubSystem>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-    </Link>
-    <Midl>
-      <DefaultCharType>Unsigned</DefaultCharType>
-      <EnableErrorChecks>None</EnableErrorChecks>
-      <WarningLevel>0</WarningLevel>
-    </Midl>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;ENABLE_UDUNITS;HAVE_UDUNITS2_H;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ResourceCompile>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <AdditionalIncludeDirectories>.;$(HEADER_NETCDF);$(HEADER_GSL);$(HEADER_UDUNITS);$(QTDIR)\win32-msvc2013;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <AdditionalOptions>-Zc:strictStrings -w34100 -w34189 -w44996 %(AdditionalOptions)</AdditionalOptions>
-      <AssemblerListingLocation>release\</AssemblerListingLocation>
-      <BrowseInformation>false</BrowseInformation>
-      <CompileAs>CompileAsCpp</CompileAs>
-      <DebugInformationFormat>None</DebugInformationFormat>
-      <ExceptionHandling>Sync</ExceptionHandling>
-      <ObjectFileName>$(IntDir)</ObjectFileName>
-      <Optimization>MaxSpeed</Optimization>
-      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;ENABLE_UDUNITS;HAVE_UDUNITS2_H;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessToFile>false</PreprocessToFile>
-      <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <RuntimeTypeInfo>true</RuntimeTypeInfo>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <WarningLevel>Level3</WarningLevel>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>../libnco/release/libnco.lib;$(LIB_NETCDF);$(LIB_HDF5);$(LIB_HDF5_HL);$(LIB_ZLIB);$(LIB_SZIP);$(LIB_GSL);$(LIB_UDUNITS);$(LIB_EXPAT);$(LIB_CURL);%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(QTDIR)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <AdditionalOptions>"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions)</AdditionalOptions>
-      <DataExecutionPrevention>true</DataExecutionPrevention>
-      <GenerateDebugInformation>false</GenerateDebugInformation>
-      <IgnoreImportLibrary>true</IgnoreImportLibrary>
-      <LinkIncremental>false</LinkIncremental>
-      <OutputFile>$(OutDir)\ncra.exe</OutputFile>
-      <RandomizedBaseAddress>true</RandomizedBaseAddress>
-      <SubSystem>Console</SubSystem>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-    </Link>
-    <Midl>
-      <DefaultCharType>Unsigned</DefaultCharType>
-      <EnableErrorChecks>None</EnableErrorChecks>
-      <WarningLevel>0</WarningLevel>
-    </Midl>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;ENABLE_UDUNITS;HAVE_UDUNITS2_H;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ResourceCompile>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\src\nco\ncra.c" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets" />
-  <ProjectExtensions>
-    <VisualStudio>
-      <UserProperties UicDir=".\GeneratedFiles" RccDir=".\GeneratedFiles" Qt5Version_x0020_Win32="qtbase" />
-    </VisualStudio>
-  </ProjectExtensions>
-</Project>
\ No newline at end of file
diff --git a/qt/ncra/ncra.vcxproj.filters b/qt/ncra/ncra.vcxproj.filters
deleted file mode 100644
index 7e2d907..0000000
--- a/qt/ncra/ncra.vcxproj.filters
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\src\nco\ncra.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
-</Project>
\ No newline at end of file
diff --git a/qt/ncrcat/ncrcat.pro b/qt/ncrcat/ncrcat.pro
deleted file mode 100644
index 4087a9b..0000000
--- a/qt/ncrcat/ncrcat.pro
+++ /dev/null
@@ -1,16 +0,0 @@
-TARGET = ncrcat
-TEMPLATE = app
-CONFIG -= qt
-CONFIG += debug_and_release
-
-CONFIG( debug, debug|release ) {
-        win32:LIBS += ../libnco/debug/libnco.lib
-        unix:LIBS  += ../libnco/debug/liblibnco.a
-} else {
-        win32:LIBS += ../libnco/release/libnco.lib
-        unix:LIBS  += ../libnco/release/liblibnco.a
-}
-
-include (../nco.pri)
-HEADERS   = 
-SOURCES   = ../../src/nco/ncra.c
\ No newline at end of file
diff --git a/qt/ncrcat/ncrcat.vcxproj b/qt/ncrcat/ncrcat.vcxproj
deleted file mode 100644
index 706fe4e..0000000
--- a/qt/ncrcat/ncrcat.vcxproj
+++ /dev/null
@@ -1,151 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{D9A7EC37-F172-3427-AD47-6B0A1B89B67F}</ProjectGuid>
-    <RootNamespace>ncrcat</RootNamespace>
-    <Keyword>Qt4VSv1.0</Keyword>
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <PlatformToolSet>v140</PlatformToolSet>
-    <OutputDirectory>debug\</OutputDirectory>
-    <ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
-    <CharacterSet>NotSet</CharacterSet>
-    <ConfigurationType>Application</ConfigurationType>
-    <IntermediateDirectory>debug\</IntermediateDirectory>
-    <PrimaryOutput>ncrcat</PrimaryOutput>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <PlatformToolSet>v140</PlatformToolSet>
-    <OutputDirectory>release\</OutputDirectory>
-    <ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
-    <CharacterSet>NotSet</CharacterSet>
-    <ConfigurationType>Application</ConfigurationType>
-    <IntermediateDirectory>release\</IntermediateDirectory>
-    <PrimaryOutput>ncrcat</PrimaryOutput>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings" />
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\$(Configuration)\</IntDir>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">ncrcat</TargetName>
-    <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</IgnoreImportLibrary>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\$(Configuration)\</IntDir>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">ncrcat</TargetName>
-    <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</IgnoreImportLibrary>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <AdditionalIncludeDirectories>.;$(HEADER_NETCDF);$(HEADER_GSL);$(HEADER_UDUNITS);$(QTDIR)\win32-msvc2013;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <AdditionalOptions>-w34100 -w34189 -w44996 %(AdditionalOptions)</AdditionalOptions>
-      <AssemblerListingLocation>debug\</AssemblerListingLocation>
-      <BrowseInformation>false</BrowseInformation>
-      <CompileAs>CompileAsCpp</CompileAs>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <ExceptionHandling>Sync</ExceptionHandling>
-      <ObjectFileName>$(IntDir)</ObjectFileName>
-      <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;ENABLE_UDUNITS;HAVE_UDUNITS2_H;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessToFile>false</PreprocessToFile>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <RuntimeTypeInfo>true</RuntimeTypeInfo>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <WarningLevel>Level3</WarningLevel>
-      <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>../libnco/debug/libnco.lib;$(LIB_NETCDF);$(LIB_HDF5);$(LIB_HDF5_HL);$(LIB_ZLIB);$(LIB_SZIP);$(LIB_GSL);$(LIB_UDUNITS);$(LIB_EXPAT);$(LIB_CURL);%(AdditionalDependencies);ws2_32.lib;winmm.lib;wldap32.lib</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(QTDIR)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <AdditionalOptions>"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions)</AdditionalOptions>
-      <DataExecutionPrevention>true</DataExecutionPrevention>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <IgnoreImportLibrary>true</IgnoreImportLibrary>
-      <OutputFile>$(OutDir)\ncrcat.exe</OutputFile>
-      <RandomizedBaseAddress>true</RandomizedBaseAddress>
-      <SubSystem>Console</SubSystem>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-    </Link>
-    <Midl>
-      <DefaultCharType>Unsigned</DefaultCharType>
-      <EnableErrorChecks>None</EnableErrorChecks>
-      <WarningLevel>0</WarningLevel>
-    </Midl>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;ENABLE_UDUNITS;HAVE_UDUNITS2_H;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ResourceCompile>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <AdditionalIncludeDirectories>.;$(HEADER_NETCDF);$(HEADER_GSL);$(HEADER_UDUNITS);$(QTDIR)\win32-msvc2013;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <AdditionalOptions>-Zc:strictStrings -w34100 -w34189 -w44996 %(AdditionalOptions)</AdditionalOptions>
-      <AssemblerListingLocation>release\</AssemblerListingLocation>
-      <BrowseInformation>false</BrowseInformation>
-      <CompileAs>CompileAsCpp</CompileAs>
-      <DebugInformationFormat>None</DebugInformationFormat>
-      <ExceptionHandling>Sync</ExceptionHandling>
-      <ObjectFileName>$(IntDir)</ObjectFileName>
-      <Optimization>MaxSpeed</Optimization>
-      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;ENABLE_UDUNITS;HAVE_UDUNITS2_H;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessToFile>false</PreprocessToFile>
-      <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <RuntimeTypeInfo>true</RuntimeTypeInfo>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <WarningLevel>Level3</WarningLevel>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>../libnco/release/libnco.lib;$(LIB_NETCDF);$(LIB_HDF5);$(LIB_HDF5_HL);$(LIB_ZLIB);$(LIB_SZIP);$(LIB_GSL);$(LIB_UDUNITS);$(LIB_EXPAT);$(LIB_CURL);%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(QTDIR)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <AdditionalOptions>"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions)</AdditionalOptions>
-      <DataExecutionPrevention>true</DataExecutionPrevention>
-      <GenerateDebugInformation>false</GenerateDebugInformation>
-      <IgnoreImportLibrary>true</IgnoreImportLibrary>
-      <LinkIncremental>false</LinkIncremental>
-      <OutputFile>$(OutDir)\ncrcat.exe</OutputFile>
-      <RandomizedBaseAddress>true</RandomizedBaseAddress>
-      <SubSystem>Console</SubSystem>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-    </Link>
-    <Midl>
-      <DefaultCharType>Unsigned</DefaultCharType>
-      <EnableErrorChecks>None</EnableErrorChecks>
-      <WarningLevel>0</WarningLevel>
-    </Midl>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;ENABLE_UDUNITS;HAVE_UDUNITS2_H;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ResourceCompile>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\src\nco\ncra.c" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets" />
-  <ProjectExtensions>
-    <VisualStudio>
-      <UserProperties UicDir=".\GeneratedFiles" RccDir=".\GeneratedFiles" Qt5Version_x0020_Win32="qtbase" />
-    </VisualStudio>
-  </ProjectExtensions>
-</Project>
\ No newline at end of file
diff --git a/qt/ncrcat/ncrcat.vcxproj.filters b/qt/ncrcat/ncrcat.vcxproj.filters
deleted file mode 100644
index 7e2d907..0000000
--- a/qt/ncrcat/ncrcat.vcxproj.filters
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\src\nco\ncra.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
-</Project>
\ No newline at end of file
diff --git a/qt/ncrename/ncrename.pro b/qt/ncrename/ncrename.pro
deleted file mode 100644
index b75de45..0000000
--- a/qt/ncrename/ncrename.pro
+++ /dev/null
@@ -1,17 +0,0 @@
-TARGET = ncrename
-TEMPLATE = app
-CONFIG -= qt
-CONFIG += debug_and_release
-
-CONFIG( debug, debug|release ) {
-        win32:LIBS += ../libnco/debug/libnco.lib
-        unix:LIBS  += ../libnco/debug/liblibnco.a
-} else {
-        win32:LIBS += ../libnco/release/libnco.lib
-        unix:LIBS  += ../libnco/release/liblibnco.a
-}
-
-include (../nco.pri)
-HEADERS   = 
-SOURCES   = ../../src/nco/ncrename.c
-
diff --git a/qt/ncrename/ncrename.vcxproj b/qt/ncrename/ncrename.vcxproj
deleted file mode 100644
index e28a6fa..0000000
--- a/qt/ncrename/ncrename.vcxproj
+++ /dev/null
@@ -1,151 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{B5D4FE11-143A-3C0A-8540-C2B86CF3898A}</ProjectGuid>
-    <RootNamespace>ncrename</RootNamespace>
-    <Keyword>Qt4VSv1.0</Keyword>
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <PlatformToolSet>v140</PlatformToolSet>
-    <OutputDirectory>debug\</OutputDirectory>
-    <ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
-    <CharacterSet>NotSet</CharacterSet>
-    <ConfigurationType>Application</ConfigurationType>
-    <IntermediateDirectory>debug\</IntermediateDirectory>
-    <PrimaryOutput>ncrename</PrimaryOutput>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <PlatformToolSet>v140</PlatformToolSet>
-    <OutputDirectory>release\</OutputDirectory>
-    <ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
-    <CharacterSet>NotSet</CharacterSet>
-    <ConfigurationType>Application</ConfigurationType>
-    <IntermediateDirectory>release\</IntermediateDirectory>
-    <PrimaryOutput>ncrename</PrimaryOutput>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings" />
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\$(Configuration)\</IntDir>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">ncrename</TargetName>
-    <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</IgnoreImportLibrary>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\$(Configuration)\</IntDir>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">ncrename</TargetName>
-    <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</IgnoreImportLibrary>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <AdditionalIncludeDirectories>.;$(HEADER_NETCDF);$(HEADER_GSL);$(HEADER_UDUNITS);$(QTDIR)\win32-msvc2013;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <AdditionalOptions>-w34100 -w34189 -w44996 %(AdditionalOptions)</AdditionalOptions>
-      <AssemblerListingLocation>debug\</AssemblerListingLocation>
-      <BrowseInformation>false</BrowseInformation>
-      <CompileAs>CompileAsCpp</CompileAs>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <ExceptionHandling>Sync</ExceptionHandling>
-      <ObjectFileName>$(IntDir)</ObjectFileName>
-      <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;ENABLE_UDUNITS;HAVE_UDUNITS2_H;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessToFile>false</PreprocessToFile>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <RuntimeTypeInfo>true</RuntimeTypeInfo>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <WarningLevel>Level3</WarningLevel>
-      <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>../libnco/debug/libnco.lib;$(LIB_NETCDF);$(LIB_HDF5);$(LIB_HDF5_HL);$(LIB_ZLIB);$(LIB_SZIP);$(LIB_GSL);$(LIB_UDUNITS);$(LIB_EXPAT);$(LIB_CURL);%(AdditionalDependencies);ws2_32.lib;winmm.lib;wldap32.lib</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(QTDIR)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <AdditionalOptions>"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions)</AdditionalOptions>
-      <DataExecutionPrevention>true</DataExecutionPrevention>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <IgnoreImportLibrary>true</IgnoreImportLibrary>
-      <OutputFile>$(OutDir)\ncrename.exe</OutputFile>
-      <RandomizedBaseAddress>true</RandomizedBaseAddress>
-      <SubSystem>Console</SubSystem>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-    </Link>
-    <Midl>
-      <DefaultCharType>Unsigned</DefaultCharType>
-      <EnableErrorChecks>None</EnableErrorChecks>
-      <WarningLevel>0</WarningLevel>
-    </Midl>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;ENABLE_UDUNITS;HAVE_UDUNITS2_H;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ResourceCompile>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <AdditionalIncludeDirectories>.;$(HEADER_NETCDF);$(HEADER_GSL);$(HEADER_UDUNITS);$(QTDIR)\win32-msvc2013;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <AdditionalOptions>-Zc:strictStrings -w34100 -w34189 -w44996 %(AdditionalOptions)</AdditionalOptions>
-      <AssemblerListingLocation>release\</AssemblerListingLocation>
-      <BrowseInformation>false</BrowseInformation>
-      <CompileAs>CompileAsCpp</CompileAs>
-      <DebugInformationFormat>None</DebugInformationFormat>
-      <ExceptionHandling>Sync</ExceptionHandling>
-      <ObjectFileName>$(IntDir)</ObjectFileName>
-      <Optimization>MaxSpeed</Optimization>
-      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;ENABLE_UDUNITS;HAVE_UDUNITS2_H;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessToFile>false</PreprocessToFile>
-      <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <RuntimeTypeInfo>true</RuntimeTypeInfo>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <WarningLevel>Level3</WarningLevel>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>../libnco/release/libnco.lib;$(LIB_NETCDF);$(LIB_HDF5);$(LIB_HDF5_HL);$(LIB_ZLIB);$(LIB_SZIP);$(LIB_GSL);$(LIB_UDUNITS);$(LIB_EXPAT);$(LIB_CURL);%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(QTDIR)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <AdditionalOptions>"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions)</AdditionalOptions>
-      <DataExecutionPrevention>true</DataExecutionPrevention>
-      <GenerateDebugInformation>false</GenerateDebugInformation>
-      <IgnoreImportLibrary>true</IgnoreImportLibrary>
-      <LinkIncremental>false</LinkIncremental>
-      <OutputFile>$(OutDir)\ncrename.exe</OutputFile>
-      <RandomizedBaseAddress>true</RandomizedBaseAddress>
-      <SubSystem>Console</SubSystem>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-    </Link>
-    <Midl>
-      <DefaultCharType>Unsigned</DefaultCharType>
-      <EnableErrorChecks>None</EnableErrorChecks>
-      <WarningLevel>0</WarningLevel>
-    </Midl>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;ENABLE_UDUNITS;HAVE_UDUNITS2_H;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ResourceCompile>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\src\nco\ncrename.c" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets" />
-  <ProjectExtensions>
-    <VisualStudio>
-      <UserProperties UicDir=".\GeneratedFiles" RccDir=".\GeneratedFiles" Qt5Version_x0020_Win32="qtbase" />
-    </VisualStudio>
-  </ProjectExtensions>
-</Project>
\ No newline at end of file
diff --git a/qt/ncrename/ncrename.vcxproj.filters b/qt/ncrename/ncrename.vcxproj.filters
deleted file mode 100644
index 6b1984d..0000000
--- a/qt/ncrename/ncrename.vcxproj.filters
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\src\nco\ncrename.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
-</Project>
\ No newline at end of file
diff --git a/qt/ncwa/ncwa.pro b/qt/ncwa/ncwa.pro
deleted file mode 100644
index dddeb85..0000000
--- a/qt/ncwa/ncwa.pro
+++ /dev/null
@@ -1,57 +0,0 @@
-TARGET = ncwa
-TEMPLATE = app
-CONFIG -= qt
-CONFIG += debug_and_release
-
-CONFIG( debug, debug|release ) {
-        win32:LIBS += ../libnco/debug/libnco.lib
-        unix:LIBS  += ../libnco/debug/liblibnco.a
-} else {
-        win32:LIBS += ../libnco/release/libnco.lib
-        unix:LIBS  += ../libnco/release/liblibnco.a
-}
-
-include (../nco.pri)
-
-unix {
-HEADERS = ../../src/nco/ncap_yacc.h
-SOURCES   = ../../src/nco/ncwa.c \
-../../src/nco/ncap_utl.c 
-}
-win32 {
-SOURCES   = ../../src/nco/ncwa.c 
-}
-
-unix {
-FLEXSOURCES = ../../src/nco/ncap_lex.l
-BISONSOURCES = ../../src/nco/ncap_yacc.y	 
-
-flex.name = flex ${QMAKE_FILE_IN}
-flex.input = FLEXSOURCES
-flex.output = ../../src/nco/ncap_lex.c
-flex.commands = flex -Pnco_yy -o ../../src/nco/ncap_lex.c ${QMAKE_FILE_IN}
-flex.variable_out = SOURCES
-silent:flex.commands = @echo Lex ${QMAKE_FILE_IN} && $$flex.commands
-QMAKE_EXTRA_COMPILERS += flex
-
-bison.name = bison ${QMAKE_FILE_IN}
-bison.input = BISONSOURCES
-bison.commands = bison -d -p nco_yy -o ../../src/nco/ncap_yacc.c ${QMAKE_FILE_IN}
-bison.output = ../../src/nco/ncap_yacc.c
-bison.variable_out = SOURCES
-bison.CONFIG += target_predeps
-silent:bison.commands = @echo Bison ${QMAKE_FILE_IN} && $$bison.commands
-QMAKE_EXTRA_COMPILERS += bison
-
-bisonheader.commands = bison -d -p nco_yy -o ../../src/nco/ncap_yacc.c ${QMAKE_FILE_IN}
-bisonheader.input = BISONSOURCES
-bisonheader.output = ../../src/nco/ncap_yacc.c
-bisonheader.variable_out = HEADERS
-bisonheader.name = bisonheader ${QMAKE_FILE_IN}
-silent:bisonheader.commands = @echo Bison ${QMAKE_FILE_IN} && $$bison.commands
-QMAKE_EXTRA_COMPILERS += bisonheader
-}
-
-
-
-
diff --git a/qt/ncwa/ncwa.vcxproj b/qt/ncwa/ncwa.vcxproj
deleted file mode 100644
index 827653d..0000000
--- a/qt/ncwa/ncwa.vcxproj
+++ /dev/null
@@ -1,151 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{24FE043D-0522-3D7C-A57A-FE178EF42806}</ProjectGuid>
-    <RootNamespace>ncwa</RootNamespace>
-    <Keyword>Qt4VSv1.0</Keyword>
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <PlatformToolSet>v140</PlatformToolSet>
-    <OutputDirectory>debug\</OutputDirectory>
-    <ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
-    <CharacterSet>NotSet</CharacterSet>
-    <ConfigurationType>Application</ConfigurationType>
-    <IntermediateDirectory>debug\</IntermediateDirectory>
-    <PrimaryOutput>ncwa</PrimaryOutput>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <PlatformToolSet>v140</PlatformToolSet>
-    <OutputDirectory>release\</OutputDirectory>
-    <ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
-    <CharacterSet>NotSet</CharacterSet>
-    <ConfigurationType>Application</ConfigurationType>
-    <IntermediateDirectory>release\</IntermediateDirectory>
-    <PrimaryOutput>ncwa</PrimaryOutput>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings" />
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\$(Configuration)\</IntDir>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">ncwa</TargetName>
-    <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</IgnoreImportLibrary>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\$(Configuration)\</IntDir>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">ncwa</TargetName>
-    <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</IgnoreImportLibrary>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <AdditionalIncludeDirectories>.;$(HEADER_NETCDF);$(HEADER_GSL);$(HEADER_UDUNITS);$(QTDIR)\win32-msvc2013;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <AdditionalOptions>-w34100 -w34189 -w44996 %(AdditionalOptions)</AdditionalOptions>
-      <AssemblerListingLocation>debug\</AssemblerListingLocation>
-      <BrowseInformation>false</BrowseInformation>
-      <CompileAs>CompileAsCpp</CompileAs>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <ExceptionHandling>Sync</ExceptionHandling>
-      <ObjectFileName>$(IntDir)</ObjectFileName>
-      <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;ENABLE_UDUNITS;HAVE_UDUNITS2_H;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessToFile>false</PreprocessToFile>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <RuntimeTypeInfo>true</RuntimeTypeInfo>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <WarningLevel>Level3</WarningLevel>
-      <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>../libnco/debug/libnco.lib;$(LIB_NETCDF);$(LIB_HDF5);$(LIB_HDF5_HL);$(LIB_ZLIB);$(LIB_SZIP);$(LIB_GSL);$(LIB_UDUNITS);$(LIB_EXPAT);$(LIB_CURL);%(AdditionalDependencies);ws2_32.lib;winmm.lib;wldap32.lib</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(QTDIR)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <AdditionalOptions>"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions)</AdditionalOptions>
-      <DataExecutionPrevention>true</DataExecutionPrevention>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <IgnoreImportLibrary>true</IgnoreImportLibrary>
-      <OutputFile>$(OutDir)\ncwa.exe</OutputFile>
-      <RandomizedBaseAddress>true</RandomizedBaseAddress>
-      <SubSystem>Console</SubSystem>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-    </Link>
-    <Midl>
-      <DefaultCharType>Unsigned</DefaultCharType>
-      <EnableErrorChecks>None</EnableErrorChecks>
-      <WarningLevel>0</WarningLevel>
-    </Midl>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;ENABLE_UDUNITS;HAVE_UDUNITS2_H;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ResourceCompile>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <AdditionalIncludeDirectories>.;$(HEADER_NETCDF);$(HEADER_GSL);$(HEADER_UDUNITS);$(QTDIR)\win32-msvc2013;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <AdditionalOptions>-Zc:strictStrings -w34100 -w34189 -w44996 %(AdditionalOptions)</AdditionalOptions>
-      <AssemblerListingLocation>release\</AssemblerListingLocation>
-      <BrowseInformation>false</BrowseInformation>
-      <CompileAs>CompileAsCpp</CompileAs>
-      <DebugInformationFormat>None</DebugInformationFormat>
-      <ExceptionHandling>Sync</ExceptionHandling>
-      <ObjectFileName>$(IntDir)</ObjectFileName>
-      <Optimization>MaxSpeed</Optimization>
-      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;ENABLE_UDUNITS;HAVE_UDUNITS2_H;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessToFile>false</PreprocessToFile>
-      <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <RuntimeTypeInfo>true</RuntimeTypeInfo>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <WarningLevel>Level3</WarningLevel>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>../libnco/release/libnco.lib;$(LIB_NETCDF);$(LIB_HDF5);$(LIB_HDF5_HL);$(LIB_ZLIB);$(LIB_SZIP);$(LIB_GSL);$(LIB_UDUNITS);$(LIB_EXPAT);$(LIB_CURL);%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(QTDIR)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <AdditionalOptions>"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions)</AdditionalOptions>
-      <DataExecutionPrevention>true</DataExecutionPrevention>
-      <GenerateDebugInformation>false</GenerateDebugInformation>
-      <IgnoreImportLibrary>true</IgnoreImportLibrary>
-      <LinkIncremental>false</LinkIncremental>
-      <OutputFile>$(OutDir)\ncwa.exe</OutputFile>
-      <RandomizedBaseAddress>true</RandomizedBaseAddress>
-      <SubSystem>Console</SubSystem>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-    </Link>
-    <Midl>
-      <DefaultCharType>Unsigned</DefaultCharType>
-      <EnableErrorChecks>None</EnableErrorChecks>
-      <WarningLevel>0</WarningLevel>
-    </Midl>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;ENABLE_UDUNITS;HAVE_UDUNITS2_H;ENABLE_GSL;ENABLE_DAP;ENABLE_NETCDF4;HAVE_NETCDF4_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ResourceCompile>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\src\nco\ncwa.c" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets" />
-  <ProjectExtensions>
-    <VisualStudio>
-      <UserProperties UicDir=".\GeneratedFiles" RccDir=".\GeneratedFiles" Qt5Version_x0020_Win32="qtbase" />
-    </VisualStudio>
-  </ProjectExtensions>
-</Project>
\ No newline at end of file
diff --git a/qt/ncwa/ncwa.vcxproj.filters b/qt/ncwa/ncwa.vcxproj.filters
deleted file mode 100644
index 8c9046e..0000000
--- a/qt/ncwa/ncwa.vcxproj.filters
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\src\nco\ncwa.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
-</Project>
\ No newline at end of file
diff --git a/qt/tst_nco_c++/tst_nco_c++.pro b/qt/tst_nco_c++/tst_nco_c++.pro
deleted file mode 100644
index 02dfeac..0000000
--- a/qt/tst_nco_c++/tst_nco_c++.pro
+++ /dev/null
@@ -1,45 +0,0 @@
-TEMPLATE = app
-TARGET = tst_nco_c++
-CONFIG -= qt
-CONFIG += console
-CONFIG += debug_and_release
-
-CONFIG( debug, debug|release ) {
-	win32:LIBS += ../libnco_c++/debug/libnco_c++.lib
-	unix:LIBS  += ../libnco_c++/debug/liblibnco_c++.a
-} else {
-	win32:LIBS += ../libnco_c++/release/libnco_c++.lib
-	unix:LIBS  += ../libnco_c++/release/liblibnco_c++.a
-}
-
-INCLUDEPATH += ../../src/nco_c++
-HEADERS   = 
-SOURCES   = ../../src/nco_c++/tst.cc
-
-unix {
- INCLUDEPATH += /usr/local/include
- INCLUDEPATH += /usr/local
- LIBS += -L/usr/lib/ -lnetcdf -lhdf5_hl -lhdf5
- LIBS += -L/usr/lib/x86_64-linux-gnu/ -L/usr/lib/i386-linux-gnu/ -lz -ludunits2 -lexpat 
-}
-win32 {
- QMAKE_CFLAGS_RELEASE += /MT
- QMAKE_CXXFLAGS_RELEASE += /MT
- QMAKE_CFLAGS_DEBUG += /MTd
- QMAKE_CXXFLAGS_DEBUG += /MTd
- INCLUDEPATH += $(HEADER_NETCDF)
- LIBS += $(LIB_NETCDF)
- LIBS += $(LIB_DISPATCH)
- LIBS += $(LIB_NETCDF4)
- LIBS += $(LIB_HDF5)
- LIBS += $(LIB_HDF5_HL)
- LIBS += $(LIB_ZLIB)
- LIBS += $(LIB_SZIP)
- LIBS += $(LIB_CURL)
- DEFINES += _CRT_SECURE_NO_WARNINGS
- DEFINES += _CRT_NONSTDC_NO_DEPRECATE
- DEFINES += ENABLE_NETCDF4
- DEFINES += HAVE_NETCDF4_H
- DEFINES += NEED_STRCASECMP
- DEFINES += NEED_STRCASESTR
-}
diff --git a/qt/tst_nco_c++/tst_nco_c++.vcxproj b/qt/tst_nco_c++/tst_nco_c++.vcxproj
deleted file mode 100644
index 881d08e..0000000
--- a/qt/tst_nco_c++/tst_nco_c++.vcxproj
+++ /dev/null
@@ -1,149 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{0F656B77-3E08-343A-96F8-2875D7A0B3D0}</ProjectGuid>
-    <RootNamespace>tst_nco_c++</RootNamespace>
-    <Keyword>Qt4VSv1.0</Keyword>
-    <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <PlatformToolSet>v140</PlatformToolSet>
-    <OutputDirectory>debug\</OutputDirectory>
-    <ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
-    <CharacterSet>NotSet</CharacterSet>
-    <ConfigurationType>Application</ConfigurationType>
-    <IntermediateDirectory>debug\</IntermediateDirectory>
-    <PrimaryOutput>tst_nco_c++</PrimaryOutput>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <PlatformToolSet>v140</PlatformToolSet>
-    <OutputDirectory>release\</OutputDirectory>
-    <ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
-    <CharacterSet>NotSet</CharacterSet>
-    <ConfigurationType>Application</ConfigurationType>
-    <IntermediateDirectory>release\</IntermediateDirectory>
-    <PrimaryOutput>tst_nco_c++</PrimaryOutput>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings" />
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">debug\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\$(Configuration)\</IntDir>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">tst_nco_c++</TargetName>
-    <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</IgnoreImportLibrary>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">release\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\$(Configuration)\</IntDir>
-    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">tst_nco_c++</TargetName>
-    <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</IgnoreImportLibrary>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <AdditionalIncludeDirectories>.;..\..\src\nco_c++;$(HEADER_NETCDF);$(QTDIR)\win32-msvc2013;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <AdditionalOptions>-w34100 -w34189 -w44996 %(AdditionalOptions)</AdditionalOptions>
-      <AssemblerListingLocation>debug\</AssemblerListingLocation>
-      <BrowseInformation>false</BrowseInformation>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <ExceptionHandling>Sync</ExceptionHandling>
-      <ObjectFileName>$(IntDir)</ObjectFileName>
-      <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;ENABLE_NETCDF4;HAVE_NETCDF4_H;NEED_STRCASECMP;NEED_STRCASESTR;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessToFile>false</PreprocessToFile>
-      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
-      <RuntimeTypeInfo>true</RuntimeTypeInfo>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <WarningLevel>Level3</WarningLevel>
-      <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>../libnco_c++/debug/libnco_c++.lib;$(LIB_NETCDF);$(LIB_DISPATCH);$(LIB_NETCDF4);$(LIB_HDF5);$(LIB_HDF5_HL);$(LIB_ZLIB);$(LIB_SZIP);$(LIB_CURL);%(AdditionalDependencies);ws2_32.lib;winmm.lib;wldap32.lib</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(QTDIR)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <AdditionalOptions>"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions)</AdditionalOptions>
-      <DataExecutionPrevention>true</DataExecutionPrevention>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <IgnoreImportLibrary>true</IgnoreImportLibrary>
-      <OutputFile>$(OutDir)\tst_nco_c++.exe</OutputFile>
-      <RandomizedBaseAddress>true</RandomizedBaseAddress>
-      <SubSystem>Console</SubSystem>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-    </Link>
-    <Midl>
-      <DefaultCharType>Unsigned</DefaultCharType>
-      <EnableErrorChecks>None</EnableErrorChecks>
-      <WarningLevel>0</WarningLevel>
-    </Midl>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;ENABLE_NETCDF4;HAVE_NETCDF4_H;NEED_STRCASECMP;NEED_STRCASESTR;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ResourceCompile>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <AdditionalIncludeDirectories>.;..\..\src\nco_c++;$(HEADER_NETCDF);$(QTDIR)\win32-msvc2013;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <AdditionalOptions>-Zc:strictStrings -w34100 -w34189 -w44996 %(AdditionalOptions)</AdditionalOptions>
-      <AssemblerListingLocation>release\</AssemblerListingLocation>
-      <BrowseInformation>false</BrowseInformation>
-      <DebugInformationFormat>None</DebugInformationFormat>
-      <ExceptionHandling>Sync</ExceptionHandling>
-      <ObjectFileName>$(IntDir)</ObjectFileName>
-      <Optimization>MaxSpeed</Optimization>
-      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;ENABLE_NETCDF4;HAVE_NETCDF4_H;NEED_STRCASECMP;NEED_STRCASESTR;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <PreprocessToFile>false</PreprocessToFile>
-      <ProgramDataBaseFileName>$(IntDir)vc$(PlatformToolsetVersion).pdb</ProgramDataBaseFileName>
-      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
-      <RuntimeTypeInfo>true</RuntimeTypeInfo>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-      <TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
-      <WarningLevel>Level3</WarningLevel>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>../libnco_c++/release/libnco_c++.lib;$(LIB_NETCDF);$(LIB_DISPATCH);$(LIB_NETCDF4);$(LIB_HDF5);$(LIB_HDF5_HL);$(LIB_ZLIB);$(LIB_SZIP);$(LIB_CURL);%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(QTDIR)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <AdditionalOptions>"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions)</AdditionalOptions>
-      <DataExecutionPrevention>true</DataExecutionPrevention>
-      <GenerateDebugInformation>false</GenerateDebugInformation>
-      <IgnoreImportLibrary>true</IgnoreImportLibrary>
-      <LinkIncremental>false</LinkIncremental>
-      <OutputFile>$(OutDir)\tst_nco_c++.exe</OutputFile>
-      <RandomizedBaseAddress>true</RandomizedBaseAddress>
-      <SubSystem>Console</SubSystem>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-    </Link>
-    <Midl>
-      <DefaultCharType>Unsigned</DefaultCharType>
-      <EnableErrorChecks>None</EnableErrorChecks>
-      <WarningLevel>0</WarningLevel>
-    </Midl>
-    <ResourceCompile>
-      <PreprocessorDefinitions>_CONSOLE;UNICODE;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;ENABLE_NETCDF4;HAVE_NETCDF4_H;NEED_STRCASECMP;NEED_STRCASESTR;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ResourceCompile>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\src\nco_c++\tst.cc" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets" />
-  <ProjectExtensions>
-    <VisualStudio>
-      <UserProperties UicDir=".\GeneratedFiles" RccDir=".\GeneratedFiles" Qt5Version_x0020_Win32="qtbase" />
-    </VisualStudio>
-  </ProjectExtensions>
-</Project>
\ No newline at end of file
diff --git a/qt/tst_nco_c++/tst_nco_c++.vcxproj.filters b/qt/tst_nco_c++/tst_nco_c++.vcxproj.filters
deleted file mode 100644
index 845e686..0000000
--- a/qt/tst_nco_c++/tst_nco_c++.vcxproj.filters
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\src\nco_c++\tst.cc">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
-</Project>
\ No newline at end of file
diff --git a/src/nco++/Makefile.old b/src/nco++/Makefile.old
index 262bc7a..e6e371b 100644
--- a/src/nco++/Makefile.old
+++ b/src/nco++/Makefile.old
@@ -30,7 +30,7 @@
 # 64-bit ABI netCDF3 on NCAR AIX systems (bluefire):
 # cd ${HOME}/nco/src/nco++;ANTLR='/contrib/antlr-2.7.7/bin/antlr' ANTLR_ROOT='/contrib/antlr-2.7.7' NETCDF_LIB='/usr/local/lib64/r4i4' UDUNITS_INC='/contrib/udunits-1.12.9/include' UDUNITS_LIB='/contrib/udunits-1.12.9/lib' make -f Makefile.old --jobs=1 ABI=64 OPTS=D NETCDF4=N UDUNITS=N all;cd -
 # 64-bit ABI netCDF4 on NCAR AIX systems (bluefire):
-# cd ${HOME}/nco/src/nco++;ANTLR='/contrib/antlr-2.7.7/bin/antlr' ANTLR_ROOT='/contrib/antlr-2.7.7' CURL_LIB='/contrib/curl/7.21.2/lib' GSL_INC='/contrib/gsl-1.12/include' GSL_LIB='/contrib/gsl-1.12/lib' GSL_MAJOR_VERSION='1' GSL_MINOR_VERSION='12' HDF5_ROOT='/contrib/hdf5-1.8.7_seq' LDFLAGS='-lnetcdf -lhdf5_hl -lhdf5 -lz' NETCDF_ROOT='/contrib/netcdf/4.1.3_seq' SZ_LIB='/contrib/szip/lib' UDUNITS_LIB='/contrib/zlib/lib' make -f Makefile.old --jobs=1 ABI=64 OPTS=D SZ=Y all;cd -
+# cd ${HOME}/nco/src/nco++;ANTLR='/contrib/antlr-2.7.7/bin/antlr' ANTLR_ROOT='/contrib/antlr-2.7.7' CURL_LIB='/contrib/curl/7.21.2/lib' GSL_INC='/contrib/gsl-1.12/include' GSL_LIB='/contrib/gsl-1.12/lib' GSL_MAJOR_VERSION='1' GSL_MINOR_VERSION='12' GSL_PATCH_VERSION='0' HDF5_ROOT='/contrib/hdf5-1.8.7_seq' LDFLAGS='-lnetcdf -lhdf5_hl -lhdf5 -lz' NETCDF_ROOT='/contrib/netcdf/4.1.3_seq' SZ_LIB='/contrib/szip/lib' UDUNITS_LIB='/contrib/zlib/lib' make -f Makefile.old --jobs=1 ABI=64 OPTS=D SZ [...]
 # 
 # Cygwin on Windows Vista systems:
 # cd ~/nco/src/nco++;ANTLR='antlr' make -f Makefile.old GSL=Y OPTS=D NETCDF4=Y UDUNITS=Y all;cd -
@@ -215,7 +215,10 @@ ifndef USR_TKN
  USR_TKN := -DABORT_ON_ERROR
 endif # endif USR_TKN
 ifndef VRS_SNG
- VRS_SNG := $(shell date +%Y%m%d)
+# VRS_SNG := $(shell date +%Y%m%d)
+# 20150622
+# VRS_SNG := $(shell git describe --abbrev=7 --dirty --always --tags)
+ VRS_SNG := $(shell cat ${MY_DOC_DIR}/VERSION)
 endif # endif VRS_SNG
 # Derived-tokens based on primary tokens
 # These tokens should not be altered by hand
@@ -352,7 +355,10 @@ ifndef GSL_MINOR_VERSION
    GSL_MINOR_VERSION := 4
    GSL_PATCH_VERSION := 0
   endif # end if GSL_MINOR_VERSION
- endif # endif GSL_MINOR_VERSION
+ endif # endif GSL_PATCH_VERSION
+ ifndef GSL_PATCH_VERSION
+   GSL_PATCH_VERSION := 0
+ endif # endif GSL_PATCH_VERSION
 endif # end if GSL
 
 ifeq (${SZ},Y)
@@ -781,7 +787,10 @@ else ifneq (${null},$(findstring titan,${HOSTNAME}))
  ARFLAGS := rsv
 else ifneq (${null},$(findstring ys,${HOSTNAME}))
  ARFLAGS := rsv
-endif # !rhea,titan,yellowston
+endif # !rhea,titan,yellowstone
+ifeq (${PVM_ARCH},MACOSX)
+ ARFLAGS := rsv
+endif # !aerosol,firn
 CXX := ${LINUX_CXX}
 CC := ${LINUX_CC}
 CPP := ${CXX}
@@ -1450,8 +1459,9 @@ dbg:
 	@printf "FL_FMT = ${FL_FMT}\n"
 	@printf "GCC_RCH_ARG = ${GCC_RCH_ARG}\n"
 	@printf "GSL = $(GSL)\n"
-	@printf "GSL_MINOR_VERSION = $(GSL_MINOR_VERSION)\n"
 	@printf "GSL_MAJOR_VERSION = $(GSL_MAJOR_VERSION)\n"
+	@printf "GSL_MINOR_VERSION = $(GSL_MINOR_VERSION)\n"
+	@printf "GSL_PATCH_VERSION = $(GSL_PATCH_VERSION)\n"
 	@printf "HOST = ${HOST}\n"
 	@printf "HOSTNAME = ${HOSTNAME}\n"
 	@printf "ICC_RCH_ARG = ${ICC_RCH_ARG}\n"
diff --git a/src/nco++/fmc_all_cls.cc b/src/nco++/fmc_all_cls.cc
index d7f5b65..08ad7d4 100644
--- a/src/nco++/fmc_all_cls.cc
+++ b/src/nco++/fmc_all_cls.cc
@@ -1547,7 +1547,6 @@ var_sct * bsc_cls::getdims_fnd(bool &is_mtd, std::vector<RefAST> &vtr_args, fmc_
       for(idx=0;idx<ndims;idx++)     
 	var_att->val.sngp[idx]=strdup(var->dim[idx]->nm);
 
-
       (void)cast_nctype_void((nc_type)NC_STRING,&var_att->val); 
     }
 
@@ -1555,16 +1554,12 @@ var_sct * bsc_cls::getdims_fnd(bool &is_mtd, std::vector<RefAST> &vtr_args, fmc_
 
     return var_att;
 }
-
-
-
   
 //Math Functions /******************************************/
   mth_cls::mth_cls(bool flg_dbg){
     //Populate only on first constructor call
     if(fmc_vtr.empty()){
 
-
       /* Basic math: acos, asin, atan, cos, exp, log, log10, rnd_nbr, sin, sqrt, tan */
       //sym_vtr.push_back(sym_cls("rnd_nbr",rnd_nbr,rnd_nbrf));
       sym_vtr.push_back(sym_cls("acos",acos,acosf));  
@@ -1592,7 +1587,7 @@ var_sct * bsc_cls::getdims_fnd(bool &is_mtd, std::vector<RefAST> &vtr_args, fmc_
 	 20050610: C99 mandates support for erf(), erfc(), tgamma()
 	 Eventually users without C99 will forego ncap */
       
-#if defined(LINUX) || defined(LINUXAMD64)  || defined(MACOSX)
+#if defined(LINUX) || defined(LINUXAMD64) || defined(MACOSX)
       sym_vtr.push_back(sym_cls("erf",erf,erff));
       sym_vtr.push_back(sym_cls("erfc",erfc,erfcf));
       sym_vtr.push_back(sym_cls("gamma",tgamma,tgammaf));
@@ -1614,7 +1609,7 @@ var_sct * bsc_cls::getdims_fnd(bool &is_mtd, std::vector<RefAST> &vtr_args, fmc_
       
       /* Advanced Rounding: nearbyint, rint, round, trunc */
       /* Advanced Rounding: nearbyint, round, trunc */
-      /* 20020703: AIX, MACOSX, SGI*, WIN32 do not define rintf
+      /* 20020703: AIX, MACOSX, SGI*, WIN32 do not define rintf()
 	 Only LINUX* supplies all of these and I do not care about them enough
 	 to activate them on LINUX* but not on MACOSX* and SUN* */
       /* 20130326: Re-activate these functions on all architectures */
diff --git a/src/nco++/fmc_gsl_cls.cc b/src/nco++/fmc_gsl_cls.cc
index e5c75a1..735af19 100644
--- a/src/nco++/fmc_gsl_cls.cc
+++ b/src/nco++/fmc_gsl_cls.cc
@@ -3299,18 +3299,15 @@ var_sct *gsl_cls::hnd_fnc_stat3(bool& is_mtd,std::vector<RefAST>&args_vtr,gpr_cl
      (void)cast_nctype_void((nc_type)NC_UINT64,&(var[2]->val));
      var[2]=nco_var_free(var[2]);   
    }else{
-     sz=1+ (var[0]->sz-1)/d_srd;
+     sz=1L+(var[0]->sz-1)/d_srd;
    }
    
    // Check hyperslab limits
-   if( 1+ (sz-1)*d_srd >var[0]->sz){
-     err_prn(sfnm,"Requested hyperslab with stride="+nbr2sng(d_srd)+" and n="+ nbr2sng(sz)+" doesn't fit into variable \""+string(var[0]->nm)+"\" with size="+nbr2sng(var[0]->sz)); 
+   if(1L+(sz-1)*d_srd > var[0]->sz){
+     err_prn(sfnm,"Requested hyperslab with stride="+nbr2sng(d_srd)+" and n="+ nbr2sng(sz)+" does not fit into variable \""+string(var[0]->nm)+"\" with size="+nbr2sng(var[0]->sz)); 
     }
-
-
   
    switch(fdx){
-
     
    case PS_MAX_IDX:{
      nco_int r_val; 
diff --git a/src/nco++/ncap2.cc b/src/nco++/ncap2.cc
index ef0b0f1..6c2e036 100644
--- a/src/nco++/ncap2.cc
+++ b/src/nco++/ncap2.cc
@@ -129,7 +129,7 @@ main(int argc,char **argv)
   const char * const CVS_Id="$Id$"; 
   const char * const CVS_Revision="$Revision$";
   const char * const att_nm_tmp="eulaVlliF_"; /* For netCDF4 name hack */
-  const char * const opt_sht_lst="3467ACcD:FfhL:l:n:Oo:p:Rrs:S:t:vx-:"; /* [sng] Single letter command line options */
+  const char * const opt_sht_lst="34567ACcD:FfhL:l:n:Oo:p:Rrs:S:t:vx-:"; /* [sng] Single letter command line options */
   
   const char fnc_nm[]="main()";
 
@@ -164,7 +164,7 @@ main(int argc,char **argv)
   int nbr_var_fix; /* nbr_var_fix gets incremented */
   int nbr_var_fl;/* number of vars in a file */
   int nbr_var_prc; /* nbr_var_prc gets incremented */
-  int xtr_nbr=0; /* xtr_nbr will not otherwise be set for -c with no -v */
+  int xtr_nbr=0; /* [nbr] xtr_nbr will not otherwise be set for -c with no -v */
   int opt;
   int out_id;  
   int rcd=NC_NOERR; /* [rcd] Return code */
@@ -285,8 +285,12 @@ main(int argc,char **argv)
     /* Long options with short counterparts */
     {"3",no_argument,0,'3'},
     {"4",no_argument,0,'4'},
-    {"64bit",no_argument,0,'4'},
     {"netcdf4",no_argument,0,'4'},
+    {"5",no_argument,0,'5'},
+    {"64bit_data",no_argument,0,'5'},
+    {"cdf5",no_argument,0,'5'},
+    {"pnetcdf",no_argument,0,'5'},
+    {"64bit_offset",no_argument,0,'6'},
     {"7",no_argument,0,'7'},
     {"append",no_argument,0,'A'},
     {"coords",no_argument,0,'c'},
@@ -425,11 +429,14 @@ main(int argc,char **argv)
     case '3': /* Request netCDF3 output storage format */
       fl_out_fmt=NC_FORMAT_CLASSIC;
       break;
-    case '4': /* Catch-all to prescribe output storage format */
-      if(!strcmp(opt_crr,"64bit")) fl_out_fmt=NC_FORMAT_64BIT; else fl_out_fmt=NC_FORMAT_NETCDF4; 
+    case '4': /* Request netCDF4 output storage format */
+      fl_out_fmt=NC_FORMAT_NETCDF4; 
+      break;
+    case '5': /* Request netCDF3 64-bit offset+data storage (i.e., pnetCDF) format */
+      fl_out_fmt=NC_FORMAT_CDF5;
       break;
     case '6': /* Request netCDF3 64-bit offset output storage format */
-      fl_out_fmt=NC_FORMAT_64BIT;
+      fl_out_fmt=NC_FORMAT_64BIT_OFFSET;
       break;
     case '7': /* Request netCDF4-classic output storage format */
       fl_out_fmt=NC_FORMAT_NETCDF4_CLASSIC;
@@ -1042,21 +1049,17 @@ main(int argc,char **argv)
   } /* end for */
   
   /* Set chunksize parameters */
-  if(fl_out_fmt == NC_FORMAT_NETCDF4 || fl_out_fmt == NC_FORMAT_NETCDF4_CLASSIC) {
-
+  if(fl_out_fmt == NC_FORMAT_NETCDF4 || fl_out_fmt == NC_FORMAT_NETCDF4_CLASSIC){
     //(void) nco_cnk_sz_set(out_id, (lmt_msa_sct **) NULL_CEWI, (int) 0, &cnk_map, &cnk_plc, cnk_sz_scl, cnk.cnk_dmn,cnk_nbr);
     dmn_cmn_sct cmn[NC_MAX_DIMS];
     /* update member dmn_cmn_vtr() from dmn_out_vtr */
     prs_arg.ncap_pop_dmn_cmn();
-    for(idx=0; idx<nbr_var_fix;idx++) {
+    for(idx=0;idx<nbr_var_fix;idx++){
       prs_arg.ncap_pop_var_dmn_cmn(var_fix[idx], cmn);
-      (void) nco_cnk_sz_set_trv(in_id, out_id, &cnk, var_fix[idx]->nm, cmn);
+      (void)nco_cnk_sz_set_trv(in_id,out_id,&cnk,var_fix[idx]->nm,cmn);
     }
   }
 
-
-
-
   /* Turn-off default filling behavior to enhance efficiency */
   nco_set_fill(out_id,NC_NOFILL,&fll_md_old);
   
diff --git a/src/nco++/ncoEnumTokenTypes.hpp b/src/nco++/ncoEnumTokenTypes.hpp
index cf490d6..4ad5438 100644
--- a/src/nco++/ncoEnumTokenTypes.hpp
+++ b/src/nco++/ncoEnumTokenTypes.hpp
@@ -1,7 +1,7 @@
 #ifndef INC_ncoEnumTokenTypes_hpp_
 #define INC_ncoEnumTokenTypes_hpp_
 
-/* $ANTLR 2.7.7 (20161005): "ncoGrammer.g" -> "ncoEnumTokenTypes.hpp"$ */
+/* $ANTLR 2.7.7 (20161013): "ncoGrammer.g" -> "ncoEnumTokenTypes.hpp"$ */
 
 #ifndef CUSTOM_API
 # define CUSTOM_API
diff --git a/src/nco++/ncoLexer.cpp b/src/nco++/ncoLexer.cpp
index 60f22c5..f62724d 100644
--- a/src/nco++/ncoLexer.cpp
+++ b/src/nco++/ncoLexer.cpp
@@ -1,4 +1,4 @@
-/* $ANTLR 2.7.7 (20161005): "ncoGrammer.g" -> "ncoLexer.cpp"$ */
+/* $ANTLR 2.7.7 (20161013): "ncoGrammer.g" -> "ncoLexer.cpp"$ */
 #include "ncoLexer.hpp"
 #include <antlr/CharBuffer.hpp>
 #include <antlr/TokenStreamException.hpp>
diff --git a/src/nco++/ncoLexer.hpp b/src/nco++/ncoLexer.hpp
index 1dca095..0481651 100644
--- a/src/nco++/ncoLexer.hpp
+++ b/src/nco++/ncoLexer.hpp
@@ -2,7 +2,7 @@
 #define INC_ncoLexer_hpp_
 
 #include <antlr/config.hpp>
-/* $ANTLR 2.7.7 (20161005): "ncoGrammer.g" -> "ncoLexer.hpp"$ */
+/* $ANTLR 2.7.7 (20161013): "ncoGrammer.g" -> "ncoLexer.hpp"$ */
 #include <antlr/CommonToken.hpp>
 #include <antlr/InputBuffer.hpp>
 #include <antlr/BitSet.hpp>
diff --git a/src/nco++/ncoParser.cpp b/src/nco++/ncoParser.cpp
index 4276541..ae6c192 100644
--- a/src/nco++/ncoParser.cpp
+++ b/src/nco++/ncoParser.cpp
@@ -1,4 +1,4 @@
-/* $ANTLR 2.7.7 (20161005): "ncoGrammer.g" -> "ncoParser.cpp"$ */
+/* $ANTLR 2.7.7 (20161013): "ncoGrammer.g" -> "ncoParser.cpp"$ */
 #include "ncoParser.hpp"
 #include <antlr/NoViableAltException.hpp>
 #include <antlr/SemanticException.hpp>
diff --git a/src/nco++/ncoParser.hpp b/src/nco++/ncoParser.hpp
index 322426f..e406e51 100644
--- a/src/nco++/ncoParser.hpp
+++ b/src/nco++/ncoParser.hpp
@@ -2,7 +2,7 @@
 #define INC_ncoParser_hpp_
 
 #include <antlr/config.hpp>
-/* $ANTLR 2.7.7 (20161005): "ncoGrammer.g" -> "ncoParser.hpp"$ */
+/* $ANTLR 2.7.7 (20161013): "ncoGrammer.g" -> "ncoParser.hpp"$ */
 #include <antlr/TokenStream.hpp>
 #include <antlr/TokenBuffer.hpp>
 #include "ncoParserTokenTypes.hpp"
diff --git a/src/nco++/ncoParserTokenTypes.hpp b/src/nco++/ncoParserTokenTypes.hpp
index d3dcc08..7efccd2 100644
--- a/src/nco++/ncoParserTokenTypes.hpp
+++ b/src/nco++/ncoParserTokenTypes.hpp
@@ -1,7 +1,7 @@
 #ifndef INC_ncoParserTokenTypes_hpp_
 #define INC_ncoParserTokenTypes_hpp_
 
-/* $ANTLR 2.7.7 (20161005): "ncoGrammer.g" -> "ncoParserTokenTypes.hpp"$ */
+/* $ANTLR 2.7.7 (20161013): "ncoGrammer.g" -> "ncoParserTokenTypes.hpp"$ */
 
 #ifndef CUSTOM_API
 # define CUSTOM_API
diff --git a/src/nco++/ncoTree.cpp b/src/nco++/ncoTree.cpp
index 276c6da..83c0622 100644
--- a/src/nco++/ncoTree.cpp
+++ b/src/nco++/ncoTree.cpp
@@ -1,4 +1,4 @@
-/* $ANTLR 2.7.7 (20160429): "ncoGrammer.g" -> "ncoTree.cpp"$ */
+/* $ANTLR 2.7.7 (20161013): "ncoGrammer.g" -> "ncoTree.cpp"$ */
 #include "ncoTree.hpp"
 #include <antlr/Token.hpp>
 #include <antlr/AST.hpp>
diff --git a/src/nco++/ncoTree.hpp b/src/nco++/ncoTree.hpp
index e90a841..aa8a222 100644
--- a/src/nco++/ncoTree.hpp
+++ b/src/nco++/ncoTree.hpp
@@ -3,7 +3,7 @@
 
 #include <antlr/config.hpp>
 #include "ncoParserTokenTypes.hpp"
-/* $ANTLR 2.7.7 (20160429): "ncoGrammer.g" -> "ncoTree.hpp"$ */
+/* $ANTLR 2.7.7 (20161013): "ncoGrammer.g" -> "ncoTree.hpp"$ */
 #include <antlr/TreeParser.hpp>
 
 #line 1 "ncoGrammer.g"
diff --git a/src/nco/mpncbo.c b/src/nco/mpncbo.c
index 5ae3f42..1306238 100644
--- a/src/nco/mpncbo.c
+++ b/src/nco/mpncbo.c
@@ -109,7 +109,7 @@ main(int argc,char **argv)
 
   const char * const CVS_Id="$Id$"; 
   const char * const CVS_Revision="$Revision$";
-  const char * const opt_sht_lst="3467ACcD:d:FhL:l:Oo:p:rRSt:v:X:xy:-:";
+  const char * const opt_sht_lst="34567ACcD:d:FhL:l:Oo:p:rRSt:v:X:xy:-:";
   
   cnk_dmn_sct **cnk_dmn=NULL_CEWI;
 
@@ -282,8 +282,12 @@ main(int argc,char **argv)
     /* Long options with short counterparts */
     {"3",no_argument,0,'3'},
     {"4",no_argument,0,'4'},
-    {"64bit",no_argument,0,'4'},
     {"netcdf4",no_argument,0,'4'},
+    {"5",no_argument,0,'5'},
+    {"64bit_data",no_argument,0,'5'},
+    {"cdf5",no_argument,0,'5'},
+    {"pnetcdf",no_argument,0,'5'},
+    {"64bit_offset",no_argument,0,'6'},
     {"7",no_argument,0,'7'},
     {"append",no_argument,0,'A'},
     {"coords",no_argument,0,'c'},
@@ -410,11 +414,14 @@ main(int argc,char **argv)
     case '3': /* Request netCDF3 output storage format */
       fl_out_fmt=NC_FORMAT_CLASSIC;
       break;
-    case '4': /* Catch-all to prescribe output storage format */
-      if(!strcmp(opt_crr,"64bit")) fl_out_fmt=NC_FORMAT_64BIT; else fl_out_fmt=NC_FORMAT_NETCDF4; 
+    case '4': /* Request netCDF4 output storage format */
+      fl_out_fmt=NC_FORMAT_NETCDF4; 
+      break;
+    case '5': /* Request netCDF3 64-bit offset+data storage (i.e., pnetCDF) format */
+      fl_out_fmt=NC_FORMAT_CDF5;
       break;
     case '6': /* Request netCDF3 64-bit offset output storage format */
-      fl_out_fmt=NC_FORMAT_64BIT;
+      fl_out_fmt=NC_FORMAT_64BIT_OFFSET;
       break;
     case '7': /* Request netCDF4-classic output storage format */
       fl_out_fmt=NC_FORMAT_NETCDF4_CLASSIC;
diff --git a/src/nco/mpncecat.c b/src/nco/mpncecat.c
index eb106ea..94ae001 100644
--- a/src/nco/mpncecat.c
+++ b/src/nco/mpncecat.c
@@ -85,7 +85,7 @@ main(int argc,char **argv)
 
   const char * const CVS_Id="$Id$"; 
   const char * const CVS_Revision="$Revision$";
-  const char * const opt_sht_lst="3467ACcD:d:FHhL:l:n:Oo:p:rRSt:u:v:X:x-:";
+  const char * const opt_sht_lst="34567ACcD:d:FHhL:l:n:Oo:p:rRSt:u:v:X:x-:";
   
   cnk_dmn_sct **cnk_dmn=NULL_CEWI;
 
@@ -236,8 +236,12 @@ main(int argc,char **argv)
     /* Long options with short counterparts */
     {"3",no_argument,0,'3'},
     {"4",no_argument,0,'4'},
-    {"64bit",no_argument,0,'4'},
     {"netcdf4",no_argument,0,'4'},
+    {"5",no_argument,0,'5'},
+    {"64bit_data",no_argument,0,'5'},
+    {"cdf5",no_argument,0,'5'},
+    {"pnetcdf",no_argument,0,'5'},
+    {"64bit_offset",no_argument,0,'6'},
     {"7",no_argument,0,'7'},
     {"append",no_argument,0,'A'},
     {"coords",no_argument,0,'c'},
@@ -365,11 +369,14 @@ main(int argc,char **argv)
     case '3': /* Request netCDF3 output storage format */
       fl_out_fmt=NC_FORMAT_CLASSIC;
       break;
-    case '4': /* Catch-all to prescribe output storage format */
-      if(!strcmp(opt_crr,"64bit")) fl_out_fmt=NC_FORMAT_64BIT; else fl_out_fmt=NC_FORMAT_NETCDF4; 
+    case '4': /* Request netCDF4 output storage format */
+      fl_out_fmt=NC_FORMAT_NETCDF4; 
+      break;
+    case '5': /* Request netCDF3 64-bit offset+data storage (i.e., pnetCDF) format */
+      fl_out_fmt=NC_FORMAT_CDF5;
       break;
     case '6': /* Request netCDF3 64-bit offset output storage format */
-      fl_out_fmt=NC_FORMAT_64BIT;
+      fl_out_fmt=NC_FORMAT_64BIT_OFFSET;
       break;
     case '7': /* Request netCDF4-classic output storage format */
       fl_out_fmt=NC_FORMAT_NETCDF4_CLASSIC;
diff --git a/src/nco/mpncflint.c b/src/nco/mpncflint.c
index 3d52c4e..09ead86 100644
--- a/src/nco/mpncflint.c
+++ b/src/nco/mpncflint.c
@@ -92,7 +92,7 @@ main(int argc,char **argv)
 
   const char * const CVS_Id="$Id$"; 
   const char * const CVS_Revision="$Revision$";
-  const char * const opt_sht_lst="3467ACcD:d:Fhi:L:l:Oo:p:rRSt:v:xw:-:";
+  const char * const opt_sht_lst="34567ACcD:d:Fhi:L:l:Oo:p:rRSt:v:xw:-:";
   
   cnk_dmn_sct **cnk_dmn=NULL_CEWI;
 
@@ -256,8 +256,12 @@ main(int argc,char **argv)
     /* Long options with short counterparts */
     {"3",no_argument,0,'3'},
     {"4",no_argument,0,'4'},
-    {"64bit",no_argument,0,'4'},
     {"netcdf4",no_argument,0,'4'},
+    {"5",no_argument,0,'5'},
+    {"64bit_data",no_argument,0,'5'},
+    {"cdf5",no_argument,0,'5'},
+    {"pnetcdf",no_argument,0,'5'},
+    {"64bit_offset",no_argument,0,'6'},
     {"7",no_argument,0,'7'},
     {"append",no_argument,0,'A'},
     {"coords",no_argument,0,'c'},
@@ -381,11 +385,14 @@ main(int argc,char **argv)
     case '3': /* Request netCDF3 output storage format */
       fl_out_fmt=NC_FORMAT_CLASSIC;
       break;
-    case '4': /* Catch-all to prescribe output storage format */
-      if(!strcmp(opt_crr,"64bit")) fl_out_fmt=NC_FORMAT_64BIT; else fl_out_fmt=NC_FORMAT_NETCDF4; 
+    case '4': /* Request netCDF4 output storage format */
+      fl_out_fmt=NC_FORMAT_NETCDF4; 
+      break;
+    case '5': /* Request netCDF3 64-bit offset+data storage (i.e., pnetCDF) format */
+      fl_out_fmt=NC_FORMAT_CDF5;
       break;
     case '6': /* Request netCDF3 64-bit offset output storage format */
-      fl_out_fmt=NC_FORMAT_64BIT;
+      fl_out_fmt=NC_FORMAT_64BIT_OFFSET;
       break;
     case '7': /* Request netCDF4-classic output storage format */
       fl_out_fmt=NC_FORMAT_NETCDF4_CLASSIC;
diff --git a/src/nco/mpncpdq.c b/src/nco/mpncpdq.c
index 58b5e99..859d41b 100644
--- a/src/nco/mpncpdq.c
+++ b/src/nco/mpncpdq.c
@@ -100,7 +100,7 @@ main(int argc,char **argv)
   
   const char * const CVS_Id="$Id$"; 
   const char * const CVS_Revision="$Revision$";
-  const char * const opt_sht_lst="3467Aa:CcD:d:FhL:l:M:Oo:P:p:RrSt:v:Ux-:";
+  const char * const opt_sht_lst="34567Aa:CcD:d:FhL:l:M:Oo:P:p:RrSt:v:Ux-:";
   
   cnk_dmn_sct **cnk_dmn=NULL_CEWI;
 
@@ -255,8 +255,12 @@ main(int argc,char **argv)
     /* Long options with short counterparts */
     {"3",no_argument,0,'3'},
     {"4",no_argument,0,'4'},
-    {"64bit",no_argument,0,'4'},
     {"netcdf4",no_argument,0,'4'},
+    {"5",no_argument,0,'5'},
+    {"64bit_data",no_argument,0,'5'},
+    {"cdf5",no_argument,0,'5'},
+    {"pnetcdf",no_argument,0,'5'},
+    {"64bit_offset",no_argument,0,'6'},
     {"7",no_argument,0,'7'},
     {"append",no_argument,0,'A'},
     {"arrange",required_argument,0,'a'},
@@ -388,11 +392,14 @@ main(int argc,char **argv)
     case '3': /* Request netCDF3 output storage format */
       fl_out_fmt=NC_FORMAT_CLASSIC;
       break;
-    case '4': /* Catch-all to prescribe output storage format */
-      if(!strcmp(opt_crr,"64bit")) fl_out_fmt=NC_FORMAT_64BIT; else fl_out_fmt=NC_FORMAT_NETCDF4; 
+    case '4': /* Request netCDF4 output storage format */
+      fl_out_fmt=NC_FORMAT_NETCDF4; 
+      break;
+    case '5': /* Request netCDF3 64-bit offset+data storage (i.e., pnetCDF) format */
+      fl_out_fmt=NC_FORMAT_CDF5;
       break;
     case '6': /* Request netCDF3 64-bit offset output storage format */
-      fl_out_fmt=NC_FORMAT_64BIT;
+      fl_out_fmt=NC_FORMAT_64BIT_OFFSET;
       break;
     case '7': /* Request netCDF4-classic output storage format */
       fl_out_fmt=NC_FORMAT_NETCDF4_CLASSIC;
diff --git a/src/nco/mpncra.c b/src/nco/mpncra.c
index c3680e1..e0fcce7 100644
--- a/src/nco/mpncra.c
+++ b/src/nco/mpncra.c
@@ -134,7 +134,7 @@ main(int argc,char **argv)
 
   const char * const CVS_Id="$Id$"; 
   const char * const CVS_Revision="$Revision$";
-  const char * const opt_sht_lst="3467ACcD:d:FHhL:l:n:Oo:p:P:rRSt:v:xY:y:-:";
+  const char * const opt_sht_lst="34567ACcD:d:FHhL:l:n:Oo:p:P:rRSt:v:xY:y:-:";
   
   dmn_sct **dim;
   dmn_sct **dmn_out;
@@ -286,11 +286,15 @@ main(int argc,char **argv)
       {"hdr_pad",required_argument,0,0},
       {"header_pad",required_argument,0,0},
       /* Long options with short counterparts */
-      {"3",no_argument,0,'3'},
-      {"4",no_argument,0,'4'},
-      {"64bit",no_argument,0,'4'},
-      {"netcdf4",no_argument,0,'4'},
-      {"7",no_argument,0,'7'},
+    {"3",no_argument,0,'3'},
+    {"4",no_argument,0,'4'},
+    {"netcdf4",no_argument,0,'4'},
+    {"5",no_argument,0,'5'},
+    {"64bit_data",no_argument,0,'5'},
+    {"cdf5",no_argument,0,'5'},
+    {"pnetcdf",no_argument,0,'5'},
+    {"64bit_offset",no_argument,0,'6'},
+    {"7",no_argument,0,'7'},
       {"append",no_argument,0,'A'},
       {"coords",no_argument,0,'c'},
       {"crd",no_argument,0,'c'},
@@ -425,11 +429,14 @@ main(int argc,char **argv)
     case '3': /* Request netCDF3 output storage format */
       fl_out_fmt=NC_FORMAT_CLASSIC;
       break;
-    case '4': /* Catch-all to prescribe output storage format */
-      if(!strcmp(opt_crr,"64bit")) fl_out_fmt=NC_FORMAT_64BIT; else fl_out_fmt=NC_FORMAT_NETCDF4; 
+    case '4': /* Request netCDF4 output storage format */
+      fl_out_fmt=NC_FORMAT_NETCDF4; 
+      break;
+    case '5': /* Request netCDF3 64-bit offset+data storage (i.e., pnetCDF) format */
+      fl_out_fmt=NC_FORMAT_CDF5;
       break;
     case '6': /* Request netCDF3 64-bit offset output storage format */
-      fl_out_fmt=NC_FORMAT_64BIT;
+      fl_out_fmt=NC_FORMAT_64BIT_OFFSET;
       break;
     case '7': /* Request netCDF4-classic output storage format */
       fl_out_fmt=NC_FORMAT_NETCDF4_CLASSIC;
diff --git a/src/nco/mpncwa.c b/src/nco/mpncwa.c
index b4cb974..c960f92 100644
--- a/src/nco/mpncwa.c
+++ b/src/nco/mpncwa.c
@@ -101,7 +101,7 @@ main(int argc,char **argv)
 
   const char * const CVS_Id="$Id$"; 
   const char * const CVS_Revision="$Revision$";
-  const char * const opt_sht_lst="3467Aa:B:bCcD:d:FhIL:l:M:m:nNOo:p:rRST:t:v:Ww:xy:-:";
+  const char * const opt_sht_lst="34567Aa:B:bCcD:d:FhIL:l:M:m:nNOo:p:rRST:t:v:Ww:xy:-:";
   
   cnk_dmn_sct **cnk_dmn=NULL_CEWI;
   
@@ -275,8 +275,12 @@ main(int argc,char **argv)
     /* Long options with short counterparts */
     {"3",no_argument,0,'3'},
     {"4",no_argument,0,'4'},
-    {"64bit",no_argument,0,'4'},
     {"netcdf4",no_argument,0,'4'},
+    {"5",no_argument,0,'5'},
+    {"64bit_data",no_argument,0,'5'},
+    {"cdf5",no_argument,0,'5'},
+    {"pnetcdf",no_argument,0,'5'},
+    {"64bit_offset",no_argument,0,'6'},
     {"7",no_argument,0,'7'},
     {"average",required_argument,0,'a'},
     {"avg",required_argument,0,'a'},
@@ -431,8 +435,11 @@ main(int argc,char **argv)
     case '3': /* Request netCDF3 output storage format */
       fl_out_fmt=NC_FORMAT_CLASSIC;
       break;
-    case '4': /* Catch-all to prescribe output storage format */
-      if(!strcmp(opt_crr,"64bit")) fl_out_fmt=NC_FORMAT_64BIT; else fl_out_fmt=NC_FORMAT_NETCDF4; 
+    case '4': /* Request netCDF4 output storage format */
+      fl_out_fmt=NC_FORMAT_NETCDF4; 
+      break;
+    case '5': /* Request netCDF3 64-bit offset+data storage (i.e., pnetCDF) format */
+      fl_out_fmt=NC_FORMAT_CDF5;
       break;
     case '6': /* Request netCDF3 64-bit offset output storage format */
       fl_out_fmt=NC_FORMAT_64BIT;
diff --git a/src/nco/ncap.c b/src/nco/ncap.c
index 2bda44e..6fc1d03 100644
--- a/src/nco/ncap.c
+++ b/src/nco/ncap.c
@@ -110,7 +110,7 @@ main(int argc,char **argv)
 
   const char * const CVS_Id="$Id$"; 
   const char * const CVS_Revision="$Revision$";
-  const char * const opt_sht_lst="3467ACcD:FfhL:l:n:Oo:p:Rrs:S:vx-:"; /* [sng] Single letter command line options */
+  const char * const opt_sht_lst="34567ACcD:FfhL:l:n:Oo:p:Rrs:S:vx-:"; /* [sng] Single letter command line options */
 
   cnk_dmn_sct **cnk_dmn=NULL_CEWI;
 
@@ -198,7 +198,7 @@ main(int argc,char **argv)
   int nbr_var_fl;/* number of vars in a file */
   int nbr_var_prc; /* nbr_var_prc gets incremented */
   int nbr_var_ycc=0; /* [nbr] Number of vars to be defined after 1st parse */
-  int xtr_nbr=0; /* xtr_nbr will not otherwise be set for -c with no -v */
+  int xtr_nbr=0; /* [nbr] xtr_nbr will not otherwise be set for -c with no -v */
   int opt;
   int out_id;  
   int rcd=NC_NOERR; /* [rcd] Return code */
@@ -295,8 +295,12 @@ main(int argc,char **argv)
     /* Long options with short counterparts */
     {"3",no_argument,0,'3'},
     {"4",no_argument,0,'4'},
-    {"64bit",no_argument,0,'4'},
     {"netcdf4",no_argument,0,'4'},
+    {"5",no_argument,0,'5'},
+    {"64bit_data",no_argument,0,'5'},
+    {"cdf5",no_argument,0,'5'},
+    {"pnetcdf",no_argument,0,'5'},
+    {"64bit_offset",no_argument,0,'6'},
     {"7",no_argument,0,'7'},
     {"append",no_argument,0,'A'},
     {"coords",no_argument,0,'c'},
@@ -418,11 +422,14 @@ main(int argc,char **argv)
     case '3': /* Request netCDF3 output storage format */
       fl_out_fmt=NC_FORMAT_CLASSIC;
       break;
-    case '4': /* Catch-all to prescribe output storage format */
-      if(!strcmp(opt_crr,"64bit")) fl_out_fmt=NC_FORMAT_64BIT; else fl_out_fmt=NC_FORMAT_NETCDF4; 
+    case '4': /* Request netCDF4 output storage format */
+      fl_out_fmt=NC_FORMAT_NETCDF4; 
+      break;
+    case '5': /* Request netCDF3 64-bit offset+data storage (i.e., pnetCDF) format */
+      fl_out_fmt=NC_FORMAT_CDF5;
       break;
     case '6': /* Request netCDF3 64-bit offset output storage format */
-      fl_out_fmt=NC_FORMAT_64BIT;
+      fl_out_fmt=NC_FORMAT_64BIT_OFFSET;
       break;
     case '7': /* Request netCDF4-classic output storage format */
       fl_out_fmt=NC_FORMAT_NETCDF4_CLASSIC;
diff --git a/src/nco/ncbo.c b/src/nco/ncbo.c
index be8342c..fb12ddf 100644
--- a/src/nco/ncbo.c
+++ b/src/nco/ncbo.c
@@ -150,7 +150,7 @@ main(int argc,char **argv)
 
   const char * const CVS_Id="$Id$"; 
   const char * const CVS_Revision="$Revision$";
-  const char * const opt_sht_lst="3467ACcD:d:FG:g:hL:l:Oo:p:rRt:v:X:xzy:-:";
+  const char * const opt_sht_lst="34567ACcD:d:FG:g:hL:l:Oo:p:rRt:v:X:xzy:-:";
 
   cnk_sct cnk; /* [sct] Chunking structure */
 
@@ -309,8 +309,12 @@ main(int argc,char **argv)
     /* Long options with short counterparts */
     {"3",no_argument,0,'3'},
     {"4",no_argument,0,'4'},
-    {"64bit",no_argument,0,'4'},
     {"netcdf4",no_argument,0,'4'},
+    {"5",no_argument,0,'5'},
+    {"64bit_data",no_argument,0,'5'},
+    {"cdf5",no_argument,0,'5'},
+    {"pnetcdf",no_argument,0,'5'},
+    {"64bit_offset",no_argument,0,'6'},
     {"7",no_argument,0,'7'},
     {"append",no_argument,0,'A'},
     {"coords",no_argument,0,'c'},
@@ -460,11 +464,14 @@ main(int argc,char **argv)
     case '3': /* Request netCDF3 output storage format */
       fl_out_fmt=NC_FORMAT_CLASSIC;
       break;
-    case '4': /* Catch-all to prescribe output storage format */
-      if(!strcmp(opt_crr,"64bit")) fl_out_fmt=NC_FORMAT_64BIT; else fl_out_fmt=NC_FORMAT_NETCDF4; 
+    case '4': /* Request netCDF4 output storage format */
+      fl_out_fmt=NC_FORMAT_NETCDF4; 
+      break;
+    case '5': /* Request netCDF3 64-bit offset+data storage (i.e., pnetCDF) format */
+      fl_out_fmt=NC_FORMAT_CDF5;
       break;
     case '6': /* Request netCDF3 64-bit offset output storage format */
-      fl_out_fmt=NC_FORMAT_64BIT;
+      fl_out_fmt=NC_FORMAT_64BIT_OFFSET;
       break;
     case '7': /* Request netCDF4-classic output storage format */
       fl_out_fmt=NC_FORMAT_NETCDF4_CLASSIC;
diff --git a/src/nco/ncecat.c b/src/nco/ncecat.c
index 0cab325..91c4acd 100644
--- a/src/nco/ncecat.c
+++ b/src/nco/ncecat.c
@@ -146,7 +146,7 @@ main(int argc,char **argv)
 
   const char * const CVS_Id="$Id$"; 
   const char * const CVS_Revision="$Revision$";
-  const char * const opt_sht_lst="3467ACcD:d:Fg:G:HhL:l:Mn:Oo:p:rRt:u:v:X:x-:";
+  const char * const opt_sht_lst="34567ACcD:d:Fg:G:HhL:l:Mn:Oo:p:rRt:u:v:X:x-:";
 
   cnk_sct cnk; /* [sct] Chunking structure */
 
@@ -300,8 +300,13 @@ main(int argc,char **argv)
     /* Long options with short counterparts */
     {"3",no_argument,0,'3'},
     {"4",no_argument,0,'4'},
-    {"64bit",no_argument,0,'4'},
     {"netcdf4",no_argument,0,'4'},
+    {"5",no_argument,0,'5'},
+    {"64bit_data",no_argument,0,'5'},
+    {"cdf5",no_argument,0,'5'},
+    {"pnetcdf",no_argument,0,'5'},
+    {"64bit_offset",no_argument,0,'6'},
+    {"7",no_argument,0,'7'},
     {"append",no_argument,0,'A'},
     {"coords",no_argument,0,'c'},
     {"crd",no_argument,0,'c'},
@@ -460,11 +465,14 @@ main(int argc,char **argv)
     case '3': /* Request netCDF3 output storage format */
       fl_out_fmt=NC_FORMAT_CLASSIC;
       break;
-    case '4': /* Catch-all to prescribe output storage format */
-      if(!strcmp(opt_crr,"64bit")) fl_out_fmt=NC_FORMAT_64BIT; else fl_out_fmt=NC_FORMAT_NETCDF4; 
+    case '4': /* Request netCDF4 output storage format */
+      fl_out_fmt=NC_FORMAT_NETCDF4; 
+      break;
+    case '5': /* Request netCDF3 64-bit offset+data storage (i.e., pnetCDF) format */
+      fl_out_fmt=NC_FORMAT_CDF5;
       break;
     case '6': /* Request netCDF3 64-bit offset output storage format */
-      fl_out_fmt=NC_FORMAT_64BIT;
+      fl_out_fmt=NC_FORMAT_64BIT_OFFSET;
       break;
     case '7': /* Request netCDF4-classic output storage format */
       fl_out_fmt=NC_FORMAT_NETCDF4_CLASSIC;
@@ -773,7 +781,7 @@ main(int argc,char **argv)
         size_t sfx_fst; /* [nbr] Offset of suffix from start of string */
         size_t sfx_lng; /* [nbr] Suffix has this many characters */
 
-        /* Is there a .nc, .cdf, .nc3, or .nc4 suffix? or an .hdf, .HDF, .h5, .H5, or .he5 suffix? */
+        /* Is there a .nc, .cdf, .nc3, .nc4, .nc5, .nc6, or .nc7 suffix? or an .hdf, .HDF, .h5, .H5, or .he5 suffix? */
         fl_in_lng=strlen(fl_in);
         sfx_lng=3L;
         sfx_fst=fl_in_lng-sfx_lng;
@@ -789,7 +797,10 @@ main(int argc,char **argv)
 	     strncmp(fl_in+sfx_fst,".HDF",sfx_lng) && /* HDF-EOS2 (HDF4) suffix used by TRMM, e.g., 3B43.070901.6A.HDF */
 	     strncmp(fl_in+sfx_fst,".he5",sfx_lng) && /* HDF-EOS5 (HDF5) suffix used by HIRDLS, OMI Aerosols, e.g., HIRDLS-Aura_L3ZAD_v06-00-00-c02_2005d022-2008d077.he5, OMI-Aura_L2-OMAERUV_2013m1004t2338-o49057_v003-2013m1005t053932.he5 */
 	     strncmp(fl_in+sfx_fst,".nc3",sfx_lng) && /* netCDF3 variant suffix */
-	     strncmp(fl_in+sfx_fst,".nc4",sfx_lng)){ /* netCDF4 variant suffix */
+	     strncmp(fl_in+sfx_fst,".nc4",sfx_lng) && /* netCDF4 variant suffix */
+	     strncmp(fl_in+sfx_fst,".nc5",sfx_lng) && /* netCDF CDF/PnetCDF variant suffix */
+	     strncmp(fl_in+sfx_fst,".nc6",sfx_lng) && /* netCDF3 64bit_offset variant suffix */
+	     strncmp(fl_in+sfx_fst,".nc7",sfx_lng)){ /* netCDF4 classic variant suffix */
 	    (void)fprintf(stderr,"%s: WARNING GAG filename suffix is unusual---using whole filename as group name\n",nco_prg_nm_get());
 	    sfx_lng=0;
 	  } /* endif */
diff --git a/src/nco/ncflint.c b/src/nco/ncflint.c
index 6281580..344c568 100644
--- a/src/nco/ncflint.c
+++ b/src/nco/ncflint.c
@@ -139,7 +139,7 @@ main(int argc,char **argv)
 
   const char * const CVS_Id="$Id$"; 
   const char * const CVS_Revision="$Revision$";
-  const char * const opt_sht_lst="3467ACcD:d:Fg:G:hi:L:l:NOo:p:rRt:v:X:xw:-:";
+  const char * const opt_sht_lst="34567ACcD:d:Fg:G:hi:L:l:NOo:p:rRt:v:X:xw:-:";
 
   cnk_sct cnk; /* [sct] Chunking structure */
 
@@ -300,8 +300,13 @@ main(int argc,char **argv)
     /* Long options with short counterparts */
     {"3",no_argument,0,'3'},
     {"4",no_argument,0,'4'},
-    {"64bit",no_argument,0,'4'},
     {"netcdf4",no_argument,0,'4'},
+    {"5",no_argument,0,'5'},
+    {"64bit_data",no_argument,0,'5'},
+    {"cdf5",no_argument,0,'5'},
+    {"pnetcdf",no_argument,0,'5'},
+    {"64bit_offset",no_argument,0,'6'},
+    {"7",no_argument,0,'7'},
     {"append",no_argument,0,'A'},
     {"coords",no_argument,0,'c'},
     {"crd",no_argument,0,'c'},
@@ -454,11 +459,14 @@ main(int argc,char **argv)
     case '3': /* Request netCDF3 output storage format */
       fl_out_fmt=NC_FORMAT_CLASSIC;
       break;
-    case '4': /* Catch-all to prescribe output storage format */
-      if(!strcmp(opt_crr,"64bit")) fl_out_fmt=NC_FORMAT_64BIT; else fl_out_fmt=NC_FORMAT_NETCDF4; 
+    case '4': /* Request netCDF4 output storage format */
+      fl_out_fmt=NC_FORMAT_NETCDF4; 
+      break;
+    case '5': /* Request netCDF3 64-bit offset+data storage (i.e., pnetCDF) format */
+      fl_out_fmt=NC_FORMAT_CDF5;
       break;
     case '6': /* Request netCDF3 64-bit offset output storage format */
-      fl_out_fmt=NC_FORMAT_64BIT;
+      fl_out_fmt=NC_FORMAT_64BIT_OFFSET;
       break;
     case '7': /* Request netCDF4-classic output storage format */
       fl_out_fmt=NC_FORMAT_NETCDF4_CLASSIC;
diff --git a/src/nco/ncks.c b/src/nco/ncks.c
index d006560..d396417 100644
--- a/src/nco/ncks.c
+++ b/src/nco/ncks.c
@@ -143,6 +143,7 @@ main(int argc,char **argv)
   char *rgr_grd_dst=NULL; /* [sng] File containing destination grid */
   char *rgr_map=NULL; /* [sng] File containing mapping weights from source to destination grid */
   char *rgr_var=NULL; /* [sng] Variable for special regridding treatment */
+  char *smr_fl_sz_sng=NULL; /* [sng] String describing estimated file size */
   char *smr_sng=NULL; /* [sng] File summary string */
   char *smr_xtn_sng=NULL; /* [sng] File extended summary string */
   char *sng_cnv_rcd=NULL_CEWI; /* [sng] strtol()/strtoul() return code */
@@ -209,13 +210,14 @@ main(int argc,char **argv)
   int rgr_nbr=0; /* [nbr] Number of regridding arguments */
   int trr_nbr=0; /* [nbr] Number of TERRAREF arguments */
   int rcd=NC_NOERR; /* [rcd] Return code */
+  int srt_mth=0; /* [enm] Sort method [0=ascending, 1=descending] */
   int thr_idx; /* [idx] Index of current thread */
   int thr_nbr=int_CEWI; /* [nbr] Thread number Option t */
   int var_lst_in_nbr=0;
   int var_nbr_fl;
   int var_ntm_fl;
   int xtn_nbr=0; /* [nbr] Number of extensive variables */
-  int xtr_nbr=0; /* xtr_nbr will not otherwise be set for -c with no -v */
+  int xtr_nbr=0; /* [nbr] xtr_nbr will not otherwise be set for -c with no -v */
 
   md5_sct *md5=NULL; /* [sct] MD5 configuration */
  
@@ -232,14 +234,12 @@ main(int argc,char **argv)
   nco_bool FORCE_NOCLOBBER=False; /* Option no-clobber */
   nco_bool FORCE_OVERWRITE=False; /* Option O */
   nco_bool FORTRAN_IDX_CNV=False; /* Option F */
-  nco_bool GET_GRP_INFO=False; /* [flg] Iterate file, get group extended information */
-  nco_bool GET_FILE_INFO=False; /* [flg] Get file information (#groups, #dimensions, #attributes, #variables) */
-  nco_bool GET_LIST=False; /* [flg] Iterate file, print variables and exit */
   nco_bool GRP_VAR_UNN=False; /* [flg] Select union of specified groups and variables */
   nco_bool GRP_XTR_VAR_XCL=False; /* [flg] Extract matching groups, exclude matching variables */
   nco_bool HAVE_LIMITS=False; /* [flg] Are there user limits? (-d) */
   nco_bool HISTORY_APPEND=True; /* Option h */
   nco_bool LST_RNK_GE2=False; /* [flg] Print extraction list of rank >= 2 variables */
+  nco_bool LST_XTR=False; /* [flg] Print extraction list */
   nco_bool MSA_USR_RDR=False; /* [flg] Multi-Slab Algorithm returns hyperslabs in user-specified order */
   nco_bool PRN_CDL=False; /* [flg] Print CDL */
   nco_bool PRN_HDN=False; /* [flg] Print hidden attributes */
@@ -291,6 +291,8 @@ main(int argc,char **argv)
   
   static struct option opt_lng[]={ /* Structure ordered by short option key if possible */
     /* Long options with no argument, no short option counterpart */
+    {"bld",no_argument,0,0}, /* [sng] Build-engine */
+    {"build_engine",no_argument,0,0}, /* [sng] Build-engine */
     {"calendar",no_argument,0,0}, /* [flg] Print UDUnits-formatted calendar dates/times human-legibly */
     {"cln_lgb",no_argument,0,0}, /* [flg] Print UDUnits-formatted calendar dates/times human-legibly */
     {"prn_cln_lgb",no_argument,0,0}, /* [flg] Print UDUnits-formatted calendar dates/times human-legibly */
@@ -324,6 +326,7 @@ main(int argc,char **argv)
     {"lbr",no_argument,0,0},
     {"library",no_argument,0,0},
     {"lst_rnk_ge2",no_argument,0,0}, /* [flg] Print extraction list of rank >= 2 variables */
+    {"lst_xtr",no_argument,0,0}, /* [flg] Print extraction list */
     {"md5_dgs",no_argument,0,0}, /* [flg] Perform MD5 digests */
     {"md5_digest",no_argument,0,0}, /* [flg] Perform MD5 digests */
     {"md5_wrt_att",no_argument,0,0}, /* [flg] Write MD5 digests as attributes */
@@ -435,12 +438,12 @@ main(int argc,char **argv)
     /* Long options with short counterparts */
     {"3",no_argument,0,'3'},
     {"4",no_argument,0,'4'},
-    {"64bit_offset",no_argument,0,'4'},
     {"netcdf4",no_argument,0,'4'},
     {"5",no_argument,0,'5'},
     {"64bit_data",no_argument,0,'5'},
     {"cdf5",no_argument,0,'5'},
     {"pnetcdf",no_argument,0,'5'},
+    {"64bit_offset",no_argument,0,'6'},
     {"7",no_argument,0,'7'},
     {"abc",no_argument,0,'a'},
     {"alphabetize",no_argument,0,'a'},
@@ -500,8 +503,6 @@ main(int argc,char **argv)
     {"auxiliary",required_argument,0,'X'},
     {"exclude",no_argument,0,'x'},
     {"xcl",no_argument,0,'x'},
-    {"get_grp_info",no_argument,0,0},
-    {"get_file_info",no_argument,0,0},
     {"lbr_rcd",no_argument,0,0},
     {0,0,0,0}
   }; /* end opt_lng */
@@ -557,6 +558,11 @@ main(int argc,char **argv)
         bfr_sz_hnt=strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
         if(*sng_cnv_rcd) nco_sng_cnv_err(optarg,"strtoul",sng_cnv_rcd);
       } /* endif bfr_sz */
+      if(!strcmp(opt_crr,"bld") || !strcmp(opt_crr,"build_engine")){
+	const char bld_ngn[]=TKN2SNG(NCO_BUILDENGINE); // [sng] Build-engine
+        (void)fprintf(stdout,"%s\n",bld_ngn);
+        nco_exit(EXIT_SUCCESS);
+      } /* endif "bld" */
       if(!strcmp(opt_crr,"calendar") || !strcmp(opt_crr,"cln_lgb") || !strcmp(opt_crr,"prn_cln_lgb") || !strcmp(opt_crr,"prn_lgb") || !strcmp(opt_crr,"timestamp")) PRN_CLN_LGB=True; /* [flg] Print UDUnits-formatted calendar dates/times human-legibly */
       if(!strcmp(opt_crr,"dt_fmt") || !strcmp(opt_crr,"date_format")){
         dt_fmt=strtoul(optarg,&sng_cnv_rcd,NCO_SNG_CNV_BASE10);
@@ -622,8 +628,6 @@ main(int argc,char **argv)
         gaa_arg=(char **)nco_realloc(gaa_arg,(gaa_nbr+1)*sizeof(char *));
         gaa_arg[gaa_nbr++]=(char *)strdup(optarg);
       } /* endif gaa */
-      if(!strcmp(opt_crr,"get_grp_info") || !strcmp(opt_crr,"grp_info_get")) GET_GRP_INFO=True;
-      if(!strcmp(opt_crr,"get_file_info")) GET_FILE_INFO=True;
       if(!strcmp(opt_crr,"hdf4")) nco_fmt_xtn=nco_fmt_xtn_hdf4; /* [enm] Treat file as HDF4 */
       if(!strcmp(opt_crr,"hdn") || !strcmp(opt_crr,"hidden")) PRN_HDN=True; /* [flg] Print hidden attributes */
       if(!strcmp(opt_crr,"hdr_pad") || !strcmp(opt_crr,"header_pad")){
@@ -640,6 +644,7 @@ main(int argc,char **argv)
       } /* endif "lbr" */
       if(!strcmp(opt_crr,"lbr_rcd")) nco_exit_lbr_rcd();
       if(!strcmp(opt_crr,"lst_rnk_ge2") || !strcmp(opt_crr,"rank_ge2"))	LST_RNK_GE2=True; /* [flg] Print extraction list of rank >= 2 variables */
+      if(!strcmp(opt_crr,"lst_xtr") || !strcmp(opt_crr,"xtr_lst")) LST_XTR=True; /* [flg] Print extraction list */
       if(!strcmp(opt_crr,"mk_rec_dmn") || !strcmp(opt_crr,"mk_rec_dim")){
 	if(strchr(optarg,',')){
 	  (void)fprintf(stdout,"%s: ERROR record dimension name %s contains a comma and appears to be a list\n",nco_prg_nm_get(),optarg);
@@ -660,7 +665,7 @@ main(int argc,char **argv)
       if(!strcmp(opt_crr,"md5_wrt_att") || !strcmp(opt_crr,"md5_write_attribute")){
         if(!md5) md5=nco_md5_ini();
 	md5->wrt=md5->dgs=True;
-        if(nco_dbg_lvl >= nco_dbg_std) (void)fprintf(stderr,"%s: INFO Will write MD5 digests as attributes\n",nco_prg_nm_get());
+        if(nco_dbg_lvl >= nco_dbg_fl) (void)fprintf(stderr,"%s: INFO Will write MD5 digests as attributes\n",nco_prg_nm_get());
       } /* endif "md5_wrt_att" */
       if(!strcmp(opt_crr,"msa_usr_rdr") || !strcmp(opt_crr,"msa_user_order")) MSA_USR_RDR=True; /* [flg] Multi-Slab Algorithm returns hyperslabs in user-specified order */
       if(!strcmp(opt_crr,"mta_dlm") || !strcmp(opt_crr,"dlm_mta")) nco_mta_dlm_set(optarg);
@@ -692,7 +697,7 @@ main(int argc,char **argv)
 	rgr_var=(char *)strdup(optarg);
       } /* !rgr_var */
       if(!strcmp(opt_crr,"secret") || !strcmp(opt_crr,"scr") || !strcmp(opt_crr,"shh")){
-        (void)fprintf(stdout,"Hidden/unsupported NCO options:\nBit-Adjustment Alg.\t--baa, --bit_alg\nCompiler used\t\t--cmp, --compiler\nCopyright\t\t--cpy, --copyright, --license\nHidden functions\t--scr, --ssh, --secret\nLibrary used\t\t--lbr, --library\nMemory clean\t\t--mmr_cln, --cln, --clean\nMemory dirty\t\t--mmr_drt, --drt, --dirty\nMPI implementation\t--mpi_implementation\nNo-clobber files\t--no_clb, --no-clobber\nPseudonym\t\t--pseudonym, -Y (ncra only)\nSpinlock\t\t--spinlock [...]
+        (void)fprintf(stdout,"Hidden/unsupported NCO options:\nBit-Adjustment Alg.\t--baa, --bit_alg\nBuild-engine\t\t--bld, --build_engine\nCompiler used\t\t--cmp, --compiler\nCopyright\t\t--cpy, --copyright, --license\nHidden functions\t--scr, --shh, --secret\nLibrary used\t\t--lbr, --library\nList rank >= 2 vars\t--lst_rnk_ge2\n\nList extracted vars\t--lst_xtr\nMemory clean\t\t--mmr_cln, --cln, --clean\nMemory dirty\t\t--mmr_drt, --drt, --dirty\nMPI implementation\t--mpi_implementatio [...]
         nco_exit(EXIT_SUCCESS);
       } /* endif "shh" */
       if(!strcmp(opt_crr,"srm")) PRN_SRM=True; /* [flg] Print ncStream */
@@ -770,14 +775,14 @@ main(int argc,char **argv)
     case '3': /* Request netCDF3 output storage format */
       fl_out_fmt=NC_FORMAT_CLASSIC;
       break;
-    case '4': /* Catch-all to prescribe output storage format */
-      if(!strcmp(opt_crr,"64bit_offset")) fl_out_fmt=NC_FORMAT_64BIT_OFFSET; else fl_out_fmt=NC_FORMAT_NETCDF4; 
+    case '4': /* Request netCDF4 output storage format */
+      fl_out_fmt=NC_FORMAT_NETCDF4; 
       break;
     case '5': /* Request netCDF3 64-bit offset+data storage (i.e., pnetCDF) format */
       fl_out_fmt=NC_FORMAT_CDF5;
       break;
     case '6': /* Request netCDF3 64-bit offset output storage format */
-      fl_out_fmt=NC_FORMAT_64BIT;
+      fl_out_fmt=NC_FORMAT_64BIT_OFFSET;
       break;
     case '7': /* Request netCDF4-classic output storage format */
       fl_out_fmt=NC_FORMAT_NETCDF4_CLASSIC;
@@ -907,9 +912,10 @@ main(int argc,char **argv)
       EXCLUDE_INPUT_LIST=True;
       break;
     case 'z': /* Print absolute path of all input variables then exit */
-      GET_LIST=True;
+      trv_tbl_prn(trv_tbl);
+      goto close_and_free; 
       break;
-    case '?': /* Question mark means unrecognized option, print proper usage then EXIT_FAILURE */
+     case '?': /* Question mark means unrecognized option, print proper usage then EXIT_FAILURE */
       (void)fprintf(stdout,"%s: ERROR in command-line syntax/options. Missing or unrecognized option. Please reformulate command accordingly.\n",nco_prg_nm_get());
       (void)nco_usg_prn();
       nco_exit(EXIT_FAILURE);
@@ -959,7 +965,7 @@ main(int argc,char **argv)
   fl_lst_in=nco_fl_lst_mk(argv,argc,optind,&fl_nbr,&fl_out,&FL_LST_IN_FROM_STDIN);
   
   /* Initialize thread information */
-  thr_nbr=nco_openmp_ini(thr_nbr);
+  if(flg_rgr) thr_nbr=nco_openmp_ini(thr_nbr); else thr_nbr=nco_openmp_ini((int)1);
   in_id_arr=(int *)nco_malloc(thr_nbr*sizeof(int));
   trv_tbl->thr_nbr=thr_nbr;
   trv_tbl->in_id_arr=in_id_arr;
@@ -976,6 +982,9 @@ main(int argc,char **argv)
   /* Construct GTT (Group Traversal Table), check -v and -g input names and create extraction list */
   (void)nco_bld_trv_tbl(in_id,trv_pth,lmt_nbr,lmt_arg,aux_nbr,aux_arg,MSA_USR_RDR,FORTRAN_IDX_CNV,grp_lst_in,grp_lst_in_nbr,var_lst_in,xtr_nbr,EXTRACT_ALL_COORDINATES,GRP_VAR_UNN,GRP_XTR_VAR_XCL,EXCLUDE_INPUT_LIST,EXTRACT_ASSOCIATED_COORDINATES,EXTRACT_CLL_MSR,EXTRACT_FRM_TRM,nco_pck_plc_nil,&flg_dne,trv_tbl);
 
+  /* [fnc] Print extraction list and exit */
+  if(LST_XTR) nco_xtr_lst(trv_tbl);
+
   /* [fnc] Print extraction list of N>=D variables and exit */
   if(LST_RNK_GE2) nco_xtr_ND_lst(trv_tbl);
 
@@ -987,7 +996,7 @@ main(int argc,char **argv)
 
   /* Make output and input files consanguinous */
   (void)nco_inq_format(in_id,&fl_in_fmt);
-  if(fl_out && fl_out_fmt == NCO_FORMAT_UNDEFINED) fl_out_fmt=fl_in_fmt;
+  if(fl_out_fmt == NCO_FORMAT_UNDEFINED) fl_out_fmt=fl_in_fmt;
   if(fl_out_fmt == NC_FORMAT_NETCDF4 || fl_out_fmt == NC_FORMAT_NETCDF4_CLASSIC) (void)omp_set_num_threads((int)0);
 
 #ifdef ENABLE_MPI
@@ -996,23 +1005,13 @@ main(int argc,char **argv)
   (void)fprintf(stdout,"%s: MPI process rank %d reports %d process%s\n",nco_prg_nm,prc_rnk,prc_nbr,(prc_nbr == 1) ? "" : "es");
 #endif /* !ENABLE_MPI */
 
-  /* Pedro's options, essentially for debugging (deprecated, likely to be eliminated in future) */ 
-  if(GET_LIST){ 
-    if(ALPHABETIZE_OUTPUT) trv_tbl_srt(trv_tbl);
-    trv_tbl_prn(trv_tbl);
-    goto close_and_free; 
-  } /* !GET_LIST */ 
-  if(GET_GRP_INFO){ 
-    nco_prn_trv_tbl(in_id,trv_tbl);
-    goto close_and_free; 
-  } /* !GET_GRP_INFO */
-  if(GET_FILE_INFO){ 
-    (void)fprintf(stderr,"%s: INFO reports file information\n",nco_prg_nm_get());
-    (void)fprintf(stdout,"%d subgroups, %d fixed dimensions, %d record dimensions, %d group + global attributes, %d atomic-type variables, %d non-atomic variables\n",grp_nbr_fl,trv_tbl->nbr_dmn-dmn_rec_fl,dmn_rec_fl,att_glb_nbr+att_glb_nbr,var_nbr_fl,var_ntm_fl);
-    goto close_and_free; 
-  } /* !GET_FILE_INFO */
-
-  if(ALPHABETIZE_OUTPUT) trv_tbl_srt(trv_tbl);
+  /* 20170914: Workaround CDF5 bug for MPAS MOC */
+  if(var_lst_in_nbr == 2 && (!strcmp(var_lst_in[0],"timeMonthly_avg_normalVelocity") || !strcmp(var_lst_in[1],"timeMonthly_avg_normalVelocity"))){
+    srt_mth=0; // fxm: Set to 1 to activate workaround. Currently broken, seems to produce invalid trv_tbl
+    if(srt_mth == 1) (void)fprintf(stderr,"%s: INFO Activating CDF5 bug workaround: define output in reverse-alphabetical (instead of alphabetical) order when two fields are requested and one is timeMonthly_avg_normalVelocity\n",nco_prg_nm_get());
+  } /* !CDF5 */
+
+  if(ALPHABETIZE_OUTPUT) trv_tbl_srt(srt_mth,trv_tbl);
 
   /* We now have final list of variables to extract. Phew. */
 
@@ -1027,7 +1026,7 @@ main(int argc,char **argv)
       if(PRN_GLB_METADATA_TGL) PRN_GLB_METADATA=!PRN_GLB_METADATA;
     } /* !FORCE_APPEND */
   }else{ /* !fl_out */
-    /* Only input file is specified, so some printing should occur */
+    /* Only input file is specified, so print it */
     if(PRN_VRB || (!PRN_VAR_DATA_TGL && !PRN_VAR_METADATA_TGL && !PRN_GLB_METADATA_TGL)){
       /* Verbose printing simply means assume user wants deluxe frills by default */
       if(PRN_DMN_UNITS_TGL) PRN_DMN_UNITS=False; else PRN_DMN_UNITS=True;
@@ -1192,11 +1191,13 @@ main(int argc,char **argv)
 
     /* No output file was specified so PRN_ tokens refer to screen printing */
     prn_fmt_sct prn_flg;
+    // prn_flg.trd=PRN_TRD || !(PRN_CDL || PRN_XML || PRN_JSN); // 20170522
+    PRN_CDL=PRN_CDL || !(PRN_TRD || PRN_XML || PRN_JSN); // 20170817
     prn_flg.cdl=PRN_CDL;
+    prn_flg.trd=PRN_TRD;
     prn_flg.jsn=PRN_JSN;
     prn_flg.srm=PRN_SRM;
     prn_flg.xml=PRN_XML;
-    prn_flg.trd=PRN_TRD || !(PRN_CDL || PRN_XML || PRN_JSN); // 20170522
     if((prn_flg.cdl || prn_flg.xml) && nco_dbg_lvl >= nco_dbg_std) prn_flg.nfo_xtr=True; else prn_flg.nfo_xtr=False;
     prn_flg.new_fmt=(PRN_CDL || PRN_JSN || PRN_SRM || PRN_XML);
     prn_flg.hdn=PRN_HDN;
@@ -1227,6 +1228,7 @@ main(int argc,char **argv)
     if(prn_flg.xml) prn_flg.nwl_pst_val=False; else prn_flg.nwl_pst_val=True;
     prn_flg.dlm_sng=dlm_sng;
     prn_flg.cdl_fmt_dt=dt_fmt;
+    prn_flg.fl_out_fmt=fl_out_fmt;
     prn_flg.ALPHA_BY_FULL_GROUP=ALPHA_BY_FULL_GROUP;
     prn_flg.ALPHA_BY_STUB_GROUP=ALPHA_BY_STUB_GROUP;
     prn_flg.FORTRAN_IDX_CNV=FORTRAN_IDX_CNV;
@@ -1266,11 +1268,15 @@ main(int argc,char **argv)
       smr_xtn_sng=(char *)nco_malloc(300L*sizeof(char)); /* [sng] File extended summary string */
       if(nco_dbg_lvl > nco_dbg_std) (void)sprintf(smr_xtn_sng," (representation of extended/underlying filetype %s)",nco_fmt_xtn_sng(nco_fmt_xtn_get())); else smr_xtn_sng[0]='\0';
       (void)sprintf(smr_sng,"Summary of %s: filetype = %s%s, %i groups (max. depth = %i), %i dimensions (%i fixed, %i record), %i variables (%i atomic-type, %i non-atomic), %i attributes (%i global, %i group, %i variable)",fl_in,nco_fmt_sng(fl_in_fmt),smr_xtn_sng,grp_nbr_fl,grp_dpt_fl,trv_tbl->nbr_dmn,trv_tbl->nbr_dmn-dmn_rec_fl,dmn_rec_fl,var_nbr_fl+var_ntm_fl,var_nbr_fl,var_ntm_fl,att_glb_nbr+att_grp_nbr+att_var_nbr,att_glb_nbr,att_grp_nbr,att_var_nbr);
+
+      if(nco_dbg_lvl > nco_dbg_std){
+	prn_flg.smr_fl_sz_sng=smr_fl_sz_sng=(char *)nco_malloc(300L*sizeof(char)); /* [sng] String describing estimated file size */
+ 	(void)nco_fl_sz_est(smr_fl_sz_sng,trv_tbl);
+      } /* !dbg */
       // if(!prn_flg.cdl && !prn_flg.xml && !prn_flg.srm) (void)fprintf(stdout,"%s\n\n",smr_sng);
     } /* endif summary */
 
     if(!prn_flg.new_fmt){
-
       /* Traditional printing order/format always used prior to 201307 */
       if(PRN_GLB_METADATA){
         int dmn_ids_rec[NC_MAX_DIMS]; /* [ID] Record dimension IDs array */
@@ -1305,13 +1311,10 @@ main(int argc,char **argv)
       if(ALPHA_BY_FULL_GROUP || ALPHA_BY_STUB_GROUP){
 	/* Ineptly named nco_grp_prn() emits full CDL and XML formats, and partial JSN 
 	   rcd+=nco_grp_prn(in_id,trv_pth,&prn_flg,trv_tbl); */
-
         if(prn_flg.jsn) rcd+=nco_prn_jsn(in_id,trv_pth,&prn_flg,trv_tbl);
         else if(prn_flg.xml) rcd+=nco_prn_xml(in_id,trv_pth,&prn_flg,trv_tbl);
         else if(prn_flg.cdl || prn_flg.trd) rcd+=nco_prn_cdl_trd(in_id,trv_pth,&prn_flg,trv_tbl); 
         /* else rcd+=nco_grp_prn(in_id,trv_pth,&prn_flg,trv_tbl); */
-
- 
       }else{
 	/* Place-holder for other options for organization/alphabetization */
 	if(PRN_VAR_METADATA) (void)nco_prn_xtr_mtd(in_id,&prn_flg,trv_tbl);
@@ -1368,9 +1371,10 @@ close_and_free:
     if(flg_dne) flg_dne=(nco_dmn_dne_t *)nco_free(flg_dne);
     if(gpe) gpe=(gpe_sct *)nco_gpe_free(gpe);
     if(md5) md5=(md5_sct *)nco_md5_free(md5);
+    if(rec_dmn_nm_fix) rec_dmn_nm_fix=(char *)nco_free(rec_dmn_nm_fix);
     if(smr_sng) smr_sng=(char *)nco_free(smr_sng);
+    if(smr_fl_sz_sng) smr_fl_sz_sng=(char *)nco_free(smr_fl_sz_sng);
     if(smr_xtn_sng) smr_xtn_sng=(char *)nco_free(smr_xtn_sng);
-    rec_dmn_nm_fix=(char *)nco_free(rec_dmn_nm_fix);
   } /* !flg_mmr_cln */
   
 #ifdef ENABLE_MPI
diff --git a/src/nco/nco.h b/src/nco/nco.h
index 71c1512..1d85ca9 100644
--- a/src/nco/nco.h
+++ b/src/nco/nco.h
@@ -138,10 +138,15 @@ extern "C" {
 #define CEWI_unused(x)   ((void)x)
   
   /* Numeric constants to simplify arithmetic */
-#define NCO_BYT_PER_KB 1024UL
-#define NCO_BYT_PER_MB 1048576UL
-#define NCO_BYT_PER_GB 1073741824UL
-#define NCO_BYT_PER_TB 1099511627776UL
+#define NCO_BYT_PER_KiB 1024UL
+#define NCO_BYT_PER_MiB 1048576UL
+#define NCO_BYT_PER_GiB 1073741824UL
+#define NCO_BYT_PER_TiB 1099511627776UL
+
+#define NCO_BYT_PER_KB 1000UL
+#define NCO_BYT_PER_MB 1000000UL
+#define NCO_BYT_PER_GB 1000000000UL
+#define NCO_BYT_PER_TB 1000000000000UL
 
   /* netcdf.h NC_GLOBAL is, strictly, the variable ID for global attributes
      NCO_REC_DMN_UNDEFINED is dimension ID of record dimension iff record dimension is undefined
@@ -339,7 +344,7 @@ extern "C" {
 # define NCO_VERSION_MINOR 6
 #endif /* !NCO_VERSION_MINOR */
 #ifndef NCO_VERSION_PATCH
-# define NCO_VERSION_PATCH 8
+# define NCO_VERSION_PATCH 9
 #endif /* !NCO_VERSION_PATCH */
 #ifndef NCO_VERSION_NOTE
 # define NCO_VERSION_NOTE "" /* Blank for final versions, non-blank (e.g., "beta37") for pre-release versions */
@@ -349,7 +354,7 @@ extern "C" {
 # define NCO_LIB_VERSION ( NCO_VERSION_MAJOR * 100 + NCO_VERSION_MINOR * 10 + NCO_VERSION_PATCH )
 #endif /* !NCO_LIB_VERSION */
 #ifndef NCO_VERSION
-# define NCO_VERSION "4.6.8"
+# define NCO_VERSION "4.6.9"
 #endif /* !NCO_VERSION */
 
 /* Compatibility tokens new to netCDF4 netcdf.h: */
@@ -466,6 +471,7 @@ extern "C" {
 #ifndef NC_FORMAT_DAP4
 # define NC_FORMAT_DAP4    (6)
 #endif
+
 #ifndef NC_FORMATX_UNDEFINED
 # define NC_FORMATX_UNDEFINED (0)
 #else
@@ -494,7 +500,7 @@ extern "C" {
 #endif
 
   /* Three compatibility tokens from pnetcdf.h introduced to NCO 20140604 
-     None are used yet */
+     These were first fully supported in 201708 (NCO 4.6.9) */
 #ifndef NC_64BIT_DATA
 # define NC_64BIT_DATA	0x0010 /* CDF-5 format, (64-bit) supported */
 #endif
@@ -948,6 +954,7 @@ extern "C" {
     char *fl_in; /* [sng] Input filename */
     char *fl_stb; /* [sng] Input filename stub */
     char *smr_sng; /* [sng] Summary string */
+    char *smr_fl_sz_sng; /* [sng] String describing estimated file size */
     char *spr_chr; /* [sng] Separator string for character types */
     char *spr_nmr; /* [sng] Separator string for numeric types */
     gpe_sct *gpe; /* I [sng] GPE structure */
@@ -963,8 +970,9 @@ extern "C" {
     nco_bool nfo_xtr; /* [flg] Print extra information in CDL/XML mode */
     nco_bool new_fmt; /* [flg] Print in new format */
     nco_bool nwl_pst_val; /* [flg] Print newline after variable values */
-    int fll_pth; /* [nbr] Print full paths */
     int cdl_fmt_dt; /* [enm] CDL date-stamp format specifier */ 
+    int fl_out_fmt; /* [enm] Output file format */
+    int fll_pth; /* [nbr] Print full paths */
     int jsn_att_fmt; /* [enm] JSON format for netCDF attributes: 0 (no object, only data), 1 (data only for string, char, int, and floating-point types, otherwise object), 2 (always object) */
     int jsn_data_brk; /* [flg] JSON format for netCDF variables: 0 (no bracketing of var data ), 1 ( bracketing of var data )*/
     int nbr_zro; /* [nbr] Trailing zeros allowed after decimal point */
diff --git a/src/nco/nco_att_utl.c b/src/nco/nco_att_utl.c
index 36dd8cf..8580aad 100644
--- a/src/nco/nco_att_utl.c
+++ b/src/nco/nco_att_utl.c
@@ -739,12 +739,15 @@ nco_att_cpy  /* [fnc] Copy attributes from input netCDF file to output netCDF fi
     /* File format needed for autoconversion */
     (void)nco_inq_format(out_id,&fl_fmt);
 
-    /* Allow ncks to autoconvert netCDF4 atomic types to netCDF3 output type ... */
-    if(nco_prg_id_get() == ncks && fl_fmt != NC_FORMAT_NETCDF4 && !nco_typ_nc3(att_typ_in)){
-      att_typ_out=nco_typ_nc4_nc3(att_typ_in);
-      flg_autoconvert=True;
-      if(nco_dbg_lvl_get() >= nco_dbg_std) (void)fprintf(stdout,"%s: INFO Autoconverting %s%s attribute %s from netCDF4 type %s to netCDF3 type %s\n",nco_prg_nm_get(),(var_out_id == NC_GLOBAL) ? "global or group" : "variable ",(var_out_id == NC_GLOBAL) ? "" : var_nm,att_nm,nco_typ_sng(att_typ_in),nco_typ_sng(att_typ_out));
-    } /* !flg_autoconvert */
+    /* Allow ncks to autoconvert netCDF4 atomic types to netCDF3- or CDF5-supported output type ... */
+    if(nco_prg_id_get() == ncks){
+      if(((fl_fmt == NC_FORMAT_CLASSIC || fl_fmt == NC_FORMAT_64BIT_OFFSET || fl_fmt == NC_FORMAT_NETCDF4_CLASSIC) && !nco_typ_nc3(att_typ_in)) ||
+	 (fl_fmt == NC_FORMAT_64BIT_DATA && !nco_typ_nc5(att_typ_in))){
+	flg_autoconvert=True;
+	if(fl_fmt == NC_FORMAT_64BIT_DATA) att_typ_out=nco_typ_nc4_nc5(att_typ_in); else att_typ_out=nco_typ_nc4_nc3(att_typ_in);
+	if(nco_dbg_lvl_get() >= nco_dbg_std) (void)fprintf(stdout,"%s: INFO Autoconverting %s%s attribute %s from type %s to %s-supported type %s\n",nco_prg_nm_get(),(var_out_id == NC_GLOBAL) ? "global or group" : "variable ",(var_out_id == NC_GLOBAL) ? "" : var_nm,att_nm,nco_fmt_sng(fl_fmt),nco_typ_sng(att_typ_in),nco_typ_sng(att_typ_out));
+      } /* !flg_autoconvert */
+    } /* !ncks */
 
     if(strcmp(att_nm,nco_mss_val_sng_get())){
       /* Normal (non-_FillValue) attributes */
diff --git a/src/nco/nco_cln_utl.h b/src/nco/nco_cln_utl.h
index 9d08103..e32ddf2 100644
--- a/src/nco/nco_cln_utl.h
+++ b/src/nco/nco_cln_utl.h
@@ -13,14 +13,10 @@
 #ifndef NCO_CLN_UTL_H
 #define NCO_CLN_UTL_H
 
-
 #ifdef HAVE_CONFIG_H
 #include <config.h> /* Autotools tokens */
 #endif /* !HAVE_CONFIG_H */
 
-// #include "../../config.h" /* Autotools tokens */
-// #define ENABLE_UDUNITS
-
 /* Standard header files */
 #include <ctype.h> /* isalnum(), isdigit(), tolower() */
 #include <stdio.h> /* stderr, FILE, NULL, printf */
@@ -50,8 +46,6 @@
 #include "nco_ctl.h" /* Program flow control functions */
 #include "nco_sng_utl.h" /* String utilities */
 
-
-
 #ifdef __cplusplus
 extern "C" {
 #endif /* __cplusplus */
diff --git a/src/nco/nco_cnf_typ.c b/src/nco/nco_cnf_typ.c
index 6c54888..8c92600 100644
--- a/src/nco/nco_cnf_typ.c
+++ b/src/nco/nco_cnf_typ.c
@@ -1341,6 +1341,54 @@ nco_typ_nc3 /* [fnc] Identify netCDF3 atomic types */
   return flg_nc3;
 } /* end nco_typ_nc3() */
 
+nco_bool /* O [flg] Input is CDF5 atomic type */
+nco_typ_nc5 /* [fnc] Identify CDF5 atomic types */
+(nc_type typ_in) /* I [enm] Type to check for CDF5 compliance */
+{
+  nco_bool flg_nc5=True; /* CEWI */
+
+  switch(typ_in){
+  case NC_FLOAT: 
+  case NC_DOUBLE: 
+  case NC_INT: 
+  case NC_SHORT: 
+  case NC_BYTE: 
+  case NC_CHAR: 
+  case NC_INT64: 
+  case NC_UBYTE: 
+  case NC_USHORT:
+  case NC_UINT:
+  case NC_UINT64:
+    flg_nc5=True;
+    break;       
+  case NC_STRING: 
+    flg_nc5=False;
+    break;
+  case NC_NAT: 
+  default: nco_dfl_case_nc_type_err(); break;
+  } /* end switch */
+  return flg_nc5;
+} /* end nco_typ_nc5() */
+
+nc_type /* O [enm] CDF5 atomic type */
+nco_typ_nc4_nc5 /* [fnc] Convert netCDF4 to CDF5 atomic type */
+(const nc_type typ_nc4) /* I [enm] netCDF4 type */
+{
+  /* Purpose: Perform intelligent type conversion from netCDF4->5 type */
+
+  /* Already CDF5 type */
+  if(nco_typ_nc5(typ_nc4)) return typ_nc4;
+
+  switch(typ_nc4){
+  case NC_STRING: 
+    return NC_CHAR;
+    break;
+  case NC_NAT:
+  default: nco_dfl_case_nc_type_err(); break;
+  } /* end switch */
+  return typ_nc4;
+} /* end nco_typ_nc4_nc5() */
+
 nc_type /* O [enm] netCDF3 type */
 nco_typ_nc4_nc3 /* [fnc] Convert netCDF4 to netCDF3 atomic type */
 (const nc_type typ_nc4) /* I [enm] netCDF4 type */
diff --git a/src/nco/nco_cnf_typ.h b/src/nco/nco_cnf_typ.h
index afd699a..da245c4 100644
--- a/src/nco/nco_cnf_typ.h
+++ b/src/nco/nco_cnf_typ.h
@@ -111,10 +111,18 @@ nco_bool /* O [flg] Input is netCDF3 atomic type */
 nco_typ_nc3 /* [fnc] Identify netCDF3 atomic types */
 (const nc_type typ_in); /* I [enm] Type to check netCDF3 compliance */
 
+nco_bool /* O [flg] Input is CDF5 atomic type */
+nco_typ_nc5 /* [fnc] Identify CDF5 atomic types */
+(nc_type typ_in); /* I [enm] Type to check for CDF5 compliance */
+
 nc_type /* O [enm] netCDF3 type */
 nco_typ_nc4_nc3 /* [fnc] Convert netCDF4 to netCDF3 atomic type */
 (const nc_type typ_nc4); /* I [enm] netCDF4 type */
 
+nc_type /* O [enm] CDF5 atomic type */
+nco_typ_nc4_nc5 /* [fnc] Convert netCDF4 to CDF5 atomic type */
+(const nc_type typ_nc4); /* I [enm] netCDF4 type */
+
 #ifdef __cplusplus
 } /* end extern "C" */
 #endif /* __cplusplus */
diff --git a/src/nco/nco_ctl.c b/src/nco/nco_ctl.c
index 32801ae..d5d6e1c 100644
--- a/src/nco/nco_ctl.c
+++ b/src/nco/nco_ctl.c
@@ -729,17 +729,19 @@ void
 nco_cnf_prn(void) /* [fnc] Print NCO configuration and help text */
 {
   /* Purpose: Print NCO configuration and help text */
+  const char bld_ngn[]=TKN2SNG(NCO_BUILDENGINE); // [sng] Build-engine
 
   (void)fprintf(stdout,"Homepage: http://nco.sf.net\n");
   (void)fprintf(stdout,"User Guide: http://nco.sf.net/nco.html\n");
+  (void)fprintf(stdout,"Build-engine: %s\n",bld_ngn);
+  (void)fprintf(stderr,"%s\n",nco_nmn_get());
   /* fxm: TKN2YESNO breaks when TKN is undefined
      Full macro language like M4 might be useful here, though probably too much trouble */
 #define TKN2YESNO(x) ((x+0) ? ("No"):("Yes"))
   /* NB: Keep configuration option tokens consistent among configure.ac, bld/Makefile, and nco_ctl.c
      Alphabetize list by first word in English text description of token */
-  (void)fprintf(stdout,"Configuration Option:\tActive?\tMeaning or Reference:\nCheck _FillValue\t%s\thttp://nco.sf.net/nco.html#mss_val\nCheck missing_value\t%s\thttp://nco.sf.net/nco.html#mss_val\nDAP clients\t\t%s\thttp://nco.sf.net/nco.html#dap\nDebugging: Custom\t%s\tPedantic, bounds checking (slowest execution)\nDebugging: Symbols\t%s\tProduce symbols for debuggers (e.g., dbx, gdb)\nESMF Library\t\t%s\thttp://nco.sf.net/nco.html#esmf\nGNU Scientific Library\t%s\thttp://nco.sf.net/nc [...]
+  (void)fprintf(stdout,"Configuration Option:\tActive?\tMeaning or Reference:\nCheck _FillValue\t%s\thttp://nco.sf.net/nco.html#mss_val\nDAP support\t\t%s\thttp://nco.sf.net/nco.html#dap\nDebugging: Custom\t%s\tPedantic, bounds checking (slowest execution)\nDebugging: Symbols\t%s\tProduce symbols for debuggers (e.g., dbx, gdb)\nGNU Scientific Library\t%s\thttp://nco.sf.net/nco.html#gsl\nHDF4 support\t\t%s\thttp://nco.sf.net/nco.html#hdf4\nInternationalization\t%s\thttp://nco.sf.net/nco.h [...]
 		(!strcmp("_FillValue",nco_mss_val_sng_get())) ? "Yes" : "No",
-		(!strcmp("missing_value",nco_mss_val_sng_get())) ? "Yes" : "No",
 #if defined(ENABLE_DAP) && (ENABLE_DAP)
 		"Yes",
 #else /* !ENABLE_DAP */
@@ -755,11 +757,6 @@ nco_cnf_prn(void) /* [fnc] Print NCO configuration and help text */
 #else /* !ENABLE_DEBUG_SYMBOLS */
 		"No",
 #endif /* !ENABLE_DEBUG_SYMBOLS */
-#if defined(ENABLE_ESMF) && (ENABLE_ESMF)
-		"Yes",
-#else /* !ENABLE_ESMF */
-		"No",
-#endif /* !ENABLE_ESMF */
 #if defined(ENABLE_GSL) && (ENABLE_GSL)
 		"Yes",
 #else /* !ENABLE_GSL */
@@ -790,13 +787,17 @@ nco_cnf_prn(void) /* [fnc] Print NCO configuration and help text */
 #else /* !NC_64BIT_OFFSET */
 		"No",
 #endif /* !NC_64BIT_OFFSET */
-#if defined(HAVE_NETCDF4_H) && (HAVE_NETCDF4_H)
+#if defined(NC_LIB_VERSION) && (NC_LIB_VERSION >= 440)
 		"Yes",
-#else /* !HAVE_NETCDF4_H */
+#else /* !NC_64BIT_DATA */
 		"No",
-#endif /* !HAVE_NETCDF4_H */
+#endif /* !NC_64BIT_DATA */
 #if defined(ENABLE_NETCDF4) && (ENABLE_NETCDF4)
+# if defined(HAVE_NETCDF4_H) && (HAVE_NETCDF4_H)
 		"Yes",
+# else /* !HAVE_NETCDF4_H */
+		"No",
+# endif /* !HAVE_NETCDF4_H */
 #else /* !ENABLE_NETCDF4 */
 		"No",
 #endif /* !ENABLE_NETCDF4 */
@@ -831,17 +832,15 @@ nco_cnf_prn(void) /* [fnc] Print NCO configuration and help text */
 		"No",
 #endif /* !ENABLE_STATIC */
 #if defined(ENABLE_UDUNITS) && (ENABLE_UDUNITS)
+# if defined(HAVE_UDUNITS2_H) && (HAVE_UDUNITS2_H)
 		"Yes",
+# else /* !HAVE_UDUNITS2_H */
+		"No",
+# endif /* !HAVE_UDUNITS2_H */
 #else /* !ENABLE_UDUNITS */
 		"No",
 #endif /* !ENABLE_UDUNITS */
-#if defined(HAVE_UDUNITS2_H) && (HAVE_UDUNITS2_H)
-		"Yes",
-#else /* !HAVE_UDUNITS2_H */
-		"No",
-#endif /* !HAVE_UDUNITS2_H */
-		""); /* End of print statement marker */
-  (void)fprintf(stderr,"\n%s",nco_nmn_get());
+		"\n"); /* End of print statement marker */
 } /* end nco_cnf_prn() */
 
 const char * /* O [sng] Mnemonic that describes current NCO version */
@@ -849,7 +848,7 @@ nco_nmn_get(void) /* [fnc] Return mnemonic that describes current NCO version */
 { 
   /* Purpose: Return mnemonic describing current NCO version
      Always include terminal \n so mnemonic does not dangle */
-  return "Ofcharles\n";
+  return "Mnemonic: Catastrophe\n";
 } /* end nco_nmn_get() */
 
 char * /* O [sng] nm_in stripped of any path (i.e., program name stub) */ 
@@ -985,10 +984,10 @@ nco_usg_prn(void)
     opt_sng=(char *)strdup("[-3] [-4] [-5] [-6] [-7] [-A] [--bfr byt] [-C] [-c] [--cnk_byt byt] [--cnk_csh byt] [--cnk_dmn nm,lmn] [--cnk_map map] [--cnk_min byt] [--cnk_plc plc] [--cnk_scl sz] [-D nco_dbg_lvl] [-d ...]  [--dbl|flt] [-F] [--fl_fmt fmt] [-G grp:lvl] [-g ...] [--glb ...] [-H] [-h] [--hdf] [--hdr_pad nbr] [-L lvl] [-l path] [--msa] [-n ...] [--no_cll_msr] [--no_frm_trm] [--no_tmp_fl] [--nsm_fl] [--nsm_grp] [--nsm_sfx] [-O] [-o out.nc] [-p path] [--ppc ...] [-R] [-r] [--ram_ [...]
     break;
   case ncrcat:
-    opt_sng=(char *)strdup("[-3] [-4] [-5] [-6] [-7] [-A] [--bfr byt] [-C] [-c] [--cnk_byt byt] [--cnk_csh byt] [--cnk_dmn nm,lmn] [--cnk_map map] [--cnk_min byt] [--cnk_plc plc] [--cnk_scl sz] [-D nco_dbg_lvl] [-d ...] [-F] [--fl_fmt fmt] [-G grp:lvl] [-g ...] [--glb ...] [-H] [-h] [--hdr_pad nbr] [-L lvl] [-l path] [--md5_digest] [--msa] [-n ...] [--no_cll_msr] [--no_frm_trm] [--no_tmp_fl] [-O] [-o out.nc] [-p path] [--ppc ...] [-R] [-r] [--ram_all] [--rec_apn] [-t thr_nbr] [--unn] [-v [...]
+    opt_sng=(char *)strdup("[-3] [-4] [-5] [-6] [-7] [-A] [--bfr byt] [-C] [-c] [--cnk_byt byt] [--cnk_csh byt] [--cnk_dmn nm,lmn] [--cnk_map map] [--cnk_min byt] [--cnk_plc plc] [--cnk_scl sz] [-D nco_dbg_lvl] [-d ...] [-F] [--fl_fmt fmt] [-G grp:lvl] [-g ...] [--glb ...] [-H] [-h] [--hdr_pad nbr] [-L lvl] [-l path] [--md5_dgs] [--msa] [-n ...] [--no_cll_msr] [--no_frm_trm] [--no_tmp_fl] [-O] [-o out.nc] [-p path] [--ppc ...] [-R] [-r] [--ram_all] [--rec_apn] [-t thr_nbr] [--unn] [-v .. [...]
     break;
   case ncecat:
-    opt_sng=(char *)strdup("[-3] [-4] [-5] [-6] [-7] [-A] [--bfr byt] [-C] [-c] [--cnk_byt byt] [--cnk_dmn nm,lmn] [--cnk_map map] [--cnk_min byt] [--cnk_plc plc] [--cnk_scl sz] [-D nco_dbg_lvl] [-d ...] [-F] [--fl_fmt fmt] [-G grp:lvl] [-g ...] [--gag] [--glb ...] [-H] [-h] [--hdr_pad nbr] [-L lvl] [-l path] [-M] [--md5_digest] [--mrd] [--msa] [-n ...] [--no_cll_msr] [--no_frm_trm] [--no_tmp_fl] [-O] [-o out.nc] [-p path] [--ppc ...] [-R] [-r] [--ram_all] [-t thr_nbr] [-u ulm_nm] [--unn [...]
+    opt_sng=(char *)strdup("[-3] [-4] [-5] [-6] [-7] [-A] [--bfr byt] [-C] [-c] [--cnk_byt byt] [--cnk_dmn nm,lmn] [--cnk_map map] [--cnk_min byt] [--cnk_plc plc] [--cnk_scl sz] [-D nco_dbg_lvl] [-d ...] [-F] [--fl_fmt fmt] [-G grp:lvl] [-g ...] [--gag] [--glb ...] [-H] [-h] [--hdr_pad nbr] [-L lvl] [-l path] [-M] [--md5_dgs] [--mrd] [--msa] [-n ...] [--no_cll_msr] [--no_frm_trm] [--no_tmp_fl] [-O] [-o out.nc] [-p path] [--ppc ...] [-R] [-r] [--ram_all] [-t thr_nbr] [-u ulm_nm] [--unn] [ [...]
     break;
   case ncrename:
     opt_sng=(char *)strdup("[-a ...] [--bfr byt] [-D nco_dbg_lvl] [-d ...] [-g ...] [--glb ...] [-h] [--hdr_pad nbr] [-l path] [-O] [-o out.nc] [-p path] [-R] [-r] [-v ...] in.nc [[out.nc]]\n");
@@ -1099,8 +1098,8 @@ nco_usg_prn(void)
     if(prg_lcl == ncks) (void)fprintf(stdout,"-m, --mtd, --metadata\tToggle printing variable metadata\n");
   } /* end if */
   if(strstr(opt_sng,"--map")) (void)fprintf(stdout,"    --map, --rgr_map map.nc\tFile containing (ESMF- or SCRIP-format) weights to regrid input to output grid\n");
-  if(strstr(opt_sng,"--md5_digest")) (void)fprintf(stdout,"    --md5_dgs, --md5_digest\tPerform MD5 digests\n");
-  if(strstr(opt_sng,"--md5_wrt_att")) (void)fprintf(stdout,"   --md5_wrt, --md5_write\tWrite MD5 digests as attributes\n");
+  if(strstr(opt_sng,"--md5_dgs")) (void)fprintf(stdout,"    --md5_dgs, --md5_digest\tPerform MD5 digests\n");
+  if(strstr(opt_sng,"--md5_wrt")) (void)fprintf(stdout,"    --md5_wrt, --md5_write\tWrite MD5 digests as attributes\n");
   if(strstr(opt_sng,"--mk_rec_dmn")) (void)fprintf(stdout,"    --mk_rec_dmn dim\tDefine dim as record dimension in output file\n");
   if(strstr(opt_sng,"--mro")) (void)fprintf(stdout,"    --mro\t\tMulti-Record Output\n");
   if(strstr(opt_sng,"[-N]")){
@@ -1120,8 +1119,8 @@ nco_usg_prn(void)
   if(strstr(opt_sng,"--nsm_fl")) (void)fprintf(stdout,"    --nsm_fl, --ensemble_file\tEnsembles comprise equally weighted files\n");
   if(strstr(opt_sng,"--nsm_grp")) (void)fprintf(stdout,"    --nsm_grp, --ensemble_group\tEnsembles comprise equally weighted groups\n");
   if(strstr(opt_sng,"--nsm_sfx")) (void)fprintf(stdout,"    --nsm_sfx, --ensemble_suffix\tPlace ensemble output in group parent/parent+nsm_sfx\n");
-  if(strstr(opt_sng,"[-o")) (void)fprintf(stdout,"-o, --output, --fl_out out.nc\tOutput file name (or use last positional argument)\n");
   if(strstr(opt_sng,"[-O]")) (void)fprintf(stdout,"-O, --ovr, --overwrite\tOverwrite existing output file, if any\n");
+  if(strstr(opt_sng,"[-o")) (void)fprintf(stdout,"-o, --output, --fl_out out.nc\tOutput file name (or use last positional argument)\n");
   if(strstr(opt_sng,"[-P")){
     if(prg_lcl == ncks) (void)fprintf(stdout,"-P, --prn, --print\tPrint data, metadata, and units. Abbreviation for -C -H -M -m -u.\n");
     if(prg_lcl == ncpdq) (void)fprintf(stdout,"-P, --pck_plc, --pack_policy pck_plc\tPacking policy [all_new,all_xst,xst_new,upk]\n");
diff --git a/src/nco/nco_fl_utl.c b/src/nco/nco_fl_utl.c
index 697dff5..15a2e05 100644
--- a/src/nco/nco_fl_utl.c
+++ b/src/nco/nco_fl_utl.c
@@ -27,7 +27,7 @@ nco_create_mode_mrg /* [fnc] Merge clobber mode with user-specified file format
   } /* endif */
 
   md_create=md_clobber;
-  if(fl_out_fmt == NC_FORMAT_64BIT){
+  if(fl_out_fmt == NC_FORMAT_64BIT_OFFSET){
     md_create|=NC_64BIT_OFFSET;
   }else if(fl_out_fmt == NC_FORMAT_CDF5){
     md_create|=NC_64BIT_DATA;
@@ -84,7 +84,7 @@ nco_create_mode_prs /* [fnc] Parse user-specified file format */
     if(NC_LIB_VERSION >= 440){
       *fl_fmt_enm=NC_FORMAT_CDF5;
     }else{
-      (void)fprintf(stderr,"%s: ERROR This NCO was not built with PnetCDF (aka CDF5, http://trac.mcs.anl.gov/projects/parallel-netcdf) capabilities and cannot create the requested PnetCDF file format. PnetCDF (CDF5) was introduced in the base netCDF library in version 4.4.0 in January, 2016. HINT: Re-try with requisite library version or select a supported file format such as \"classic\" or \"64bit_offset\".\n",nco_prg_nm_get());
+      (void)fprintf(stderr,"%s: ERROR This NCO was not built with CDF5 (http://trac.mcs.anl.gov/projects/parallel-netcdf) capabilities and cannot create the requested CDF5 (aka PnetCDF) file format. CDF5 was introduced in the base netCDF library in version 4.4.0 in January, 2016. HINT: Re-try with after building NCO with the requisite netCDF library version or select a supported file format such as \"classic\" or \"64bit_offset\".\n",nco_prg_nm_get());
     } /* !NC_LIB_VERSION */
   }else{
     (void)fprintf(stderr,"%s: ERROR Unknown output file format \"%s\" requested. Valid formats are (unambiguous leading characters of) \"classic\", \"64bit_offset\",%s \"netcdf4\", and \"netcdf4_classic\".\n",nco_prg_nm_get(),fl_fmt_sng,(NC_LIB_VERSION >= 440) ? "\"64bit_data\"," : "");
@@ -93,6 +93,46 @@ nco_create_mode_prs /* [fnc] Parse user-specified file format */
 
   return rcd; /* [rcd] Return code */
 } /* end nco_create_mode_prs() */
+void
+nco_fl_sz_est /* [fnc] Estimate RAM size == uncompressed file size */
+(char *smr_fl_sz_sng, /* I/O [sng] String describing estimated file size */
+ const trv_tbl_sct * const trv_tbl) /* I [sct] Traversal table */
+{
+  /* Purpose: Estimate RAM size == uncompressed file size */
+  const char fnc_nm[]="nco_fl_sz_est()"; /* [sng] Function name  */
+
+  size_t ram_sz_crr;
+  size_t ram_sz_ttl=0L;
+  size_t dmn_sz[NC_MAX_DIMS]; /* [nbr] Dimension sizes */
+  
+  for(unsigned idx_tbl=0;idx_tbl<trv_tbl->nbr;idx_tbl++){
+    trv_sct var_trv=trv_tbl->lst[idx_tbl]; 
+    if(var_trv.flg_xtr && var_trv.nco_typ == nco_obj_typ_var){
+      ram_sz_crr=1L;
+      for(unsigned int dmn_idx=0;dmn_idx<(unsigned int)var_trv.nbr_dmn;dmn_idx++){
+	if(var_trv.var_dmn[dmn_idx].is_crd_var){
+	  /* Get coordinate from table */
+	  crd_sct *crd=var_trv.var_dmn[dmn_idx].crd;
+	  /* Use hyperslabbed size */
+	  dmn_sz[dmn_idx]=crd->lmt_msa.dmn_cnt;
+	}else{
+	  /* Get unique dimension */
+	  dmn_trv_sct *dmn_trv=var_trv.var_dmn[dmn_idx].ncd;
+	  /* Use hyperslabbed size */
+	  dmn_sz[dmn_idx]=dmn_trv->lmt_msa.dmn_cnt;
+	} /* !is_crd_var */
+	ram_sz_crr*=dmn_sz[dmn_idx];
+      } /* !dmn */
+      ram_sz_crr*=nco_typ_lng(var_trv.var_typ);
+      ram_sz_ttl+=ram_sz_crr;
+    } /* !var */
+  } /* end idx_tbl */
+
+  (void)sprintf(smr_fl_sz_sng,"Size expected in RAM or uncompressed storage of all data (not metadata), accounting for subsets and hyperslabs, is %lu B ~ %lu kB, %lu kiB ~ %lu MB, %lu MiB ~ %lu GB, %lu GiB",(unsigned long)ram_sz_ttl,(unsigned long)round(1.0*ram_sz_ttl/NCO_BYT_PER_KB),(unsigned long)round(1.0*ram_sz_ttl/NCO_BYT_PER_KiB),(unsigned long)round(1.0*ram_sz_ttl/NCO_BYT_PER_MB),(unsigned long)round(1.0*ram_sz_ttl/NCO_BYT_PER_MiB),(unsigned long)round(1.0*ram_sz_ttl/NCO_BYT_PER_G [...]
+  if(nco_dbg_lvl_get() >= nco_dbg_scl) (void)fprintf(stdout,"%s: %s reports %s\n",nco_prg_nm_get(),fnc_nm,smr_fl_sz_sng);
+
+  return;
+} /* end nco_fl_sz_est() */
 
 void
 nco_fl_cmp_err_chk(void) /* [fnc] Perform error checking on file */
@@ -249,7 +289,7 @@ nco_fl_cp /* [fnc] Copy first file to second */
     (void)fprintf(stdout,"%s: ERROR nco_fl_cp() is unable to execute cp command \"%s\"\n",nco_prg_nm_get(),cmd_cp);
     nco_exit(EXIT_FAILURE);
   } /* end if */
-  if(nco_dbg_lvl_get() >= nco_dbg_std) (void)fprintf(stderr,"done\n");
+  if(nco_dbg_lvl_get() >= nco_dbg_fl) (void)fprintf(stderr,"done\n");
 
   cmd_cp=(char *)nco_free(cmd_cp);
   if(fl_dst_cdl) fl_dst_cdl=(char *)nco_free(fl_dst_cdl);
@@ -1199,7 +1239,7 @@ nco_fl_mv /* [fnc] Move first file to second */
     (void)fprintf(stdout,"%s: ERROR nco_fl_mv() unable to execute mv command \"%s\"\n",nco_prg_nm_get(),cmd_mv);
     nco_exit(EXIT_FAILURE);
   } /* end if */
-  if(nco_dbg_lvl_get() >= nco_dbg_std) (void)fprintf(stderr,"done\n");
+  if(nco_dbg_lvl_get() >= nco_dbg_fl) (void)fprintf(stderr,"done\n");
 
   cmd_mv=(char *)nco_free(cmd_mv);
   if(fl_dst_cdl) fl_dst_cdl=(char *)nco_free(fl_dst_cdl);
@@ -1444,7 +1484,7 @@ nco_fl_open /* [fnc] Open file using appropriate buffer size hints and verbosity
     /* Set undefined extended file type to actual extended filetype */
     nco_fmt_xtn_set(fl_fmt_xtn_crr);
   } /* endif */
-  if(nco_dbg_lvl_get() >= nco_dbg_scl && FIRST_INFO) (void)fprintf(stderr,"%s: INFO %s reports extended filetype of %s is %s, mode = %d\n",nco_prg_nm_get(),fnc_nm,fl_nm,nco_fmt_xtn_sng(fl_fmt_xtn_crr),mode);
+  if(nco_dbg_lvl_get() >= nco_dbg_scl && FIRST_INFO) (void)fprintf(stderr,"%s: INFO %s reports extended filetype of %s is %s, mode = %o (oct) = %d (dec) = %04x (hex) \n",nco_prg_nm_get(),fnc_nm,fl_nm,nco_fmt_xtn_sng(fl_fmt_xtn_crr),mode,(unsigned)mode,(unsigned)mode);
 
   if(FIRST_INFO && nco_dbg_lvl_get() >= nco_dbg_fl){
     (void)fprintf(stderr,"%s: INFO %s will not print any more INFO messages if this file is opened again. (Many NCO operators open the same file multiple times when OpenMP is enabled, %s prints INFO messages only the first time because successive messages are usually redundant).\n",nco_prg_nm_get(),fnc_nm,fnc_nm);
diff --git a/src/nco/nco_fl_utl.h b/src/nco/nco_fl_utl.h
index a375b18..ebcc353 100644
--- a/src/nco/nco_fl_utl.h
+++ b/src/nco/nco_fl_utl.h
@@ -52,6 +52,7 @@ typedef int pid_t;
 #include "nco_ctl.h" /* Program flow control functions */
 #include "nco_mmr.h" /* Memory management */
 #include "nco_sng_utl.h" /* String utilities */
+#include "nco_grp_trv.h" /* Group traversal */
 
 /* 20120301: Replace multiple instances of hard-coded retry limit with CPP token NCO_MAX_NBR_USR_INPUT_RETRY */
 #ifndef NCO_MAX_NBR_USR_INPUT_RETRY
@@ -78,6 +79,11 @@ nco_create_mode_prs /* [fnc] Parse user-specified file format */
  int * const fl_fmt_enm); /* O [enm] Output file format */
 
 void
+nco_fl_sz_est /* [fnc] Estimate RAM size == uncompressed file size */
+(char *smr_fl_sz_sng, /* I/O [sng] String describing estimated file size */
+ const trv_tbl_sct * const trv_tbl); /* I [sct] Traversal table */
+
+  void
 nco_fl_cmp_err_chk(void); /* [fnc] Perform error checking on file */
 
 void
diff --git a/src/nco/nco_grp_trv.c b/src/nco/nco_grp_trv.c
index d544942..5f90b00 100644
--- a/src/nco/nco_grp_trv.c
+++ b/src/nco/nco_grp_trv.c
@@ -18,38 +18,38 @@ trv_tbl_init                           /* [fnc] GTT initialize */
 (trv_tbl_sct **tbl)                    /* I/O [sct] Traversal table */
 {
   trv_tbl_sct *tb=(trv_tbl_sct *)nco_malloc(sizeof(trv_tbl_sct));
-
+  
   /* Object (group/variable) list */
   tb->nbr=0;
   tb->lst=NULL; 
-
+  
   /* Dimension list */
   tb->nbr_dmn=0;
   tb->lst_dmn=NULL;
-
+  
   /* Degenerate dimensions used by ncwa */
   tb->nbr_dmn_dgn=0;
   tb->dmn_dgn=NULL;
-
+  
   /* Ensembles */
   tb->nsm_nbr=0;
   tb->nsm=NULL;
   tb->nsm_sfx=NULL;
-
+  
   *tbl=tb;
 } /* trv_tbl_init() */
- 
+
 void 
 trv_tbl_free                           /* [fnc] GTT free memory */
 (trv_tbl_sct *tbl)                     /* I [sct] Traversal table */
 {
-
+  
   const char fnc_nm[]="trv_tbl_free()"; /* [sng] Function name  */
-
+  
 #ifdef DEBUG_LEAKS
   int crt_counter=0;
 #endif
-
+  
   /* Hash Table */
   nco_trv_hsh_del(tbl);
   
@@ -63,16 +63,16 @@ trv_tbl_free                           /* [fnc] GTT free memory */
     tbl->lst[idx].nsm_nm=(char *)nco_free(tbl->lst[idx].nsm_nm);
     tbl->lst[idx].rec_dmn_nm_out=(char *)nco_free(tbl->lst[idx].rec_dmn_nm_out);
     tbl->lst[idx].hsh_key=(char *)nco_free(tbl->lst[idx].hsh_key);
-
+    
     /* Dimensions */
     for(int dmn_idx=0;dmn_idx<tbl->lst[idx].nbr_dmn;dmn_idx++){
-
+      
       /* If dimensions exist (only for variables ) */
       if(tbl->lst[idx].var_dmn){
         tbl->lst[idx].var_dmn[dmn_idx].dmn_nm_fll=(char *)nco_free(tbl->lst[idx].var_dmn[dmn_idx].dmn_nm_fll);
         tbl->lst[idx].var_dmn[dmn_idx].dmn_nm=(char *)nco_free(tbl->lst[idx].var_dmn[dmn_idx].dmn_nm);
         tbl->lst[idx].var_dmn[dmn_idx].grp_nm_fll=(char *)nco_free(tbl->lst[idx].var_dmn[dmn_idx].grp_nm_fll);
-
+	
         int nbr_lat_crd=tbl->lst[idx].var_dmn[dmn_idx].nbr_lat_crd;
         for(int idx_crd=0;idx_crd<nbr_lat_crd;idx_crd++) tbl->lst[idx].var_dmn[dmn_idx].lat_crd[idx_crd].nm_fll=(char *)nco_free(tbl->lst[idx].var_dmn[dmn_idx].lat_crd[idx_crd].nm_fll);
 
@@ -175,6 +175,7 @@ trv_tbl_inq                          /* [fnc] Find and return global totals of d
  const trv_tbl_sct * const trv_tbl)  /* I [sct] Traversal table */
 {
   /* [fnc] Find and return global file summaries like # of dimensions, variables, attributes */
+  //const char fnc_nm[]="trv_tbl_inq()"; /* [sng] Function name  */
 
   int att_glb_lcl; /* [nbr] Number of global attributes in file */
   int att_grp_lcl; /* [nbr] Number of group attributes in file */
@@ -184,7 +185,7 @@ trv_tbl_inq                          /* [fnc] Find and return global totals of d
   int grp_nbr_lcl; /* [nbr] Number of groups in file */
   int var_ntm_lcl; /* [nbr] Number of non-atomic variables in file */
   int var_tmc_lcl; /* [nbr] Number of atomic-type variables in file */
- 
+
   /* Initialize */
   att_glb_lcl=0;
   att_grp_lcl=0;
@@ -194,16 +195,16 @@ trv_tbl_inq                          /* [fnc] Find and return global totals of d
   grp_nbr_lcl=0;
   var_ntm_lcl=0;
   var_tmc_lcl=0;
-
+    
   for(unsigned idx_tbl=0;idx_tbl<trv_tbl->nbr;idx_tbl++){
-    trv_sct trv=trv_tbl->lst[idx_tbl]; 
-    if(trv.nco_typ == nco_obj_typ_var) att_var_lcl+=trv.nbr_att;
-    if(trv.nco_typ == nco_obj_typ_nonatomic_var) var_ntm_lcl++;
-    if(trv.nco_typ == nco_obj_typ_grp){ 
-      grp_nbr_lcl+=trv.nbr_grp;
-      var_tmc_lcl+=trv.nbr_var;
-      if(grp_dpt_lcl < trv.grp_dpt) grp_dpt_lcl=trv.grp_dpt;
-      if(!strcmp(trv.nm_fll,"/")) att_glb_lcl=trv.nbr_att; else att_grp_lcl+=trv.nbr_att; 
+    trv_sct var_trv=trv_tbl->lst[idx_tbl]; 
+    if(var_trv.nco_typ == nco_obj_typ_var) att_var_lcl+=var_trv.nbr_att;
+    if(var_trv.nco_typ == nco_obj_typ_nonatomic_var) var_ntm_lcl++;
+    if(var_trv.nco_typ == nco_obj_typ_grp){ 
+      grp_nbr_lcl+=var_trv.nbr_grp;
+      var_tmc_lcl+=var_trv.nbr_var;
+      if(grp_dpt_lcl < var_trv.grp_dpt) grp_dpt_lcl=var_trv.grp_dpt;
+      if(!strcmp(var_trv.nm_fll,"/")) att_glb_lcl=var_trv.nbr_att; else att_grp_lcl+=var_trv.nbr_att; 
     } /* end nco_obj_typ_grp */
   } /* end idx_tbl */
 
@@ -418,24 +419,38 @@ trv_tbl_prn_xtr                        /* [fnc] Print extraction flag of travers
 
 } /* end trv_tbl_prn_xtr() */
 
-static int                             /* O [enm] Comparison result [<,=,>] 0 iff val_1 [<,==,>] val_2 */
-trv_tbl_cmp_nm_fll                     /* [fnc] Compare two trv_sct's by full name member */
+int                                    /* O [enm] Comparison result [<,=,>] 0 iff val_1 [<,==,>] val_2 */
+trv_tbl_cmp_asc_nm_fll                 /* [fnc] Compare two trv_sct's by full name member, return ascending order */
 (const void *val_1,                    /* I [sct] trv_sct to compare */
  const void *val_2)                    /* I [sct] trv_sct to compare */
 {
   /* Purpose: Compare two trv_sct's by name structure member
+     Comparison results, when interpreted by qsort(), sort in ascending (alphabetical) order
      Function is suitable for argument to ANSI C qsort() routine in stdlib.h
      Code based on responses to my comp.lang.c thread 20040101 */
   return strcmp((*(trv_sct const *)val_1).nm_fll,(*(trv_sct const *)val_2).nm_fll);
 } /* end nco_cmp_trv_tbl_nm() */
 
+int                                    /* O [enm] Comparison result [<,=,>] 0 iff val_1 [>,==,<] val_2 */
+trv_tbl_cmp_dsc_nm_fll                 /* [fnc] Compare two trv_sct's by full name member, return descending order */
+(const void *val_1,                    /* I [sct] trv_sct to compare */
+ const void *val_2)                    /* I [sct] trv_sct to compare */
+{
+  /* Purpose: Compare two trv_sct's by name structure member
+     Comparison results, when interpreted by qsort(), sort in descending (reverse alphabetical) order
+     Function is suitable for argument to ANSI C qsort() routine in stdlib.h
+     Code based on responses to my comp.lang.c thread 20040101 */
+  return -1*strcmp((*(trv_sct const *)val_1).nm_fll,(*(trv_sct const *)val_2).nm_fll);
+} /* end nco_cmp_trv_tbl_nm() */
+
 void 
 trv_tbl_srt                            /* [fnc] Sort traversal table */
-(trv_tbl_sct * const trv_tbl)          /* I/O [sct] Traversal table */
+(const int srt_mth,                    /* [enm] Sort method */
+ trv_tbl_sct * const trv_tbl)          /* I/O [sct] Traversal table */
 {
   /* Purpose: Alphabetize list by object full name
      This produces easy-to-search variable name screen output with ncks */
-  qsort(trv_tbl->lst,(size_t)trv_tbl->nbr,sizeof(trv_sct),trv_tbl_cmp_nm_fll);
+  if(srt_mth == 0) qsort(trv_tbl->lst,(size_t)trv_tbl->nbr,sizeof(trv_sct),trv_tbl_cmp_asc_nm_fll); else if(srt_mth == 1) qsort(trv_tbl->lst,(size_t)trv_tbl->nbr,sizeof(trv_sct),trv_tbl_cmp_dsc_nm_fll);
 } /* end trv_tbl_srt() */
 
 void                          
@@ -744,13 +759,13 @@ nco_nm_mch                             /* [fnc] Match 2 lists of strings and mar
  int * nbr_cmn_nm)                     /* I/O [nbr] Number of common names */
 {
   /* Purpose: Match 2 lists of strings and export common strings. 
-  Use cosequential match algorithm described in
-  Folk, Michael; Zoellick, Bill. (1992). File Structures. Addison-Wesley.
+     Use cosequential match algorithm described in
+     Folk, Michael; Zoellick, Bill. (1992). File Structures. Addison-Wesley.
 
   Compare 2 ordered lists of names:
-  if Name(1) is less than Name(2), read next name from List 1; this is done by incrementing current index
-  if Name(1) is greater than Name(2), read next name from List 2
-  if names are identical, read next names from both lists  */
+  If Name(1) is less than Name(2), read next name from List 1; this is done by incrementing current index
+  If Name(1) is greater than Name(2), read next name from List 2
+  If names are identical, read next names from both lists */
 
   int idx_lst;                   /* [idx] Current position in common List */ 
   int idx_tbl_1;                 /* [idx] Current position in List 1 */ 
diff --git a/src/nco/nco_grp_trv.h b/src/nco/nco_grp_trv.h
index a0fbc34..37868fb 100644
--- a/src/nco/nco_grp_trv.h
+++ b/src/nco/nco_grp_trv.h
@@ -18,6 +18,7 @@
 #endif /* !HAVE_CONFIG_H */
 
 /* Standard header files */
+#include <math.h> /* sin cos cos sin 3.14159 */
 #include <string.h> /* strcmp() */
 
 /* 3rd party vendors */
@@ -26,6 +27,7 @@
 /* Personal headers */
 #include "nco.h" /* netCDF Operator (NCO) definitions */
 #include "nco_cnf_typ.h" /* Conform variable types */
+#include "nco_lst_utl.h" /* List utilities */
 #include "nco_mmr.h" /* Memory management */
 
 void                         
@@ -103,9 +105,20 @@ trv_tbl_prn_xtr                        /* [fnc] Print extraction flag of travers
 (const trv_tbl_sct * const trv_tbl,    /* I [sct] Traversal table */
  const char * const fnc_nm);           /* I [sng] Function name of the calling function */
 
+int                                    /* O [enm] Comparison result [<,=,>] 0 iff val_1 [<,==,>] val_2 */
+trv_tbl_cmp_asc_nm_fll                 /* [fnc] Compare two trv_sct's by full name member, return ascending order */
+(const void *val_1,                    /* I [sct] trv_sct to compare */
+ const void *val_2);                   /* I [sct] trv_sct to compare */
+
+int                                    /* O [enm] Comparison result [<,=,>] 0 iff val_1 [>,==,<] val_2 */
+trv_tbl_cmp_dsc_nm_fll                 /* [fnc] Compare two trv_sct's by full name member, return descending order */
+(const void *val_1,                    /* I [sct] trv_sct to compare */
+ const void *val_2);                   /* I [sct] trv_sct to compare */
+
 void 
 trv_tbl_srt                            /* [fnc] Sort traversal table */
-(trv_tbl_sct * const trv_tbl);         /* I/O [sct] Traversal table */
+(const int srt_mth,                    /* [enm] Sort method */
+ trv_tbl_sct * const trv_tbl);         /* I/O [sct] Traversal table */
 
 int                                    /* O [nbr] Number of depth 1 groups (root = 0) */
 trv_tbl_inq_dpt                        /* [fnc] Return number of depth 1 groups */
diff --git a/src/nco/nco_grp_utl.c b/src/nco/nco_grp_utl.c
index c11b213..1bf54d4 100644
--- a/src/nco/nco_grp_utl.c
+++ b/src/nco/nco_grp_utl.c
@@ -1039,6 +1039,59 @@ nco_xtr_crd_add                       /* [fnc] Add all coordinates to extraction
 } /* end nco_xtr_crd_add() */
 
 void
+nco_xtr_lst /* [fnc] Print extraction list and exit */
+(trv_tbl_sct * const trv_tbl) /* I [sct] GTT (Group Traversal Table) */
+{
+  /* Purpose: Print extraction list and exit
+     ncclimo and ncremap invoke this ncks function to process regular expressions in variable lists
+     Usage:
+     ncks -v three.? --lst_xtr ~/nco/data/in.nc
+     ncks -v FSNT,TREFHT --lst_xtr ~/data/ne30/raw/famipc5_ne30_v0.3_00003.cam.h0.1979-01.nc
+     ncks -v ^[a-bA-B].? --lst_xtr ~/data/ne30/raw/famipc5_ne30_v0.3_00003.cam.h0.1979-01.nc */
+
+  const char fnc_nm[]="nco_xtr_lst()"; /* [sng] Function name */
+
+  int xtr_nbr_crr=0; /* [nbr] Number of N>=D variables found so far */
+
+  int grp_id; /* [id] Group ID */
+  int nc_id; /* [id] File ID */
+  int var_id; /* [id] Variable ID */
+
+  trv_sct var_trv;
+
+  nc_id=trv_tbl->in_id_arr[0];
+
+  /* If variable is on extraction list, print it to stdout */
+  for(unsigned idx_var=0;idx_var<trv_tbl->nbr;idx_var++){
+    var_trv=trv_tbl->lst[idx_var];
+    if(var_trv.nco_typ == nco_obj_typ_var && var_trv.flg_xtr){
+      (void)nco_inq_grp_full_ncid(nc_id,var_trv.grp_nm_fll,&grp_id);
+      (void)nco_inq_varid(grp_id,var_trv.nm,&var_id);
+      /* 20170829: Eliminate bounds variables from stdout list
+	 Intended to keep time bounds variables from reaching ncclimo 
+	 Variables like time_bnds may be replaced by, e.g., climatology_bounds in seasonal files
+	 Hence time bounds variables should not be specifically requested because they may not exist
+	 NCO's associated coordinate feature will extract them anyway
+	 So best not to explicitly request them in ncclimo */
+      if(!nco_is_spc_in_cf_att(grp_id,"bounds",var_id,NULL)){
+	(void)fprintf(stdout,"%s%s",(xtr_nbr_crr > 0) ? "," : "",var_trv.nm);
+	xtr_nbr_crr++;
+      } /* !bounds */
+    } /* !flg_xtr */
+  } /* !idx_var */
+  
+  if(xtr_nbr_crr > 0){
+    (void)fprintf(stdout,"\n");
+    nco_exit(EXIT_SUCCESS);
+  }else{
+    (void)fprintf(stdout,"%s: ERROR %s reports empty extraction list\n",nco_prg_nm_get(),fnc_nm);
+    nco_exit(EXIT_FAILURE);
+  } /* !xtr_nbr_crr */
+  
+  return;
+} /* end nco_xtr_lst() */
+
+void
 nco_xtr_ND_lst /* [fnc] Print extraction list of N>=D variables and exit */
 (trv_tbl_sct * const trv_tbl) /* I [sct] GTT (Group Traversal Table) */
 {
@@ -1052,16 +1105,21 @@ nco_xtr_ND_lst /* [fnc] Print extraction list of N>=D variables and exit */
 
   const char fnc_nm[]="nco_xtr_ND_lst()"; /* [sng] Function name */
 
+  const int rnk_xtr=2; /* [nbr] Minimum rank to extract */
+
   int xtr_nbr_crr=0; /* [nbr] Number of N>=D variables found so far */
-  int rnk_xtr=2; /* [nbr] Minimum rank to extract */
+
+  int grp_id; /* [id] Group ID */
+  int nc_id; /* [id] File ID */
+  int var_id; /* [id] Variable ID */
+
+  trv_sct var_trv;
+
+  nc_id=trv_tbl->in_id_arr[0];
 
   /* 20170414: csz add new definitions is_crd_lk_var and is_rec_lk_var, avoid PVN definitions for sanity */
   for(unsigned idx_var=0;idx_var<trv_tbl->nbr;idx_var++){
-    trv_sct var_trv=trv_tbl->lst[idx_var];
-    int nc_id; /* [id] File ID */
-    int var_id; /* [id] Variable ID */
-    int grp_id; /* [id] Group ID */
-    nc_id=trv_tbl->in_id_arr[0];
+    var_trv=trv_tbl->lst[idx_var];
     if(var_trv.nco_typ == nco_obj_typ_var){
       (void)nco_inq_grp_full_ncid(nc_id,var_trv.grp_nm_fll,&grp_id);
       (void)nco_inq_varid(grp_id,var_trv.nm,&var_id);
@@ -1076,8 +1134,8 @@ nco_xtr_ND_lst /* [fnc] Print extraction list of N>=D variables and exit */
   } /* !idx_var */
 
   /* If variable has N>=D dimensions, add it to list */
-  for(unsigned idx_var=0;idx_var<trv_tbl->nbr;idx_var++)
-    if(trv_tbl->lst[idx_var].nco_typ == nco_obj_typ_var)
+  for(unsigned idx_var=0;idx_var<trv_tbl->nbr;idx_var++){
+    if(trv_tbl->lst[idx_var].nco_typ == nco_obj_typ_var){
       if((trv_tbl->lst[idx_var].nbr_dmn >= rnk_xtr) && /* Rank at least 2 */
 	 (!trv_tbl->lst[idx_var].is_crd_lk_var) && /* Not a coordinate-like variable */
 	 (trv_tbl->lst[idx_var].is_rec_lk_var) && /* Is a record variable */
@@ -1086,12 +1144,13 @@ nco_xtr_ND_lst /* [fnc] Print extraction list of N>=D variables and exit */
 	(void)fprintf(stdout,"%s%s",(xtr_nbr_crr > 0) ? "," : "",trv_tbl->lst[idx_var].nm);
 	xtr_nbr_crr++;
       } /* !N>=D */
-
+    } /* !nco_typ */
+  } /* !idx_var */
   if(xtr_nbr_crr > 0){
     (void)fprintf(stdout,"\n");
     nco_exit(EXIT_SUCCESS);
   }else{
-    (void)fprintf(stdout,"%s: ERROR %s reports no variables found with rank >= 2\n",nco_prg_nm_get(),fnc_nm);
+    (void)fprintf(stdout,"%s: ERROR %s reports no variables found with rank >= %d\n",nco_prg_nm_get(),fnc_nm,rnk_xtr);
     nco_exit(EXIT_FAILURE);
   } /* !xtr_nbr_crr */
     
@@ -1946,7 +2005,7 @@ nco_xtr_wrt                           /* [fnc] Write extracted data to output fi
     nm_id_sct **rec_lst=NULL; /* [sct] Record variables to be extracted */
     nm_id_sct *xtr_lst=NULL; /* [sct] Variables to be extracted */
 
-    if(nco_dbg_lvl_get() >= nco_dbg_std) (void)fprintf(stderr,"%s: INFO Using MM3-workaround to hasten copying of record variables\n",nco_prg_nm_get());
+    if(nco_dbg_lvl_get() >= nco_dbg_fl) (void)fprintf(stderr,"%s: INFO Using MM3-workaround to hasten copying of record variables\n",nco_prg_nm_get());
 
     /* Convert extraction list from traversal table to nm_id_sct format to re-use old code */
     xtr_lst=nco_trv_tbl_nm_id(nc_id_in,nc_id_out,gpe,&xtr_nbr,trv_tbl);
@@ -4801,8 +4860,11 @@ nco_cpy_var_dfn_trv                 /* [fnc] Define specified variable in output
 
   }else{ /* !ncwa */
 
-    /* Allow ncks to autoconvert netCDF4 atomic types to netCDF3 output type ... */
-    if(nco_prg_id == ncks && fl_fmt != NC_FORMAT_NETCDF4 && !nco_typ_nc3(var_typ_out)) var_typ_out=nco_typ_nc4_nc3(var_typ_out);
+    /* Allow ncks to autoconvert any netCDF4-supported atomic type to netCDF3 or netCDF5-supported output type ... */
+    if(nco_prg_id == ncks){
+      if(fl_fmt == NC_FORMAT_CLASSIC || fl_fmt == NC_FORMAT_64BIT_OFFSET || fl_fmt == NC_FORMAT_NETCDF4_CLASSIC) var_typ_out=nco_typ_nc4_nc3(var_typ_out); else if(fl_fmt == NC_FORMAT_64BIT_DATA) var_typ_out=nco_typ_nc4_nc5(var_typ_out);
+    } /* !ncks */
+    
     /* fxm TODO nco1106 too complicated--need phony dimensions for NC_CHAR array length */
     /* if(var_typ_out == NC_STRING) nbr_dmn_var_out++; */ 
 
@@ -6567,7 +6629,7 @@ nco_bld_trv_tbl                       /* [fnc] Construct GTT, Group Traversal Ta
   (void)nco_bld_var_dmn(trv_tbl);       
 
   /* ncbo co-sequential match algorithm requires alphabetical sorted full names. Do it here, to avoid rebuilding hash table */
-  if(nco_prg_id_get() == ncbo) (void)trv_tbl_srt(trv_tbl);
+  if(nco_prg_id_get() == ncbo) (void)trv_tbl_srt((int)0,trv_tbl);
 
   /* Hash traversal table for faster access */
   (void)nco_trv_hsh_bld(trv_tbl);
diff --git a/src/nco/nco_grp_utl.h b/src/nco/nco_grp_utl.h
index c08e6e4..b0cfff9 100644
--- a/src/nco/nco_grp_utl.h
+++ b/src/nco/nco_grp_utl.h
@@ -156,6 +156,10 @@ nco_xtr_crd_add                       /* [fnc] Add all coordinates to extraction
 (trv_tbl_sct * const trv_tbl);        /* I/O [sct] Traversal table */
 
 void
+nco_xtr_lst /* [fnc] Print extraction list and exit */
+(trv_tbl_sct * const trv_tbl); /* I [sct] GTT (Group Traversal Table) */
+
+void
 nco_xtr_ND_lst /* [fnc] Print extraction list of N>=D variables and exit */
 (trv_tbl_sct * const trv_tbl); /* I [sct] GTT (Group Traversal Table) */
 
diff --git a/src/nco/nco_md5.c b/src/nco/nco_md5.c
index 2b97e63..13474f6 100644
--- a/src/nco/nco_md5.c
+++ b/src/nco/nco_md5.c
@@ -44,7 +44,7 @@ nco_md5_free /* [fnc] Free MD5 configuration structure */
   if(md5->att_nm) md5->att_nm=(char *)nco_free(md5->att_nm);
   if(md5) md5=(md5_sct *)nco_free(md5);
   return md5;
-} /* end nco_md5_ini() */
+} /* end nco_md5_free() */
 
 void
 nco_md5_chk /* [fnc] Perform and optionally compare MD5 digest(s) on hyperslab */
@@ -78,6 +78,7 @@ nco_md5_chk /* [fnc] Perform and optionally compare MD5 digest(s) on hyperslab *
 
   /* MD5 digest of hyperslab already in RAM */
   (void)nco_md5_chk_ram(var_sz_byt,vp,md5_dgs_hxd_sng_ram);
+  if(nco_prg_id == ncks && nco_dbg_lvl_get() >= nco_dbg_fl) (void)fprintf(stderr,"%s: INFO sizeof(%s MD5 buffer) = %ld B\n",nco_prg_nm_get(),var_nm,var_sz_byt);
   if((nco_prg_id == ncks && nco_dbg_lvl_get() >= nco_dbg_std) ||
      ((nco_prg_id == ncecat || nco_prg_id == ncrcat) && nco_dbg_lvl_get() >= nco_dbg_var) ||
      False)
diff --git a/src/nco/nco_msa.c b/src/nco/nco_msa.c
index aa12cea..bcdd113 100644
--- a/src/nco/nco_msa.c
+++ b/src/nco/nco_msa.c
@@ -1358,13 +1358,17 @@ nco_cpy_var_val_mlt_lmt_trv         /* [fnc] Copy variable data from input to ou
     var_out=var_in;
   } /* !Array */
 
-  /* Allow ncks to autoconvert netCDF4 atomic types to netCDF3 output type ... */
+  /* Allow ncks to autoconvert netCDF4 atomic types to netCDF3- or CDF5-supported output type ... */
   if(nco_prg_id_get() == ncks){
     /* File format needed for decision tree and to enable netCDF4 features */
     (void)nco_inq_format(out_id,&fl_fmt);
-    if(fl_fmt != NC_FORMAT_NETCDF4 && !nco_typ_nc3(var_typ_in)){
-      if(nco_dbg_lvl_get() >= nco_dbg_std) (void)fprintf(stdout,"%s: INFO Autoconverting variable %s from %s of netCDF4 type %s to netCDF3 type %s\n",nco_prg_nm_get(),var_nm,(nbr_dim > 0) ? "array" : "scalar",nco_typ_sng(var_typ_in),nco_typ_sng(nco_typ_nc4_nc3(var_typ_out)));
-      var_typ_out=nco_typ_nc4_nc3(var_typ_in);
+
+    if(fl_fmt == NC_FORMAT_NETCDF4) var_typ_out=var_typ_in;
+    else if(fl_fmt == NC_FORMAT_CLASSIC || fl_fmt == NC_FORMAT_64BIT_OFFSET || fl_fmt == NC_FORMAT_NETCDF4_CLASSIC) var_typ_out=nco_typ_nc4_nc3(var_typ_in);
+    else if(fl_fmt == NC_FORMAT_64BIT_DATA) var_typ_out=nco_typ_nc4_nc5(var_typ_in);
+
+    if(var_typ_out != var_typ_in){
+      if(nco_dbg_lvl_get() >= nco_dbg_std) (void)fprintf(stdout,"%s: INFO Autoconverting variable %s from %s of type %s to %s-supported type %s\n",nco_prg_nm_get(),var_nm,(nbr_dim > 0) ? "array" : "scalar",nco_typ_sng(var_typ_in),nco_fmt_sng(fl_fmt),nco_typ_sng(var_typ_out));
 
       if(var_typ_in == NC_STRING && var_typ_out == NC_CHAR){
 	/* Special case for string conversion:
@@ -1372,7 +1376,7 @@ nco_cpy_var_val_mlt_lmt_trv         /* [fnc] Copy variable data from input to ou
 	   Too many other limits on string translation to list them all :)
 	   This only handles plain strings */
 	if(var_out.sz > 1L){
-	  (void)fprintf(stdout,"%s: ERROR Unable to autoconvert. %s reports string variable %s is an array of %li strings. Autoconversion of string variables is currently limited to scalar string variables (that contain a single string), and does not work on arrays of strings. Even single strings are currently translated incorrectly because each string is typically a distinct size, meaning a distinct phony dimension would need to be created for every single string and NCO is loathe to do that.  [...]
+	  (void)fprintf(stdout,"%s: ERROR Unable to autoconvert. %s reports string variable %s is an array of %li strings. Autoconversion of string variables is currently limited to scalar string variables (that contain a single string), and does not work on arrays of strings. Even single strings are currently translated incorrectly because each string is typically a distinct size, meaning a distinct phony dimension would need to be created for every single string and NCO is loathe to do that.  [...]
 	  nco_exit(EXIT_FAILURE);
 	} /* endif err */
 
@@ -1659,7 +1663,7 @@ nco_msa_var_get_sct                 /* [fnc] Define a 'var_sct' hyperslab fields
   const trv_sct * const var_trv)    /* I [sct] GTT variable */
 {
   /* Same as nco_msa_var_get_trv() but with input 'var_trv' '
-  TODO Deprecate nco_msa_var_get_trv() and use this function */
+     TODO Deprecate nco_msa_var_get_trv() and use this function */
 
   const char fnc_nm[] = "nco_msa_var_get_sct()"; /* [sng] Function name  */
 
diff --git a/src/nco/nco_netcdf.c b/src/nco/nco_netcdf.c
index 965c718..34f34de 100644
--- a/src/nco/nco_netcdf.c
+++ b/src/nco/nco_netcdf.c
@@ -78,7 +78,7 @@ nco_err_exit /* [fnc] Print netCDF error message, routine name, then exit */
   switch(rcd){
   case NC_EACCESS:  /* netcdf.h added NC_EACCESS in ~2012 */
     (void)fprintf(stdout,"ERROR NC_EACCESS Access failure\nHINT: NC_EACCESS errors signify a problem receiving data from a DAP server. This can occur, e.g., when NCO requests (with nco_var_get()) more data than the server is configured to dispense at one time. A workaround might be to request smaller chunks of data at one time. This can be accomplished by accessing hyperslabs or multi-slabs of data as described at http://nco.sf.net/nco.html#mlt\n"); break; /* NB: NC_EACCESS added to netc [...]
-  case NC_EBADTYPE: (void)fprintf(stdout,"ERROR NC_BADTYPE Not a netCDF data type\nHINT: NC_EBADTYPE errors can occur when NCO tries to write netCDF4 features to a netCDF3 file, and, separately, when a variable's type conflicts with its _FillValue type. 1. netCDF4 features that cannot be defined in a netCDF3 file, and that thus will trigger this error, include groups and netCDF4 atomic types (e.g., NC_STRING, NC_UBYTE). To avoid this, remove all netCDF4 features before attempting to conv [...]
+  case NC_EBADTYPE: (void)fprintf(stdout,"ERROR NC_BADTYPE Not a netCDF data type\nHINT: NC_EBADTYPE errors can occur when NCO tries to write netCDF4 features to a netCDF3 file, and, separately, when a variable's type conflicts with its _FillValue type. 1. netCDF4 features that cannot be defined in a netCDF3 file, and that thus will trigger this error, include groups and netCDF4 atomic types (e.g., NC_STRING, NC_UBYTE, NC_INT64). To avoid this, remove all netCDF4 features before attempti [...]
   case NC_ECANTWRITE: (void)fprintf(stdout,"ERROR NC_ECANTWRITE Can't write file\nHINT: NC_ECANTWRITE errors can occur when NCO tries to write to an HDF5 file that is not netCDF4-compliant. One workaround is translate the file to a netCDF4-compliant file first, e.g., with \'ncks in.h5 out.nc\'.\n"); break;
   case NC_EINVAL: (void)fprintf(stdout,"ERROR NC_EINVAL Invalid argument\nHINT: NC_EINVAL errors can occur for many reasons. Three common ones are described here. 1. When invalid chunking directives are given, e.g., to unchunk a record variable or to chunk a variable with an invalid size (such as zero or larger than a fixed dimension). This is the most frequent/likely cause in our experience. 2. When HDF4-enabled NCO attempts to directly write to an HDF4 (not HDF5) file. Not all HDF5 cal [...]
   case NC_EIO: /* netcdf.h added NC_EIO in ~2012 */
@@ -97,7 +97,7 @@ nco_err_exit /* [fnc] Print netCDF error message, routine name, then exit */
      (void)fprintf(stdout,"2. NCO attempts to read other filetypes (HDF4, HDF-EOS2, pnetCDF/CDF5) for which support must be (but was not) enabled at netCDF build-time. NCO can access HDF4 files if NCO is first re-linked to a version of netCDF configured with the --enable-hdf4 option. This is a non-standard netCDF build option described here: http://www.unidata.ucar.edu/software/netcdf/docs/build_hdf4.html. NCO can access pnetCDF/CDF5 files if NCO is first re-linked to netCDF version 4.4. [...]
   case NC_ERANGE: (void)fprintf(stdout,"ERROR NC_ERANGE Result not representable in output file\nHINT: NC_ERANGE errors typically occur after an arithmetic operation results in a value not representible by the output variable type when NCO attempts to write those values to an output file.  Possible workaround: Promote the variable to higher precision before attempting arithmetic.  For example,\nncap2 -O -s \'foo=double(foo);\' in.nc in.nc\nFor more details, see http://nco.sf.net/nco.html [...]
   case NC_EUNLIMIT: (void)fprintf(stdout,"ERROR NC_UNLIMIT NC_UNLIMITED size already in use\nHINT: NC_EUNLIMIT errors can occur when attempting to convert netCDF4 classic files that contain multiple record dimensions into a netCDF3 file that allows only one record dimension. In this case, try first fixing the excess record dimension(s) (with, e.g., ncks --fix_rec_dmn) and then convert to netCDF3. For more details, see http://nco.sf.net/nco.html#fix_rec_dmn\n"); break;
-  case NC_EVARSIZE: (void)fprintf(stdout,"ERROR NC_EVARSIZE One or more variable sizes violate format constraints\nHINT: NC_EVARSIZE errors can occur when attempting to aggregate netCDF3 classic files together into outputs that exceed the capacity of the netCDF3 classic file format, e.g., a variable with size in excess of 2^31 bytes. In this case, try altering the output file type to netCDF3 classic with 64-bit offsets (with --64) or to netCDF4 (with -4). For more details, see http://nco [...]
+  case NC_EVARSIZE: (void)fprintf(stdout,"ERROR NC_EVARSIZE One or more variable sizes violate format constraints\nHINT: NC_EVARSIZE errors occur when attempting to copy or aggregate input files together into an output file that exceeds the per-file capacity of the output file format, and when trying to copy, aggregate, or define individual variables that exceed the per-variable constraints of the output file format. The per-file limit of all netCDF formats is not less than 8 EiB on mode [...]
   } /* end switch */
 
   /* Print NCO-generated error message, if any */
@@ -501,63 +501,41 @@ nco_fmt_sng /* [fnc] Convert netCDF file format enum to string */
   return (char *)NULL;
 } /* end nco_fmt_sng() */
 
-const char * /* O [sng] String describing file format for hidden attributes */
-nco_fmt_hdn_sng /* [fnc] Convert netCDF file format enum to string for hidden attributes */
-(const int fl_fmt) /* I [enm] netCDF file format */
-{
-  /* Purpose: Convert netCDF file format enum to string for hidden attributes
-     20131229: String values obtained from ncgen man page */
-  switch(fl_fmt){
-  case NC_FORMAT_CLASSIC:
-    return "classic";
-  case NC_FORMAT_64BIT_OFFSET:
-    return "64-bit offset";
-  case NC_FORMAT_NETCDF4:
-    return "netCDF-4";
-  case NC_FORMAT_NETCDF4_CLASSIC:
-    return "netCDF-4 classic model";
-  case NC_FORMAT_CDF5:
-    return "64-bit data";
-  default: nco_dfl_case_nc_type_err(); break;
-  } /* end switch */
-
-  /* Some compilers, e.g., SGI cc, need return statement to end non-void functions */
-  return (char *)NULL;
-} /* end nco_fmt_hdn_sng() */
-
 const char * /* O [sng] String describing extended file format */
 nco_fmt_xtn_sng /* [fnc] Convert netCDF extended file format enum to string */
 (const int fl_fmt_xtn) /* I [enm] netCDF extended file format */
 {
   /* Purpose: Convert netCDF extended file format enum to string */
+  /* NB: nc_inq_format_extended() introduced in netCDF 4.3.1, but NC_LIB_VERSION does not work until netCDF 4.4.0 */
 #if NC_LIB_VERSION < 440
     switch(fl_fmt_xtn){
+      /* NB: netCDF < 4.3.1 unaware of NC_FORMATX_* tokens */
     case NC_FORMAT_NC3:
-      return "NC_FORMAT_NC3";
+      return "NC_FORMATX_NC3";
     case NC_FORMAT_NC_HDF5:
-      return "NC_FORMAT_HDF5";
+      return "NC_FORMATX_NC_HDF5";
     case NC_FORMAT_NC_HDF4:
-      return "NC_FORMAT_HDF4";
+      return "NC_FORMATX_NC_HDF4";
     case NC_FORMAT_PNETCDF:
-      return "NC_FORMAT_PNETCDF";
+      return "NC_FORMATX_PNETCDF";
     case NC_FORMAT_DAP2:
-      return "NC_FORMAT_DAP2";
+      return "NC_FORMATX_DAP2";
     case NC_FORMAT_DAP4:
-      return "NC_FORMAT_DAP4";
+      return "NC_FORMATX_DAP4";
     case NC_FORMAT_UNDEFINED:
-      return "NC_FORMAT_UNDEFINED";
+      return "NC_FORMATX_UNDEFINED";
     default: nco_dfl_case_nc_type_err(); break;
     } /* end switch */
 #else /* !NC_LIB_VERSION */
     switch(fl_fmt_xtn){
     case NC_FORMATX_NC3:
-      return "NC_FORMATX_NC3";
+      return "NC_FORMATX_NC3"; /* NB: CDF5 self-report NC_FORMATX_NC3 when files opened through netCDF serial API */
     case NC_FORMATX_NC_HDF5:
-      return "NC_FORMATX_HDF5";
+      return "NC_FORMATX_NC_HDF5";
     case NC_FORMATX_NC_HDF4:
-      return "NC_FORMATX_HDF4";
+      return "NC_FORMATX_NC_HDF4";
     case NC_FORMATX_PNETCDF:
-      return "NC_FORMATX_PNETCDF";
+      return "NC_FORMATX_PNETCDF"; /* CDF5 files report NC_FORMATX_PNETCDF when opened through PnetCDF parallel API */
     case NC_FORMATX_DAP2:
       return "NC_FORMATX_DAP2";
     case NC_FORMATX_DAP4:
@@ -572,6 +550,30 @@ nco_fmt_xtn_sng /* [fnc] Convert netCDF extended file format enum to string */
   return (char *)NULL;
 } /* end nco_fmt_xtn_sng() */
 
+const char * /* O [sng] String describing file format for hidden attributes */
+nco_fmt_hdn_sng /* [fnc] Convert netCDF file format enum to string for hidden attributes */
+(const int fl_fmt) /* I [enm] netCDF file format */
+{
+  /* Purpose: Convert netCDF file format enum to string for hidden attributes
+     20131229: String values obtained from ncgen man page */
+  switch(fl_fmt){
+  case NC_FORMAT_CLASSIC:
+    return "classic";
+  case NC_FORMAT_64BIT_OFFSET:
+    return "\"64-bit offset\"";
+  case NC_FORMAT_NETCDF4:
+    return "netCDF-4";
+  case NC_FORMAT_NETCDF4_CLASSIC:
+    return "\"netCDF-4 classic model\"";
+  case NC_FORMAT_CDF5:
+    return "\"64-bit data\"";
+  default: nco_dfl_case_nc_type_err(); break;
+  } /* end switch */
+
+  /* Some compilers, e.g., SGI cc, need return statement to end non-void functions */
+  return (char *)NULL;
+} /* end nco_fmt_hdn_sng() */
+
 const char * /* O [sng] String describing endianness for hidden attributes */
 nco_ndn_sng /* [fnc] Convert netCDF endianness enum to string for hidden attributes */
 (const int flg_ndn) /* I [enm] netCDF endianness */
@@ -896,6 +898,64 @@ nco_close(const int nc_id)
   /* Purpose: Wrapper for nc_close() */
   const char fnc_nm[]="nco_close()";
   int rcd=NC_NOERR;
+#if NC_LIB_VERSION >= 440
+  /* 20170912 Diagnose whether file may be (for input files) or is (for output files) infected by CDF5 bug */
+  int fl_fmt; /* [enm] File format */
+  int fl_fmt_xtn; /* [enm] Extended file format */
+  int mode; /* [enm] Mode */
+  rcd=nc_inq_format(nc_id,&fl_fmt);
+  rcd=nc_inq_format_extended(nc_id,&fl_fmt_xtn,&mode);
+  if(fl_fmt == NC_FORMAT_CDF5){
+    char *path=NULL;
+    char var_nm[NC_MAX_NAME+1L];
+    int dmn_id[NC_MAX_DIMS];
+    int var_id[NC_MAX_VARS];
+    int bug_idx=-1;
+    int bug_nbr=0;
+    int dmn_idx;
+    int dmn_nbr;
+    int var_idx;
+    int var_nbr;
+    nc_type var_typ;
+    size_t dmn_sz[NC_MAX_DIMS];
+    size_t pathlen;
+    size_t var_sz;
+    rcd=nc_inq_path(nc_id,&pathlen,NULL);
+    path=(char *)malloc(pathlen*sizeof(char));
+    rcd=nc_inq_path(nc_id,NULL,path);
+    (void)fprintf(stdout,"INFO: %s currently closing and sniffing-around for corruption in CDF5 file %s\n",fnc_nm,path);
+    //(void)fprintf(stdout,"DEBUG: %s reports NC_LIB_VERSION = %d.\n",fnc_nm,NC_LIB_VERSION);
+    //(void)fprintf(stdout,"DEBUG: %s reports file format and extended format are %d = %s and %d = %s, respectively\n",fnc_nm,fl_fmt,nco_fmt_sng(fl_fmt),fl_fmt_xtn,nco_fmt_xtn_sng(fl_fmt_xtn));
+    //(void)fprintf(stdout,"DEBUG: %s reports file mode is %o (octal) = %d (decimal) = %04x (hex)\n",fnc_nm,mode,(unsigned)mode,(unsigned)mode);
+    rcd=nc_inq_varids(nc_id,&var_nbr,var_id);
+    for(var_idx=0;var_idx<var_nbr;var_idx++){
+      var_sz=1L;
+      rcd=nc_inq_varndims(nc_id,var_id[var_idx],&dmn_nbr);
+      rcd=nc_inq_vardimid(nc_id,var_id[var_idx],dmn_id);
+      for(dmn_idx=0;dmn_idx<dmn_nbr;dmn_idx++){
+	rcd=nc_inq_dimlen(nc_id,dmn_id[dmn_idx],dmn_sz+dmn_idx);
+	var_sz*=dmn_sz[dmn_idx];
+      } /* !dmn_idx */
+      rcd=nc_inq_vartype(nc_id,var_id[var_idx],&var_typ);
+      var_sz*=nco_typ_lng(var_typ);
+      if(var_sz > 4ULL*1073741824ULL){ /* 4 GiB */
+	rcd=nc_inq_varname(nc_id,var_id[var_idx],var_nm);
+	(void)fprintf(stdout,"WARNING: %s reports variable %s is \"large\" (%lu B =~ %lu GiB > 4294967296 B = 4 GiB)\n",fnc_nm,var_nm,(unsigned long)var_sz,(unsigned long)(1.0*var_sz/1073741824UL));
+	bug_idx=var_idx;
+	bug_nbr++;
+      } /* !var_sz */
+    } /* !var_idx */
+    if(path) free((void *)path);
+    if(bug_nbr > 0){
+      (void)fprintf(stdout,"WARNING: %s reports total number of \"large\" (> 4 GiB) variables in this CDF5 file is %d\n",fnc_nm,bug_nbr);
+      if(bug_nbr > 1 || bug_idx != var_nbr-1){
+	(void)fprintf(stdout,"WARNING: %s reports at least one \"large\" (> 4 GiB) variable in this CDF5 file is not the last variable defined. Writing CDF5 files with large variables is buggy in netCDF library versions 4.4.0-4.4.1 unless there is only one such \"large\" variable and it is the last to be defined. Input datasets (that NCO reads) that were originally written by PnetCDF are likely fine (because PnetCDF writes CDF5 through a different mechanism than serial programs like NCO's write [...]
+      }else{
+	(void)fprintf(stdout,"WARNING: Congratulations! %s reports that the only \"large\" (> 4 GiB) variable in this CDF5 file appears to be the last variable defined. Writing CDF5 files with large variables is buggy in netCDF library versions 4.4.0-4.4.1 (this NCO is linked to netCDF library version %d) unless there is only one such \"large\" variable and it is the last to be defined. Therefore this file may be fine, i.e., not corrupted by this nasty netCDF CDF5 bug: https://github.com/Unidat [...]
+      } /* !bug_idx */
+    } /* !bug_nbr */
+  } /* !CDF5 */
+#endif /* !NC_LIB_VERSION */
   rcd=nc_close(nc_id);
   if(rcd != NC_NOERR) nco_err_exit(rcd,fnc_nm);
   return rcd;
@@ -911,15 +971,36 @@ nco_inq(const int nc_id,int * const dmn_nbr_fl,int * const var_nbr_fl,int * cons
   return rcd;
 } /* end nco_inq() */
 
-#ifdef NEED_NC_INQ_FORMAT
-int nc_inq_format(int nc_id, int * const fl_fmt)
+  /* NB: nc_inq_path() introduced in netCDF 4.3.2, but NC_LIB_VERSION does not work until netCDF 4.4.0 */
+#ifndef HAVE_NC_INQ_PATH
+int nc_inq_path(const int nc_id,size_t * const pathlen,char * const path)
+{
+  /* Purpose: 20170913: Stub for nc_inq_path(), introduced in netCDF 4.3.2
+     Forward compatibility prototype required for systems with netCDF < 4.3.2 */
+  *pathlen=0L;
+  *path=NULL;
+  return NC_NOERR+0*nc_id; /* CEWI */
+} /* !nc_inq_path() */
+#endif /* !HAVE_NC_INQ_PATH */
+int nco_inq_path(const int nc_id,size_t * const pathlen,char * const path)
+{
+  /* Purpose: Wrapper for nc_inq_path() */
+  int rcd;
+  rcd=nc_inq_path(nc_id,pathlen,path);
+  if(rcd != NC_NOERR) nco_err_exit(rcd,"nco_inq_format()");
+  return rcd;
+} /* !nco_inq_path() */
+
+  /* NB: nc_inq_format() introduced in netCDF 3.6.1, but NC_LIB_VERSION does not work until netCDF 4.4.0 */
+#ifndef HAVE_NC_INQ_FORMAT
+int nc_inq_format(int nc_id,int * const fl_fmt)
 {
-  /* Purpose: Stub for nc_inq_format(), which appeared in netCDF 3.6.1 or 3.6.2
+  /* Purpose: Stub for nc_inq_format(), introduced in netCDF 3.6.1 or 3.6.2
      20070901 Current OPeNDAP does not have nc_inq_format() and thus requires this stub */
   *fl_fmt=NC_FORMAT_CLASSIC; /* [enm] Output file format */
   return NC_NOERR+0*nc_id; /* CEWI */
 } /* end nc_inq_format() */
-#endif /* !NEED_NC_INQ_FORMAT */
+#endif /* !HAVE_NC_INQ_FORMAT */
 int
 nco_inq_format(const int nc_id,int * const fl_fmt)
 {
@@ -932,6 +1013,7 @@ nco_inq_format(const int nc_id,int * const fl_fmt)
   return rcd;
 } /* end nco_inq_format() */
 
+  /* NB: nc_inq_format_extended() introduced in netCDF 4.3.1, but NC_LIB_VERSION does not work until netCDF 4.4.0 */
 #ifndef NC_HAVE_INQ_FORMAT_EXTENDED
 int nc_inq_format_extended(const int nc_id,int * const fl_fmt,int * const mode)
 {
@@ -950,6 +1032,7 @@ nco_inq_format_extended(const int nc_id,int * const fl_fmt,int * const mode)
   int rcd=NC_NOERR;
   /* NB: 20131222: Function nc_inq_format_extended(int ncid,int *formatp,int *mode) appeared in netCDF 4.3.1-rc7
      Forward compatibility prototype required for systems with netCDF < 4.3.1 */
+  /* NUG: "netCDF API presents file as if it had the format specified by nc_inq_format(). The true file format, however, may not even be a netCDF file; it might be DAP, HDF4, or PNETCDF, for example. nc_inq_format_extended() returns that true file type. It also returns the effective mode for the file. */
   rcd=nc_inq_format_extended(nc_id,fl_fmt,mode);
   if(rcd != NC_NOERR) nco_err_exit(rcd,"nco_inq_format_extended()");
   return rcd;
@@ -1777,7 +1860,7 @@ nco_put_var(const int nc_id,const int var_id,const void * const vp,const nc_type
   case NC_SHORT: rcd=nc_put_var_short(nc_id,var_id,(const short *)vp); break;
   case NC_CHAR: rcd=NCO_PUT_VAR_CHAR(nc_id,var_id,(const nco_char *)vp); break;
   case NC_BYTE: rcd=NCO_PUT_VAR_BYTE(nc_id,var_id,(const nco_byte *)vp); break;
-#ifdef ENABLE_NETCDF4
+# ifdef ENABLE_NETCDF4
   case NC_UBYTE: rcd=NCO_PUT_VAR_UBYTE(nc_id,var_id,(const nco_ubyte *)vp); break;
   case NC_USHORT: rcd=NCO_PUT_VAR_USHORT(nc_id,var_id,(const nco_ushort *)vp); break;
   case NC_UINT: rcd=NCO_PUT_VAR_UINT(nc_id,var_id,(const nco_uint *)vp); break;
@@ -1785,7 +1868,7 @@ nco_put_var(const int nc_id,const int var_id,const void * const vp,const nc_type
   case NC_UINT64: rcd=NCO_PUT_VAR_UINT64(nc_id,var_id,(const nco_uint64 *)vp); break;
     /* NC_STRING prototype next causes same compiler warnings described in nco_put_var1() above */
   case NC_STRING: rcd=NCO_PUT_VAR_STRING(nc_id,var_id,(const char **)vp); break;
-#endif /* !ENABLE_NETCDF4 */
+# endif /* !ENABLE_NETCDF4 */
   default: nco_dfl_case_nc_type_err(); break;
   } /* end switch */
   if(rcd != NC_NOERR){
@@ -1827,6 +1910,7 @@ int
 nco_put_var1(const int nc_id,const int var_id,const long * const srt,const void * const vp,const nc_type type)
 {
   /* Purpose: Wrapper for nc_put_var1_*() */
+  const char fnc_nm[]="nco_put_var1()";
   int rcd=NC_NOERR;
   switch(type){
   case NC_FLOAT: rcd=nc_put_var1_float(nc_id,var_id,(const size_t *)srt,(const float *)vp); break;
@@ -1863,6 +1947,11 @@ nco_put_var1(const int nc_id,const int var_id,const long * const srt,const void
 #endif /* !ENABLE_NETCDF4 */
   default: nco_dfl_case_nc_type_err(); break;
   } /* end switch */
+  if(rcd != NC_NOERR){
+    char var_nm[NC_MAX_NAME+1L];
+    (void)nco_inq_varname(nc_id,var_id,var_nm);
+    (void)fprintf(stdout,"ERROR: %s failed to nc_put_var1() variable \"%s\"\n",fnc_nm,var_nm);
+  } /* endif */
   if(rcd != NC_NOERR) nco_err_exit(rcd,"nco_put_var1()");
   return rcd;
 } /* end nco_put_var1 */
@@ -1956,6 +2045,7 @@ int
 nco_put_vars(const int nc_id,const int var_id,const long * const srt,const long * const cnt,const long * const srd,const void * const vp,const nc_type type)
 {
   /* Purpose: Wrapper for nc_put_vars_*() */
+  const char fnc_nm[]="nco_put_vars()";
   int rcd=NC_NOERR;
   switch(type){
   case NC_FLOAT: rcd=nc_put_vars_float(nc_id,var_id,(const size_t *)srt,(const size_t *)cnt,(const ptrdiff_t *)srd, (const float *)vp); break;
diff --git a/src/nco/nco_netcdf.h b/src/nco/nco_netcdf.h
index 36dce79..1e4c2cb 100644
--- a/src/nco/nco_netcdf.h
+++ b/src/nco/nco_netcdf.h
@@ -122,7 +122,10 @@
 # define NC_NOSHUFFLE 0
 #endif
 
-  /* Seven compatibility tokens introduced 20131222 in netCDF 4.3.1-rc7 netcdf.h */
+  /* 20131222: Seven compatibility tokens introduced in netCDF 4.3.1-rc7 netcdf.h
+     20151222: Tokens are superseded in netCDF 4.4.0-RC4 netcdf.h by same tokens with "FORMATX" instead of "FORMAT"
+     This disambiguates extended format (FORMATX) flags returned by nc_inq_format_extended() from format flags (e.g., NC_FORMAT_CLASSIC) returned by nco_inq_format()
+     Also added NC_FORMAT_NC4 as alias to NC_FORMAT_NC_HDF5 */
 #ifndef NC_FORMAT_UNDEFINED
 # define NC_FORMAT_UNDEFINED (0)
 #else
@@ -132,10 +135,13 @@
 # define NC_FORMAT_NC3     (1)
 #endif
 #ifndef NC_FORMAT_NC_HDF5
-# define NC_FORMAT_NC_HDF5 (2) /*cdf 4 subset of HDF5 */
+# define NC_FORMAT_NC_HDF5 (2) /* netCDF-4 subset of HDF5 */
+#endif
+#ifndef NC_FORMAT_NC4
+# define NC_FORMAT_NC4 NC_FORMAT_NC_HDF5 /* alias */
 #endif
 #ifndef NC_FORMAT_NC_HDF4
-# define NC_FORMAT_NC_HDF4 (3) /* netcdf 4 subset of HDF4 */
+# define NC_FORMAT_NC_HDF4 (3) /* netCDF-4 subset of HDF4 */
 #endif
 #ifndef NC_FORMAT_PNETCDF
 # define NC_FORMAT_PNETCDF (4)
@@ -147,6 +153,33 @@
 # define NC_FORMAT_DAP4    (6)
 #endif
 
+#ifndef NC_FORMATX_UNDEFINED
+# define NC_FORMATX_UNDEFINED (0)
+#else
+# define NC_HAVE_INQ_FORMATX_EXTENDED
+#endif
+#ifndef NC_FORMATX_NC3
+# define NC_FORMATX_NC3     (1)
+#endif
+#ifndef NC_FORMATX_NC_HDF5
+# define NC_FORMATX_NC_HDF5 (2) /* netCDF4 subset of HDF5 */
+#endif
+#ifndef NC_FORMATX_NC4
+# define NC_FORMATX_NC4 NC_FORMATX_NC_HDF5 /* alias */
+#endif
+#ifndef NC_FORMATX_NC_HDF4
+# define NC_FORMATX_NC_HDF4 (3) /* netcdf4 subset of HDF4 */
+#endif
+#ifndef NC_FORMATX_PNETCDF
+# define NC_FORMATX_PNETCDF (4)
+#endif
+#ifndef NC_FORMATX_DAP2
+# define NC_FORMATX_DAP2    (5)
+#endif
+#ifndef NC_FORMATX_DAP4
+# define NC_FORMATX_DAP4    (6)
+#endif
+
 /* Three compatibility tokens from pnetcdf.h introduced to NCO 20140604 
    First actually used 20160114 */
 #ifndef NC_64BIT_DATA
@@ -290,7 +323,7 @@ int nco_open_par  (const char * const fl_nm,const int  mode,MPI_Comm mpi_cmm,MPI
 int nco_var_par_access(const int nc_id,const int var_id,const int par_access);
 # endif /* !HAVE_NETCDF4_H */
 # ifdef PNETCDF_EXPOSED_API
-/* pnetCDF routines defined by ANL Parallel netCDF Library libpnetcdf.a */
+/* PnetCDF routines defined by ANL Parallel netCDF Library libpnetcdf.a */
 int ncompi_create(MPI_Comm mpi_cmm,const char * const fl_nm,const int cmode,MPI_Info mpi_nfo,int * const nc_id);
 int ncompi_open  (MPI_Comm mpi_cmm,const char * const fl_nm,const int omode,MPI_Info mpi_nfo,int * const nc_id);
 # endif /* !PNETCDF_EXPOSED_API */
@@ -311,14 +344,21 @@ int nco_sync(const int nc_id);
 int nco_abort(const int nc_id);
 int nco_close(const int nc_id);
 int nco_inq(const int nc_id,int * const dmn_nbr_fl,int * const var_nbr_fl,int * const att_glb_nbr,int * const rec_dmn_id);
-#if NEED_NC_INQ_FORMAT
-/* Stub for nc_inq_format(), which appeared in netCDF 3.6.1 or 3.6.2 */
-int nc_inq_format(int nc_id,int * const fl_fmt);
-#endif /* !NEED_NC_INQ_FORMAT */
+  /* NB: nc_inq_path() introduced in netCDF 4.3.2, but NC_LIB_VERSION does not work until netCDF 4.4.0 */
+#ifndef HAVE_NC_INQ_PATH
+  int nc_inq_path(const int nc_id,size_t * const pathlen,char * const path);
+#endif /* !HAVE_NC_INQ_PATH */
+int nco_inq_path(const int nc_id,size_t * const pathlen,char * const path);
+  /* NB: nc_inq_format() introduced in netCDF 3.6.1, but NC_LIB_VERSION does not work until netCDF 4.4.0 */
+#ifndef HAVE_NC_INQ_FORMAT
+  /* Stub for nc_inq_format(), introduced in netCDF 3.6.1 or 3.6.2 */
+  int nc_inq_format(int nc_id,int * const fl_fmt);
+#endif /* !HAVE_NC_INQ_FORMAT */
 int nco_inq_format(const int nc_id,int * const fl_fmt);
+  /* NB: nc_inq_format_extended() introduced in netCDF 4.3.1, but NC_LIB_VERSION does not work until netCDF 4.4.0 */
 #ifndef NC_HAVE_INQ_FORMAT_EXTENDED
-/* 20131222: Stub for nc_inq_format_extended(), which appeared in netCDF 4.3.1-rc7 */
-int nc_inq_format_extended(int nc_id,int * const fl_fmt,int * const mode);
+  /* 20131222: Stub for nc_inq_format_extended(), introduced in netCDF 4.3.1-rc7 */
+  int nc_inq_format_extended(int nc_id,int * const fl_fmt,int * const mode);
 #endif /* !NC_HAVE_INQ_FORMAT_EXTENDED */
 int nco_inq_format_extended(const int nc_id,int * const fl_fmt,int * const mode);
 int nco_inq_ncid(const int nc_id,const char * const grp_nm,int * const grp_id);
diff --git a/src/nco/nco_prn.c b/src/nco/nco_prn.c
index 3ad63d3..114aefe 100644
--- a/src/nco/nco_prn.c
+++ b/src/nco/nco_prn.c
@@ -1,5 +1,4 @@
 /* $Header$ */
-/* $Header$ */
 
 /* Purpose: Print variables, attributes, metadata */
 
@@ -1380,6 +1379,9 @@ nco_prn_var_dfn                     /* [fnc] Print variable metadata */
   size_t cnk_sz[NC_MAX_DIMS]; /* [nbr] Chunk sizes */
   size_t dmn_sz[NC_MAX_DIMS]; /* [nbr] Dimension sizes */
 
+  size_t ram_sz_crr;
+  static size_t ram_sz_ttl=0L;
+
   /* Obtain group ID */
   (void)nco_inq_grp_full_ncid(nc_id,var_trv->grp_nm_fll,&grp_id);
 
@@ -1399,27 +1401,19 @@ nco_prn_var_dfn                     /* [fnc] Print variable metadata */
   /* Loop over dimensions */
   for(dmn_idx=0;dmn_idx<nbr_dim;dmn_idx++){
 
-    /* This dimension has a coordinate variable */
+    /* Dimension has coordinate variable */
     if(var_trv->var_dmn[dmn_idx].is_crd_var){
-
       /* Get coordinate from table */
       crd_sct *crd=var_trv->var_dmn[dmn_idx].crd;
-
-      /* Use the hyperslabbed size */
+      /* Use hyperslabbed size */
       dmn_sz[dmn_idx]=crd->lmt_msa.dmn_cnt;
-
       CRR_DMN_IS_REC_IN_INPUT[dmn_idx]=crd->is_rec_dmn;
-
-    }else if(var_trv->var_dmn[dmn_idx].is_crd_var == False){
-
+    }else{
       /* Dimension does not have associated coordinate variable */
       /* Get unique dimension */
-
       dmn_trv_sct *dmn_trv=var_trv->var_dmn[dmn_idx].ncd;
-
-      /* Use the hyperslabbed size */
+      /* Use hyperslabbed size */
       dmn_sz[dmn_idx]=dmn_trv->lmt_msa.dmn_cnt;
-
       CRR_DMN_IS_REC_IN_INPUT[dmn_idx]=dmn_trv->is_rec_dmn;
     } /* end else */
 
@@ -1432,7 +1426,8 @@ nco_prn_var_dfn                     /* [fnc] Print variable metadata */
 
   if(prn_flg->trd){
     if(nco_fmt_xtn_get() != nco_fmt_xtn_hdf4 || NC_LIB_VERSION >= 433) (void)fprintf(stdout,"%*s%s: type %s, %i dimension%s, %i attribute%s, compressed? %s, chunked? %s, packed? %s\n",prn_ndn,spc_sng,var_trv->nm,nco_typ_sng(var_typ),nbr_dim,(nbr_dim == 1) ? "" : "s",nbr_att,(nbr_att == 1) ? "" : "s",(deflate) ? "yes" : "no",(srg_typ == NC_CHUNKED) ? "yes" : "no",(packing) ? "yes" : "no"); else (void)fprintf(stdout,"%*s%s: type %s, %i dimension%s, %i attribute%s, compressed? HDF4_UNKNOWN, [...]
-    if(nco_dbg_lvl_get() >= nco_dbg_var) (void)fprintf(stdout,"%*s%s id = %d\n",prn_ndn,spc_sng,var_trv->nm,var_id);
+    /* 20170913: Typically users not interested in variable ID. However, ID helps diagnose susceptibility to CDF5 bug */
+    if(nco_dbg_lvl_get() >= nco_dbg_var) (void)fprintf(stdout,"%*s%s ID = netCDF define order = %d\n",prn_ndn,spc_sng,var_trv->nm,var_id);
   } /* !trd */
   if(prn_flg->xml) (void)fprintf(stdout,"%*s<variable name=\"%s\" type=\"%s\"",prn_ndn,spc_sng,var_trv->nm,xml_typ_nm(var_typ));
   if(prn_flg->jsn) (void)fprintf(stdout,"%*s\"%s\": {\n",prn_ndn,spc_sng,var_trv->nm);
@@ -1441,10 +1436,14 @@ nco_prn_var_dfn                     /* [fnc] Print variable metadata */
   /* Use nbr_dmn+1 in malloc() to handle case when nbr_dim == 0 and allow for formatting characters */
   dmn_sng=(char *)nco_malloc((nbr_dim+1)*NC_MAX_NAME*sizeof(char));
   dmn_sng[0]='\0';
+  sz_sng[0]='\0';
   if(nbr_dim == 0){
-    if(prn_flg->trd) (void)fprintf(stdout,"%*s%s size (RAM) = %ld*sizeof(%s) = %ld*%lu = %lu bytes\n",prn_ndn,spc_sng,var_trv->nm,var_sz,nco_typ_sng(var_typ),var_sz,(unsigned long)nco_typ_lng(var_typ),(unsigned long)(var_sz*nco_typ_lng(var_typ)));
+    ram_sz_crr=var_sz*nco_typ_lng(var_typ);
+    if(prn_flg->trd) (void)fprintf(stdout,"%*s%s size (RAM) = %ld*sizeof(%s) = %ld*%lu = %lu bytes\n",prn_ndn,spc_sng,var_trv->nm,var_sz,nco_typ_sng(var_typ),var_sz,(unsigned long)nco_typ_lng(var_typ),(unsigned long)ram_sz_crr);
     /* 20131122: Implement ugly NcML requirement that scalars have shape="" attribute */
     if(prn_flg->xml) (void)sprintf(dmn_sng," shape=\"\"");
+    (void)sprintf(sng_foo,"1*sizeof(%s)",nco_typ_sng(var_typ));
+    (void)strcat(sz_sng,sng_foo);
   }else{
     for(dmn_idx=0;dmn_idx<nbr_dim;dmn_idx++){
       if(prn_flg->xml){
@@ -1463,7 +1462,6 @@ nco_prn_var_dfn                     /* [fnc] Print variable metadata */
       (void)strcat(dmn_sng,sng_foo);
     } /* end loop over dim */
 
-    sz_sng[0]='\0';
     for(dmn_idx=0;dmn_idx<nbr_dim-1;dmn_idx++){
       (void)sprintf(sng_foo,"%li*",(long)dmn_sz[dmn_idx]);
       (void)strcat(sz_sng,sng_foo);
@@ -1472,18 +1470,25 @@ nco_prn_var_dfn                     /* [fnc] Print variable metadata */
     (void)strcat(sz_sng,sng_foo);
 
     for(dmn_idx=0;dmn_idx<nbr_dim;dmn_idx++) var_sz*=dmn_sz[dmn_idx];
+    ram_sz_crr=var_sz*nco_typ_lng(var_typ);
     if(nco_fmt_xtn_get() != nco_fmt_xtn_hdf4 || NC_LIB_VERSION >= 433) (void)nco_inq_var_deflate(grp_id,var_id,&shuffle,&deflate,&dfl_lvl);
 
     if(prn_flg->trd){
       if((nco_fmt_xtn_get() != nco_fmt_xtn_hdf4 || NC_LIB_VERSION >= 433) && deflate) (void)fprintf(stdout,"%*s%s compression (Lempel-Ziv %s shuffling) level = %d\n",prn_ndn,spc_sng,var_trv->nm,(shuffle) ? "with" : "without",dfl_lvl);
       if(nco_fmt_xtn_get() == nco_fmt_xtn_hdf4 && NC_LIB_VERSION < 433) (void)fprintf(stdout,"%*s%s compression and shuffling characteristics are HDF4_UNKNOWN\n",prn_ndn,spc_sng,var_trv->nm);
-      (void)fprintf(stdout,"%*s%s size (RAM) = %s = %li*%lu = %lu bytes\n",prn_ndn,spc_sng,var_trv->nm,sz_sng,var_sz,(unsigned long)nco_typ_lng(var_typ),(unsigned long)(var_sz*nco_typ_lng(var_typ)));
+      (void)fprintf(stdout,"%*s%s size (RAM) = %s = %li*%lu = %lu bytes\n",prn_ndn,spc_sng,var_trv->nm,sz_sng,var_sz,(unsigned long)nco_typ_lng(var_typ),(unsigned long)ram_sz_crr);
     } /* !prn_flg->trd */
 
   } /* end if variable is scalar */
+  ram_sz_ttl+=ram_sz_crr;
+
   if(prn_flg->cdl){
     nm_cdl=nm2sng_cdl(var_trv->nm);
-    (void)fprintf(stdout,"%*s%s %s%s ;\n",prn_ndn,spc_sng,cdl_typ_nm(var_typ),nm_cdl,dmn_sng);
+    (void)fprintf(stdout,"%*s%s %s%s ;",prn_ndn,spc_sng,cdl_typ_nm(var_typ),nm_cdl,dmn_sng);
+    if(nco_dbg_lvl_get() >= nco_dbg_std) (void)fprintf(stdout," // RAM size = %s = %li*%lu = %lu bytes",sz_sng,var_sz,(unsigned long)nco_typ_lng(var_typ),(unsigned long)ram_sz_crr);
+    /* 20170913: Typically users not interested in variable ID. However, ID helps diagnose susceptibility to CDF5 bug */
+    if(nco_dbg_lvl_get() >= nco_dbg_fl) (void)fprintf(stdout,", ID = %d",var_id);
+    (void)fprintf(stdout,"\n");
     nm_cdl=(char *)nco_free(nm_cdl);
   } /* !cdl */
   if(prn_flg->xml){
@@ -1901,7 +1906,6 @@ nco_prn_var_val_trv /* [fnc] Print variable data (GTT version) */
     nm_cdl=(char *)nco_free(nm_cdl);
     var_szm1=var->sz-1L;
 
-
     is_compound=False;
     /* Pre-compute elements that need brace punctuation */
     if(CDL && var->nbr_dim>1){
@@ -1925,7 +1929,6 @@ nco_prn_var_val_trv /* [fnc] Print variable data (GTT version) */
           if(mod_map_rv_cnt[bdz]  && lmn % mod_map_rv_cnt[bdz] == 0)
 	        (void)fprintf(stdout,"%c", (JSN_BRK ? '[' : '{' ) );
 
-
       is_mss_val=False;
       if(prn_flg->PRN_MSS_VAL_BLANK && var->has_mss_val){
         if(var->type == NC_STRING) is_mss_val = !strcmp( var->val.sngp[lmn] ,var->mss_val.sngp[0]);
@@ -2560,14 +2563,14 @@ nco_grp_prn /* [fnc] Recursively print group contents */
     nm_cdl=(char *)nco_free(nm_cdl);
     if(prn_flg->fll_pth) (void)fprintf(stdout," // fullname: %s\n",nco_gpe_evl(prn_flg->gpe,grp_nm_fll)); else (void)fprintf(stdout,"\n");
     if(grp_dpt == 0 && prn_flg->nfo_xtr && prn_flg->PRN_GLB_METADATA) (void)fprintf(stdout,"%*s// %s\n",prn_flg->sxn_fst,spc_sng,prn_flg->smr_sng);
-    if(grp_dpt == 0 && prn_flg->nfo_xtr) (void)fprintf(stdout,"%*s// ncgen -k netCDF-4 -b -o %s.nc %s.cdl\n",prn_flg->sxn_fst,spc_sng,prn_flg->fl_stb,prn_flg->fl_stb);
-  } else if(JSN){
-
+    if(grp_dpt == 0 && prn_flg->nfo_xtr) (void)fprintf(stdout,"%*s// %s\n",prn_flg->sxn_fst,spc_sng,prn_flg->smr_fl_sz_sng);
+    if(grp_dpt == 0 && prn_flg->nfo_xtr) (void)fprintf(stdout,"%*s// %sncgen -k %s -b -o %s.nc %s.cdl\n",prn_flg->sxn_fst,spc_sng,prn_flg->PRN_GLB_METADATA ? "Generate binary file: " : "",nco_fmt_hdn_sng(prn_flg->fl_out_fmt),prn_flg->fl_stb,prn_flg->fl_stb);
+  }else if(JSN){
     nm_jsn=nm2sng_jsn(nco_gpe_evl_stb(prn_flg->gpe,trv_tbl->lst[obj_idx].nm_fll));
     /* JSN print main opening brace */
     if(grp_dpt==0) (void)fprintf(stdout,"{\n"); else (void)fprintf(stdout,"%*s\"%s\": {\n",prn_flg->sxn_fst+grp_dpt*prn_flg->spc_per_lvl,spc_sng,nm_jsn);
     nm_jsn=(char *)nco_free(nm_jsn);  
-  }
+  } /* !JSN */
   
   /* Print dimension information for group */
   prn_ndn=prn_flg->ndn=prn_flg->sxn_fst+grp_dpt*prn_flg->spc_per_lvl;
@@ -2665,18 +2668,17 @@ nco_grp_prn /* [fnc] Recursively print group contents */
     /* NB: CDL and TRD place data in seperate tag, while XML and JSN place data in same tag as metadata */  
    
     /* Following IFs are mutually exclusive */
-    if(CDL||TRD){
+    if(CDL || TRD){
       if(CDL || (TRD && prn_flg->PRN_VAR_METADATA)) (void)nco_prn_var_dfn(nc_id,prn_flg,&var_trv);
 
       /* nco_prn_att() prints final brace but no return, as we may need to add a comma */ 
       if(prn_flg->PRN_VAR_METADATA) (void)nco_prn_att(grp_id,prn_flg,var_id);
            
-      if((CDL||TRD) && var_idx != var_nbr_xtr-1) (void)fprintf(stdout,"\n"); 
+      if((CDL || TRD) && var_idx != var_nbr_xtr-1) (void)fprintf(stdout,"\n"); 
     } /* !CDL_OR_TRD */
 
     /* All options can toggle printing of data-  only JSN and XML place data "inside" var markup */ 
-    if(XML)
-    {
+    if(XML){
       (void)nco_prn_var_dfn(nc_id,prn_flg,&var_trv); 
       
       if( prn_flg->PRN_VAR_METADATA )  
@@ -2689,55 +2691,39 @@ nco_grp_prn /* [fnc] Recursively print group contents */
       (void)fprintf(stdout,"%*s</variable>\n",prn_ndn,spc_sng);
     }  
 
-
-    if(JSN)  
-    { 
-      /* deal with first iteration */   
-      if(var_idx==0) 
-      { 
-        if(JSN_BLOCK) 
-           (void)fprintf(stdout,",\n"); 
-        else
-	  JSN_BLOCK=True;              
-         
-        (void)fprintf(stdout,"%*s\"variables\": {\n",prn_flg->ndn,spc_sng  );   
-      } 
+    if(JSN){ 
+      /* Deal with first iteration */   
+      if(var_idx == 0){ 
+        if(JSN_BLOCK) (void)fprintf(stdout,",\n"); else JSN_BLOCK=True;              
+        (void)fprintf(stdout,"%*s\"variables\": {\n",prn_flg->ndn,spc_sng);
+      } /* !var_idx */
         
       /* DOES NOT include a return as we may wanna add a COMMA */
       (void)nco_prn_var_dfn(nc_id,prn_flg,&var_trv);
       prn_flg->ndn+=prn_flg->sxn_fst;  
 
-      /* nco_prn_att() prints the final brace but no return - as we may need to add a comma */ 
-      if( prn_flg->PRN_VAR_METADATA  && nco_att_nbr(grp_id,var_id)>0)
-      {     
+      /* nco_prn_att() prints final brace though not return, as we may need to add a comma */ 
+      if(prn_flg->PRN_VAR_METADATA  && nco_att_nbr(grp_id,var_id) > 0){
         (void)fprintf(stdout,",\n");            
         (void)nco_prn_att(grp_id,prn_flg,var_id);
-      } 
+      } /* !nco_att_nbr */
         
-      if( prn_flg->PRN_VAR_DATA)
-      {  
+      if(prn_flg->PRN_VAR_DATA){  
         (void)fprintf(stdout,",\n");  
         (void)nco_prn_var_val_trv(nc_id,prn_flg,&trv_tbl->lst[var_lst[var_idx].id],trv_tbl);      
-      }
-      else 
-      {
+      }else{
         (void)fprintf(stdout,"\n");        
-      }
-      /* close json object tag -but dont add return as we may need to add comma later*/
-      (void)fprintf(stdout,"%*s}%s",prn_flg->ndn,spc_sng, (var_idx<var_nbr_xtr-1 ?",\n":"\n")  );   
+      } /* !PRN_VAR_DATA */
+
+      /* Close JSON object tag, do not add return as we may need to add comma later */
+      (void)fprintf(stdout,"%*s}%s",prn_flg->ndn,spc_sng,(var_idx<var_nbr_xtr-1) ? ",\n" : "\n");
       /* special indents for jsn */
       prn_flg->ndn-=prn_flg->sxn_fst;  
     }
-   
-
-    
    } /* end loop over var_idx */
 
   /* close out json variable tag */
-  if(JSN && var_nbr_xtr>0) 
-    (void)fprintf(stdout,"%*s}",prn_flg->ndn,spc_sng );   
-
-
+  if(JSN && var_nbr_xtr > 0) (void)fprintf(stdout,"%*s}",prn_flg->ndn,spc_sng);
 
   /* Print attribute information for group 
   if((nbr_att > 0 || (prn_flg->hdn && grp_dpt == 0)) && prn_flg->PRN_GLB_METADATA && CDL_OR_TRD) (void)fprintf(stdout,"\n%*s%s%sattributes:\n",prn_flg->ndn,spc_sng,(CDL) ? "// " : "",(grp_dpt == 0) ? "global " : "group ");
@@ -2748,28 +2734,16 @@ nco_grp_prn /* [fnc] Recursively print group contents */
      (void)fprintf(stdout,"\n");           
      } */
 
-  if((nbr_att > 0 || (prn_flg->hdn && grp_dpt == 0)) && prn_flg->PRN_GLB_METADATA)
-  {
-    if(CDL||TRD)
-    { 
+  if((nbr_att > 0 || (prn_flg->hdn && grp_dpt == 0)) && prn_flg->PRN_GLB_METADATA){
+    if(CDL || TRD){ 
       (void)fprintf(stdout,"\n%*s%s%sattributes:\n",prn_flg->ndn,spc_sng,(CDL) ? "// " : "",(grp_dpt == 0) ? "global " : "group ");
       nco_prn_att(grp_id,prn_flg,NC_GLOBAL);
     }
-    if(XML)
-    {
-      nco_prn_att(grp_id,prn_flg,NC_GLOBAL);
-    }   
-    if(JSN && nco_att_nbr(grp_id,NC_GLOBAL)>0 )
-    {
-      if(JSN_BLOCK) 
-        (void)fprintf(stdout,",\n"); 
-      else
-	JSN_BLOCK=True;              
-
+    if(XML) nco_prn_att(grp_id,prn_flg,NC_GLOBAL);
+    if(JSN && nco_att_nbr(grp_id,NC_GLOBAL) > 0){
+      if(JSN_BLOCK) (void)fprintf(stdout,",\n"); else JSN_BLOCK=True;              
       nco_prn_att(grp_id,prn_flg,NC_GLOBAL);
-
     }
-
   }  
 
   /* Print data for group only CDL and TRD have a separate data block*/
@@ -2787,11 +2761,8 @@ nco_grp_prn /* [fnc] Recursively print group contents */
 
   //if(JSN && prn_flg->PRN_GLB_METADATA) (void)fprintf(stdout,"\"nodes\": [");
 
-
-
-  /* recursive block for evrything else */
-  if(!JSN)
-  {
+  /* Recursive block for evrything else */
+  if(!JSN){
     /* Call recursively for all extracted subgroups */
     for(grp_idx=0;grp_idx<nbr_grp;grp_idx++){
       char *sub_grp_nm_fll=NULL; /* [sng] Sub group path */
@@ -2825,19 +2796,14 @@ nco_grp_prn /* [fnc] Recursively print group contents */
       sub_grp_nm_fll=(char *)nco_free(sub_grp_nm_fll);
     } /* end loop over grp_idx */
 
-
-  }
-  /* recurse block for JSN  */
-  else
-  {
+    /* Recurse block for JSN */
+  }else{
     int nbr_grp_xtr=0;   
-    if( nbr_grp > 0) 
-    {  
-       if(JSN_BLOCK) (void)fprintf(stdout,",\n"); 
-       (void)fprintf(stdout,"%*s\"groups\": {\n",prn_ndn,spc_sng);       
-       JSN_BLOCK=True; 
+    if(nbr_grp > 0){  
+      if(JSN_BLOCK) (void)fprintf(stdout,",\n"); 
+      (void)fprintf(stdout,"%*s\"groups\": {\n",prn_ndn,spc_sng);       
+      JSN_BLOCK=True; 
     }
-      
 
     /* Call recursively for all extracted subgroups */
     for(grp_idx=0;grp_idx<nbr_grp;grp_idx++){
@@ -2851,7 +2817,6 @@ nco_grp_prn /* [fnc] Recursively print group contents */
       /* 	  (void)fprintf(stdout,"\n");  */
       /* else */
       /* 	(void)fprintf(stdout,"%*s\"%s\":{\n",prn_ndn,spc_sng,grp_nm); */
-      
 
       /* Allocate path buffer including space for trailing NUL */ 
       sub_grp_nm_fll=(char *)nco_malloc(strlen(grp_nm_fll)+strlen(grp_nm)+2L);
@@ -2872,26 +2837,19 @@ nco_grp_prn /* [fnc] Recursively print group contents */
 	    break;
     
       /* Is sub-group to be extracted? If so, recurse */
-      if(trv_tbl->lst[obj_idx].flg_xtr)
-      { 
-        if(nbr_grp_xtr++ > 0) 
-            (void)fprintf(stdout,",\n"); 
-
+      if(trv_tbl->lst[obj_idx].flg_xtr){ 
+        if(nbr_grp_xtr++ > 0) (void)fprintf(stdout,",\n"); 
         rcd+=nco_grp_prn(nc_id,sub_grp_nm_fll,prn_flg,trv_tbl);
-    
       } 
 
       /* Free constructed name */
       sub_grp_nm_fll=(char *)nco_free(sub_grp_nm_fll);
     } /* end loop over grp_idx */
-
   }
 
   /* if JSN then print closing tag to group */
-  if(JSN && nbr_grp>0 ){
-    (void)fprintf(stdout,"\n%*s}",prn_ndn,spc_sng);
-  }
-  
+  if(JSN && nbr_grp > 0) (void)fprintf(stdout,"\n%*s}",prn_ndn,spc_sng);
+
   /* Mark end of output */
   if(CDL_OR_TRD) (void)fprintf(stdout,"%*s} // group %s\n",grp_dpt*prn_flg->spc_per_lvl,spc_sng,(grp_dpt == 0) ? grp_nm_fll : nm2sng_cdl(nco_gpe_evl(prn_flg->gpe,grp_nm_fll)));
   if(JSN && grp_dpt ==0) (void)fprintf(stdout,"\n}\n"); 
@@ -2903,7 +2861,6 @@ nco_grp_prn /* [fnc] Recursively print group contents */
   return rcd;
 } /* end nco_grp_prn() */
 
-
 int /* [rcd] Return code */
 nco_prn_cdl_trd /* [fnc] Recursively print group contents */
 (const int nc_id, /* I [id] netCDF file ID */
@@ -2999,15 +2956,13 @@ nco_prn_cdl_trd /* [fnc] Recursively print group contents */
   /* Sort dimensions alphabetically */
   if(dmn_nbr > 1) dmn_lst=nco_lst_srt_nm_id(dmn_lst,dmn_nbr,prn_flg->ALPHA_BY_STUB_GROUP);
 
-  { 
-    nm_cdl=nm2sng_cdl(nco_gpe_evl_stb(prn_flg->gpe,trv_tbl->lst[obj_idx].nm_fll));
-    if(grp_dpt == 0 && CDL) (void)fprintf(stdout,"netcdf %s {",prn_flg->fl_stb); else (void)fprintf(stdout,"%*sgroup: %s {",grp_dpt*prn_flg->spc_per_lvl,spc_sng,nm_cdl);
-    nm_cdl=(char *)nco_free(nm_cdl);
-    if(prn_flg->fll_pth) (void)fprintf(stdout," // fullname: %s\n",nco_gpe_evl(prn_flg->gpe,grp_nm_fll)); else (void)fprintf(stdout,"\n");
-    if(grp_dpt == 0 && prn_flg->nfo_xtr && prn_flg->PRN_GLB_METADATA) (void)fprintf(stdout,"%*s// %s\n",prn_flg->sxn_fst,spc_sng,prn_flg->smr_sng);
-    if(grp_dpt == 0 && prn_flg->nfo_xtr) (void)fprintf(stdout,"%*s// ncgen -k netCDF-4 -b -o %s.nc %s.cdl\n",prn_flg->sxn_fst,spc_sng,prn_flg->fl_stb,prn_flg->fl_stb);
-  } 
-
+  nm_cdl=nm2sng_cdl(nco_gpe_evl_stb(prn_flg->gpe,trv_tbl->lst[obj_idx].nm_fll));
+  if(grp_dpt == 0 && CDL) (void)fprintf(stdout,"netcdf %s {",prn_flg->fl_stb); else (void)fprintf(stdout,"%*sgroup: %s {",grp_dpt*prn_flg->spc_per_lvl,spc_sng,nm_cdl);
+  nm_cdl=(char *)nco_free(nm_cdl);
+  if(prn_flg->fll_pth) (void)fprintf(stdout," // fullname: %s\n",nco_gpe_evl(prn_flg->gpe,grp_nm_fll)); else (void)fprintf(stdout,"\n");
+  if(grp_dpt == 0 && prn_flg->nfo_xtr && prn_flg->PRN_GLB_METADATA) (void)fprintf(stdout,"%*s// %s\n",prn_flg->sxn_fst,spc_sng,prn_flg->smr_sng);
+  if(grp_dpt == 0 && prn_flg->nfo_xtr && prn_flg->PRN_GLB_METADATA && nco_dbg_lvl_get() > nco_dbg_std) (void)fprintf(stdout,"%*s// %s\n",prn_flg->sxn_fst,spc_sng,prn_flg->smr_fl_sz_sng);
+  if(grp_dpt == 0 && prn_flg->nfo_xtr) (void)fprintf(stdout,"%*s// %sncgen -k %s -b -o %s.nc %s.cdl\n",prn_flg->sxn_fst,spc_sng,prn_flg->PRN_GLB_METADATA ? "Generate binary file from this CDL: " : "",nco_fmt_hdn_sng(prn_flg->fl_out_fmt),prn_flg->fl_stb,prn_flg->fl_stb);
   
   /* Print dimension information for group */
   prn_ndn=prn_flg->ndn=prn_flg->sxn_fst+grp_dpt*prn_flg->spc_per_lvl;
@@ -3086,20 +3041,15 @@ nco_prn_cdl_trd /* [fnc] Recursively print group contents */
     if(var_trv.grp_dpt > 0 && prn_flg->fll_pth && TRD) (void)fprintf(stdout,"%*s%s\n",prn_flg->ndn,spc_sng,var_trv.nm_fll);
 
     /* NB: CDL and TRD place data in seperate tag, while XML and JSN place data in same tag as metadata */  
-   
-
     if(CDL || (TRD && prn_flg->PRN_VAR_METADATA)) (void)nco_prn_var_dfn(nc_id,prn_flg,&var_trv);
 
     /* nco_prn_att() prints final brace but no return, as we may need to add a comma */ 
     if(prn_flg->PRN_VAR_METADATA) (void)nco_prn_att(grp_id,prn_flg,var_id);
            
     if( var_idx != var_nbr_xtr-1) (void)fprintf(stdout,"\n"); 
-    
   } /* end loop over var_idx */
 
-
-  if((nbr_att > 0 || (prn_flg->hdn && grp_dpt == 0)) && prn_flg->PRN_GLB_METADATA)
-  {
+  if((nbr_att > 0 || (prn_flg->hdn && grp_dpt == 0)) && prn_flg->PRN_GLB_METADATA){
     (void)fprintf(stdout,"\n%*s%s%sattributes:\n",prn_flg->ndn,spc_sng,(CDL) ? "// " : "",(grp_dpt == 0) ? "global " : "group ");
     nco_prn_att(grp_id,prn_flg,NC_GLOBAL);
   }  
@@ -3117,8 +3067,6 @@ nco_prn_cdl_trd /* [fnc] Recursively print group contents */
   grp_ids=(int *)nco_malloc(nbr_grp*sizeof(int)); 
   rcd+=nco_inq_grps(grp_id,(int *)NULL,grp_ids);
 
-
-
   /* Call recursively for all extracted subgroups */
   for(grp_idx=0;grp_idx<nbr_grp;grp_idx++){
     char *sub_grp_nm_fll=NULL; /* [sng] Sub group path */
@@ -3151,15 +3099,12 @@ nco_prn_cdl_trd /* [fnc] Recursively print group contents */
     /* Free constructed name */
     sub_grp_nm_fll=(char *)nco_free(sub_grp_nm_fll);
   } /* end loop over grp_idx */
-
   
   /* Mark end of output */
   (void)fprintf(stdout,"%*s} // group %s\n",grp_dpt*prn_flg->spc_per_lvl,spc_sng,(grp_dpt == 0) ? grp_nm_fll : nm2sng_cdl(nco_gpe_evl(prn_flg->gpe,grp_nm_fll)));
   return rcd;
 } /* end nco_grp_prn_cdl_trd() */
 
-
-
 int /* [rcd] Return code */
 nco_prn_xml /* [fnc] Recursively print group contents */
 (const int nc_id, /* I [id] netCDF file ID */
@@ -3252,21 +3197,17 @@ nco_prn_xml /* [fnc] Recursively print group contents */
   /* Sort dimensions alphabetically */
   if(dmn_nbr > 1) dmn_lst=nco_lst_srt_nm_id(dmn_lst,dmn_nbr,prn_flg->ALPHA_BY_STUB_GROUP);
 
-
   if(grp_dpt == 0){
-      if(prn_flg->xml_lcn) (void)fprintf(stdout,"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<netcdf xmlns=\"http://www.unidata.ucar.edu/namespaces/netcdf/ncml-2.2\" location=\"%s\">\n",prn_flg->fl_in); else (void)fprintf(stdout,"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<netcdf xmlns=\"http://www.unidata.ucar.edu/namespaces/netcdf/ncml-2.2\">\n");
-      if(prn_flg->nfo_xtr) (void)fprintf(stdout,"%*s<!-- %s -->\n",prn_flg->sxn_fst,spc_sng,prn_flg->smr_sng);
+    if(prn_flg->xml_lcn) (void)fprintf(stdout,"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<netcdf xmlns=\"http://www.unidata.ucar.edu/namespaces/netcdf/ncml-2.2\" location=\"%s\">\n",prn_flg->fl_in); else (void)fprintf(stdout,"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<netcdf xmlns=\"http://www.unidata.ucar.edu/namespaces/netcdf/ncml-2.2\">\n");
+    if(prn_flg->nfo_xtr) (void)fprintf(stdout,"%*s<!-- %s -->\n",prn_flg->sxn_fst,spc_sng,prn_flg->smr_sng);
   }else{ /* grp_dpt != 0 */
-      (void)fprintf(stdout,"%*s<group name=\"%s\">\n",grp_dpt*prn_flg->spc_per_lvl,spc_sng,trv_tbl->lst[obj_idx].nm);
+    (void)fprintf(stdout,"%*s<group name=\"%s\">\n",grp_dpt*prn_flg->spc_per_lvl,spc_sng,trv_tbl->lst[obj_idx].nm);
   } /* grp_dpt != 0 */
 
-
   /* Print dimension information for group */
   prn_ndn=prn_flg->ndn=prn_flg->sxn_fst+grp_dpt*prn_flg->spc_per_lvl;
 
-  for(dmn_idx=0;dmn_idx<dmn_nbr;dmn_idx++)
-      (void)fprintf(stdout,"%*s<dimension name=\"%s\" length=\"%lu\" %s/>\n",prn_ndn,spc_sng,dmn_lst[dmn_idx].nm,(unsigned long)trv_tbl->lst_dmn[dmn_lst[dmn_idx].id].lmt_msa.dmn_cnt,trv_tbl->lst_dmn[dmn_lst[dmn_idx].id].is_rec_dmn ? "isUnlimited=\"true\" " : "");
-
+  for(dmn_idx=0;dmn_idx<dmn_nbr;dmn_idx++) (void)fprintf(stdout,"%*s<dimension name=\"%s\" length=\"%lu\" %s/>\n",prn_ndn,spc_sng,dmn_lst[dmn_idx].nm,(unsigned long)trv_tbl->lst_dmn[dmn_lst[dmn_idx].id].lmt_msa.dmn_cnt,trv_tbl->lst_dmn[dmn_lst[dmn_idx].id].is_rec_dmn ? "isUnlimited=\"true\" " : "");
   
   /* Dimension list no longer needed */
   dmn_lst=nco_nm_id_lst_free(dmn_lst,dmn_nbr);
@@ -3275,7 +3216,6 @@ nco_prn_xml /* [fnc] Recursively print group contents */
 
   /* Create array to hold names and indices of extracted variables in this group */
   var_lst=(nm_id_sct *)nco_malloc(nbr_var*(sizeof(nm_id_sct)));
-
       
   for(var_idx=0;var_idx<nbr_var;var_idx++){
     /* Get variable name */
@@ -3318,7 +3258,6 @@ nco_prn_xml /* [fnc] Recursively print group contents */
 
   /* Sort variables alphabetically */
   if(var_nbr_xtr > 1) var_lst=nco_lst_srt_nm_id(var_lst,var_nbr_xtr,prn_flg->ALPHA_BY_STUB_GROUP);
-    
 
   for(var_idx=0;var_idx<var_nbr_xtr;var_idx++){
     trv_sct var_trv=trv_tbl->lst[var_lst[var_idx].id];
@@ -3330,23 +3269,16 @@ nco_prn_xml /* [fnc] Recursively print group contents */
 
     (void)nco_prn_var_dfn(nc_id,prn_flg,&var_trv); 
       
-    if(prn_flg->PRN_VAR_METADATA )  
-       (void)nco_prn_att(grp_id,prn_flg,var_id);
+    if(prn_flg->PRN_VAR_METADATA) (void)nco_prn_att(grp_id,prn_flg,var_id);
    
+    if(prn_flg->PRN_VAR_DATA) (void)nco_prn_var_val_trv(nc_id,prn_flg,&trv_tbl->lst[var_lst[var_idx].id],trv_tbl);
 
-    if(prn_flg->PRN_VAR_DATA) 
-       (void)nco_prn_var_val_trv(nc_id,prn_flg,&trv_tbl->lst[var_lst[var_idx].id],trv_tbl);
-      /* XML close variable tag */
-      (void)fprintf(stdout,"%*s</variable>\n",prn_ndn,spc_sng);
-      
+    /* XML close variable tag */
+    (void)fprintf(stdout,"%*s</variable>\n",prn_ndn,spc_sng);
   } /* end loop over var_idx */
 
-
-  /* print global metatdata */
-  if((nbr_att > 0 || (prn_flg->hdn && grp_dpt == 0)) && prn_flg->PRN_GLB_METADATA)
-      nco_prn_att(grp_id,prn_flg,NC_GLOBAL);
-
-
+  /* Print global metatdata */
+  if((nbr_att > 0 || (prn_flg->hdn && grp_dpt == 0)) && prn_flg->PRN_GLB_METADATA) nco_prn_att(grp_id,prn_flg,NC_GLOBAL);
 
   /* Variable list no longer needed */
   var_lst=nco_nm_id_lst_free(var_lst,var_nbr_xtr);
@@ -3355,7 +3287,6 @@ nco_prn_xml /* [fnc] Recursively print group contents */
   grp_ids=(int *)nco_malloc(nbr_grp*sizeof(int)); 
   rcd+=nco_inq_grps(grp_id,(int *)NULL,grp_ids);
 
-
   /* Call recursively for all extracted subgroups */
   for(grp_idx=0;grp_idx<nbr_grp;grp_idx++){
     char *sub_grp_nm_fll=NULL; /* [sng] Sub group path */
diff --git a/src/nco/nco_rgr.c b/src/nco/nco_rgr.c
index 70bbd84..d3a669d 100644
--- a/src/nco/nco_rgr.c
+++ b/src/nco/nco_rgr.c
@@ -1857,7 +1857,7 @@ nco_rgr_map /* [fnc] Regrid with external weights */
     else if((rcd=nco_inq_dimid_flg(in_id,"nEdges",&dmn_id_col)) == NC_NOERR) col_nm_in=strdup("nEdges"); /* MPAS-O/I */
     else if((rcd=nco_inq_dimid_flg(in_id,"sounding_id",&dmn_id_col)) == NC_NOERR) col_nm_in=strdup("sounding_id"); /* OCO2 */
     else{
-      (void)fprintf(stdout,"%s: ERROR %s reports datafile does not contain unstructured dimension name that matches a usual suspect (ncol, lndgrid, nCells, nEdges, sounding_id). HINT: Provide horizontal dimension name with \"-r col_nm=foo\"\n",nco_prg_nm_get(),fnc_nm);
+      (void)fprintf(stdout,"%s: ERROR %s expects data on an unstructured grid but cannot find a dimension name that matches the usual suspects for unstructured dimensions (ncol, lndgrid, nCells, nEdges, sounding_id). HINT: Provide horizontal dimension name with \"--rgr col_nm=foo\"\n",nco_prg_nm_get(),fnc_nm);
       nco_exit(EXIT_FAILURE);
     } /* !col_nm_in */
     rcd=nco_inq_dimlen(in_id,dmn_id_col,&col_nbr_in_dat);
@@ -1892,7 +1892,7 @@ nco_rgr_map /* [fnc] Regrid with external weights */
     else if((rcd=nco_inq_dimid_flg(in_id,"y",&dmn_id_lat)) == NC_NOERR) lat_nm_in=strdup("y"); /* NEMO */
     else if((rcd=nco_inq_dimid_flg(in_id,"x",&dmn_id_lat)) == NC_NOERR) lat_nm_in=strdup("x"); /* NSIDC polar stereographic (NB: unfortunate incompatible conflict between NEMO & NSIDC names) */
     else{
-      (void)fprintf(stdout,"%s: ERROR %s reports unable to find latitude dimension in input file. Tried the usual suspects. HINT: Inform regridder of input latitude dimension name with --rgr lat_nm_in=name\n",nco_prg_nm_get(),fnc_nm);
+      (void)fprintf(stdout,"%s: ERROR %s reports unable to find latitude dimension in input file. Tried the usual suspects. HINT: Inform regridder of input latitude dimension name with \"--rgr lat_nm_in=name\"\n",nco_prg_nm_get(),fnc_nm);
       nco_exit(EXIT_FAILURE);
     } /* !lat */
     rcd=nco_inq_dimlen(in_id,dmn_id_lat,&lat_nbr_in_dat);
@@ -1925,7 +1925,7 @@ nco_rgr_map /* [fnc] Regrid with external weights */
     else if((rcd=nco_inq_dimid_flg(in_id,"x",&dmn_id_lon)) == NC_NOERR) lon_nm_in=strdup("x"); /* NEMO */
     else if((rcd=nco_inq_dimid_flg(in_id,"y",&dmn_id_lon)) == NC_NOERR) lon_nm_in=strdup("y"); /* NSIDC polar stereographic (NB: unfortunate incompatible conflict between NEMO & NSIDC names) */
     else{
-      (void)fprintf(stdout,"%s: ERROR %s reports unable to find longitude dimension in input file. Tried the usual suspects. HINT: Inform regridder of input longitude dimension name with --rgr lon_nm_in=name\n",nco_prg_nm_get(),fnc_nm);
+      (void)fprintf(stdout,"%s: ERROR %s reports unable to find longitude dimension in input file. Tried the usual suspects. HINT: Inform regridder of input longitude dimension name with \"--rgr lon_nm_in=name\"\n",nco_prg_nm_get(),fnc_nm);
       nco_exit(EXIT_FAILURE);
     } /* !lat */
     rcd=nco_inq_dimlen(in_id,dmn_id_lon,&lon_nbr_in_dat);
@@ -2145,7 +2145,7 @@ nco_rgr_map /* [fnc] Regrid with external weights */
   /* Ensure temporal bounds dimension name is distinct from spatial bounds when their sizes differ */
   if(bnd_nbr_out != bnd_tm_nbr_out){
     if(!strcmp(bnd_nm_out,bnd_tm_nm_out)){
-      (void)fprintf(stdout,"%s: INFO %s reports spatial and temporal output bounds dimensions are identical (and named \"%s\") by default for rectangular output grids because both can be stored as 2D arrays. That cannot work for this mapping because temporal and spatial bounds dimensions sizes differ (bnd_nbr_out = %d, bnd_tm_nbr_out = %d). Using fall-back spatial bounds name \"%s\" instead. HINT: You may change one or both manually with --rgr bnd_nm=name or --rgr bnd_tm_nm=name.\n",nco_ [...]
+      (void)fprintf(stdout,"%s: INFO %s reports spatial and temporal output bounds dimensions are identical (and named \"%s\") by default for rectangular output grids because both can be stored as 2D arrays. That cannot work for this mapping because temporal and spatial bounds dimensions sizes differ (bnd_nbr_out = %d, bnd_tm_nbr_out = %d). Using fall-back spatial bounds name \"%s\" instead. HINT: You may change one or both manually with \"--rgr bnd_nm=name\" or \"--rgr bnd_tm_nm=name\". [...]
     } /* !strcmp() */
   } /* !bnd_nbr_out */
 
@@ -3137,7 +3137,7 @@ nco_rgr_map /* [fnc] Regrid with external weights */
      3. flg_rnr,fnc_nm,wgt_vld_thr must be explicit shared for icc 13.1.3 (rhea) */
 #ifdef __GNUG__
 # define GCC_LIB_VERSION ( __GNUC__ * 100 + __GNUC_MINOR__ * 10 + __GNUC_PATCHLEVEL__ )
-# if GCC_LIB_VERSION < 480
+# if GCC_LIB_VERSION < 490
 #  define GXX_OLD_OPENMP_SHARED_TREATMENT 1
 # endif /* 480 */
 #endif /* !__GNUC__ */
@@ -6443,7 +6443,7 @@ nco_grd_nfr /* [fnc] Infer SCRIP-format grid file from input data file */
   fl_out=rgr->fl_grd;
   fl_out_fmt=rgr->fl_out_fmt;
   if(!fl_out){
-    (void)fprintf(stdout,"%s: ERROR %s filename for inferred SCRIP grid-file is uninitialized, supply it with --rgr grid=filename.nc\n",nco_prg_nm_get(),fnc_nm);
+    (void)fprintf(stdout,"%s: ERROR %s filename for inferred SCRIP grid-file is uninitialized, supply it with \"--rgr grid=filename.nc\"\n",nco_prg_nm_get(),fnc_nm);
     (void)fprintf(stdout,"%s: HINT ncremap supplies an automatically generated default name for any output SCRIP grid-file. Users of the standalone regridder (ncks) must explicitly specify a name for the inferred SCRIP grid-file.\n",nco_prg_nm_get());
     nco_exit(EXIT_FAILURE);
   } /* !fl_out */
diff --git a/src/nco/ncpdq.c b/src/nco/ncpdq.c
index 7fbd848..1abb489 100644
--- a/src/nco/ncpdq.c
+++ b/src/nco/ncpdq.c
@@ -119,7 +119,7 @@ main(int argc,char **argv)
 
   const char * const CVS_Id="$Id$"; 
   const char * const CVS_Revision="$Revision$";
-  const char * const opt_sht_lst="3467Aa:CcD:d:Fg:G:hL:l:M:Oo:P:p:Rrt:v:UxZ-:";
+  const char * const opt_sht_lst="34567Aa:CcD:d:Fg:G:hL:l:M:Oo:P:p:Rrt:v:UxZ-:";
 
   cnk_sct cnk; /* [sct] Chunking structure */
 
@@ -297,8 +297,13 @@ main(int argc,char **argv)
     /* Long options with short counterparts */
     {"3",no_argument,0,'3'},
     {"4",no_argument,0,'4'},
-    {"64bit",no_argument,0,'4'},
     {"netcdf4",no_argument,0,'4'},
+    {"5",no_argument,0,'5'},
+    {"64bit_data",no_argument,0,'5'},
+    {"cdf5",no_argument,0,'5'},
+    {"pnetcdf",no_argument,0,'5'},
+    {"64bit_offset",no_argument,0,'6'},
+    {"7",no_argument,0,'7'},
     {"append",no_argument,0,'A'},
     {"arrange",required_argument,0,'a'},
     {"permute",required_argument,0,'a'},
@@ -462,11 +467,14 @@ main(int argc,char **argv)
     case '3': /* Request netCDF3 output storage format */
       fl_out_fmt=NC_FORMAT_CLASSIC;
       break;
-    case '4': /* Catch-all to prescribe output storage format */
-      if(!strcmp(opt_crr,"64bit")) fl_out_fmt=NC_FORMAT_64BIT; else fl_out_fmt=NC_FORMAT_NETCDF4; 
+    case '4': /* Request netCDF4 output storage format */
+      fl_out_fmt=NC_FORMAT_NETCDF4; 
+      break;
+    case '5': /* Request netCDF3 64-bit offset+data storage (i.e., pnetCDF) format */
+      fl_out_fmt=NC_FORMAT_CDF5;
       break;
     case '6': /* Request netCDF3 64-bit offset output storage format */
-      fl_out_fmt=NC_FORMAT_64BIT;
+      fl_out_fmt=NC_FORMAT_64BIT_OFFSET;
       break;
     case '7': /* Request netCDF4-classic output storage format */
       fl_out_fmt=NC_FORMAT_NETCDF4_CLASSIC;
diff --git a/src/nco/ncra.c b/src/nco/ncra.c
index b74ee88..d1ce8f6 100644
--- a/src/nco/ncra.c
+++ b/src/nco/ncra.c
@@ -154,7 +154,7 @@ main(int argc,char **argv)
 
   const char * const CVS_Id="$Id$"; 
   const char * const CVS_Revision="$Revision$";
-  const char * const opt_sht_lst="3467ACcD:d:FG:g:HhL:l:Nn:Oo:p:P:rRt:v:w:X:xY:y:-:";
+  const char * const opt_sht_lst="34567ACcD:d:FG:g:HhL:l:Nn:Oo:p:P:rRt:v:w:X:xY:y:-:";
 
   clm_bnd_sct *cb=NULL;
   
@@ -401,8 +401,13 @@ main(int argc,char **argv)
     /* Long options with short counterparts */
     {"3",no_argument,0,'3'},
     {"4",no_argument,0,'4'},
-    {"64bit",no_argument,0,'4'},
     {"netcdf4",no_argument,0,'4'},
+    {"5",no_argument,0,'5'},
+    {"64bit_data",no_argument,0,'5'},
+    {"cdf5",no_argument,0,'5'},
+    {"pnetcdf",no_argument,0,'5'},
+    {"64bit_offset",no_argument,0,'6'},
+    {"7",no_argument,0,'7'},
     {"append",no_argument,0,'A'},
     {"coords",no_argument,0,'c'},
     {"crd",no_argument,0,'c'},
@@ -593,11 +598,14 @@ main(int argc,char **argv)
     case '3': /* Request netCDF3 output storage format */
       fl_out_fmt=NC_FORMAT_CLASSIC;
       break;
-    case '4': /* Catch-all to prescribe output storage format */
-      if(!strcmp(opt_crr,"64bit")) fl_out_fmt=NC_FORMAT_64BIT; else fl_out_fmt=NC_FORMAT_NETCDF4; 
+    case '4': /* Request netCDF4 output storage format */
+      fl_out_fmt=NC_FORMAT_NETCDF4; 
+      break;
+    case '5': /* Request netCDF3 64-bit offset+data storage (i.e., pnetCDF) format */
+      fl_out_fmt=NC_FORMAT_CDF5;
       break;
     case '6': /* Request netCDF3 64-bit offset output storage format */
-      fl_out_fmt=NC_FORMAT_64BIT;
+      fl_out_fmt=NC_FORMAT_64BIT_OFFSET;
       break;
     case '7': /* Request netCDF4-classic output storage format */
       fl_out_fmt=NC_FORMAT_NETCDF4_CLASSIC;
diff --git a/src/nco/ncrename.c b/src/nco/ncrename.c
index ae0cf6a..5f42939 100644
--- a/src/nco/ncrename.c
+++ b/src/nco/ncrename.c
@@ -473,6 +473,7 @@ main(int argc,char **argv)
 	mch_nbr++;
 	(void)nco_inq_grp_full_ncid(nc_id,trv_tbl->lst_dmn[tbl_idx].grp_nm_fll,&grp_id);
 	rcd=nco_inq_dimid(grp_id,trv_tbl->lst_dmn[tbl_idx].nm,&dmn_rnm_lst[idx_dmn].id);
+	if(nco_dbg_lvl >= nco_dbg_fl) (void)fprintf(stdout,"%s: grp_nm_fll= \'%s\', grp_id=%d, dmn_id = %d\n",nco_prg_nm,trv_tbl->lst_dmn[tbl_idx].grp_nm_fll,grp_id,dmn_rnm_lst[idx_dmn].id);
 	(void)nco_rename_dim(grp_id,dmn_rnm_lst[idx_dmn].id,dmn_rnm_lst[idx_dmn].new_nm);
 	if(nco_dbg_lvl >= nco_dbg_fl) (void)fprintf(stdout,"%s: Renamed dimension \'%s\' to \'%s\'\n",nco_prg_nm,trv_tbl->lst_dmn[tbl_idx].nm_fll,dmn_rnm_lst[idx_dmn].new_nm);
       } /* endif */
diff --git a/src/nco/ncwa.c b/src/nco/ncwa.c
index e950086..8d17ab6 100644
--- a/src/nco/ncwa.c
+++ b/src/nco/ncwa.c
@@ -48,6 +48,9 @@
 #include <sys/stat.h> /* stat() */
 #include <time.h> /* machine time */
 #ifndef _MSC_VER
+# if !defined(HAVE_BISON_FLEX)
+#  define HAVE_BISON_FLEX /* 21070906 pvn add this definition to automake, currently in CMake */
+# endif /* HAVE_BISON_FLEX */
 # include <unistd.h> /* POSIX stuff */
 #endif /* _MSC_VER */
 #ifndef HAVE_GETOPT_LONG
@@ -81,17 +84,17 @@
 
 /* #define MAIN_PROGRAM_FILE MUST precede #include libnco.h */
 #define MAIN_PROGRAM_FILE
-#ifndef _MSC_VER
+#ifdef HAVE_BISON_FLEX
 # include "ncap.h" /* netCDF arithmetic processor-specific definitions (symbol table, ...) */
-#endif /* _MSC_VER */
+#endif /* !HAVE_BISON_FLEX */
 #include "libnco.h" /* netCDF Operator (NCO) library */
 
-#ifndef _MSC_VER
+#ifdef HAVE_BISON_FLEX
 /* Global variables (keep consistent with global variables declared in ncap.c) */ 
 size_t ncap_ncl_dpt_crr=0UL; /* [nbr] Depth of current #include file (incremented in ncap.l) */
 size_t *ncap_ln_nbr_crr; /* [cnt] Line number (incremented in ncap.l) */
 char **ncap_fl_spt_glb; /* [fl] Script file */
-#endif /* _MSC_VER */
+#endif /* !HAVE_BISON_FLEX */
 
 int 
 main(int argc,char **argv)
@@ -125,7 +128,7 @@ main(int argc,char **argv)
 
   const char * const CVS_Id="$Id$"; 
   const char * const CVS_Revision="$Revision$";
-  const char * const opt_sht_lst="3467Aa:B:bCcD:d:Fg:G:hIL:l:M:m:nNOo:p:rRT:t:v:Ww:xy:-:";
+  const char * const opt_sht_lst="34567Aa:B:bCcD:d:Fg:G:hIL:l:M:m:nNOo:p:rRT:t:v:Ww:xy:-:";
 
   cnk_sct cnk; /* [sct] Chunking structure */
 
@@ -242,9 +245,9 @@ main(int argc,char **argv)
 
   gpe_sct *gpe=NULL; /* [sng] Group Path Editing (GPE) structure */
 
-#ifndef _MSC_VER
+#ifdef HAVE_BISON_FLEX
   prs_sct prs_arg;  /* I/O [sct] Global information required in ncwa parser */
-#endif /* _MSC_VER */
+#endif /* !HAVE_BISON_FLEX */
 
 #ifdef ENABLE_MPI
   /* Declare all MPI-specific variables here */
@@ -321,8 +324,13 @@ main(int argc,char **argv)
     /* Long options with short counterparts */
     {"3",no_argument,0,'3'},
     {"4",no_argument,0,'4'},
-    {"64bit",no_argument,0,'4'},
     {"netcdf4",no_argument,0,'4'},
+    {"5",no_argument,0,'5'},
+    {"64bit_data",no_argument,0,'5'},
+    {"cdf5",no_argument,0,'5'},
+    {"pnetcdf",no_argument,0,'5'},
+    {"64bit_offset",no_argument,0,'6'},
+    {"7",no_argument,0,'7'},
     {"append",no_argument,0,'A'},
     {"average",required_argument,0,'a'},
     {"avg",required_argument,0,'a'},
@@ -496,11 +504,14 @@ main(int argc,char **argv)
     case '3': /* Request netCDF3 output storage format */
       fl_out_fmt=NC_FORMAT_CLASSIC;
       break;
-    case '4': /* Catch-all to prescribe output storage format */
-      if(!strcmp(opt_crr,"64bit")) fl_out_fmt=NC_FORMAT_64BIT; else fl_out_fmt=NC_FORMAT_NETCDF4; 
+    case '4': /* Request netCDF4 output storage format */
+      fl_out_fmt=NC_FORMAT_NETCDF4; 
+      break;
+    case '5': /* Request netCDF3 64-bit offset+data storage (i.e., pnetCDF) format */
+      fl_out_fmt=NC_FORMAT_CDF5;
       break;
     case '6': /* Request netCDF3 64-bit offset output storage format */
-      fl_out_fmt=NC_FORMAT_64BIT;
+      fl_out_fmt=NC_FORMAT_64BIT_OFFSET;
       break;
     case '7': /* Request netCDF4-classic output storage format */
       fl_out_fmt=NC_FORMAT_NETCDF4_CLASSIC;
@@ -520,10 +531,10 @@ main(int argc,char **argv)
       break;
     case 'B': /* Mask string to be parsed */
       msk_cnd_sng=(char *)strdup(optarg);
-#ifdef _MSC_VER
-      (void)fprintf(fp_stdout,"%s: ERROR -B and --mask_condition options unsupported on Windows, which lacks a standard parser and lexer that are free. HINT: Break condition into component -m -T -M switches, e.g., use -m ORO -T lt -M 1.0 instead of -B \"ORO < 1\"\n",nco_prg_nm);
+#ifndef HAVE_BISON_FLEX
+      (void)fprintf(fp_stdout,"%s: ERROR -B and --mask_condition options unsupported because configuration could not find a parser (e.g., Bison) and lexer (e.g., Flex). HINT: Break condition into component -m -T -M switches, e.g., use -m ORO -T lt -M 1.0 instead of -B \"ORO < 1\"\n",nco_prg_nm);
       nco_exit(EXIT_FAILURE);
-#endif /* !_MSC_VER */
+#endif /* HAVE_BISON_FLEX */
       break;
     case 'b': /* [flg] Retain degenerate dimensions */
       flg_rdd=True;
@@ -663,7 +674,7 @@ main(int argc,char **argv)
   trv_tbl_init(&trv_tbl);
 
   /* Parse mask string */
-#ifndef _MSC_VER
+#ifdef HAVE_BISON_FLEX
   if(msk_cnd_sng){
     int cst_zero=0;
     /* Set arguments for scan */
@@ -688,7 +699,7 @@ main(int argc,char **argv)
     ncap_ln_nbr_crr[ncap_ncl_dpt_crr]=1UL; /* [cnt] Line number incremented in ncap.l */
     if(ncap_ncwa_scn(&prs_arg,msk_cnd_sng,&msk_nm,&msk_val,&op_typ_rlt) != NCO_NOERR) nco_exit(EXIT_FAILURE); 
   } /* endif msk_cnd_sng */ 
-#endif /* _MSC_VER */
+#endif /* !HAVE_BISON_FLEX */
 
   /* Ensure we do not attempt to normalize by non-existent weight */
   if(!wgt_nm) NORMALIZE_BY_WEIGHT=False;
diff --git a/src/nco_c++/Makefile.old b/src/nco_c++/Makefile.old
index 1d51ba6..8e2dd82 100644
--- a/src/nco_c++/Makefile.old
+++ b/src/nco_c++/Makefile.old
@@ -184,7 +184,10 @@ ifndef USR_TKN
  USR_TKN := -DABORT_ON_ERROR
 endif # endif USR_TKN
 ifndef VRS_SNG
- VRS_SNG := $(shell date +%Y%m%d)
+# VRS_SNG := $(shell date +%Y%m%d)
+# 20150622
+# VRS_SNG := $(shell git describe --abbrev=7 --dirty --always --tags)
+ VRS_SNG := $(shell cat ${MY_DOC_DIR}/VERSION)
 endif # endif VRS_SNG
 
 # Derived-tokens based on primary tokens
diff --git a/src/nco_c++/nco_utl.cc b/src/nco_c++/nco_utl.cc
index 92c7ab6..1fdb968 100644
--- a/src/nco_c++/nco_utl.cc
+++ b/src/nco_c++/nco_utl.cc
@@ -40,9 +40,13 @@ nco_create_mode_prs // [fnc] Parse user-specified file format
   if(static_cast<std::string>("classic").find(fl_fmt_sng) != std::string::npos && fl_fmt_sng.find("netcdf4") == std::string::npos){
   // If "classic" contains string and string does not contain "netcdf4"
     fl_fmt_enm=NC_FORMAT_CLASSIC;
-  }else if(static_cast<std::string>("classic").find(fl_fmt_sng) != std::string::npos){
+  }else if(static_cast<std::string>("64bit").find(fl_fmt_sng) != std::string::npos){
     /* If "64bit" contains string */
     fl_fmt_enm=NC_FORMAT_64BIT;
+    //  }else if(static_cast<std::string>("64bit_data").find(fl_fmt_sng) != std::string::npos){
+    /* 20170820: CDF5 not yet supported on Travis CI machines */
+    /* If "64bit_data" contains string */
+    //    fl_fmt_enm=NC_FORMAT_64BIT_DATA;
   }else if(fl_fmt_sng.find("netcdf4") != std::string::npos){
 #ifdef ENABLE_NETCDF4
     if(static_cast<std::string>("classic").find(fl_fmt_sng) != std::string::npos){

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



More information about the Pkg-grass-devel mailing list