2003-08-27 Charlie Zender * cvs tag -c nco-2_8_1 Changes since nco-2_8_0: variable wildcarding 2003-08-21 Charlie Zender * Quote backslash character with backslash in nco_var_lst.c * Add skeleton ncap.1 man page to satisfy autotools 'make install' * Bring bld/Makefile up-to-date with wildcarding, getopt changes 2003-08-20 Henry Butowsky * Rolled out varriable wildcarding to all operators configure script checks for presence of regular expressions lib regex.h 2003-08-16 Charlie Zender * Verified autotools builds fine again on SGI, AIX * Straighten out getopt_long() preprocessor logic to work with architectures with getopt.h but no getopt_long() (SGI, AIX) 2003-08-15 Charlie Zender * Rorik synchronized shared library numbering with NCO version number * Document wildcarding in nco.texi 2003-08-14 Henry Butowsky * Added wildcarding of variables to ncks 2003-08-13 Charlie Zender * Make nco_malloc_flg() return NULL when malloc() returns ENOMEM * cvs tag -c nco-2_8_0 Changes since nco-2_7_4: ncbo, Debian integration * Add Debian package uploads to nco_dst.pl * Add Debian packages homepage * Add developer autoconf-automake-configure-make example to configure.eg 2003-08-03 Charlie Zender * Finish first cut at ncbo documentation in nco.texi 2003-08-02 Charlie Zender * Rename val_conform_type() to val_cnf_typ() * All regressions due to introduction of ncbnr appear to be fixed * Correct nco_tst.sh procedure for ncap * Restore nco_op_avg inadvertently removed from nco_op_typ_get() 2003-08-01 Charlie Zender * Fix ncbnr case statement and verifiy ncbnr works for +-*/ 2003-07-29 Charlie Zender * Verify ncdiff and ncbnr -y sbt work as expected but problems exist with add, mult, and, presumably, divide. * Make ncdiff symbolic link to ncbnr for backward compatibility 2003-07-27 Charlie Zender * Create ncbnr operator * Rename nco_var_add_no_tally() to nco_var_add() * Rename nco_var_add() to nco_var_add_tll() 2003-07-20 Charlie Zender * Changed math table printing from -r to -f in ncap so that -r is consistent among all operators. Documented this in nco.texi. 2003-07-06 Charlie Zender * Removed FTP requirement from make tst. Create nco_tst.sh creates foo.nc from scratch without needing to FTP nco_tst.nc. Test involving FTP is now called make tst_ftp. 2003-07-04 Charlie Zender * cvs tag -c nco-2_7_4 Changes since nco-2_7_3: Better AIX autotools support, UDUnits fix 2003-07-01 Charlie Zender * Add --Mtd switch for global metadata, update nco.texi accordingly 2003-06-24 Charlie Zender * Added PayPal donation button, updated homepage 2003-06-23 Charlie Zender * Rorik fixed UDUnits handling of hyperslab specifications in floating point format, e.g., 1.23e-7. 2003-06-15 Charlie Zender * Update copyright headers * Change GPL version 2 or later license to version 2 only. * Clean up some MSA namespace * Document supported non-ANSI functions (e.g., acosh(), trunc()) in nco.texi * Changed --nocoords to --no-coord or --no-crd. Decided all disabling actions will have same keyword as enabling action except switch will start with --no-XXX 2003-05-30 Charlie Zender * Add CPP_TKN_OS += -I/usr/vacpp/include for nco_c++ on AIX * AIX autotools modifications by Jim * Jim Edwards completed Autoconf TODO 17. Fix CXX valarray to work on AIX 2003-05-21 Charlie Zender * Replaced malloc() with nco_malloc_flg() in about 10 locations where malloc() ENOMEM errors are handled directly by the calling code for additional diagnostics. 2003-05-06 Charlie Zender * Move RPM-wishlist off high-priority list, add restrictive MSA parsing to list as per Shultz request 2003-04-06 Charlie Zender * Added numerous long option synonyms in CSZ abbreviation format documented in abb.sty 2003-03-30 Charlie Zender * cvs tag -c nco-2_7_3 Changes since nco-2_7_2: UDUnits support for "units" attributes * Clean up nco_lmt * Documented UDUnits feature in User's guide 2003-03-27 Charlie Zender * Add UDUNITS_LIB, UDUNITS_INC CLI args to bld/Makefile 2003-03-26 Charlie Zender * Remove TODO 95. Satisfactorily addressed by Rorik's UDUnits work. 2003-03-25 Charlie Zender * Made --op_rlt, --cmp, --op_cmp, --compare synonymous with -o for ncwa * Re-arrange output from --usage, --help options 2003-03-24 Charlie Zender * Put UDUnits stuff on homepage * Added bld/Makefile support for UDUnits when UDUNITS=Y * Rorik committed UDUnits support for time coordinate limits in hyperslabs 2003-03-19 Charlie Zender * Remove TODOs 138, 139, 140, 141, 142---all solved or made obsolete by Henry's MSA printing algorithm. 2003-03-18 Charlie Zender * General honing of nco.texi * Implemented TeX and TeXInfo macros to keep math variables consistent with LaTeX sources. Mostly successful, except Info does not like macros inside or macros, e.g., @var{@wndznl{}} * cvs tag -c nco-2_7_2 Changes since nco-2_7_1: disk-based, MSA printing indices work 2003-03-17 Charlie Zender * Replaced examples in nco.texi with output from MSA printing 2003-03-09 Charlie Zender * Modifying debian/* files to build with 2.7.x as zender 2003-03-07 Charlie Zender * Remove -ansi flag from gcc builds because it is (apparently) equivalent to -std=c89 and thus conflicts with -std=c99. 2003-03-02 Charlie Zender * Began Debian-ization of upstream source by populating debian directory with nco-2.2.0 Debian package files by Brian Mays NB: Files in debian/ are for 2.2.0 (i.e., way out of date) We are trying to Debian-ize upstream source for NCO ~2.8.0 Expect some hiccups when that finally happens * Insert LINUXARM in Linux portion of bld/Makefile * Synchronize Debian nco/doc/man with CVS nco/man * Add Debian files by Brian Mays to CVS repository: debian: changelog control convert copyright postinst prerm rules bld: linux1 linux2 (appear obsolete and may soon be removed) 2003-02-25 Charlie Zender * Builds cleanly on LINUX, IRIX, AIX * Remove unused variables from ncap.[cl], nco_msa.c * Clean up nco_att_cpy() 2003-02-05 Charlie Zender * Change from WARNING to level 1 INFO when wrapped limits processed in nco_lmt_evl() 2003-01-29 Charlie Zender * Documented procedure for computing covariance of two variables using http://jisao.washington.edu/data/nco/ as template 2003-01-20 Charlie Zender * cvs tag -c nco-2_7_1 Changes since nco-2_7_0: long options on all platforms, packing fix for ncap * Initiate HPPA support in bld/Makefile 2003-01-19 Charlie Zender * Fix inconsistent storing of fixed variables that are packed in ncap Packed values were being saved in unpacked type without packing attributes 2003-01-18 Charlie Zender * Clean up some ncap_utl prototypes 2003-01-14 Charlie Zender * Updated nco_c++ build instructions and documentation to refer to Makefile.old * Changed copyright end year to 2003 2003-01-08 Charlie Zender * Rorik added conditional compilation of Sittler's getopt_long() where necessary, removed *_GETOPT_LONG tokens from all source code. 2003-01-03 Charlie Zender * Successfully built NCO 2.7.0 on Redhat 8.0 at HP Testdrive site spe141.testdrive.compaq.com. The HP Testdrive site has virtually every imaginable combination of hardware and OS, so now NCO may be tested on all of these machines. My first test with a new architecture, HP-UX (HPPA), failed because of lack of C++ compiler. Thus Testdrive computers do not appear to be fully loaded with reliable compilers. 2003-01-02 Charlie Zender * cvs tag -c nco-2_7_0 Changes since nco-2_6_6: long options and multislabbing 2002-12-29 Charlie Zender * Add rudimentary tests of multislabbing to nco_tst.sh * Switch from ~ to @w{} for unbreakable spaces in nco.texi 2002-12-28 Charlie Zender * Document multislabbing in user's guide * Document long options in user's guide * Implement more long options in TLA format * Henry changed arithmetic in nco_msa to char * arithmetic to remove warnings * Clean up ncap_utl.c some 2002-12-27 Charlie Zender * Clean up nco_msa.[ch]. Still need to fix void * arithmetic 2002-12-19 Charlie Zender * Moved multi-slabbing algorithm to nco_msa.[ch] 2002-12-19 Henry Butowsky * First version of multi-hyperslabbing along a single dimension for ncks 2002-12-14 Charlie Zender * Took advantage of NEED_FNC to remove MACOSX kludge in nco_rth_flt.h * Merged Rorik's long options mods 2002-11-04 Charlie Zender * Restore ./configure file from 2.6.5 and re-tag as 2.6.6 2002-10-25 Charlie Zender * cvs tag -c nco-2_6_6 Changes since nco-2_6_5: ncrename fixes, ncap type conversion * Use '.' consistently in .var@.att renaming * Changed variable-attribute delimiter in ncrename from ":" to "@" to be consistent with ncap * Fixed ncrename to not fail when . specified and variable does not contain attribute 2002-09-24 Henry Butowsky * Added type conversion functions for attributes and variables byte, char, short, int, float, and double 2002-09-22 Charlie Zender * info-friendly changes to nco.texi 2002-09-20 Charlie Zender * cvs tag -c nco-2_6_5 Changes since nco-2_6_4: CRAY and SUN builds * Fix SunOS builds in bld/Makefile 2002-09-19 Charlie Zender * Patches from Len Makin for CRAY 1. Cray patch for ncap symbol table 2. Makefile fixes for Cray 3. nco_tst.sh tweaks Applied the Makefile flags to configure.in as well 2002-09-17 Charlie Zender * cvs tag -c nco-2_6_4 Changes since nco-2_6_3: MACOSX builds, SGI, NEC tweaks * Match SX-* with NECSX architecture in pvmgetarch * Correct some dependencies for string compatibility functions * Adapt for missing with SGI CC 2002-09-14 Charlie Zender * Added esoteric math functions to MACOSX using float<-->double coercion method * Implement compatibility strdup() and strcasecmp() Comeau should now work but have not tested it * cvs tag -c nco-2_6_3 Changes since nco-2_6_2: Numerous build improvments and removal of PVM_ARCH ifdefs MACOSX builds with bld/Makefile, documentation fixes * MACOSX builds appear to work * Add ranlib to bld/Makefile libnco.a target for MACOSX builds * Get rid of inline qualifier on nco_rth_flt function definitions * Move function definitions from nco_rth_flt.h to nco_rth_flt.c * Verified that bison 1.29 on MACOSX screws up ncap_yacc.y translation. Installed bison 1.35 on compile farm MACOSX system, and builds work fine. * Remove ncap_utl.o from libnco.a * #include in nco_rth_flt.h * Do not look for in MACOSX 2002-09-09 Charlie Zender * Added preliminary MACOSX support to bld/Makefile Everything appears to work but ncap, which has numerous problems on MACOSX because of bison, float functions, and ranlib. * Code compiles with gcc -ansi -pedantic -D_BSD_SOURCE Switches -std=c99 and -std=gnu99 both work too -D_BSD_SOURCE tells GCC nameser.h is ANSI-compliant * Moved float math function definitions to nco_rth_flt.h, created declarations for MACOSX in nco_rth_flt.c 2002-09-08 Charlie Zender * Implemented pre-processor macros CST_X_PTR_CST_PTR_CST_Y, X_CST_PTR_CST_PTR_Y to be as const-correct as possible for the language the source code is treated as. If treated as C++, full const-correct prototypes are implemented, else if treated as C, a const is dropped here or there to make things compile warning-free. Fixes TODO #213. 2002-09-06 Charlie Zender * Clean up ncap section of nco.texi, polish documentation builds, add XML, txt formats from makeinfo * Fixed nco.texi problems, generating docs at compile farm 2002-09-03 unknown * Typecast return value of strdup() to char * 2002-09-02 Charlie Zender * #include in all headers which reference strdup() * Crude but workable HAVE_STRCASECMP support, include config.h headers to allow future HAVE_STRDUP handling * Implement some Comeau support, but presence of non-ANSI functions strdup(), strcasecmp() makes full Comeau support unlikely anytime soon 2002-08-27 Charlie Zender * Tweak CC list in configure.in, remove c89, xlc_r * cvs tag -c nco-2_6_2 Changes since nco-2_6_1: Improvements to autotools builds Initial ncap handling of user-defined dimensions * Replace PVM_ARCH token with HAVE_GETOPT_H for getopt.h handling * Remove Fortran files nco_cal_utl.F, nco_fortran.F, nco_fortran.h since it is unlikely anyone will step forward to maintain fortran support. Of course these can be resurrected if necessary. * Add instructions for using compile farm, modify AIX, MACOSX builds 2002-08-22 Charlie Zender * Define var_in_typ before using in nco_cnv_mss_val_typ() * Began using HAVE_CONFIG_H, config.h in source files (nco_scm.[ch],tst.cc) 2002-08-21 Charlie Zender * cvs tag -c nco-2_6_1 Changes since nco-2_6_0: Unpacking is now supported for all arithmetic operators * Improved regression testing in configure.eg * Eliminate unnecessary type conversion to typ_dsk in ncra, ncea, ncwa This could reduce precision of answers Thanks to Martin Dix for pointing this out 2002-08-20 Charlie Zender * cvs tag -c nco-2_6_0 Changes since nco-2_5_6: Unpacking support is now beta for all arithmetic operators * Print attributes with same formatting as variables * Added hooks for packing support in arithmetic operators: Code was changed in locations marked with "pck_dbg" 1. Change type of output in nco_def_var() from var->type to var->typ_upk when is_rth_opr() is true 2. Unpack variable in nco_var_get() when is_rth_opr() is true 3. nco_att_cpy() does not copy attributes "scale_factor", "add_offset" for unpacked output variables 4. nco_att_cpy() ensures "missing_value" is converted to unpacked type before copying 5. nco_var_get() refreshes var->pck_ram on each read 6. Use nco_cnv_mss_val_typ() to keep type of missing_value in sync Unpacking appears to be working for all arithmetic operators! 2002-08-19 Charlie Zender * Added .cvsignore to dirs affected by autoconf * Added autoconf-specific list to doc/TODO * Added configure.eg to keep track of autoconf problems * Changed bld/Makefile to work with ncap_lex.l and ncap_yacc.y Removed ncap.l and ncap.y. 2002-08-18 Charlie Zender * cvs tag -c nco-2_5_6 Changes since nco-2_5_5: fixed processing of missing_values for integer variables in ncra, initial auto build tools * Merged Rorik's autobuild infrastructure. New (autobuild) and old (bld/Makefile) systems both appear to work but there may be some interference on ncap since ncap.l had to be renamed ncap_lex.c and ncap.y is ncap_yacc.c. * Altered pck_dsk_inq() to set var->typ_upk=var->type by default so that nco_cnv_mss_val_typ_upk() has something to work with * Fixed problem in nco_cnf_typ.c which caused failure for ncra when variable had missing_value attribute and needed to be promoted before arithmetic (e.g., int to float). Freeing variable each record but leaving mss_val the promoted type resulted in mss_val being overwritten (usually to value of 0.0) in all records but first for each file. Problem was ncra-specific and is described in more detail in header of nco_cnv_mss_val_typ_upk() routine. Better fix would be to carry type of missing_value as separate element of var structure. 2002-08-14 Charlie Zender * cvs tag -c nco-2_5_5 Changes since nco-2_5_4: Global "history" attribute fix * Fix bug in nco_hst_att_cat() introduced in 2.4.2 which left att_nm undefined when global history attribute did not exist 2002-08-13 Charlie Zender * cvs tag -c nco-2_5_4 Changes since nco-2_5_3: NECSX support * Extensive support for NECSX architecture contributed by Len Makin 2002-08-10 Charlie Zender * Make Rorik Peterson a developer. Add sourceforge logo to homepage. 2002-07-28 * Updated to cygwin-gcc-3.1.1-4 and build problems appear to have gone away, but syslimits.h is still not found so GSL cannot build 2002-07-08 Charlie Zender * Correct ncap symbol table to build on SGI6, SGI64 platforms * Add ncap to nco_tst.sh test suite 2002-07-08 * All operators build with cygwin gcc-3.1.1 as long as -I/usr/include is given first (fixes weird syslimits.h problem), non-kludge fix may require updated gcc and mingw packages. * Modify Makefile for cygwin-1.3.x compatibility. Everything appears to build except ncap.l/ncap_lex.c which needs syslimits.h which current cygwin gcc-3.1.1 does not appear to support 2002-07-03 Charlie Zender * cvs tag -c nco-2_5_2 * conditionally added acosh, asinh, atanh, cosh, sinh, tanh to ncap * unconditionally added floor(), ceil() to ncap * Print double precision numbers with 12 digits of precision * conditionally added erf(), erfc() to ncap * Document ncks -b, -B switches in manual * Fix size of extracted dimension list for wgt and var calls to nco_var_fll(). Print error and hint when encountering TODO #111 problems rather than dumping core. 2002-07-01 Charlie Zender * cvs tag -c nco-2_5_1 * Modified ncatted to delete all attributes for specified variable when no specific attribute name is given for that variable. 2002-06-16 Charlie Zender * cvs tag -c nco-2_5_0 * Added man pages for NCO operators to man directory. Source of man pages is Debian distribution by Brian Mays, which automatically generates man pages from texinfo source. Thus man pages are moderately out of date, currently for version 2.2.0. 2002-06-15 Charlie Zender * Make namespace safe by prefixing all functions with nco_ or ncap_ 2002-06-09 Charlie Zender * cvs tag -c nco-2_4_6 * Changes since nco-2_4_5: Sorting routines * Replace indexx* routines with system qsort()-based routines 2002-06-08 Charlie Zender * Lexer/parser changes to implement conditional, clean up rx's 2002-06-07 Charlie Zender * cvs tag -c nco-2_4_5 * Changes since nco-2_4_4: Arithmetic routines use const. More warning messages during compilation due to size_t printf * Fixed bug where mss_val_sht was dereferenced into long in one arithmetic routine. * Made as many parts of arithmetic routines const as possible and implemented const instantiaion outside of loops to reduce dereferencing wherever possible. If NCO suddenly seems faster, this is why. 2002-06-06 Charlie Zender * Noticed that GCC gives warnings when printf'ing size_t with %lu format flag since type of size_t is non-portable. GNU offers non-portable %z workaround. Recommended solution is to typecast all size_t's to unsigned longs before printf'ing. * Worked on 64-bit clean issues identified by AIX -qwarn64 flag The only possible non-functioning code found was date conversion code which could break on YYYYMMDD dates. Converted int's to longs where necessary to solve this. Used size_t instead of int or long where possible. Used ptrdiff_t instead of int where warranted. Most of remaining warnings could be solved by using size_t instead of int or long for counters, but mismatches are unavoidable at some point since type nco_long variables (i.e., netCDF data) needs to interact with size_t variables on occasion. * cvs tag -c nco-2_4_4 * Changes since nco-2_4_3: Build system 2002-06-05 Charlie Zender * Allow 64 bit mode ABI (addresses are all 64 bits) on AIX when compiled with ABI=64. This should allow NCO to work on files larger than 2--4 GB The default for SGI was already 64 bits. 2002-06-04 Charlie Zender * Make flex/bison default on AIX 2002-05-31 Charlie Zender * cvs tag -c nco-2_4_3 Changes since nco-2_4_2: History attribute handling * Added target non_ncap to Makefile in attempt to prevent NCAR AIX breakage * Fixed hst_att_cat() to handle non-standard "History" attribute same as standard "history" attribute 2002-05-23 Charlie Zender * cvs tag -c nco-2_4_2 Changes since nco-2_4_1: #include file mechanism works, AT&T lex-compatibility broken by using flex rules * Documented ncap file insertion * Fixed #including file mechanism, generalized line counting and file name storage 2002-05-22 Charlie Zender * Realized that AIX lex does not support like flex * Ported to NPACI environment 2002-05-20 Charlie Zender * cvs tag -c nco-2_4_1 Changes since nco-2_4_0: minor bugfix which should fix use of operators in scripts where return code is checked 2002-05-19 Charlie Zender * More ncap work to prepare for dimension list structures which are going to be implemented correctly by tokenizing each element of dimension list and assembling full list in parser and letting scanner pass in each token. 2002-05-18 Charlie Zender * Added nco_op_typ element to prs_sct for handling dimension reduction functions 2002-05-15 Charlie Zender * Fixed bug where nco_exit always returned EXIT_FAILURE 2002-05-14 Charlie Zender * Added skeleton code to read #include'd files. Not yet working. 2002-05-13 Charlie Zender * cvs tag -c nco-2_4_0 Changes since nco-2_3_1: Builds out of box on all Unices * Surround fabsf and fmodf prototypes with ifndef __GNUG__ since g++ linking fails when prototypes explicitly specified in header _and_ in function. This is a kludge to a kludge to enable full g++ compilation. * Version now builds on AIX (even ncap.y with pure_parser) as long as cc compiler, not xlc or xlC, is used. Prototype warnings similar to gcc prototype warnings can be ignored. All major platforms are once again working out of the box. 2002-05-11 Charlie Zender * cvs tag -c nco-2_3_1 Changes since nco-2_3_0: New design, same functionality Appears to work on Linux, IRIX but compile problems on AIX * gcc compiles with spurious errors but links and tests fine * g++ compiles fine but unable to link with fabsf fmodf * Code builds and test correctly when compiled with icc * New code compiles completely warning-free with icc 6.0 2002-05-08 Charlie Zender * Added ability to write unformatted binary output to ncks using -B switch. Seems to work 2002-05-07 Charlie Zender * cvs tag -c nco-2_3_0 Changes since nco-2_2_4: Completely unstable version with new modular design. Library does build cleanly. * Redesigned libnco.a as modular library Split into ~20 smaller source files each with private header Used const wherever possible 2002-04-27 Charlie Zender * Finished name cleanup in ncap. Still need to break large files into smaller granules and const'ify prototypes * cvs tag -c nco-2_2_4 Changes since nco-2_2_3: Packing and unpacking functions now both work in ncap * Reducing ndrv number of discretely representable values by 1 appears to fix the rounding problems. Will probably have to reduce it by one more to make room for a missing value. 2002-04-26 Charlie Zender * Packing appears to be working, but not recursively, and there are still issues of speed and rounding problems * Automatically call var_upk() in var_get() in ncap only * Improved pck/upk values in in.cdl * Make var_pck() alter typ_pck, typ_upk elements when finished packing 2002-04-24 Charlie Zender * Put warnings on some arbitrary limits in ncap * Modify ncap and Makefile to link to -lC AIX C++ library to access float intrinsics cosf()... AIX does not support gammaf() (nor does SGI). 2002-04-23 Charlie Zender * cvs tag -c nco-2_2_3 Changes since nco-2_2_2: Support unpacking variables in ncap * Altered ncap algorithm so that now binary var/att expressions take highest precision type rather than always using var type. This allows unpacking algorithm to work straightforwarly using scale_factor and add_offset convention. 2002-04-18 Charlie Zender * cvs tag -c nco-2_2_2 Changes since nco-2_2_1: fix rare ncwa weight bug * make tst gets test file from dust.ps.uci.edu rather than CGD * Avoid wgt portion of ncwa when DO_CONFORM_WGT = False This section was superfluous in this situation anyway. Avoiding it by testing for DO_CONFORM_WGT appears to fix some hard to identify bug when lon was being averaged with gw as weight. The two did not conform, but a problem occured anyway. This appears to cure the three mysterious ncwa crashes present in the TODO list so mark those as fixed too. 2002-04-02 Charlie Zender * Switch back to using pure_parser to prevent Linux core dumps on 2002-03-30 Charlie Zender * Prototype fabsf() where used to help Sun compilation 2002-03-27 Charlie Zender * Quiet output by only printing CONVENTION when dbg > 0 2002-03-21 Charlie Zender * Remove %pure_parser from ncap.y to preserve yacc compatibility 2002-02-27 Charlie Zender * Described LHS casting in manual 2002-02-24 Charlie Zender * ncap variable division had numerator and denominator swapped! * Removed ncap_lex.c ncap.tab.c ncap.tab.h because they are not portable across platforms so it is best to let these be generated on user's machine until portable x-platform versions can be generated. Immediate problem is that IRIX and Linux versions are interfering with eachother. * ncap -r does not require argument 2002-02-18 Charlie Zender * Began documenting ncap in nco.texi 2002-02-11 Charlie Zender * Remove ncap dependency on getopt.o, getopt1.o since getopt_long() is not currently used (but using it is on the TODO list). Re-implementing getopt_long() will be done eventually, but now just make ncap easier to build to facilitate more beta testing. 2002-02-04 Charlie Zender * cvs tag -c nco-2_2_0: Changes since nco-2_1_3: Henry made subscripts lexer tokens and improved dimension list handling so LHS casting works regardless of precedence or presence of LHS expressions. * Small ANSI fixes in ncap.c for AIX * Replace math float prototypes required for AIX, Solaris builds These are not required on Linux or IRIX, which keep them in math.h * Documentation changes 2002-02-02 Charlie Zender * Quieted output by removing verbose printing from debug level = 0 Execution is now silent except for WARNINGS and INFOs. 2002-01-30 Charlie Zender * Added some Compile Farm procedures to nco_src_frg.txt * Add FREEBSD support to Makefile, and allow environment to override CC and C++ compiler variables 2002-01-29 Charlie Zender * cvs tag -c nco-2_1_3 Changes since nco-2_1_2: LHS casting really works as long as dimensions are already in output file. Replaced var_add() in ncap, no known parser bugs, just missing features. * Created var_add_no_tally() by copying var_subtract() and changing minuses to pluses. This routine does not use tally, and does handle missing values appropriately. Changed ncap_var_var_add() to use var_add_no_tally() rather than var_add(). This fixed segfaults with prs_mdp definition, which now works as expected. * ncap variable addition scripts break in var_add() Possibly because not all ncap routines malloc() tally array Possibly because missing values handling is not failsafe in var_add() (although I believe it is fine for other NCO operators) * Allocate tally using sizeof(long) rather than nco_typ_lng(NC_INT) 2002-01-28 Charlie Zender * Move LHS_cst cleanup to statement_list rule so cleanup does not occur before last expression in statement is evaluated * Added ncap_var_stretch() to out_var_exp = att_exp action * Spread out debug levels to create more uniform distribution of diagnostics as dbg_lvl increases * LHS casting is semi-working, semi-broken. Seems to work when all required dimensions are already in input file and RHS is variable, not attribute. Thus a3[lat,lon,lev] = one works but a3[lat,lon,lev]=1.0 does not. Still thinking about how to stretch attributes. 2002-01-27 Charlie Zender * cvs tag -c nco-2_1_2 Changes since nco-2_1_1: ncap warning cleanups, icc conformance, plug most non-ncap leaks detected by insure++ * Move yylex() so only called once in ncap_initial_scan() 2002-01-26 Charlie Zender * Use to get INT_MIN, INT_MAX * Changed from gcc to icc on Intel, seems to work fine * Cast char to unsigned char and visa versa where necessary to prevent icc warnings. This solved all icc warnings on ncap, and solved all IRIX cc warnings for ncap too. Since unsigned char pointer and char pointer are same size, there should be no problem casting between them. However, casting between unsigned char value and char value could change answers. String operations should be checked to ensure they still work. 2002-01-23 Charlie Zender * Fix read overflow in ncks.c:prn_var_val_lmt() where non-NUL-terminated character array was being printed with %s format 2002-01-22 Charlie Zender * Fix non-NUL-terminated strings in hst_att_cat() * Added nco/doc/purify.txt to track memory problems reported by purify 2002-01-21 Charlie Zender * Remove templates for math functions from ncap.c * Implement CCOMMENT start state to recognize C comments /* */ * Explicitly declare yy_scan_string() to remove compiler warnings * Implement/use nco_set_fill() wrapper Remove architecture-dependent wrapper on usage Pass pointer to valid fll_md_old since NULL is not safe because nc_set_fill() may try to write to it 2002-01-17 Charlie Zender * Initialize RHS to False, add global LHS_cast 2002-01-16 Charlie Zender * Enable assertion macros in ncap * Changed Makefile default to OMP=N until further testing * Began implementation of lexer for subscripted variables with x[dmn1,dmn2,...dmnN] syntax. Currently creates list of dimension structures but does nothing with it. 2002-01-13 Charlie Zender * Verified ncap script gives same answers as odxc.ncl script * var_free() superceded variable in ncap_var_conform_dim() causes core dump (why?), but not free'ing must cause memory leak * Realized var_conform_dim() has bug of omission: does not abort when variables do not conform because dimension list of one is subset of other but ORDER of dimensions differs, e.g., a(lat,lev,lon) !~ b(lon,lev). NCO probably returns incorrect answers silently in this case! 2002-01-12 Charlie Zender * Added variable/variable division (which had been overlooked) * Created ncap_var_stretch() which generalizes var_conform_dim() by including convolution of variables. ncap_var_stretch() appears to work as drop in replacement for var_conform_dim(). Convolution is just a stub which does not do anything yet. Realized that expansion might work by creating arbitrary variable of convolution size and then separately calling var_conform_dim() with that as var and both vars as wgt. * First build of ncap on LINUXALPHA architecture 2001-12-31 Charlie Zender * More ncap.* cleanup. Alter some variable names to conform to rest of NCO. 2001-12-29 Charlie Zender * Succeeded in building ncap on 64 bit machines: SGI, Alpha, Sun All of these machines have bison installed Some of these builds require building getopt.o separately Build fails on IBM because yacc does not understand pure_parser 2001-12-28 Charlie Zender * More CEWI initializations * Changed copyright to 2002 * Remove C++ comment characters that crept into various routines Using // comments causes default to compilation to break on many architectures (Linux being an exception) * cvs tag -c nco-2_1_1 Changes since nco-2_1_0: ncap uses @ for attributes Mixed rank handling improved but still broken * Fix '@' handling for global attributes * Make handling of attribute indicator @ consistent in warnings * ncap.l: cast void to ptr_aed->type not undefined type * Begin clean up of ncap code, eliminate compiler warnings 2001-12-11 Henry Butowsky * Changed ncap.l so attributes now use the @ symbol rather than : i.e var_nm@att_nm rather than var_nm:att_nm * Changed ncap.y So that 1-D variables can be saved in an attribute * Attempted to fix the rank problem. Added ncap_var_conform_dim() to ncap_utl.c, Its not working correctly at the mo. * Added att_lst_max to ncap.c * Updated ncap.in 2001-12-02 Charlie Zender * cvs tag -c nco-2_1_0 Changes since nco-2_0_3: ncrename interactive query limiter ncap extravaganza * Move Henry's tests into ncap.in script * Allow global:att_nm to signify global attributes in ncap * Removed file query cruft from ncrename and added maximum response count short circuit mechanism to prevent batch jobs from going bonkers when -O not specified and output file exists * Added hybrid coordinate info to in.cdl 2001-11-10 Charlie Zender * Added three_dim_var_crd to check COORDS storage convention ordering 2001-10-30 Charlie Zender * Fixed getopt dependencies and included nco_netcdf.h nco.h in ncap stuff 2001-10-28 Charlie Zender * cvs tag -c nco-2_0_3 Changes since nco-2_0_2: ncks bugfixes for units printing, and version information * Use NC_REC_DMN_UNDEFINED instead of -1 where appropriate * Fix argument list to nco_inq_varid() call in ncap * Fix netCDF3 migration bug that could cause core dumps because non-coordinate dimensions where being interpreted as coordinate dimensions in ncks due to changed nature of nc_inq_varid returns 2001-10-15 Charlie Zender * Added VERSION infrastructure for recording build information in executable * Check rcd before Exit_Gracefully() in main() routines so rcd does not generate "set but not used warnings" 2001-10-07 Charlie Zender * cvs tag -c nco-2_0_2 Changes since nco-2_0_1: No user-visible changes All changes are in netCDF3 compliant function semantics for the nco_netcdf wrappers. Altered many routines to call information-specific versions of inquire functions where possible. * Verified nco-2_0_2 passes test suite * nco_typ_sng(): NC_CHAR is unsigned char, moved nco_typ_sng(), c_type_nm(), fortran_typ_nm() to nco_netcdf library so that library may take advantage of these routines in printing useful diagnostics, yet still be independent of the rest of NCO. * Attempted to replace netCDF2-style use of -1 return codes by rcd and comparison to NC_NOERR everywhere. This is not exactly straightforward because there are many valid reasons to have literal constant -1 in the code. I think I did this correctly. However the use of -1, instead of NC_GLOBAL, for global attributes and, for ncatted, to indicate that attribute changes should apply to all variables, should be changed to NC_GLOBAL so code is more clear. * Change functions to implement netCDF 3.X interface Meaning pass answer holder as pointer and pass back return code nco_open(), nco_create(), nco_inq_[var,dim,att]*() * ncks.c prn_var_val_lmt(): Handle nco_inq_attid() correctly 2001-10-01 Charlie Zender * Build is clean and successful with g++/Linux, xlC/AIX * Return (int)0 instead of (int)NULL from nco_typ_lng() * Initialize nc_type variables with new netCDF 3.5 token NC_NAT This requires building NCO > 2.0.1 with netCDF >= 3.5 This change also permits successful builds with g++ again, which complained about initializing nc_type with non nc_type enums * cvs tag -c nco-2_0_1 Changes since nco-2_0_0: Cleaner separation of netCDF wrappers into nco_netcdf.c,.h Appearance of error messages slightly changed since prg_nm_get() no longer invoked by wrappers * ncap uses nco netCDF3 interface * Structure nco_netcdf.h as standard library header * Forbid multiple includes of nco_netcdf.h * Changed nc.h to nco.h for namespace consistency * Removed prg_nm_get() from all nco wrappers so wrappers have no external dependencies * Changed nc_err_exit() to nco_err_exit() * Removed superfluous headers from nco_netcdf.c 2001-08-10 Charlie Zender * Changed storage location of remotely accessible in.nc to .../nco/in.nc * Various Makefile changes for exotic NCAR platforms * Changed band to bnd in in.cdl 2001-07-25 Charlie Zender * TODO: Rearranged TODO list and put ~15 high-priority items up on the top 2001-05-28 Charlie Zender * Added HDF5 interface to nco_create(), using HDF5 preprocessor token to isolate native HDF code currently 2001-05-07 Charlie Zender * cvs tag -c nco-2_0_0 * This netcdf3 branch is now merged into the main trunk. The netcdf2 branch is now in maintenance mode. * cvs tag -c nco-1_3_4 2001-04-04 Charlie Zender * Changed to using nco_inq_att_flg() in ncar_csm_inq() 2001-03-26 Charlie Zender * cvs tag -c nco-1_3_3 * nco_tst.sh runs as expected when compiled with OPTS=D and OPTS=O on both Linux 32 bit and Irix 64 bit * Removed make options for NETCDF2_ONLY flag which is no longer supported with NCO 1.3 branch * Default build now compiles with -DNO_NETCDF_2 flag and tests successfully. * Replaced nclong with nco_long = long. There's no need to remove nco_long just yet until a long term strategy for dealing with long, size_t, int issues is decided upon. netCDF 3.x deprecates the whole nclong issue, but it might be useful to have reminders of where the issue was important, e.g., in the fortran arithmetic routines. * Changed in.cdl to use int rather than deprecated long and removed deprecated "l", "L" suffices to numeric constants * Added i18n headers to ncra.c and to Makefile with default being no internationalization. Hooks appear to work fine. * Changed NC_LONG to NC_INT to adhere closer to standard. Type NC_LONG is currently synonymous with NC_INT and will continue to be represented by native type long. 2001-03-07 Charlie Zender * Added Makefile option to disable OpenMP support on compilers that automatically support it: OMP=N 2001-03-06 Henry Butowsky * fixed ncdiff problem. There was a conversion error in dmn_dfn * fixed ncrename problem. There was a typo error in nco_rename_var ( it was calling itself) This is the third such error in nco_netcdf.c. 2001-03-02 Charlie Zender * Code fails to compile with -DNO_NETCDF_2 * Code compiles but is buggy. This command fails: ncdiff -O -C -v three_dmn_rec_var in.nc in.nc foo.nc;ncks -H foo.nc As does ncdiff -O -C -v PS nco_tst.nc nco_tst.nc foo.nc * Removed NETCDF2_ONLY code 2001-02-16 Charlie Zender * cvs tag -c nco-1_3_2 * After many minor tweaks, made commits and retagged nco-1_2_2 and this is the version that will be merged into 1_3_1 to create 1_3_2 * Tagged changes until today as nco-1_3_1 and will merge with nco-1_2_2 2001-02-11 Charlie Zender * Figured out that texi2dvi --pdf really does work nicely and am now using it rather than ps2pdf * Tagged and released nco-1_2_2 2001-01-02 Charlie Zender * Clean up some function prototypes, removed crud from nc.h, implemented extern keyword on all functions * Changed ncks print formatting of NC_BYTE data (i.e., signed char) to print as unsigned char data to facilitate printing HDF4 datasets. 2000-12-29 Charlie Zender * Added make NETCDF2=Y to compare netCDF2 behavior with/without HDF libraries. HDF libraries cause ncwa to fail certain tests that work fine with Unidata netcdf2 libraries. All other operators appear fine with HDF libraries. * Added default statements to switch(type) constructs which emitted warnings when compiled with -DNETCDF2_ONLY since, apparently, there are a whole bunch of things besides numeric types in the old nctype enum and gcc warns about enums that are not exhaustively considered in switch() statements. All these default statements can be removed with netCDF3 interface so perhaps these should be surrounded with #ifdef NETCDF2_ONLY constructs, but they actually do make sense for netCDF3 as well so I have implemented a uniform error function, dfl_case_nctype_err(), to be called by all routines which emit errors only when compiled with NETCDF2_ONLY. This makes the behavior easy to modify or remove in the future. * Fixed echoing of Makefile diagnostics * Added HDF4 option to Makefile to facilitate compiling with HDF version of netCDF libraries 2000-11-25 Charlie Zender * Added -q ("quiet") switch to ncks to suppress printing of dimension indices and coordinate values 2000-11-04 Charlie Zender * Created netcdf3 branch with tag netcdf3 and additional version tag nco-1_3. This branch will hold the netcdf3 implmentation while it is in development. When it is ready it will become the main trunk of nco. 2000-10-29 Charlie Zender * Implemented new @command{}, @env{}, and @acronym{} keywords in nco.texi 2000-10-26 Charlie Zender * Fixed makeinfo problem with nco.texi 2000-10-15 Charlie Zender * Implemented Henry's ncrename and nco_tst patches: Former allows renaming of attribute for a single variable, latter cleans up nco_tst.sh and allows easier function-specific testing. 2000-10-01 Charlie Zender * Cast results of sqrt() to LHS type to eliminate new gcc 2.96 warnings. g++ 2.96 is less forgiving than gcc 2.2 * Fixed some miscast missing values in arithmetic routines for doubles, shorts, and longs. Odd that I had not noticed these miscasts before. g++ 2.96 flagged them. 2000-09-21 Charlie Zender * Fixed one-line bug where ncwa min,max,ttl cases fell through to error exit rather than doing nothing with weights * Adding critical regions about netCDF library calls appeared to work. ncwa and ncra/ncea now give repeatable, correct answers when multithreaded. Speedups appear to be about ~30--40% on small numbers of typical GCM files when using 4 threads. Performance appears to level out by 4 threads, although more timing is necessary. For example, ncwa is now spending about 50% on I/O and 50% on computation. 2000-09-20 Charlie Zender * Added OpenMP critical regions to var_get() and var_refresh() * Added OpenMP critical regions around thread-unsafe netCDF write calls in ncwa and ncra/ncea. * Finally removed 1995--1996-era SGI enum workarounds from nc.h SGI compiler on dataproc seems to behave sanely now * Jim Rosinski and Stacy Walters have both pointed out that netCDF is not thread-safe. Therefore the OpenMP implementation is bound to fail until critical locks are added. 2000-09-19 Charlie Zender * Added OpenMP pragmas to ncea,ncra,ncrcat. They probably don't work either. * Multi-threaded version of ncwa averages variables in T42 file correctly sometimes, but also incorrectly. Currently unpredictable what causes discrepancy. * Removed arg_cnt from ncwa.c. ncwa.c now uses standard fl_mk_lst() to diagnose incorrect argument counts 2000-09-18 Charlie Zender * Got OpenMP compiling but not completely working on ncwa under IRIX 2000-09-17 Charlie Zender * Added full OpenMP directives to ncwa. If this works then ncra is next. 2000-09-13 Charlie Zender * Contrary to the documentation, ncflint has always processed coordinate variables. Perhaps fixing coordinate variables is a better idea? Patched var_lst_divide() to fix all non-record coordinate variable to ncflint. Not sure if I will release this though. Perhaps it should be a switch? * Improved ncflint documentation, including its ability to add files 2000-08-31 Charlie Zender * Changed handling of netCDF convetions to search for "Conventions" attribute rather than "convention" attribute Not sure why I ever used "convention" in the first place! This should fix things like gasussian weights being subtracted 2000-08-30 Charlie Zender * Updated var_dup(), var_free() to handle scl_fct.vp, add_fst.vp, srd. That's right, these routines were not handling srd pointer correctly. 2000-08-29 Charlie Zender * Removed tally array from var_avg_reduce_max/min() routines * Added some clarifications to memory handling in the manual, and additional examples provoked by John Sheldon's GFDL netCDF website. * Integrated ncvarid_or_die() and ncdimid_or_die() into ncrename 2000-08-28 Charlie Zender * Tagged nco-1_2_1 * Will all previous changes to nco_malloc(), nco_realloc(), and memory management in general, make tst now seems to be well behaved with Electric Fence, and duplicates answers without Electric Fence. * Another nco_realloc() tweak to satisfy Electric Fence: Now realloc() is never called when size == 0 2000-08-27 Charlie Zender * Automatic type conversions for arithmetic now work in ncwa, ncea, ncra. Don't think ncflint would benefit from the capability. 2000-08-26 Charlie Zender * Changed meaning and name of typ_prv to typ_dsk in var_sct * Moved target dat_cln from cln to dst_cln, opposite for lib_cln * Simplified internals of nco_opr_drv() * Fixed nco_realloc() so it does not call realloc() when ptr==NULL and size==0. Allowing a realloc() call in this situation is ANSI-legal but triggers Electric Fence. 2000-08-25 Charlie Zender * Merged Makefile refinements by Ethan Davis to better support DODS compilations and less redundant building 2000-08-23 Charlie Zender * Functionalized type conversion routines nco_cnv_var_dbl() and nco_cnv_dbl_var() * Fixed x:y bug in opt arg of ncra.c introduced in 1.2 2000-08-14 Charlie Zender * Added this text to the license, provided by Steven G. Johnson "As a special exception to the terms of the GPL, you are permitted to link the NCO source code with the NetCDF and HDF libraries and distribute the resulting executables under the terms of the GPL, but in addition obeying the extra stipulations of the netCDF and HDF library licenses." This is intended to allow NCO to link to the non-GPL licenses of netCDF and HDF and avoid the "KDE problem". Apparently binaries are considered derived works of any libraries they are statically linked to, i.e., netCDF and/or HDF. This means both licenses must be obeyed, but that is impossible because no license except the GPL is compatible with the GPL. So we the developers of NCO must explicitly grant permission to all users to redistribute NCO under both licenses. 2000-08-03 Charlie Zender * Tagged nco-1_2 * Altered homepage * Added PDF version of manual 2000-07-31 Charlie Zender * Added mathematical definitions of all new operations to manual * Rearranged order of operations in ncwa so that non-linear operations may employ weighting correctly. Weighting is not well-defined for some operations (rmssdn) but I did my best. 2000-07-28 Charlie Zender * Applied final min/max/ttl patch so min/max/ttl capabilities should now work as expected on ncwa,ncea,ncra 2000-07-16 Charlie Zender * Added ncwa min/max/ttl patch 2000-07-09 Charlie Zender * Added section on Contributing/contributors to nco.texi * Fixed case when missing value is first in min and max operators * Added min, max, ttl cases to nco_tst.sh * Added temporary variable to all low-level arithmetic routines (e.g., var_add()) to store missing value in order to reduce dereferencing of pointers to missing values. This may result in measurable speedups for all arithmetic operators. 2000-07-08 Charlie Zender * Applied minmaxttl03 patch 2000-07-02 Charlie Zender * Added nco_op_typ to SGI enum section of nc.h * Update nco/doc/nco_src_frg.txt to include release instructions * Released nco-1.1.48.tar.gz on sourceforge * Switched all memory management to nco_malloc(), nco_realloc() * Implemented min/max/ttl patch (min and ttl not working yet) 2000-06-20 Charlie Zender * Implemented Schweitzer's 'make DODS=Y' patch in Makefile Only works on Linux as configured but that's a start * Added ncvarid_or_die() to replace simple ncvarid() on calls where failure to find variable is an error and a dianostic of which variable is missing would be nice. 2000-06-05 Charlie Zender * Changed ~/nc/nco paths to ~/nco 2000-06-02 Charlie Zender * Added explicity coercion to all lines which generated assignment errors under g++ C++ compiler. This might affect speed of conversions to long, short, char, and byte types from double and float types. These conversions are rare and considered unimportant so any performance penalty is acceptable. * Small changes to make code compile cleanly with g++ C++ compiler * Changed fl_mk_lcl() to try scp instead of rcp. scp should fall through to rcp is sshd is not running on remote machine. * Add Schweitzer's HTTP patch for DODS compatibility to fl_mk_lcl(). Will probably alter implementation in the future so fl_mk_lcl() works without netcdf library as before. NCO should now be DODS compliant when linked to DODS libraries. This allows reading, but not writing, of remote files using HTTP protocol. * Tagged nco1_1_49 as clean new version to start work from sourceforge without any overlaps with 1_1_48 * Had to re-tag nco1_1_48 because sourceforge CVS repository was slightly out of sync with CGD repository * Moved CVS repository to sourceforge 2000-05-16 Charlie Zender * Tagged this as nco1_1_48 * Found and fixed ncdiff bug in TODO #155. Bug had been inserted in ncdiff 1.5 (nco-1.1.15, November 1998) when I switched from using dimension IDs to using dimension names to identify and compare dimensions in var_conform_dim(). Problem was that there are two locations in var_conform_dim() where this needed to be done and I only changed the first location. Then I turned off dimension remapping code in ncdiff which used to take care of the problem. Fortunately I had left that code commented out in ncdiff() so I was able to check that turning it back on solves the problem. Now I have removed old commented-out block from ncdiff (because it was confusing) and all logic is now local to var_conform_dim(). This fix increases the number of strstr() comparisons of dimension names because names must now be compared twice in var_conform_dim() for each variable being expanded. Oh well. 2000-05-12 Charlie Zender * Fixed bug in -d dmn,,,srd case where lmt.end was incorrect 2000-05-10 Charlie Zender * Finished testing of feature allowing skipping of initial files when lmt_typ = dim_idx. Seems to work. Now dim_idx and crd_val hyperslabs may have arbitrary numbers of superfluous files at beginning and end. * Added rec_skp_nsh member to lmt structure to support keeping track of records skipped in superfluous initial files for lmt_typ = dim_idx on multi-file operators 2000-05-09 Charlie Zender * Altered behavior of single point hyperslabs so that single point hyperslabs in the record coordinate (i.e., -d time,1.0,1.0) may be treated differently than single point hyperslabs in other coordinates. Multifile operators will skip files if single point hyperslabs in record coordinate lays outside record coordinate range of file. For non-record coordinates (and for all operators besides ncra and ncrcat on record coordinates), single point hyperslabs will choose the closest value rather than skip the file (I believe). This should be verified. * Switched NCO from atof(), atol() to strtod(), strtol() * Added ability to skip superfluous trailing files to lmt_evl() when limits are coordinate values. Needs testing but appears to work. Had to use a goto statement, icky. Fixes TODO #157? 2000-05-04 Charlie Zender * More fixes to fix problems with Electric Fence 2000-04-18 Charlie Zender * Added ncra ncea to RPM 2000-03-22 Charlie Zender * Added code to prevent malloc'ing 0 bytes because, although it is perfectly legal, Electric Fence complains 2000-03-06 Charlie Zender * Added target rpmnet to Makefile. Usage is sudo make NCO_VRS=1.1.46 rpmnet This downloads specified NCO version, builds RPMs from it, and uploads the RPMs back to NCO FTP site 2000-03-01 Charlie Zender * Added nco.spec to bld directory * Adding rpm target to Makefile 2000-01-27 Charlie Zender * Tagged this as nco-1_1_45 * Fix to PID length bug in fl_out_open() on SGIs Now use dynamically allocated string to hold PID Kudos to Juliana Rew for finding this bug 2000-01-16 Charlie Zender * Changed all addresses except website to UCI ESS * Changed license to GNU GPL (!) 2000-01-14 Charlie Zender * Calling ncwa without arguments now causes operator to print usage and exit successfully * Print error message and hint when ncwa called with -a dim1 -a dim2 instead of -a dim1,dim2 2000-01-10 Charlie Zender * ncks now puts string values inside double quotes, character values inside single quotes, other slight formatting changes too 1999-12-26 Charlie Zender * Tagged this as nco1_1_44 * Documented record coordinate-stride capability for ncra, ncrcat in nco.texi examples and command-line usage routines * Added support for printing all character arrays as strings in ncks 1999-12-14 Charlie Zender * Tagged this as nco1_1_43 * Merged all SGI builds (SGI5,SGI64,SGIMP64) into single makefile block * Added support for C-language escape sequences to ncatted Moved all this code from ncks to new sng_ascii_trn() function 1999-12-06 Charlie Zender * Tagged this as nco1_1_42 * Fixed so that consecutive delimiter strings work, e.g., ncatted -O -a history,global,o,c,"hi,,,hi" in.nc 1999-12-04 Charlie Zender * Fixed bug where ncatted neglected string values after first comma, e.g., would drop ", NCAR" from test attribute in ncatted -O -h -a test,global,o,c,"NREL, NCAR" in.nc because the new attribute value followed the comma delimiter used internally by ncatted to delimit list elements * Fixed so that setting strings to zero length with ncatted works, e.g., ncatted -O -a history,global,o,c,"" in.nc * Fixed attribute printing of lists in ncks: terminal delimiter is no longer appended 1999-11-02 Charlie Zender * Fixed some problems with AIX build environment, switched to -DAIX on the IBM SP cluster environment 1999-10-21 Charlie Zender * Defined MY_BLD_DIR in Makefile before it is used Re-tagged this as nco1_1_41 1999-10-17 Charlie Zender * Tagged this as nco1_1_41 * Added dir to targets which do not rebuild *.d dependencies Doing this and installing latest make-3.78.1 fixes build on dataproc 1999-10-15 Charlie Zender * Tagged this as nco1_1_40 * Added two more ncwa test cases to nco_tst.sh * Fixed another bug in ncwa reported by Keith Lindsay. The denominator in normalized averages did not always account for missing values in the variable being averaged. This bug may have been introduced sometime during ncwa rewrites around 19981201. I'm sure it has not always been there. 1999-10-03 Charlie Zender * Tagged this as nco1_1_39 * Added test target in bld/Makefile. Now `make test' automatically downloads a small (66 kb) file on which it performs a small battery of tests (bld/nco_tst.sh). * Revamped build procedure to use GNU make dependencies rather than makdep perl script. * All *.c files now build cleanly with gcc -Wall * Fixed Makefile bug where Fortran routines were compiled when they were not needed and visa versa * Moved NETCDF_INC and NETCDF_LIB out of architecture specific portions of Makefile 1999-08-31 Charlie Zender * Tagged this as nco1_1_38 * ncwa now averages over all dimensions when none are specified with -a * Patched avg_reduce...() to fix set averages equal to zero when tally is zero. This fixes Keith's problem. * Added ncwa test #12 to nco_tst.sh. This tests for a bug reported by Keith Lindsay where ncwa averaged a variable which is completely missing_value to a value of 0.0 rather than missing_value. * Removed C_ONLY token and made builds completely C-based by default. Introduced new token USE_FORTRAN_ARITHMETIC to build old style NCO with fortran arithmetic routines. Seems to work fine. Translated Fortran date routines newdate() and days2eom() to C as part of this. 1999-08-04 Charlie Zender * Tagged this as nco1_1_37 * Implemented first attempt to use msrcp, seems to work * Tagged this as nco1_1_36 * Improved patch to fl_mk_lcl() so it "does the right thing" when determining whether to try to rcp files 1999-08-03 Charlie Zender * Patched fl_mk_lcl() to exit gracefully on filenames with multiple colons (which are legal in UNIX). Files with single colons in their names, as opposed to rcp requests, still cause core dumps and will continue to do so until I write a routine which determines whether to treat the filename as an rcp request based on some sort of valid hostname recognition algorithm. 1999-07-29 Charlie Zender * Tagged this as nco1_1_35 * Changed WARNING message to print in ncra only when insufficient records have been found and last file has been processed 1999-07-03 Charlie Zender * Tagged this as nco1_1_34 * Altered ncatted behavior to replace missing data values with new missing_value when missing_value attribute changes 1999-05-12 Charlie Zender * Tagged this as nco1_1_33 * Using the new lmt_evl() dim_idx code for operators besides ncra and ncrcat, e.g. ncks, causes problems with wrapped and wrapped stride limits. One line fix to lmt_evl() restored old lmt_evl() dim_idx code to all operators except ncra and ncrcat. The new lmt_evl() code simply will not (and should not) handle wrapped coordinates for the record dimension in multi-file operators. 1999-05-11 Charlie Zender * Tagged this as nco1_1_31 * Fixed ncks problem caused by not initializing all boolean flags of lmt structures in lmt_prs(). Changed lim to lmt. * Tagged this as nco1_1_30 * Tentatively fixed record hyperslab problems introduced in 1_1_29 by extensively generalizing and rewriting lim_evl() * Clarified in User's Guide that default behavior of stride is that -d time,,,srd is syntactically equivalent to -d time,0,,srd * Realized new record dimension features of nco1_1_29 were buggy when min and max limits were not both user-specified because then total number of records cannot be not known a priori 1999-05-10 Charlie Zender * Tagged this as nco1_1_29 * Cleaned up files for a clean compile with gcc -Wall 1999-05-09 Charlie Zender * Toggled behavior of `ncks -a' so that default is now to alphabetize output * Fixed error (missing comma) in stride documentation in User's Guide * Implemented stride for the record dimension in ncra and ncrcat, e.g., ncra -d time,1,100,12 in1.nc in2.nc ... out.nc should now work correctly across files. Currently stride only works on the record dimension of ncra and ncrcat, however, not the rest of the dimensions. * Implemented index-based hyperslabbing across files in the record dimension in the multi-file operators ncra and ncrcat, e.g., ncra -d time,1,100 in1.nc in2.nc ... out.nc. The User's Guide said this feature had already been implemented, but that, apparently, was not true. The symptom was an "index out of range error" from netCDF. 1999-04-27 Charlie Zender * Tagged and released this as nco1_1_28 * Isolated build procedure in nco_dst.pl with --bld option, off by default * Added --dat_cnt to nco_dst.pl to support dataproc.ucar.edu * Added SGIMP64 architecture to Makefile to support dataproc.ucar.edu. Default netCDF lib is r4i4 rather than r4i8 as on winterpark so I am avoiding the whole issue by using C_ONLY defaults and spoofing SGI64. nco_tst.sh executed without errors. 1999-04-20 Charlie Zender * Tagged and released this as nco1_1_26 * Fixed so arguments to log10() are reasonable * Tagged and released this as nco1_1_25 * New version requires -lm for log() and ceil() functions Added -lm to Makefile for some architecture which were missing it * Tagged and released this as nco1_1_24 * Fixed bug where ncrcat and ncra omitted the last slice of the record dimension when -F (Fortran indexing) was user-specified AND user-specified hyperslab information was provided for some dimensions BUT not for the record dimension. This bug only affected ncrcat and ncra and only under these conditions. Thanks to John Sheldon for pointing this out. 1999-04-04 Charlie Zender * Tagged and released this as nco1_1_22 * Added -a switch to ncks for alphabetizing the output list. Added index_alpha() and changed lst_heapsort() to accept an boolean switch argument to accomplish this. 1999-02-25 Charlie Zender * Added partial diagnostic message and workaround for TODO #116 1999-01-29 Charlie Zender * Added nco_dst.pl to distribution * Changed ALPHA makefile to support native compilers (untested) * Added NETCDF2_ONLY option to circumvent ncdiff nc_inq_vartype() call. 1999-01-24 Charlie Zender * Moved index.shtml to NCO doc directory Thu Jan 21 15:23:02 1999 Charlie Zender * Tagged and released this as nco1_1_20 * Updated various portions of User's Guide * Added NETCDF2_ONLY token to eliminate nc_inq_libvers() call 1999-01-13 Charlie Zender * Fixed bug in var_def() where wrong branch was executed when called by ncwa for files with no output dimensions. Symptom was a core dump or "ncvardef: ncid 4: Invalid dimension id or name" error. Wed Jan 6 17:55:26 1999 Charlie Zender * Tagged and released this as nco1_1_18 * Added kludge to ncwa to workaround bug in var_conform_dim() where var_conform_dim() sometimes allows the returned weight not to have same size tally array as the template variable. This caused core dumps in ncwa. Fri Dec 4 15:06:23 1998 Charlie Zender * Tagged and released this as nco1_1_16 * Added new logic switch DO_CONFORM to var_conform_dim() to allow ncwa to tell when to mask variables. Reran test cases, everything seems to be working. Documentation seems up-to-date. 1998-12-03 Charlie Zender * Tagged and released this as nco1_1_15 * Disabled ncwa -n and -W normalization options until I think of better way to implement them. -N option now causes ncwa not to divide by the denominator. Disabled -n and -W tests in nco_tst.sh (tests #2 and #3). 1998-12-02 Charlie Zender * Changed ncwa to default to weighting coordinates just like variables, i.e., toggle default value of -I switch * Added more exhaustive ncwa tests to nco_tst.sh * Rewrote ncwa section of User's Guide 1998-12-01 Charlie Zender * Made sure ncwa weights were being masked when normalization was invoked. Formerly, they were not. This was a bug. The bug is now fixed. * Rearranged normalization logic of ncwa * Removed special treatment of "gw" from ncwa 1998-11-25 Charlie Zender * Allow hyperslab coordinate specification in exponential format even when decimal point is missing, e.g., "-d lon,36e1" is valid * var_conform_dim() now checks dimension names rather than IDs Mon Nov 23 17:29:02 1998 Charlie Zender * Added -I switch to ncwa to enable weighting and masking of coordinates. Rewrote var_conform_dim() to allow mutually exclusive dimensions in ncwa. 1998-11-01 Charlie Zender * Added wrapped coordinate caveats to hyperslabe section of manual, and implemented warning message whenever wrapped coordinates are used. Sat Oct 31 14:56:33 1998 Charlie Zender * Tagged and released this as version nco1_1_10 1998-10-29 Charlie Zender * Fixed bug in ncra which only occured when NC_CHAR and NC_BYTE types also had a record dimension. var_lst_divide() decided these should be fixed variables, thus the output file size included the record dimension. The timecom variable in LSM history files was triggering this bug. Solution was to make ncra, like ncrcat, simply process ALL record variable even NC_CHAR and NC_BYTE, though the averaging operation on these types is still ill-defined. Wed Aug 26 16:30:27 1998 Charlie Zender * Fixed bld/nco_tst.sh to work again at NCAR. `make test' now performs non-trivial tests of ncwa and ncdiff. Only works at NCAR (a necessary input file is rather large). Wed Aug 19 11:26:25 1998 Charlie Zender * Fixed bug where pvmgetarch returned "SGI" on UNICOS 10.0.0. * Improved Makefile fortran switches and added convenience housekeeping targets. * Fixed bug where cvs_vrs_prs() crashed with -kkv exports 1998-08-18 Charlie Zender * Added nco_vrs_prs() to parse NCO versions. NCO version is now always printed with -r option. * Fixed bug where -n NINTAP list did not recognize `.cdf' suffixes. Mon Aug 10 21:53:34 1998 Charlie Zender * Split ncks -m option into -m and -M so now global metadata can be avoided if desired. * Fixed bug in ncrename where fl_in could be free()'d before it was malloc()'d in fl_nm_prs(). * Fixed bug in ncdiff where variables of same rank but different types would cause core dump when being subtracted. Improved diagnostics for failures with ncdiff. 1998-07-07 Charlie Zender * Added -h option (suppresses history concatentation) to all operators. Changed existing ncks -h option to -m (for metadata). Sun Jun 7 17:45:20 1998 Charlie Zender * Added more descriptive error diagnostics to ncvarid() calls to var_lst_mk() ncks to report the names of user-specified variables which do not exist in input files. 1998-05-16 Charlie Zender * Improved nc_lib_vers_prn() 1998-05-08 Charlie Zender * Added improved error diagnostics to ncks when -A fails. Added improved error diagnostics to fl_out_close() and fl_mv(). -r now prints library version for all operators. -r and usg_prn() now prints NCO homepage URL. Wed Mar 11 11:16:39 1998 Charlie Zender * Removed warning message for processed text fields in ncecat. Mon Mar 2 22:00:59 1998 Charlie Zender * Added nc_inq_libvers() call to ncwa to diagnose SGI problems. This is the first netCDF 3.x call in NCO. There's no stopping the avalanche now, so user's must install netCDF3.x Mon Feb 9 09:50:26 1998 Charlie Zender * Merged all three ncwa loops that access output and tally buffers so that these buffers can be allocated and deleted inside the main loop over variables. This reduces peak memory consumption by a factor of three and sustained memory by a factor of two to three. ncwa performance should be noticeably enhanced by this. This problem affected, and this fix improves, only the ncwa operator. Sun Feb 8 21:50:32 1998 Charlie Zender * Downloaded and altered pvmgetarch from pvm3.4b6. This version was returning SGI instead of CRAY on Ouray (=Cray J90 Unicos 10.0.0) because pvmgetarch thinks machines with /bin/4D are SGI. Distributing this customized version of pvmgetarch with NCO. Also changed new pvmgetarch so it returns SUNMP on any Sun multiprocessor, regardless of whether PVM_SHMEM is set to ON. Mon Jan 19 13:13:08 1998 Charlie Zender * Added HTML keywords and section on large numbers of files to the NCO User's Guide. * Eliminated compiler warnings caused by type--format mismatches from all source code. Should now compile without warnings on SGI. * Removed -ansi switch from Linux CFLAGS in order to support glibc2. glibc2 considers resolv.h non ANSI so that using the -ansi swithc results in unresolved tokens in system #include files. Tue Dec 2 21:35:19 1997 Charlie Zender * Added fl_nm_nbr_max and fl_nm_nbr_min as optional arguments 4 and 5, respectively, to the -n switch on the multi-file operators. This allows the NINTAP automatic filename generation feature to handle input sets of cyclic filenames whose suffixes grow to fl_nm_nbr_max and then wrap back to fl_nm_nbr_min. Now, e.g., DJF files may be specified with -n 3,2,1,12,1. Fri Nov 14 14:20:23 1997 Charlie Zender * Added additional diagnostics concerning record dimensions to ncra and ncrcat. ncra and ncrcat now exit when called to operate on files without record dimensions. * Made ncar_csm_date() more fault tolerant for files which do not adhere to de facto atmospheric model time conventions involving date, time, nbdate. 1997-11-04 Charlie Zender * Added error diagnostics for large malloc()'s in ncwa and var_dup in nc_utl.c. These should aid in identifying causes for core dumps when running with extremely large files or insufficient memory. Fri Oct 17 12:53:54 1997 Charlie Zender * Deprecated checking for "gw" for NCAR CSM conformance and replaced it with comparing global attribute "convention"'s value to "NCAR-CSM". Fixed up ncar_csm_date accordingly and rewrote warning messages. * Improved usg_prn for ncatted. 1997-10-12 Charlie Zender * Fixed fl_out_open() to abort after receiving more than 10 incorrect user responses. This fixes a bug where NCO would crash in non-interactive shells when the -O or -A options were omitted. 1997-10-07 Charlie Zender * Finished ncatted documentation. Cleaned up code to avoid compilation errors with SGI on memcpy(). Touched up manual. Releasing this as NCO Version 1.1. Sun Sep 21 15:08:49 1997 Charlie Zender * Merged WIN32 modifications into distribution. Added WIN32 and C_ONLY tokens to code. Relinked with netCDF 3.3.1, had no problems. Tue Sep 16 23:53:44 1997 Charlie Zender * Wrote ncatted. * Fixed ncks to omit trailing commas after printing scalar attribute values. Thu Aug 28 17:07:50 1997 Charlie Zender * Rewrote ncdiff documention, which had many errors and omissions. Sat Jun 28 23:26:40 1997 Charlie Zender * Fixed bug in cpy_var_val_lim() in ncks.c which caused core dumps when hyperslabbing on multiple coordinates where at least one of the coordinates was wrapped. Tue Jun 17 14:15:53 1997 Charlie Zender * Changed Makefile compile rules for f90 on CRAY to explicitly preprocess *.F files. This had stopped working, perhaps when I switched CRAY default from f77 to f90. Fri May 30 13:12:25 1997 Charlie Zender * Improved mss_val_get to allow any NC_TYPE for missing_value attribute. This was needed for ARM files which store missing_value as an NCCHAR. Converting NCCHAR to short, long, float, or double now uses strdod() instead of implicit type conversion. * Added routines to process time variables in ARM files. * Added hyam,hybm,hyai,hybi to list of variables which will not be differenced by ncdiff. * ncdiff now chooses mss_val from either file where it's valid, and from fl_1 when it's valid in both. This fixed the last known bug in NCO. Tue May 27 00:08:23 1997 Charlie Zender * Moved var_refresh() out of inner loop to file loop level in ncra.c. This should speed things up a little because var_refresh() can be an expensive call since it calls mss_val_get(). * Altered mss_val_get to accomodate missing_value attributes whose type did not match their variable's type. Also made allowance for missing_value's of type NC_CHAR, as in ARM data files. Added three routines, arm_inq(), arm_time_mk(), and arm_time_install(), which implemente the ARM convention time=base_time+time_offset convention in ncrcat. Fri May 16 16:28:02 1997 Charlie Zender * Fixed bug in srt vector in ncdiff. Now ncdiff should be working with hyperslabs. Mon May 5 17:55:00 1997 Charlie Zender * Implemented nclong fix for SGI64. This involved very slight changes: made defs.h:ptr_unn->lp point to nclong rather than long cast_void_nctype():ptr->lp evaluates to (nclong *). Sun Mar 30 15:26:10 1997 Charlie Zender * added and removed some return() statements to nc_utl.c to stop compiler warnings from SGI cc. * fixed small memory leak and bug in var_srt_zero() where var->srt was being allocated twice, and the xrf sct was pointing to the copy that had not been zeroed. Thu Mar 27 15:13:18 1997 Charlie Zender * Removed ncap from target all in Makefile * Added section describing differences between ncra, ncea, ncrcat, and ncecat to nco.texi. * Fixed memory leak in ncecat in which memory never seemed to be deallocated until the end of the file loop. Wed Mar 26 21:13:09 1997 Charlie Zender * Added nco.ps, nco.dvi, nco.html, texi2html, texi2dvi to distribution * Changed ncks -s option to accept full printf() style format strings * Fixed memory leak in var_get() in nc_utl.c which caused memory to be allocated twice. This also fixed longstanding performance problem where ncrcat() allocated memory for entire array not just current record. Thanks to jps@GFDL.GOV (John Sheldon) for discovering this bug. * General release of nco-0.9 on netCDF and CCM mailing lists Thu Feb 8 23:01:04 MST 1996 Charlie Zender * First internal CGD release of operator set known as ncz-0.9