Adopt use of gnulib for portability.
authorBen Pfaff <blp@gnu.org>
Sun, 31 Jul 2005 21:42:46 +0000 (21:42 +0000)
committerBen Pfaff <blp@gnu.org>
Sun, 31 Jul 2005 21:42:46 +0000 (21:42 +0000)
121 files changed:
.cvsignore
ChangeLog
Makefile.am
README
README.CVS
Smake
TODO
configure.ac
gettextize [deleted file]
lib/ChangeLog
lib/Makefile.am
po/en_GB.po
po/pspp.pot
pref.h.orig
src/ChangeLog
src/Make.build
src/Makefile.am
src/aggregate.c
src/alloc.c
src/alloc.h
src/apply-dict.c
src/ascii.c
src/autorecode.c
src/bool.h [deleted file]
src/calendar.c
src/case.h
src/casefile.c
src/casefile.h
src/cmdline.c
src/command.c
src/compute.c
src/count.c
src/crosstabs.q
src/data-in.c
src/data-in.h
src/data-list.c
src/data-out.c
src/date.c
src/descript.c
src/devind.c
src/dfm-read.c
src/dfm-write.c
src/dictionary.c
src/do-if.c
src/error.c
src/examine.q
src/expressions/evaluate.c
src/expressions/helpers.h
src/expressions/operations.h.pl
src/file-handle.q
src/file-type.c
src/filename.c
src/flip.c
src/format.c
src/format.h
src/formats.c
src/frequencies.q
src/get.c
src/getl.c [new file with mode: 0644]
src/getl.h [new file with mode: 0644]
src/getline.c [deleted file]
src/getline.h [deleted file]
src/glob.c
src/groff-font.c
src/hash.c
src/html.c
src/include.c
src/inpt-pgm.c
src/lexer.c
src/lexer.h
src/list.q
src/loop.c
src/main.c
src/matrix-data.c
src/means.q
src/mis-val.c
src/mkfile.c
src/modify-vars.c
src/moments.c
src/numeric.c
src/oneway.q
src/output.c
src/percentiles.c
src/permissions.c
src/pfm-read.c
src/pfm-read.h
src/pfm-write.c
src/plot-hist.c
src/postscript.c
src/print.c
src/q2c.c
src/rank.q
src/recode.c
src/rename-vars.c
src/repeat.c
src/sample.c
src/sel-if.c
src/set.q
src/sfm-read.c
src/sfm-write.c
src/som.h
src/sort-prs.c
src/sort-prs.h
src/sort.c
src/sort.h
src/stat.h [deleted file]
src/str.h
src/sysfile-info.c
src/t-test.q
src/tab.c
src/temporary.c
src/title.c
src/val-labs.c
src/var-labs.c
src/var.h
src/vars-atr.c
src/vars-prs.c
src/vector.c
src/vfm.c
src/weight.c
stamp-h.in [deleted file]

index 654530e0f7f71c878834b2208a7c13f705e82c57..4ad8642fd870c8cb467206dfbf2a265076be87f3 100644 (file)
@@ -3,14 +3,21 @@ Makefile
 Makefile.in
 aclocal.m4
 autom4te.cache
+config.guess
 config.h
 config.h.in
 config.log
 config.rpath
 config.status
+config.sub
 configure
+depcomp
+gl
+install-sh
 intl
 m4
+missing
 mkinstalldirs
+potfiles.tmp
 pref.h
 stamp-h1
index aaad059529bd330918f9531e93c74e5c85536cd2..b59c902137e6ce8fc1f4c8cb1d87f9a71d11592c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,27 @@
+Sun Jul 31 10:49:47 2005  Ben Pfaff  <blp@gnu.org>
+
+       Adopt use of gnulib for portability.
+
+       * Makefile.am: Add gl to SUBDIRS.  Add gl/m4 to aclocal include
+       path.  Get rid of pkgdocdir data.  Move noinst_DATA to EXTRA_DIST.
+
+       * README.CVS: Add instructions for fetching gnulib.
+
+       * Smake: Rewrite to run gnulib-tool.  Avoid use of gettextize in
+       normal case (it was unmaintainable).  Just use autoreconf
+       --install to do most of the work.  Rewrite rule for POTFILES.in
+       for non-GNU make compatibility.
+
+       * configure.ac: Add gnulib commands.  Specify gettext version
+       0.14.5 to placate autopoint.  Check that off_t is an integer type,
+       because Solaris can sometimes declare it as a struct.  Drop
+       explicit checks for gnulib-supported functionality.  Fix typo in
+       msdos check.
+
+       * pref.h.orig: Define __attribute__ to avoid wart in gnulib.
+       Don't #include <libintl> and define gettext, _, N_, because gnulib
+       wants to do the same thing.
+
 Sun Jul 24 20:31:13 2005  Ben Pfaff  <blp@gnu.org>
 
        * configure.ac: Don't detect libgmp anymore, because we eliminated
index 9eb03c3e5b7e80a63bccf0fd036e254a1459114d..54922040195f4e31ab1112b0f2da783dbf11aa62 100644 (file)
@@ -2,11 +2,7 @@
 
 AUTOMAKE_OPTIONS = gnits 1.7
 
-SUBDIRS = m4 intl doc lib src po config tests 
-
-pkgdocdir = $(prefix)/doc/@PACKAGE@
-pkgdoc_DATA = NEWS README TODO
-noinst_DATA = AUTHORS THANKS
+SUBDIRS = m4 intl doc lib gl src po config tests 
 
 DISTCLEANFILES = pref.h
 
@@ -22,10 +18,9 @@ private-install:
 private-uninstall:
        $(MAKE) private-uninstall -C config
 
-EXTRA_DIST = mkinstalldirs config.rpath NEWS ONEWS TODO pref.h.orig    \
-configure pspp-mode.el
+EXTRA_DIST = AUTHORS NEWS ONEWS README TODO THANKS config.rpath        \
+mkinstalldirs config.rpath pref.h.orig configure pspp-mode.el
 
 MAINTAINERCLEANFILES = Makefile.in aclocal.m4 
 
-
-ACLOCAL_AMFLAGS = -I m4
+ACLOCAL_AMFLAGS = -I m4 -I gl/m4
diff --git a/README b/README
index 38ac7efd2a737a1a5c58bffcebdff399087bb87e..ed5412a879ba0433eb5ac0b9ea8731edf45d2cc5 100644 (file)
--- a/README
+++ b/README
@@ -6,13 +6,15 @@ PSPP development is ongoing. It already supports a large subset of
 SPSS's transformation language.  Its statistical procedure support is
 currently limited, but growing.
 
-Source code for the latest development release of PSPP is available at
-ftp://alpha.gnu.org/gnu/pspp
-   
 For information on differences from previous versions, please see file
 NEWS.  Full documentation on PSPP's language can be found in the doc/
 directory.
           
+Source code for the latest release of PSPP is available at
+ftp://ftp.gnu.org/pub/gnu/pspp/.  Older versions may be obtained from
+ftp://alpha.gnu.org/gnu/pspp/.  Development sources are available from
+CVS at http://savannah.gnu.org/projects/pspp
+   
 Questions and comments regarding PSPP can be sent to pspp-dev@gnu.org.
 PSPP bug reports may be sent to bug-gnu-pspp@gnu.org or filed in the
 bug-tracking system at http://savannah.gnu.org/bugs/?group=pspp
index b5ff93df8a68db1be2485891a66260234f81501e..0ef254b84f39fde47d80dc3bb5ca8a8a67ab7142 100644 (file)
@@ -1,17 +1,33 @@
 To build this project from the sources direct from the 
-cvs archive use:
+cvs archive, you must install:
 
-make -f Smake
-# If you need to pass arguments to configure, use 
-# make -f Smake CONFIGUREFLAGS="--with-this --without-that"
-make
+       * Autoconf 2.58 (or later).
 
+       * Automake 1.7 (or later).
 
+       * Gettext 0.14.5 (or later).
 
- To test it:
+       * Gnulib, from CVS (see http://savannah.gnu.org/cvs/?group=gnulib).
+         Consider applying the patch at the end of this file, unless
+         the bug it fixes has already been fixed.  Note that Gnulib
+         does not require any form of installation: simply checking it
+         out into a directory is sufficient.  
 
-make check
+Once you have these installed, execute
+       make -f Smake
+If you checked Gnulib out in a directory named `gnulib' at the same
+level as PSPP, then this is sufficient.  Otherwise, provide the
+location of GNULIB on the `make' command line:
+       make -f Smake GNULIB=/gnulib/base/directory/name
 
- For a very thorough test: 
+After executing Smake, you may configure the source tree in the usual
+way with ./configure, e.g.
+       ./configure
+For a list of options:
+       ./configure --help
 
-make distcheck
+To test:
+       make check
+
+For a very thorough test: 
+       make distcheck
diff --git a/Smake b/Smake
index 040b51df8352db7f18a171bdd4e72c97853c9159..6f0f7cc5251a5b974ff31cdcae673646625f225e 100644 (file)
--- a/Smake
+++ b/Smake
@@ -1,73 +1,41 @@
-Makefile po/Makefile.in: Makefile.in configure install-sh config.h.in po/Makefile.in.in po/POTFILES.in
-       ./configure $(CONFIGUREFLAGS)
+# -*- makefile -*-
 
-configure:  configure.ac aclocal.m4
-       autoconf
+GNULIB = ../gnulib
+GNULIB_TOOL = $(GNULIB)/gnulib-tool
 
-config.h.in: configure.ac
-       autoheader
+all: po/POTFILES.in
+       $(GNULIB_TOOL) --import
+       autoreconf --install
 
-aclocal.m4:
-       aclocal -I m4
+gettextize:
+       touch m4/Makefile.am
+       gettextize -f -c --intl --no-changelog
 
-# We want all src/*.c files which do not have corresponding src/*.q
+po/POTFILES.in:
+       for f in `find src -name \*.[qc] -print | sed 's/\.[qc]$$//'`; do \
+               if test $$f = src/version.c; then break; fi;              \
+               if test -e $$f.q; then echo $$f.q; else echo $$f.c; fi    \
+       done | sort | uniq > $@.tmp
+       if test ! -e $@ || ! cmp -s $@.tmp $@; then mv $@.tmp $@; fi
+       rm -f $@.tmp
 
-src_q_files=$(wildcard src/*.q)
-src_c_files=$(wildcard src/*.c)
-src_cq_files=$(patsubst %.q, %.c, $(src_q_files))
-src_files=$(filter-out $(src_cq_files), $(src_c_files)) $(src_q_files)
+PO_FILES = po/ChangeLog po/Makefile po/Makefile.in po/Makefile.in.in   \
+po/POTFILES po/POTFILES.in po/Rules-quot po/boldquot.sed               \
+po/cat-id-tbl.c po/en@boldquot.header po/en@quot.header                        \
+po/insert-header.sin po/quot.sed po/remove-potcdate.sin po/stamp-po    \
+po/Makevars.template
 
-
-.PHONY: po/POTFILES.in
-po/POTFILES.in: 
-       @$(RM) po/potfile-temp
-       for f in $(src_files) ; do \
-       if [ $$f = "src/version.c" ] ; then continue ; fi ; \
-       echo $$f >> po/potfile-temp ; done
-       @if ( ! test -e $@ ) || ( ! diff  -q po/potfile-temp $@ ) ; then  mv po/potfile-temp $@ ; else $(RM) po/potfile-temp ; fi
-
-install-sh Makefile.in: intl Makefile.am aclocal.m4 config.h.in ABOUT-NLS
-       automake --add-missing
-
-po/Makefile.in.in intl ABOUT-NLS:
-       touch -f Makefile.am Makefile.am-stamp
-       touch -f configure.ac configure.ac-stamp
-       cp -pR configure.ac configure.ac-bak
-       cp -pR Makefile.am Makefile.am-bak
-       gettextize -f -c --no-changelog --intl
-       cp -pR Makefile.am-bak Makefile.am
-       touch -f Makefile.am-stamp Makefile.am
-       cp -pR configure.ac-bak configure.ac
-       touch -f configure.ac-stamp configure.ac
-       $(RM) configure.ac-bak configure.ac-stamp
-       $(RM) Makefile.am-bak Makefile.am-stamp
-
-
-
-.PHONY: clean
 clean:
-       $(RM) config.sub config.guess config.rpath
-       $(RM) ABOUT-NLS
-       $(RM) -r autom4te.cache
-       $(RM) aclocal.m4
-       $(RM) missing mkinstalldirs
-       $(RM) install-sh
-       $(RM) configure Makefile Makefile.in
-       $(RM) depcomp
-       $(RM) -r m4 intl
-       $(RM) po/ChangeLog \
-       po/Makefile \
-       po/Makefile.in \
-       po/Makefile.in.in \
-       po/POTFILES \
-       po/POTFILES.in \
-       po/Rules-quot \
-       po/boldquot.sed \
-       po/cat-id-tbl.c \
-       po/en@boldquot.header \
-       po/en@quot.header \
-       po/insert-header.sin \
-       po/quot.sed \
-       po/remove-potcdate.sin \
-       po/stamp-po \
-       po/Makevars.template
+       rm -f config.sub config.guess config.rpath
+       rm -f ABOUT-NLS
+       rm -fr autom4te.cache
+       rm -f aclocal.m4
+       rm -f missing mkinstalldirs
+       rm -f install-sh
+       rm -f configure Makefile Makefile.in
+       rm -f depcomp
+       rm -fr intl gl
+       rm -f m4/*.m4
+       rm -f $(PO_FILES)
+
+.PHONY: all gettextize potfiles clean
diff --git a/TODO b/TODO
index 99b85232701e0bc0e2885ef33d10dfd2d9b49fa6..4b08416536337319d80529e5e1e3b5d083d813a8 100644 (file)
--- a/TODO
+++ b/TODO
@@ -1,4 +1,8 @@
-Time-stamp: <2005-05-16 22:22:15 blp>
+Time-stamp: <2005-07-28 21:45:15 blp>
+
+Get rid of need for file name canonicalization.
+
+Use getsubopt()?
 
 Format specifier and missing values code needs to be rewritten for lowered
 crappiness.
index ae1e097e476917d16e8834220f045b2d715fa8c4..f64748657e5a665be377bc6580a56f637c2592c0 100644 (file)
@@ -9,10 +9,12 @@ AM_INIT_AUTOMAKE
 dnl Checks for programs.
 AC_GNU_SOURCE
 AC_PROG_CC
+gl_EARLY
 AC_PROG_RANLIB
 
 AM_CONDITIONAL(cc_is_gcc, test x"$GCC" = x"yes" )
 
+dnl Check that Perl is available.
 AC_PATH_PROG([PERL], perl, no)
 AC_SUBST([PERL])dnl
 if test "$PERL" = no; then
@@ -24,7 +26,7 @@ $PERL -e 'require 5.005_03;' || {
 
 dnl Internationalization macros.
 AM_GNU_GETTEXT
-AM_GNU_GETTEXT_VERSION dnl Prevents autoreconf complaint.
+AM_GNU_GETTEXT_VERSION([0.14.5])
 
 dnl Checks for libraries.
 AC_SYS_LARGEFILE
@@ -39,26 +41,34 @@ if test x"$with_libplot" != x"no" ; then
 fi
 AM_CONDITIONAL(WITHCHARTS, test x"$with_libplot" != x"no")
 
+dnl Check that off_t is defined as an integer type.
+dnl Solaris sometimes declares it as a struct, if it
+dnl thinks that the compiler does not support `long long'.
+AC_COMPILE_IFELSE([#include <sys/types.h>
+#include <unistd.h>
+off_t x = 0;
+int main (void) 
+{ 
+  lseek (0, 1, 2);
+  return 0;
+}], [], [AC_MSG_ERROR(
+[Your system's definition of off_t is broken.  You are probably
+using Solaris.  You can probably fix the problem with
+`--disable-largefile' or `CFLAGS=-ansi'.])])
 
 AC_CHECK_LIB(gslcblas,main,,AC_MSG_ERROR([You must install libgslcblas]))
 AC_CHECK_LIB(gsl, gsl_cdf_chisq_Q,,
   AC_MSG_ERROR([You must install libgsl version 1.4 or later]))
 
-AC_CHECK_LIB(gnugetopt,getopt_long)
-AC_CHECK_FUNC(getopt_long,,
-       AC_MSG_ERROR(`This application depends upon getopt_long'))
-
 AC_ARG_WITH(ncurses,
 [  --without-ncurses         don't compile in ncurses command line editing])
 
-
 if test "x$with_ncurses" = x"yes"; then 
 AC_CHECK_LIB(ncurses, tgetent, LIBS="-lncurses $LIBS" termcap=yes,
   AC_CHECK_LIB(termcap, tgetent, LIBS="-ltermcap $LIBS" termcap=yes,
                termcap=no))
 fi
 
-
 if test "$termcap" = yes; then
   AC_CHECK_HEADERS(termcap.h)
   AC_DEFINE(HAVE_LIBTERMCAP, 1, 
@@ -86,18 +96,18 @@ fi
 AC_CHECK_HEADERS([limits.h memory.h sys/stat.h sys/time.h sys/types.h \
                   fpu_control.h sys/mman.h sys/wait.h ieeefp.h fenv.h] )
 
-AC_HEADER_STAT
-AC_HEADER_STDC
-AC_HEADER_TIME
-AC_HEADER_STDBOOL
+# For gnulib.
+gl_LIB(libgl)
+gl_SOURCE_BASE(gl)
+gl_M4_BASE(gl/m4)
+gl_MODULES(alloca alloca-opt assert full-read full-write gethostname getline getlogin_r getopt gettext memchr memcmp memmem memmove memset progname readlink restrict snprintf stat-macros stdbool stpcpy strcase strcspn strerror strftime strstr strtod strtok_r strtol strtoul vsnprintf xalloc xalloc-die xreadlink)
+gl_INIT
 
 AC_C_CONST
 AC_C_INLINE
+
 dnl  Dont use AC_TYPE_OFF_T --- it doesnt generate the HAVE_TYPE macro
 AC_CHECK_TYPES(off_t) 
-AC_TYPE_SIZE_T
-AC_STRUCT_TM
-
 AC_CHECK_SIZEOF(short, 2)
 AC_CHECK_SIZEOF(int, 4)
 AC_CHECK_SIZEOF(long, 4)
@@ -116,14 +126,8 @@ BLP_IS_SPRINTF_GOOD
 BLP_INT_DIGITS
 BLP_RANDOM
 
-AC_FUNC_ALLOCA
-AC_FUNC_MEMCMP
 AC_FUNC_VPRINTF
-AC_REPLACE_FUNCS([memmove memset stpcpy strpbrk strerror strtol strtoul \
-                 memchr getline getdelim strcasecmp strncasecmp memmem \
-                 strtok_r])
-AC_CHECK_FUNCS([gethostname strstr strtod __setfpucw isinf isnan finite \
-               getpid feholdexcept mkdtemp])
+AC_CHECK_FUNCS([strchr strrchr __setfpucw isinf isnan finite getpid feholdexcept])
 
 AC_PROG_LN_S
 
@@ -132,7 +136,7 @@ AH_BOTTOM([#include <pref.h>])
 
 
 AM_CONDITIONAL(unix, test x"$host_os" != x"msdos" )
-AM_CONDITIONAL(msdos, test x"$host_os" == x"msdos" )
+AM_CONDITIONAL(msdos, test x"$host_os" = x"msdos" )
 
 dnl This is needed otherwise --with-included-gettext fails
 AH_BOTTOM([#include <locale.h>])
@@ -142,8 +146,8 @@ if test x"$enable_debug" = x"yes"  ; then
   AC_DEFINE(DEBUGGING, 1, [Define to 1 if debugging is enabled.])
 fi
 
-AC_CONFIG_FILES([Makefile po/Makefile.in m4/Makefile 
-                lib/Makefile lib/misc/Makefile lib/gsl-extras/Makefile
+AC_CONFIG_FILES([Makefile m4/Makefile gl/Makefile intl/Makefile po/Makefile.in
+                lib/Makefile lib/gsl-extras/Makefile
                 doc/Makefile 
                 src/Makefile src/expressions/Makefile
                 config/Makefile
@@ -161,6 +165,6 @@ AC_CONFIG_COMMANDS([pref.h],[
           fi
           if test -f pref.h; then touch pref.h; fi
          ])
-AC_OUTPUT(intl/Makefile)
+AC_OUTPUT
 
 dnl configure.ac ends here
diff --git a/gettextize b/gettextize
deleted file mode 100755 (executable)
index a896bec..0000000
+++ /dev/null
@@ -1,827 +0,0 @@
-#! /bin/sh
-#
-# Copyright (C) 1995-1998, 2000-2002 Free Software Foundation, Inc.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-#
-
-# This file was copied from gettextize version 0.11.5 and modified to allow
-# sensible use --- what the gettext maintainers call `misuse' and refuse to
-# support.  John Darrington 3 Feb 2004
-
-progname=$0
-package=gettext
-version=0.11.5-jmd-hacked
-
-# func_usage
-# outputs to stdout the --help usage message.
-func_usage ()
-{
-  echo "\
-Usage: gettextize [OPTION]... [package-dir]
-
-Prepares a source package to use gettext.
-
-Options:
-      --help           print this help and exit
-      --version        print version information and exit
-  -c, --copy           copy files instead of making symlinks
-  -f, --force          force writing of new files even if old exist
-      --intl           install libintl in a subdirectory
-      --no-changelog   don't update or create ChangeLog files
-  -n, --dry-run        print modifications but don't perform them
-
-Report bugs to <bug-gnu-gettext@gnu.org>."
-}
-
-# func_version
-# outputs to stdout the --version message.
-func_version ()
-{
-  echo "$progname (GNU $package) $version"
-  echo "Copyright (C) 1995-1998, 2000-2002 Free Software Foundation, Inc.
-This is free software; see the source for copying conditions.  There is NO
-warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-  echo "Written by" "Ulrich Drepper"
-}
-
-# func_fatal_error message
-# outputs to stderr a fatal error message, and terminates the program.
-func_fatal_error ()
-{
-  echo "gettextize: *** $1" 1>&2
-  echo "gettextize: *** Stop." 1>&2
-  exit 1
-}
-
-# Command-line option processing.
-# Removes the OPTIONS from the arguments. Sets the variables:
-# - force           1 if --force was given, 0 otherwise
-# - intldir         yes if --intl was given, empty otherwise
-# - try_ln_s        false if --copy was given, : otherwise
-# - do_changelog    false if --no-changelog was given, : otherwise
-# - doit            false if --dry-run was given, : otherwise
-{
-  force=0
-  intldir=
-  try_ln_s=:
-  do_changelog=:
-  doit=:
-
-  while test $# -gt 0; do
-    case "$1" in
-      -c | --copy | --cop | --co | --c )
-        shift
-        try_ln_s=false ;;
-      -n | --dry-run | --dry-ru | --dry-r | --dry- | --dry | --dr | --d )
-        shift
-        doit=false ;;
-      -f | --force | --forc | --for | --fo | --f )
-        shift
-        force=1 ;;
-      --help | --hel | --he | --h )
-        func_usage; exit 0 ;;
-      --intl | --int | --in | --i )
-        shift
-        intldir=yes ;;
-      --no-changelog | --no-changelo | --no-changel | --no-change | --no-chang | --no-chan | --no-cha | --no-ch | --no-c )
-        shift
-        do_changelog=false ;;
-      --version | --versio | --versi | --vers | --ver | --ve | --v )
-        func_version
-        exit 0 ;;
-      -- )     # Stop option prcessing
-        shift; break ;;
-      -* )
-        echo "gettextize: unknown option $1" 1>&2
-        echo "Try 'gettextize --help' for more information." 1>&2
-        exit 1 ;;
-      * )
-        break ;;
-    esac
-  done
-}
-
-# Command-line argument processing.
-# Analyzes the remaining arguments.
-# Sets the variables
-# - origdir         to the original directory,
-# - srcdir          to the package directory, and cd-s into it.
-{
-  if test $# -gt 1; then
-    func_usage 1>&2
-    exit 1
-  fi
-  origdir=`pwd`
-  if test $# -eq 1; then
-    srcdir=$1
-    if cd "$srcdir"; then
-      srcdir=`pwd`
-    else
-      func_fatal_error "Cannot change directory to '$srcdir'."
-    fi
-  else
-    srcdir=$origdir
-  fi
-}
-
-# The current directory is now $srcdir.
-
-# Set variable
-# - gettext_dir     directory where the sources are stored.
-prefix="/usr"
-gettext_dir="${prefix}/share/gettext"
-
-# Check integrity of package: A configure.in/ac must be present. Sets variable
-# - configure_in    name of configure.in/ac file.
-test -f configure.in || test -f configure.ac ||
-  func_fatal_error "Missing configure.in or configure.ac, please cd to your package first."
-configure_in=NONE
-if test -f configure.in; then
-  configure_in=configure.in
-else
-  if test -f configure.ac; then
-    configure_in=configure.ac
-  fi
-fi
-
-# Check whether the --force option is needed but has not been specified.
-if test $force -eq 0; then
-  if test -d intl; then
-    func_fatal_error "intl/ subdirectory exists: use option -f if you really want to delete it."
-  fi
-  if test -f po/Makefile.in.in; then
-    func_fatal_error "po/Makefile.in.in exists: use option -f if you really want to delete it."
-  fi
-  if test -f ABOUT-NLS; then
-    func_fatal_error "ABOUT-NLS exists: use option -f if you really want to delete it."
-  fi
-fi
-
-# Check in which directory config.rpath, mkinstalldirs etc. belong.
-auxdir=`cat "$configure_in" | grep '^AC_CONFIG_AUX_DIR' | sed -n -e 's/AC_CONFIG_AUX_DIR(\([^()]*\))/\1/p' | sed -e 's/^\[\(.*\)\]$/\1/' | sed -e 1q`
-if test -n "$auxdir"; then
-  auxdir="$auxdir/"
-fi
-
-# For simplicity we change to the gettext source directory.
-cd $gettext_dir ||
-  func_fatal_error "gettext source directory '${gettext_dir}' doesn't exist"
-
-# Variables which keep track what has been modified.
-added_directories=
-removed_directory=
-added_extradist=
-added_acoutput=
-removed_acoutput=" intl/intlh.inst"
-
-# Variable:
-# - please          accumulates instructions for the user.
-please=
-
-# Variable:
-# - date            current date, for use in ChangeLog entries.
-date=`date +%Y-%m-%d`
-
-# func_copy from to
-# copies a file.
-# 'from' is a relative pathname, relative to the current directory.
-# 'to' is a relative pathname, relative to $srcdir.
-func_copy ()
-{
-  if $doit; then
-    rm -f "$srcdir/$2"
-    echo "Copying file $2"
-    cp "$1" "$srcdir/$2"
-  else
-    echo "Copy file $2"
-  fi
-}
-
-# func_linkorcopy from absfrom to
-# links or copies a file.
-# 'from' is a relative pathname, relative to the current directory.
-# 'absfrom' is the corresponding absolute pathname.
-# 'to' is a relative pathname, relative to $srcdir.
-func_linkorcopy ()
-{
-  if $doit; then
-    rm -f "$srcdir/$3"
-    ($try_ln_s && ln -s "$2" "$srcdir/$3" && echo "Symlinking file $3") 2>/dev/null ||
-    { echo "Copying file $3"; cp "$1" "$srcdir/$3"; }
-  else
-    if $try_ln_s; then
-      echo "Symlink file $3"
-    else
-      echo "Copy file $3"
-    fi
-  fi
-}
-
-# func_backup to
-# makes a backup of a file that is about to be overwritten or replaced.
-# 'to' is a relative pathname, relative to $srcdir.
-func_backup ()
-{
-  if $doit; then
-    if test -f "$srcdir/$1"; then
-      rm -f "$srcdir/$1~"
-      cp -p "$srcdir/$1" "$srcdir/$1~"
-    fi
-  fi
-}
-
-# func_remove to
-# removes a file.
-# 'to' is a relative pathname, relative to $srcdir.
-func_remove ()
-{
-  if $doit; then
-    echo "Removing $1"
-    rm -f "$srcdir/$1"
-  else
-    echo "Remove $1"
-  fi
-}
-
-# func_ChangeLog_init
-# func_ChangeLog_add_entry line
-# func_ChangeLog_finish
-# manage the ChangeLog file, relative to $srcdir.
-func_ChangeLog_init ()
-{
-  modified_ChangeLog=
-}
-func_ChangeLog_add_entry ()
-{
-  if $doit; then
-    if test -z "$modified_ChangeLog"; then
-      echo "$date  gettextize  <bug-gnu-gettext@gnu.org>" > "$srcdir/ChangeLog.tmp"
-      echo >> "$srcdir/ChangeLog.tmp"
-      modified_ChangeLog=yes
-    fi
-    echo "$1" >> "$srcdir/ChangeLog.tmp"
-  else
-    modified_ChangeLog=yes
-  fi
-}
-func_ChangeLog_finish ()
-{
-  if test -n "$modified_ChangeLog"; then
-    if $doit; then
-      echo >> "$srcdir/ChangeLog.tmp"
-      if test -f "$srcdir/ChangeLog"; then
-        echo "Adding an entry to ChangeLog (backup is in ChangeLog~)"
-        cat "$srcdir/ChangeLog" >> "$srcdir/ChangeLog.tmp"
-        rm -f "$srcdir/ChangeLog~"
-        cp -p "$srcdir/ChangeLog" "$srcdir/ChangeLog~"
-      else
-        echo "Creating ChangeLog"
-      fi
-      cp "$srcdir/ChangeLog.tmp" "$srcdir/ChangeLog"
-      rm -f "$srcdir/ChangeLog.tmp"
-    else
-      if test -f "$srcdir/ChangeLog"; then
-        echo "Add an entry to ChangeLog"
-      else
-        echo "Create ChangeLog"
-      fi
-    fi
-  fi
-}
-
-# func_poChangeLog_init
-# func_poChangeLog_add_entry line
-# func_poChangeLog_finish
-# manage the po/ChangeLog file, relative to $srcdir.
-func_poChangeLog_init ()
-{
-  modified_poChangeLog=
-}
-func_poChangeLog_add_entry ()
-{
-  if $doit; then
-    if test -z "$modified_poChangeLog"; then
-      echo "$date  gettextize  <bug-gnu-gettext@gnu.org>" > "$srcdir/po/ChangeLog.tmp"
-      echo >> "$srcdir/po/ChangeLog.tmp"
-      modified_poChangeLog=yes
-    fi
-    echo "$1" >> "$srcdir/po/ChangeLog.tmp"
-  else
-    modified_poChangeLog=yes
-  fi
-}
-func_poChangeLog_finish ()
-{
-  if test -n "$modified_poChangeLog"; then
-    if $doit; then
-      echo >> "$srcdir/po/ChangeLog.tmp"
-      if test -f "$srcdir/po/ChangeLog"; then
-        echo "Adding an entry to po/ChangeLog (backup is in po/ChangeLog~)"
-        cat "$srcdir/po/ChangeLog" >> "$srcdir/po/ChangeLog.tmp"
-        rm -f "$srcdir/po/ChangeLog~"
-        cp -p "$srcdir/po/ChangeLog" "$srcdir/po/ChangeLog~"
-      else
-        echo "Creating po/ChangeLog"
-      fi
-      cp "$srcdir/po/ChangeLog.tmp" "$srcdir/po/ChangeLog"
-      rm -f "$srcdir/po/ChangeLog.tmp"
-    else
-      if test -f "$srcdir/po/ChangeLog"; then
-        echo "Add an entry to po/ChangeLog"
-      else
-        echo "Create po/ChangeLog"
-      fi
-    fi
-  fi
-}
-
-# func_m4ChangeLog_init
-# func_m4ChangeLog_add_entry line
-# func_m4ChangeLog_finish
-# manage the $m4dir/ChangeLog file, relative to $srcdir.
-func_m4ChangeLog_init ()
-{
-  modified_m4ChangeLog=
-}
-func_m4ChangeLog_add_entry ()
-{
-  if $doit; then
-    if test -z "$modified_m4ChangeLog"; then
-      echo "$date  gettextize  <bug-gnu-gettext@gnu.org>" > "$srcdir/$m4dir/ChangeLog.tmp"
-      echo >> "$srcdir/$m4dir/ChangeLog.tmp"
-      modified_m4ChangeLog=yes
-    fi
-    echo "$1" >> "$srcdir/$m4dir/ChangeLog.tmp"
-  else
-    modified_m4ChangeLog=yes
-  fi
-}
-func_m4ChangeLog_finish ()
-{
-  if test -n "$modified_m4ChangeLog"; then
-    if $doit; then
-      echo >> "$srcdir/$m4dir/ChangeLog.tmp"
-      if test -f "$srcdir/$m4dir/ChangeLog"; then
-        echo "Adding an entry to $m4dir/ChangeLog (backup is in $m4dir/ChangeLog~)"
-        cat "$srcdir/$m4dir/ChangeLog" >> "$srcdir/$m4dir/ChangeLog.tmp"
-        rm -f "$srcdir/$m4dir/ChangeLog~"
-        cp -p "$srcdir/$m4dir/ChangeLog" "$srcdir/$m4dir/ChangeLog~"
-      else
-        echo "Creating $m4dir/ChangeLog"
-      fi
-      cp "$srcdir/$m4dir/ChangeLog.tmp" "$srcdir/$m4dir/ChangeLog"
-      rm -f "$srcdir/$m4dir/ChangeLog.tmp"
-    else
-      if test -f "$srcdir/$m4dir/ChangeLog"; then
-        echo "Add an entry to $m4dir/ChangeLog"
-      else
-        echo "Create $m4dir/ChangeLog"
-      fi
-    fi
-  fi
-}
-
-if test ! -f "$srcdir/intl/Makefile.in" && test -n "$intldir"; then
-  added_acoutput="$added_acoutput intl/Makefile"
-fi
-if test -f "$srcdir/intl/Makefile.in" && test -z "$intldir"; then
-  removed_acoutput="$removed_acoutput intl/Makefile"
-fi
-if test -d "$srcdir/intl"; then
-  # Remove everything inside intl except for RCS and CVS subdirs and invisible
-  # files.
-  if $doit; then
-    echo "Wiping out intl/ subdirectory"
-    (cd "$srcdir/intl" &&
-     for f in *; do
-       if test CVS != "$f" && test RCS != "$f"; then
-         rm -rf "$f"
-       fi
-     done)
-  else
-    echo "Wipe out intl/ subdirectory"
-  fi
-  if test -z "$intldir"; then
-    removed_directory=intl
-  fi
-else
-  if test -n "$intldir"; then
-    if $doit; then
-      echo "Creating intl/ subdirectory"
-      mkdir "$srcdir/intl" || func_fatal_error "failed to create intl/ subdirectory"
-    else
-      echo "Create intl/ subdirectory"
-    fi
-    added_directories="$added_directories intl"
-  fi
-fi
-
-$do_changelog && func_ChangeLog_init
-
-test -d "$srcdir/po" || {
-  if $doit; then
-    echo "Creating po/ subdirectory"
-    mkdir "$srcdir/po" || func_fatal_error "failed to create po/ subdirectory"
-  else
-    echo "Create po/ subdirectory"
-  fi
-}
-
-# Now copy all files.  Take care for the destination directories.
-for file in *; do
-  case $file in
-    ABOUT-NLS)
-      func_linkorcopy $file "$gettext_dir/$file" $file
-      ;;
-    config.rpath | mkinstalldirs)
-      if test -f "$srcdir/$auxdir$file"; then
-        :
-      else
-        added_extradist="$added_extradist $auxdir$file"
-      fi
-      func_linkorcopy $file "$gettext_dir/$file" "$auxdir$file"
-      ;;
-  esac
-done
-
-# Copy files to intl/ subdirectory.
-if test -n "$intldir"; then
-  cd intl
-  for file in *; do
-    if test $file != COPYING.LIB-2.0 && test $file != COPYING.LIB-2.1; then
-      if test $file != plural.c; then
-        func_linkorcopy $file "$gettext_dir/intl/$file" intl/$file
-      else
-        # plural.c is a generated file; it must be copied and touched.
-        func_copy $file intl/$file
-        if $doit; then
-          (sleep 2; touch "$srcdir/intl/$file") &
-        fi
-      fi
-    fi
-  done
-  cd ..
-else
-  echo "Not copying intl/ directory."
-  please="$please
-Please use AM_GNU_GETTEXT([external]) in order to cause autoconfiguration
-to look for an external libintl.
-"
-fi
-
-# Copy files to po/ subdirectory.
-$do_changelog && func_poChangeLog_init
-cd po
-for file in Makefile.in.in; do
-  same=no
-  if test -f "$srcdir/po/$file"; then
-    if cmp -s $file "$srcdir/po/$file"; then
-      same=yes
-    fi
-  else
-    added_acoutput="$added_acoutput po/Makefile.in"
-  fi
-  if $do_changelog && test $same = no; then
-    if test -f "$srcdir/po/$file"; then
-      func_poChangeLog_add_entry "     * $file: Upgrade to gettext-${version}."
-    else
-      func_poChangeLog_add_entry "     * $file: New file, from gettext-${version}."
-    fi
-  fi
-  func_backup po/$file
-  func_linkorcopy $file "$gettext_dir/po/$file" po/$file
-done
-for file in *; do
-  case $file in
-    Makefile.in.in)
-      # Already handled above.
-      ;;
-    Makevars)
-      func_linkorcopy $file "$gettext_dir/po/$file" po/$file.template
-      if test -f "$srcdir/po/$file"; then
-        sed -n -e 's/[         ]*\([A-Za-z0-9_]*\)[    ]*=.*/\1/p' < "$srcdir/po/$file" | LC_ALL=C sort > "$srcdir/po/$file.tmp1"
-        sed -n -e 's/[         ]*\([A-Za-z0-9_]*\)[    ]*=.*/\1/p' < "$srcdir/po/$file.template" | LC_ALL=C sort > "$srcdir/po/$file.tmp2"
-        missingvars=`LC_ALL=C comm -13 "$srcdir/po/$file.tmp1" "$srcdir/po/$file.tmp2"`
-        rm -f "$srcdir/po/$file.tmp1" "$srcdir/po/$file.tmp2"
-        if test -n "$missingvars"; then
-          please="$please
-Please update po/$file so that it defines all the variables mentioned
-in po/$file.template.
-You can then remove po/$file.template.
-"
-        fi
-      else
-        please="$please
-Please create po/$file from the template in po/$file.template.
-You can then remove po/$file.template.
-"
-      fi
-      ;;
-    *)
-      same=no
-      if test -f "$srcdir/po/$file"; then
-        if cmp -s $file "$srcdir/po/$file"; then
-          same=yes
-        fi
-      fi
-      if $do_changelog && test $same = no; then
-        if test -f "$srcdir/po/$file"; then
-          func_poChangeLog_add_entry " * $file: Upgrade to gettext-${version}."
-        else
-          func_poChangeLog_add_entry " * $file: New file, from gettext-${version}."
-        fi
-      fi
-      func_backup po/$file
-      func_linkorcopy $file $gettext_dir/po/$file po/$file
-      ;;
-  esac
-done
-if test -f "$srcdir/po/cat-id-tbl.c"; then
-  func_remove po/cat-id-tbl.c
-  $do_changelog && func_poChangeLog_add_entry "        * cat-id-tbl.c: Remove file."
-fi
-if test -f "$srcdir/po/stamp-cat-id"; then
-  func_remove po/stamp-cat-id
-  $do_changelog && func_poChangeLog_add_entry "        * stamp-cat-id: Remove file."
-fi
-$do_changelog && func_poChangeLog_finish
-
-m4filelist='  codeset.m4 gettext.m4 glibc21.m4 iconv.m4 intdiv0.m4 inttypes.m4
-  inttypes_h.m4 inttypes-pri.m4 isc-posix.m4 lcmessage.m4 lib-ld.m4 lib-link.m4
-  lib-prefix.m4 progtest.m4 stdint_h.m4 uintmax_t.m4 ulonglong.m4'
-# We cannot omit codeset.m4, glibc21.m4, intdiv0.m4, inttypes.m4,
-# inttypes_h.m4, isc-posix.m4, lcmessage.m4, stdint_h.m4, uintmax_t.m4
-# if test -z "$intldir", otherwise "aclocal -I m4" might give an error.
-# (aclocal doesn't know which macros are really needed, it looks which macros
-# are potentially needed.)
-
-# All sorts of bugs could occur if the configure file was remade with the wrong
-# version of gettext.m4 et al. (because then the configure and the po/Makefile.in.in
-# don't fit together). It is therefore important that the package carries the
-# right versions of gettext.m4 et al. with it.
-if test -f "$srcdir/Makefile.am"; then
-  # A package using automake.
-
-  # Extract the macro directory name from Makefile.am.
-  aclocal_amflags=`grep '^ACLOCAL_AMFLAGS[     ]*=' "$srcdir/Makefile.am" | sed -e 's/^ACLOCAL_AMFLAGS[        ]*=\(.*\)$/\1/'`
-  m4dir=m4
-  m4dir_is_next=
-  for arg in $aclocal_amflags; do
-    if test -n "$m4dir_is_next"; then
-      m4dir="$arg"
-      break
-    else
-      if test "X$arg" = "X-I"; then
-        m4dir_is_next=yes
-      else
-        m4dir_is_next=
-      fi
-    fi
-  done
-
-  # Update the *.m4 files and the corresponding Makefile.am.
-  $do_changelog && func_m4ChangeLog_init
-  added_m4files=
-  if test -d "$srcdir/$m4dir"; then
-    :
-  else
-    if $doit; then
-      echo "Creating directory $m4dir"
-      mkdir "$srcdir/$m4dir"
-    else
-      echo "Create directory $m4dir"
-    fi
-    added_directories="$added_directories $m4dir"
-  fi
-  for file in $m4filelist; do
-    same=no
-    if test -f "$srcdir/$m4dir/$file"; then
-      if cmp -s "${prefix}/share/aclocal/$file" "$srcdir/$m4dir/$file"; then
-        same=yes
-      fi
-    else
-      added_m4files="$added_m4files $file"
-    fi
-    if $do_changelog && test $same = no; then
-      if test -f "$srcdir/$m4dir/$file"; then
-        func_m4ChangeLog_add_entry "   * $file: Upgrade to gettext-${version}."
-      else
-        func_m4ChangeLog_add_entry "   * $file: New file, from gettext-${version}."
-      fi
-    fi
-    func_backup "$m4dir/$file"
-    func_linkorcopy "${prefix}/share/aclocal/$file" "${prefix}/share/aclocal/$file" "$m4dir/$file"
-  done
-  if test -n "$added_m4files"; then
-    if test -f "$srcdir/$m4dir/Makefile.am"; then
-      if $doit; then
-        echo "Updating EXTRA_DIST in $m4dir/Makefile.am (backup is in $m4dir/Makefile.am~)"
-        func_backup "$m4dir/Makefile.am"
-        rm -f "$srcdir/$m4dir/Makefile.am"
-        if grep '^EXTRA_DIST[  ]*=' "$srcdir/$m4dir/Makefile.am~" > /dev/null; then
-          sed -e "s%^\(EXTRA_DIST[     ]*=\)%\\1$added_m4files %" < "$srcdir/$m4dir/Makefile.am~" > "$srcdir/$m4dir/Makefile.am"
-          $do_changelog && func_m4ChangeLog_add_entry "        * Makefile.am (EXTRA_DIST): Add the new files."
-        else
-          (cat "$srcdir/$m4dir/Makefile.am~"; echo; echo "EXTRA_DIST =$added_m4files") > "$srcdir/$m4dir/Makefile.am"
-          $do_changelog && func_m4ChangeLog_add_entry "        * Makefile.am (EXTRA_DIST): New variable."
-        fi
-      else
-        echo "Update EXTRA_DIST in $m4dir/Makefile.am"
-        $do_changelog && func_m4ChangeLog_add_entry "  * Makefile.am (EXTRA_DIST)."
-      fi
-    else
-      if $doit; then
-        echo "Creating $m4dir/Makefile.am"
-        echo "EXTRA_DIST =$added_m4files" > "$srcdir/$m4dir/Makefile.am"
-      else
-        echo "Create $m4dir/Makefile.am"
-      fi
-      $do_changelog && func_m4ChangeLog_add_entry "    * Makefile.am: New file."
-      added_acoutput="$added_acoutput $m4dir/Makefile"
-    fi
-  fi
-  $do_changelog && func_m4ChangeLog_finish
-  # Also create $m4dir/Makefile.in from $m4dir/Makefile.am, because automake
-  # doesn't do it by itself.
-  if $doit; then
-    case "$added_acoutput" in
-      *" $m4dir/Makefile")
-        (cd "$srcdir" && automake "$m4dir/Makefile") 2>/dev/null ||
-        please="$please
-Please run 'automake $m4dir/Makefile' to create $m4dir/Makefile.in
-"
-        ;;
-    esac
-  fi
-
-  # Update the top-level Makefile.am.
-  modified_Makefile_am=
-
-  # [snip]
-
-
-  if test -z "$m4dir_is_next"; then
-    # Also update Makefile.in and, if existent, Makefile. Otherwise they
-    # would take into account the new flags only after a few rounds of
-    # "./configure", "make", "touch configure.in", "make distclean".
-    if $doit; then
-      for file in Makefile.in Makefile; do
-        if test -f "$srcdir/$file"; then
-          func_backup $file
-          rm -f "$srcdir/$file"
-          sed -e "s%(ACLOCAL)%(ACLOCAL) -I $m4dir%" < "$srcdir/$file~" > "$srcdir/$file"
-        fi
-      done
-    fi
-  fi
-  please="$please
-Please run 'aclocal -I $m4dir' to regenerate the aclocal.m4 file.
-You need aclocal from GNU automake 1.5 (or newer) to do this.
-Then run 'autoconf' to regenerate the configure file.
-"
-else
-  please="$please
-Please add the files
-$m4filelist
-from the ${prefix}/share/aclocal directory to your aclocal.m4 file.
-"
-fi
-
-modified_configure_in=
-
-# [snip]
-
-if test -n "$added_acoutput"; then
-  if ! grep '^AC_CONFIG_FILES(' "$srcdir/$configure_in" > /dev/null; then
-    if ! grep '^AC_OUTPUT(' "$srcdir/$configure_in" > /dev/null; then
-      please="$please
-Please add$added_acoutput to the AC_OUTPUT or AC_CONFIG_FILES invocation in the $configure_in file.
-"
-    fi
-  fi
-fi
-if test -n "$removed_acoutput"; then
-  for file in $removed_acoutput; do
-    tag=
-    sedprog='{
-      s%\([[   ]\)'"$file"'[   ]%\1%
-      s%\([[   ]\)'"$file"'\([]),]\)%\1\2%
-      s%[[     ]'"$file"'$%%
-        :a
-        tb
-        :b
-        s%\\$%\\%
-        tc
-        bd
-        :c
-        n
-        s%\([  ]\)'"$file"'[   ]%\1%
-        s%\([  ]\)'"$file"'\([]),]\)%\1\2%
-        s%[    ]'"$file"'$%%
-        ba
-      :d
-    }'
-    sed -e '/^AC_CONFIG_FILES(/'"$sedprog" < "$srcdir/$configure_in" > "$srcdir/$configure_in.tmp"
-    if cmp -s "$srcdir/$configure_in" "$srcdir/$configure_in.tmp"; then
-      sed -e '/^AC_OUTPUT(/'"$sedprog" < "$srcdir/$configure_in" > "$srcdir/$configure_in.tmp"
-      if cmp -s "$srcdir/$configure_in" "$srcdir/$configure_in.tmp"; then
-        :
-      else
-        tag=AC_OUTPUT
-      fi
-    else
-      tag=AC_CONFIG_FILES
-    fi
-    if ! test -n "$tag"; then
-      rm -f "$srcdir/$configure_in.tmp"
-      if test "$file" != intl/intlh.inst; then
-        please="$please
-Please remove $file from the AC_OUTPUT or AC_CONFIG_FILES invocation
-in the $configure_in file.
-"
-      fi
-    fi
-  done
-fi
-sed -e 's%sed -e "/POTFILES =/r po/POTFILES" po/Makefile\.in > po/Makefile *;* *%%' < "$srcdir/$configure_in" > "$srcdir/$configure_in.tmp"
-sed -e '/^\(dnl \|\)AC_LINK_FILES(\$nls_cv_header_libgt, \$nls_cv_header_intl)$/d' < "$srcdir/$configure_in" > "$srcdir/$configure_in.tmp"
-sed -e 's/^AM_GNU_GETTEXT_VERSION([^()]*)/AM_GNU_GETTEXT_VERSION('"$version"')/' < "$srcdir/$configure_in" > "$srcdir/$configure_in.tmp"
-$do_changelog && func_ChangeLog_finish
-
-# Recommend replacement for deprecated Makefile variables.
-use_libtool=`cat "$srcdir/$configure_in" | grep '^A[CM]_PROG_LIBTOOL'`
-for file in `(cd "$srcdir"; find . -name Makefile.am -print; find . -name Makefile.in -print) | sed -e 's,^\./,,'`; do
-  if test -f "$srcdir/$file"; then
-    if test `echo "$file" | sed -e 's,^.*/,,'` = Makefile.in && grep automake "$srcdir/$file" >/dev/null 2>&1; then
-      continue;
-    fi
-    # INTLLIBS is deprecated because it doesn't distinguish the two
-    # cases: with libtool, without libtool.
-    if grep '@''INTLLIBS''@' "$srcdir/$file" >/dev/null 2>&1; then
-      if test -n "$use_libtool"; then
-        please="$please
-Please change $file to use @""LTLIBINTL""@ or @""LIBINTL""@ instead of
-@""INTLLIBS""@. Which one, depends whether it is used with libtool or not.
-@""INTLLIBS""@ will go away.
-"
-      else
-        please="$please
-Please change $file to use @""LIBINTL""@ instead of @""INTLLIBS""@.
-@""INTLLIBS""@ will go away.
-"
-      fi
-    fi
-    # DATADIRNAME is deprecated because we install only .gmo files nowadays,
-    # which can be stored in the platform independent $prefix/share hierarchy.
-    if grep '@''DATADIRNAME''@' "$srcdir/$file" >/dev/null 2>&1; then
-      please="$please
-Please change $file to use the constant string \"share\" instead of
-@""DATADIRNAME""@. @""DATADIRNAME""@ will go away.
-"
-    fi
-    # INSTOBJEXT is deprecated because we install only .gmo files nowadays,
-    # no catgets .cat catalogs.
-    if grep '@''INSTOBJEXT''@' "$srcdir/$file" >/dev/null 2>&1; then
-      please="$please
-Please change $file to use the constant string \".mo\" instead of
-@""INSTOBJEXT""@. @""INSTOBJEXT""@ will go away.
-"
-    fi
-    # GENCAT is deprecated because we install no catgets catalogs anymore.
-    if grep '@''GENCAT''@' "$srcdir/$file" >/dev/null 2>&1; then
-      please="$please
-Please change $file to use the constant string \"gencat\" instead of
-@""GENCAT""@. @""GENCAT""@ will go away. Maybe you don't even need it any more?
-"
-    fi
-    # POSUB is deprecated because it causes "./configure --disable-nls", "make",
-    # "make dist" to create a buggy tarfile.
-    if grep '@''POSUB''@' "$srcdir/$file" >/dev/null 2>&1; then
-      please="$please
-Please change $file to use the constant string \"po\" instead of
-@""POSUB""@. @""POSUB""@ will go away.
-"
-    fi
-  fi
-done
-
-# Recommend replacement for deprecated configure variables.
-if grep '\$nls_cv_header_' "$srcdir/$configure_in" >/dev/null 2>&1; then
-  please="$please
-Please stop using \$nls_cv_header_intl or \$nls_cv_header_libgt in the
-$configure_in file. Both will go away. Use <libintl.h> or \"gettext.h\" instead.
-"
-fi
index 7406ab0b3186aeab95079110718bab0b44751f0d..44bff7c1f4a0d7a38e6257668cd9f33dc073b8e7 100644 (file)
@@ -1,3 +1,9 @@
+Sun Jul 31 11:29:04 2005  Ben Pfaff  <blp@gnu.org>
+
+       * misc/: Removed in favor of gnulib.
+
+       * Makefile.am: (SUBDIRS) Removed misc.
+
 Wed Mar  9 09:53:50 2005  Ben Pfaff  <blp@gnu.org>
 
        * gsl-extras/: New directory.
index f50e789594de748b20fc66d15350949e7eaf7aae..19a9ddaf0a09d4c7a88b7845eec7d7ba86af4d79 100644 (file)
@@ -1,5 +1,5 @@
 ## Process this file with automake to produce Makefile.in  -*- makefile -*-
 
-SUBDIRS = misc gsl-extras
+SUBDIRS = gsl-extras
 
 MAINTAINERCLEANFILES = Makefile.in
index 65f38593f79899bde85f9f1605b399fe7604a1a7..bc20607366d30c2195505abc50498e00000c0076 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PSPP 0.3.1\n"
 "Report-Msgid-Bugs-To: pspp-dev@gnu.org\n"
-"POT-Creation-Date: 2005-05-27 12:24+0800\n"
+"POT-Creation-Date: 2005-07-30 23:26-0700\n"
 "PO-Revision-Date: 2004-01-23 13:04+0800\n"
 "Last-Translator: John Darrington <john@darrington.wattle.id.au>\n"
 "Language-Team: John Darrington <john@darrington.wattle.id.au>\n"
@@ -16,104 +16,104 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n!=1);\n"
 
-#: src/aggregate.c:196
+#: src/aggregate.c:199
 msgid "while expecting COLUMNWISE"
 msgstr ""
 
-#: src/aggregate.c:225
+#: src/aggregate.c:228
 msgid "expecting BREAK"
 msgstr ""
 
-#: src/aggregate.c:230
+#: src/aggregate.c:233
 msgid ""
 "When PRESORTED is specified, specifying sorting directions with (A) or (D) "
 "has no effect.  Output data will be sorted the same way as the input data."
 msgstr ""
 
-#: src/aggregate.c:386
+#: src/aggregate.c:389
 msgid "expecting aggregation function"
 msgstr ""
 
-#: src/aggregate.c:402
+#: src/aggregate.c:405
 #, c-format
 msgid "Unknown aggregation function %s."
 msgstr ""
 
-#: src/aggregate.c:417
+#: src/aggregate.c:420
 msgid "expecting `('"
 msgstr ""
 
-#: src/aggregate.c:454
+#: src/aggregate.c:457
 #, c-format
 msgid "Missing argument %d to %s."
 msgstr ""
 
-#: src/aggregate.c:463
+#: src/aggregate.c:466
 #, c-format
 msgid "Arguments to %s must be of same type as source variables."
 msgstr ""
 
-#: src/aggregate.c:473
+#: src/aggregate.c:476 src/expressions/parse.c:830
 msgid "expecting `)'"
 msgstr ""
 
-#: src/aggregate.c:485
+#: src/aggregate.c:488
 #, c-format
 msgid ""
 "Number of source variables (%d) does not match number of target variables (%"
 "d)."
 msgstr ""
 
-#: src/aggregate.c:501
+#: src/aggregate.c:504
 #, c-format
 msgid ""
 "The value arguments passed to the %s function are out-of-order.  They will "
 "be treated as if they had been specified in the correct order."
 msgstr ""
 
-#: src/aggregate.c:568
+#: src/aggregate.c:571
 #, c-format
 msgid ""
 "Variable name %s is not unique within the aggregate file dictionary, which "
 "contains the aggregate variables and the break variables."
 msgstr ""
 
-#: src/apply-dict.c:68
+#: src/apply-dict.c:71
 #, c-format
 msgid "Variable %s is %s in target file, but %s in source file."
 msgstr ""
 
-#: src/apply-dict.c:71 src/apply-dict.c:72 src/format.c:236
-#: src/sfm-read.c:1029 src/sfm-read.c:1174 src/sfm-read.c:1175
+#: src/apply-dict.c:74 src/apply-dict.c:75 src/format.c:239
+#: src/sfm-read.c:1032 src/sfm-read.c:1177 src/sfm-read.c:1178
 msgid "string"
 msgstr ""
 
-#: src/apply-dict.c:71 src/apply-dict.c:72 src/format.c:236
-#: src/sfm-read.c:1029 src/sfm-read.c:1174 src/sfm-read.c:1175
+#: src/apply-dict.c:74 src/apply-dict.c:75 src/format.c:239
+#: src/sfm-read.c:1032 src/sfm-read.c:1177 src/sfm-read.c:1178
 msgid "numeric"
 msgstr ""
 
-#: src/apply-dict.c:84
+#: src/apply-dict.c:87
 #, c-format
 msgid "Cannot add value labels from source file to long string variable %s."
 msgstr ""
 
-#: src/apply-dict.c:130
+#: src/apply-dict.c:133
 #, c-format
 msgid ""
 "Cannot apply missing values from source file to long string variable %s."
 msgstr ""
 
-#: src/apply-dict.c:163
+#: src/apply-dict.c:166
 msgid "No matching variables found between the source and target files."
 msgstr ""
 
-#: src/ascii.c:230
+#: src/ascii.c:233
 #, c-format
 msgid "ASCII driver initializing as `%s'..."
 msgstr ""
 
-#: src/ascii.c:285
+#: src/ascii.c:288
 #, c-format
 msgid ""
 "ascii driver: Area of page excluding margins and headers must be at least 59 "
@@ -121,186 +121,186 @@ msgid ""
 "by %d lines."
 msgstr ""
 
-#: src/ascii.c:390 src/devind.c:167 src/html.c:103 src/postscript.c:461
+#: src/ascii.c:393 src/devind.c:170 src/html.c:108 src/postscript.c:456
 #, c-format
 msgid "%s: Initialization complete."
 msgstr ""
 
-#: src/ascii.c:402 src/devind.c:179 src/html.c:115 src/postscript.c:474
+#: src/ascii.c:405 src/devind.c:182 src/html.c:120 src/postscript.c:469
 #, c-format
 msgid "%s: Beginning closing..."
 msgstr ""
 
-#: src/ascii.c:424 src/devind.c:184 src/html.c:120 src/postscript.c:493
+#: src/ascii.c:427 src/devind.c:187 src/html.c:125 src/postscript.c:488
 #, c-format
 msgid "%s: Finished closing."
 msgstr ""
 
-#: src/ascii.c:485
+#: src/ascii.c:488
 #, c-format
 msgid ""
 "Bad index value for `box' key: syntax is box[INDEX], 0 <= INDEX < %d "
 "decimal, with INDEX expressed in base 4."
 msgstr ""
 
-#: src/ascii.c:491
+#: src/ascii.c:494
 #, c-format
 msgid "Duplicate value for key `%s'."
 msgstr ""
 
-#: src/ascii.c:500
+#: src/ascii.c:503
 #, c-format
 msgid "Unknown configuration parameter `%s' for ascii device driver."
 msgstr ""
 
-#: src/ascii.c:513
+#: src/ascii.c:516
 #, c-format
 msgid ""
 "Unknown character set `%s'.  Valid character sets are `ascii' and `latin1'."
 msgstr ""
 
-#: src/ascii.c:522
+#: src/ascii.c:525
 #, c-format
 msgid ""
 "Unknown overstrike style `%s'.  Valid overstrike styles are `single' and "
 "`line'."
 msgstr ""
 
-#: src/ascii.c:531
+#: src/ascii.c:534
 #, c-format
 msgid ""
 "Unknown carriage return style `%s'.  Valid carriage return styles are `cr' "
 "and `bs'."
 msgstr ""
 
-#: src/ascii.c:543 src/postscript.c:684
+#: src/ascii.c:546 src/postscript.c:679
 #, c-format
 msgid "Positive integer required as value for `%s'."
 msgstr ""
 
-#: src/ascii.c:574
+#: src/ascii.c:577
 #, c-format
 msgid "Zero or positive integer required as value for `%s'."
 msgstr ""
 
-#: src/ascii.c:645 src/postscript.c:642
+#: src/ascii.c:648 src/postscript.c:637
 #, c-format
 msgid "Boolean value expected for %s."
 msgstr ""
 
-#: src/ascii.c:677 src/ascii.c:692 src/ascii.c:709
+#: src/ascii.c:680 src/ascii.c:695 src/ascii.c:712
 #, c-format
 msgid "ASCII output driver: %s: %s"
 msgstr ""
 
-#: src/ascii.c:785
+#: src/ascii.c:788
 #, c-format
 msgid "ascii_line_horz: bad hline (%d,%d),%d out of (%d,%d)\n"
 msgstr ""
 
-#: src/ascii.c:819
+#: src/ascii.c:822
 #, c-format
 msgid "ascii_line_vert: bad vline %d,(%d,%d) out of (%d,%d)\n"
 msgstr ""
 
-#: src/ascii.c:849
+#: src/ascii.c:852
 #, c-format
 msgid "ascii_line_intersection: bad intsct (%d,%d) out of (%d,%d)\n"
 msgstr ""
 
-#: src/ascii.c:997
+#: src/ascii.c:1000
 #, c-format
 msgid "%s: horiz=%d, vert=%d\n"
 msgstr ""
 
-#: src/ascii.c:1169
+#: src/ascii.c:1172
 #, c-format
 msgid "Writing `%s': %s"
 msgstr ""
 
-#: src/ascii.c:1579 src/postscript.c:2098
+#: src/ascii.c:1582 src/postscript.c:2108
 #, c-format
 msgid "%s - Page %d"
 msgstr ""
 
-#: src/ascii.c:1646
+#: src/ascii.c:1642
 msgid "Charts are unsupported with ascii drivers."
 msgstr ""
 
-#: src/autorecode.c:122
+#: src/autorecode.c:125
 #, c-format
 msgid "Source variable count (%d) does not match target variable count (%d)."
 msgstr ""
 
-#: src/autorecode.c:139 src/command.c:793 src/compute.c:277 src/do-if.c:253
-#: src/get.c:240 src/lexer.c:424 src/loop.c:241 src/matrix-data.c:528
-#: src/print.c:335 src/print.c:1045 src/recode.c:405 src/sel-if.c:54
-#: src/sel-if.c:131 src/vector.c:194 src/file-handle.q:139
+#: src/autorecode.c:142 src/command.c:797 src/compute.c:280 src/do-if.c:256
+#: src/file-handle.q:142 src/get.c:243 src/lexer.c:428 src/loop.c:244
+#: src/matrix-data.c:531 src/print.c:338 src/print.c:1048 src/recode.c:408
+#: src/sel-if.c:57 src/sel-if.c:134 src/vector.c:197
 msgid "expecting end of command"
 msgstr ""
 
-#: src/autorecode.c:149
+#: src/autorecode.c:152
 #, c-format
 msgid "Target variable %s duplicates existing variable %s."
 msgstr ""
 
-#: src/autorecode.c:156
+#: src/autorecode.c:159
 #, c-format
 msgid "Duplicate variable name %s among target variables."
 msgstr ""
 
-#: src/calendar.c:78
+#: src/calendar.c:81
 #, c-format
 msgid "Month %d is not in acceptable range of 0 to 13."
 msgstr ""
 
-#: src/calendar.c:86
+#: src/calendar.c:89
 #, c-format
 msgid "Day %d is not in acceptable range of 0 to 31."
 msgstr ""
 
-#: src/calendar.c:93
+#: src/calendar.c:96
 #, c-format
 msgid "Date %04d-%d-%d is before the earliest acceptable date of 1582-10-15."
 msgstr ""
 
-#: src/casefile.c:186
+#: src/casefile.c:252
 #, c-format
 msgid "%s: Removing temporary file: %s."
 msgstr ""
 
-#: src/casefile.c:333
+#: src/casefile.c:399
 #, c-format
 msgid "Error writing temporary file: %s."
 msgstr ""
 
-#: src/casefile.c:475
+#: src/casefile.c:541
 #, c-format
 msgid "%s: Opening temporary file: %s."
 msgstr ""
 
-#: src/casefile.c:501
+#: src/casefile.c:567
 #, c-format
 msgid "%s: Seeking temporary file: %s."
 msgstr ""
 
-#: src/casefile.c:517
+#: src/casefile.c:583
 #, c-format
 msgid "%s: Reading temporary file: %s."
 msgstr ""
 
-#: src/casefile.c:520
+#: src/casefile.c:586
 #, c-format
 msgid "%s: Temporary file ended unexpectedly."
 msgstr ""
 
-#: src/cmdline.c:141 src/cmdline.c:160 src/cmdline.c:172 src/command.c:209
-#: src/set.q:425 src/set.q:427 src/set.q:994
+#: src/cmdline.c:145 src/cmdline.c:164 src/cmdline.c:176 src/command.c:213
+#: src/expressions/parse.c:1206 src/set.q:428 src/set.q:430 src/set.q:997
 #, c-format
 msgid "%s is not yet implemented."
 msgstr ""
 
-#: src/cmdline.c:243
+#: src/cmdline.c:247
 #, c-format
 msgid ""
 "PSPP, a program for statistical analysis of sample data.\n"
@@ -350,32 +350,32 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/cmdline.c:281
+#: src/cmdline.c:285
 #, c-format
 msgid ""
 "\n"
 "Report bugs to <%s>.\n"
 msgstr ""
 
-#: src/command.c:146
+#: src/command.c:150
 #, c-format
 msgid "%s not allowed inside FILE TYPE/END FILE TYPE."
 msgstr ""
 
-#: src/command.c:149
+#: src/command.c:153
 #, c-format
 msgid "%s not allowed inside FILE TYPE GROUPED/END FILE TYPE."
 msgstr ""
 
-#: src/command.c:152
+#: src/command.c:156
 msgid "RECORD TYPE must be the first command inside a FILE TYPE structure."
 msgstr ""
 
-#: src/command.c:199
+#: src/command.c:203
 msgid "expecting command name"
 msgstr ""
 
-#: src/command.c:228
+#: src/command.c:232
 #, c-format
 msgid ""
 "%s is not allowed (1) before a command to specify the input program, such as "
@@ -383,109 +383,387 @@ msgid ""
 "PROGRAM and END INPUT PROGRAM."
 msgstr ""
 
-#: src/command.c:232
+#: src/command.c:236
 #, c-format
 msgid "%s is not allowed within an input program."
 msgstr ""
 
-#: src/command.c:233 src/command.c:234
+#: src/command.c:237 src/command.c:238
 #, c-format
 msgid "%s is only allowed within an input program."
 msgstr ""
 
-#: src/command.c:513
+#: src/command.c:517
 #, c-format
 msgid "Unknown command %s."
 msgstr ""
 
-#: src/command.c:619
+#: src/command.c:623
 msgid ""
 "This command is not accepted in a syntax file.  Instead, use FINISH to "
 "terminate a syntax file."
 msgstr ""
 
-#: src/command.c:637
+#: src/command.c:641
 msgid ""
 "This command is not executed in interactive mode.  Instead, PSPP drops down "
 "to the command prompt.  Use EXIT if you really want to quit."
 msgstr ""
 
-#: src/command.c:680 src/command.c:811 src/permissions.c:101
+#: src/command.c:684 src/command.c:815 src/permissions.c:102
 msgid "This command not allowed when the SAFER option is set."
 msgstr ""
 
-#: src/command.c:692
+#: src/command.c:696
 #, c-format
 msgid "Error removing `%s': %s."
 msgstr ""
 
-#: src/command.c:742
+#: src/command.c:746
 #, c-format
 msgid "Couldn't fork: %s."
 msgstr ""
 
-#: src/command.c:784
+#: src/command.c:788
 #, c-format
 msgid "Error executing command: %s."
 msgstr ""
 
-#: src/command.c:832
+#: src/command.c:836
 msgid "No operating system support for this command."
 msgstr ""
 
-#: src/command.c:855
+#: src/command.c:859
 msgid "This command is not valid in a syntax file."
 msgstr ""
 
-#: src/compute.c:141 src/compute.c:190
+#: src/compute.c:144 src/compute.c:193
 #, c-format
 msgid ""
 "When executing COMPUTE: SYSMIS is not a valid value as an index into vector %"
 "s."
 msgstr ""
 
-#: src/compute.c:144 src/compute.c:197
+#: src/compute.c:147 src/compute.c:200
 #, c-format
 msgid ""
 "When executing COMPUTE: %g is not a valid value as an index into vector %s."
 msgstr ""
 
-#: src/compute.c:339
+#: src/compute.c:342
 #, c-format
 msgid "There is no vector named %s."
 msgstr ""
 
-#: src/count.c:156
+#: src/count.c:159
 msgid "Destination cannot be a string variable."
 msgstr ""
 
-#: src/count.c:263
+#: src/count.c:266
 #, c-format
 msgid ""
 "%g THRU %g is not a valid range.  The number following THRU must be at least "
 "as big as the number preceding THRU."
 msgstr ""
 
-#: src/data-in.c:59
-msgid "data-file error: "
+#: src/crosstabs.q:265
+msgid ""
+"Missing mode REPORT not allowed in general mode.  Assuming MISSING=TABLE."
+msgstr ""
+
+#: src/crosstabs.q:275
+msgid "Write mode ALL not allowed in general mode.  Assuming WRITE=CELLS."
+msgstr ""
+
+#: src/crosstabs.q:336
+msgid "expecting BY"
+msgstr ""
+
+#: src/crosstabs.q:403
+msgid "VARIABLES must be specified before TABLES."
+msgstr ""
+
+#: src/crosstabs.q:440
+#, c-format
+msgid "Maximum value (%ld) less than minimum value (%ld)."
+msgstr ""
+
+#: src/crosstabs.q:804
+msgid "Summary."
+msgstr ""
+
+#: src/crosstabs.q:806 src/examine.q:919
+msgid "Cases"
+msgstr ""
+
+#: src/crosstabs.q:807 src/examine.q:853 src/frequencies.q:1141
+#: src/frequencies.q:1514
+msgid "Valid"
+msgstr ""
+
+#: src/crosstabs.q:808 src/examine.q:854 src/frequencies.q:1209
+#: src/frequencies.q:1515
+msgid "Missing"
+msgstr ""
+
+#: src/crosstabs.q:809 src/crosstabs.q:1012 src/crosstabs.q:1726
+#: src/examine.q:855 src/frequencies.q:1218 src/oneway.q:311 src/oneway.q:474
+msgid "Total"
+msgstr ""
+
+#: src/crosstabs.q:819 src/examine.q:931 src/frequencies.q:1513
+#: src/oneway.q:397 src/t-test.q:679 src/t-test.q:702 src/t-test.q:827
+#: src/t-test.q:1362
+msgid "N"
+msgstr ""
+
+#: src/crosstabs.q:820 src/examine.q:934 src/frequencies.q:1145
+#: src/frequencies.q:1146 src/frequencies.q:1147
+msgid "Percent"
+msgstr ""
+
+#: src/crosstabs.q:1062
+msgid "count"
+msgstr ""
+
+#: src/crosstabs.q:1063
+msgid "row %"
+msgstr ""
+
+#: src/crosstabs.q:1064
+msgid "column %"
+msgstr ""
+
+#: src/crosstabs.q:1065
+msgid "total %"
+msgstr ""
+
+#: src/crosstabs.q:1066
+msgid "expected"
+msgstr ""
+
+#: src/crosstabs.q:1067
+msgid "residual"
+msgstr ""
+
+#: src/crosstabs.q:1068
+msgid "std. resid."
+msgstr ""
+
+#: src/crosstabs.q:1069
+msgid "adj. resid."
+msgstr ""
+
+#: src/crosstabs.q:1102 src/crosstabs.q:1129 src/crosstabs.q:1149
+#: src/crosstabs.q:1170 src/examine.q:1365
+msgid "Statistic"
+msgstr ""
+
+#: src/crosstabs.q:1103 src/crosstabs.q:1130 src/crosstabs.q:1150
+#: src/crosstabs.q:1172 src/examine.q:1134 src/frequencies.q:1143
+#: src/frequencies.q:1264 src/sysfile-info.c:536 src/vfm.c:811
+msgid "Value"
+msgstr ""
+
+#: src/crosstabs.q:1104 src/oneway.q:284 src/oneway.q:686 src/t-test.q:977
+#: src/t-test.q:1169 src/t-test.q:1261
+msgid "df"
+msgstr ""
+
+#: src/crosstabs.q:1106
+msgid "Asymp. Sig. (2-sided)"
+msgstr ""
+
+#: src/crosstabs.q:1108
+msgid "Exact. Sig. (2-sided)"
+msgstr ""
+
+#: src/crosstabs.q:1110
+msgid "Exact. Sig. (1-sided)"
+msgstr ""
+
+#: src/crosstabs.q:1128 src/crosstabs.q:1169
+msgid "Category"
+msgstr ""
+
+#: src/crosstabs.q:1131 src/crosstabs.q:1173
+msgid "Asymp. Std. Error"
+msgstr ""
+
+#: src/crosstabs.q:1132 src/crosstabs.q:1174
+msgid "Approx. T"
+msgstr ""
+
+#: src/crosstabs.q:1133 src/crosstabs.q:1175
+msgid "Approx. Sig."
+msgstr ""
+
+#: src/crosstabs.q:1148
+#, c-format
+msgid " 95%% Confidence Interval"
+msgstr ""
+
+#: src/crosstabs.q:1151 src/t-test.q:981 src/t-test.q:1166 src/t-test.q:1264
+msgid "Lower"
+msgstr ""
+
+#: src/crosstabs.q:1152 src/t-test.q:982 src/t-test.q:1167 src/t-test.q:1265
+msgid "Upper"
+msgstr ""
+
+#: src/crosstabs.q:1171
+msgid "Type"
+msgstr ""
+
+#: src/crosstabs.q:1920
+msgid "Pearson Chi-Square"
+msgstr ""
+
+#: src/crosstabs.q:1921
+msgid "Likelihood Ratio"
+msgstr ""
+
+#: src/crosstabs.q:1922
+msgid "Fisher's Exact Test"
+msgstr ""
+
+#: src/crosstabs.q:1923
+msgid "Continuity Correction"
+msgstr ""
+
+#: src/crosstabs.q:1924
+msgid "Linear-by-Linear Association"
+msgstr ""
+
+#: src/crosstabs.q:1961 src/crosstabs.q:2031 src/crosstabs.q:2090
+msgid "N of Valid Cases"
+msgstr ""
+
+#: src/crosstabs.q:1977 src/crosstabs.q:2106
+msgid "Nominal by Nominal"
+msgstr ""
+
+#: src/crosstabs.q:1978 src/crosstabs.q:2107
+msgid "Ordinal by Ordinal"
+msgstr ""
+
+#: src/crosstabs.q:1979
+msgid "Interval by Interval"
+msgstr ""
+
+#: src/crosstabs.q:1980
+msgid "Measure of Agreement"
+msgstr ""
+
+#: src/crosstabs.q:1985
+msgid "Phi"
+msgstr ""
+
+#: src/crosstabs.q:1986
+msgid "Cramer's V"
+msgstr ""
+
+#: src/crosstabs.q:1987
+msgid "Contingency Coefficient"
+msgstr ""
+
+#: src/crosstabs.q:1988
+msgid "Kendall's tau-b"
+msgstr ""
+
+#: src/crosstabs.q:1989
+msgid "Kendall's tau-c"
+msgstr ""
+
+#: src/crosstabs.q:1990
+msgid "Gamma"
+msgstr ""
+
+#: src/crosstabs.q:1991
+msgid "Spearman Correlation"
+msgstr ""
+
+#: src/crosstabs.q:1992
+msgid "Pearson's R"
+msgstr ""
+
+#: src/crosstabs.q:1993
+msgid "Kappa"
+msgstr ""
+
+#: src/crosstabs.q:2063
+#, c-format
+msgid "Odds Ratio for %s (%g / %g)"
+msgstr ""
+
+#: src/crosstabs.q:2066
+#, c-format
+msgid "Odds Ratio for %s (%.*s / %.*s)"
+msgstr ""
+
+#: src/crosstabs.q:2074
+#, c-format
+msgid "For cohort %s = %g"
+msgstr ""
+
+#: src/crosstabs.q:2077
+#, c-format
+msgid "For cohort %s = %.*s"
+msgstr ""
+
+#: src/crosstabs.q:2108
+msgid "Nominal by Interval"
+msgstr ""
+
+#: src/crosstabs.q:2113
+msgid "Lambda"
+msgstr ""
+
+#: src/crosstabs.q:2114
+msgid "Goodman and Kruskal tau"
+msgstr ""
+
+#: src/crosstabs.q:2115
+msgid "Uncertainty Coefficient"
+msgstr ""
+
+#: src/crosstabs.q:2116
+msgid "Somers' d"
+msgstr ""
+
+#: src/crosstabs.q:2117
+msgid "Eta"
+msgstr ""
+
+#: src/crosstabs.q:2122
+msgid "Symmetric"
+msgstr ""
+
+#: src/crosstabs.q:2123 src/crosstabs.q:2124
+#, c-format
+msgid "%s Dependent"
 msgstr ""
 
 #: src/data-in.c:61
+msgid "data-file error: "
+msgstr ""
+
+#: src/data-in.c:63
 #, c-format
 msgid "(column %d"
 msgstr ""
 
-#: src/data-in.c:63
+#: src/data-in.c:65
 #, c-format
 msgid "(columns %d-%d"
 msgstr ""
 
-#: src/data-in.c:64
+#: src/data-in.c:66
 #, c-format
 msgid ", field type %s) "
 msgstr ""
 
-#: src/data-in.c:210
+#: src/data-in.c:212
 msgid "Field does not form a valid floating-point constant."
 msgstr ""
 
@@ -509,11 +787,11 @@ msgstr ""
 msgid "Unrecognized character in field."
 msgstr ""
 
-#: src/data-in.c:343 src/data-in.c:596
+#: src/data-in.c:343 src/data-in.c:598
 msgid "Field must have even length."
 msgstr ""
 
-#: src/data-in.c:353 src/data-in.c:606
+#: src/data-in.c:353 src/data-in.c:608
 msgid "Field must contain only hex digits."
 msgstr ""
 
@@ -540,949 +818,1260 @@ msgstr ""
 msgid "Error in syntax of zoned decimal number."
 msgstr ""
 
-#: src/data-in.c:646
+#: src/data-in.c:648
 msgid "Unexpected end of field."
 msgstr ""
 
-#: src/data-in.c:672
+#: src/data-in.c:674
 msgid "Digit expected in field."
 msgstr ""
 
-#: src/data-in.c:697
+#: src/data-in.c:699
 #, c-format
 msgid "Day (%ld) must be between 1 and 31."
 msgstr ""
 
-#: src/data-in.c:722
+#: src/data-in.c:724
 msgid "Delimiter expected between fields in date."
 msgstr ""
 
-#: src/data-in.c:755
+#: src/data-in.c:757
 #, c-format
 msgid "Parse error at `%c' expecting %s."
 msgstr ""
 
-#: src/data-in.c:769
+#: src/data-in.c:771
 #, c-format
 msgid "Unknown %s `%.*s'."
 msgstr ""
 
-#: src/data-in.c:819
+#: src/data-in.c:821
 #, c-format
 msgid "Month (%ld) must be between 1 and 12."
 msgstr ""
 
-#: src/data-in.c:823
+#: src/data-in.c:825
 msgid "month"
 msgstr ""
 
-#: src/data-in.c:837
+#: src/data-in.c:839
 #, c-format
 msgid "Year (%ld) must be between 1582 and 19999."
 msgstr ""
 
-#: src/data-in.c:848
+#: src/data-in.c:850
 #, c-format
 msgid "Trailing garbage \"%s\" following date."
 msgstr ""
 
-#: src/data-in.c:863
+#: src/data-in.c:865
 #, c-format
 msgid "Julian day (%d) must be between 1 and 366."
 msgstr ""
 
-#: src/data-in.c:875
+#: src/data-in.c:877
 #, c-format
 msgid "Year (%d) must be between 1582 and 19999."
 msgstr ""
 
-#: src/data-in.c:891
+#: src/data-in.c:893
 #, c-format
 msgid "Quarter (%ld) must be between 1 and 4."
 msgstr ""
 
-#: src/data-in.c:901
+#: src/data-in.c:903
 msgid "`Q' expected between quarter and year."
 msgstr ""
 
-#: src/data-in.c:917
+#: src/data-in.c:919
 #, c-format
 msgid "Week (%ld) must be between 1 and 53."
 msgstr ""
 
-#: src/data-in.c:928
+#: src/data-in.c:930
 msgid "`WK' expected between week and year."
 msgstr ""
 
-#: src/data-in.c:950
+#: src/data-in.c:952
 msgid "Delimiter expected between fields in time."
 msgstr ""
 
-#: src/data-in.c:962
+#: src/data-in.c:964
 #, c-format
 msgid "Hour (%ld) must be positive."
 msgstr ""
 
-#: src/data-in.c:974
+#: src/data-in.c:976
 #, c-format
 msgid "Minute (%ld) must be between 0 and 59."
 msgstr ""
 
-#: src/data-in.c:1021
+#: src/data-in.c:1023
 #, c-format
 msgid "Hour (%ld) must be between 0 and 23."
 msgstr ""
 
-#: src/data-in.c:1049
+#: src/data-in.c:1051
 msgid "weekday"
 msgstr ""
 
-#: src/data-in.c:1380
+#: src/data-in.c:1382
 #, c-format
 msgid "Field too long (%d characters).  Truncated after character %d."
 msgstr ""
 
-#: src/data-list.c:141
+#: src/data-list.c:144
 msgid ""
 "DATA LIST may not use a different file from that specified on its "
 "surrounding FILE TYPE."
 msgstr ""
 
-#: src/data-list.c:160
+#: src/data-list.c:163
 msgid "The END subcommand may only be specified once."
 msgstr ""
 
-#: src/data-list.c:195
+#: src/data-list.c:198
 msgid "Only one of FIXED, FREE, or LIST may be specified."
 msgstr ""
 
-#: src/data-list.c:351 src/print.c:296
+#: src/data-list.c:354 src/print.c:299
 #, c-format
 msgid ""
 "The record number specified, %ld, is before the previous record, %d.  Data "
 "fields must be listed in order of increasing record number."
 msgstr ""
 
-#: src/data-list.c:380 src/data-list.c:1727
+#: src/data-list.c:383 src/data-list.c:1747
 msgid ""
 "SPSS-like or FORTRAN-like format specification expected after variable names."
 msgstr ""
 
-#: src/data-list.c:391
+#: src/data-list.c:394
 msgid "At least one variable must be specified."
 msgstr ""
 
-#: src/data-list.c:396 src/print.c:328
+#: src/data-list.c:399 src/print.c:331
 msgid ""
 "Variables are specified on records that should not exist according to "
 "RECORDS subcommand."
 msgstr ""
 
-#: src/data-list.c:429 src/data-list.c:443 src/print.c:520 src/print.c:533
+#: src/data-list.c:432 src/data-list.c:446 src/print.c:523 src/print.c:536
 msgid "Column positions for fields must be positive."
 msgstr ""
 
-#: src/data-list.c:448
+#: src/data-list.c:451
 msgid "The ending column for a field must be greater than the starting column."
 msgstr ""
 
-#: src/data-list.c:462 src/print.c:610
+#: src/data-list.c:465 src/print.c:613
 #, c-format
 msgid "The %d columns %d-%d can't be evenly divided into %d fields."
 msgstr ""
 
-#: src/data-list.c:482 src/print.c:561
+#: src/data-list.c:485 src/print.c:564
 msgid "A format specifier on this line has extra characters on the end."
 msgstr ""
 
-#: src/data-list.c:497 src/print.c:577
+#: src/data-list.c:500 src/print.c:580
 msgid "The value for number of decimal places must be at least 1."
 msgstr ""
 
-#: src/data-list.c:511 src/print.c:590
+#: src/data-list.c:514 src/print.c:593
 #, c-format
 msgid "Input format %s doesn't accept decimal places."
 msgstr ""
 
-#: src/data-list.c:558 src/data-list.c:654 src/data-list.c:868
+#: src/data-list.c:561 src/data-list.c:657 src/data-list.c:871
 #, c-format
 msgid "%s is a duplicate variable name."
 msgstr ""
 
-#: src/data-list.c:563
+#: src/data-list.c:566
 #, c-format
 msgid "There is already a variable %s of a different type."
 msgstr ""
 
-#: src/data-list.c:570
+#: src/data-list.c:573
 #, c-format
 msgid "There is already a string variable %s of a different width."
 msgstr ""
 
-#: src/data-list.c:645
+#: src/data-list.c:648
 msgid ""
 "The number of format specifications exceeds the given number of variable "
 "names."
 msgstr ""
 
-#: src/data-list.c:758 src/print.c:765
+#: src/data-list.c:761 src/print.c:768
 msgid ""
 "There aren't enough format specifications to match the number of variable "
 "names given."
 msgstr ""
 
-#: src/data-list.c:785 src/data-list.c:909 src/descript.c:879 src/print.c:796
-#: src/sysfile-info.c:135 src/sysfile-info.c:369 src/vfm.c:809
+#: src/data-list.c:788 src/data-list.c:912 src/descript.c:883 src/print.c:799
+#: src/sysfile-info.c:138 src/sysfile-info.c:372 src/vfm.c:810
 msgid "Variable"
 msgstr ""
 
-#: src/data-list.c:786 src/print.c:797
+#: src/data-list.c:789 src/print.c:800
 msgid "Record"
 msgstr ""
 
-#: src/data-list.c:787 src/print.c:798
+#: src/data-list.c:790 src/print.c:801
 msgid "Columns"
 msgstr ""
 
-#: src/data-list.c:788 src/data-list.c:910 src/print.c:799
+#: src/data-list.c:791 src/data-list.c:913 src/print.c:802
 msgid "Format"
 msgstr ""
 
-#: src/data-list.c:804
+#: src/data-list.c:807
 #, c-format
 msgid "Reading %d record from file %s."
 msgid_plural "Reading %d records from file %s."
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/data-list.c:808
+#: src/data-list.c:811
 #, c-format
 msgid "Reading %d record from the command file."
 msgid_plural "Reading %d records from the command file."
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/data-list.c:926
+#: src/data-list.c:929
 #, c-format
 msgid "Reading free-form data from file %s."
 msgstr ""
 
-#: src/data-list.c:929
+#: src/data-list.c:932
 msgid "Reading free-form data from the command file."
 msgstr ""
 
-#: src/data-list.c:980
+#: src/data-list.c:983
 #, c-format
 msgid "Quoted string missing terminating `%c'."
 msgstr ""
 
-#: src/data-list.c:1089
+#: src/data-list.c:1092
 #, c-format
 msgid "Partial case of %d of %d records discarded."
 msgstr ""
 
-#: src/data-list.c:1143
+#: src/data-list.c:1146
 #, c-format
 msgid "Partial case discarded.  The first variable missing was %s."
 msgstr ""
 
-#: src/data-list.c:1187
+#: src/data-list.c:1190
 #, c-format
 msgid ""
 "Missing value(s) for all variables from %s onward.  These will be filled "
 "with the system-missing value or blanks, as appropriate."
 msgstr ""
 
-#: src/data-list.c:1264
+#: src/data-list.c:1267
 msgid "Attempt to read past end of file."
 msgstr ""
 
-#: src/data-list.c:1401
+#: src/data-list.c:1408
 msgid ""
 "REPEATING DATA must use the same file as its corresponding DATA LIST or FILE "
 "TYPE."
 msgstr ""
 
-#: src/data-list.c:1411 src/data-list.c:1446 src/data-list.c:1459
-#: src/data-list.c:1472 src/data-list.c:1505
+#: src/data-list.c:1418 src/data-list.c:1452 src/data-list.c:1465
+#: src/data-list.c:1478 src/data-list.c:1512
 #, c-format
 msgid "%s subcommand given multiple times."
 msgstr ""
 
-#: src/data-list.c:1435
+#: src/data-list.c:1441
 #, c-format
 msgid "STARTS beginning column (%d) exceeds STARTS ending column (%d)."
 msgstr ""
 
-#: src/data-list.c:1491
+#: src/data-list.c:1498
 #, c-format
 msgid "CONTINUED beginning column (%d) exceeds CONTINUED ending column (%d)."
 msgstr ""
 
-#: src/data-list.c:1514
+#: src/data-list.c:1521
 #, c-format
 msgid "ID beginning column (%ld) must be positive."
 msgstr ""
 
-#: src/data-list.c:1529
+#: src/data-list.c:1536
 #, c-format
 msgid "ID ending column (%ld) must be positive."
 msgstr ""
 
-#: src/data-list.c:1535
+#: src/data-list.c:1542
 #, c-format
 msgid "ID ending column (%ld) cannot be less than ID beginning column (%d)."
 msgstr ""
 
-#: src/data-list.c:1575
+#: src/data-list.c:1582
 msgid "Missing required specification STARTS."
 msgstr ""
 
-#: src/data-list.c:1577
+#: src/data-list.c:1584
 msgid "Missing required specification OCCURS."
 msgstr ""
 
-#: src/data-list.c:1584
+#: src/data-list.c:1591
 msgid "ID specified without CONTINUED."
 msgstr ""
 
-#: src/data-list.c:1676
+#: src/data-list.c:1602
+#, c-format
+msgid ""
+"STARTS beginning column (%d) exceeds default STARTS ending column taken from "
+"file's record width (%d)."
+msgstr ""
+
+#: src/data-list.c:1615
+#, c-format
+msgid ""
+"CONTINUED beginning column (%d) exceeds default CONTINUED ending column "
+"taken from file's record width (%d)."
+msgstr ""
+
+#: src/data-list.c:1696
 msgid "String variable not allowed here."
 msgstr ""
 
-#: src/data-list.c:1686
+#: src/data-list.c:1706
 #, c-format
 msgid "%s (%d) must be at least 1."
 msgstr ""
 
-#: src/data-list.c:1692
+#: src/data-list.c:1712
 #, c-format
 msgid "Variable or integer expected for %s."
 msgstr ""
 
-#: src/data-list.c:1825
+#: src/data-list.c:1837
 #, c-format
 msgid "Encountered mismatched record ID \"%s\" expecting \"%s\"."
 msgstr ""
 
-#: src/data-list.c:1857
+#: src/data-list.c:1869
 #, c-format
 msgid ""
 "Variable %s starting in column %d extends beyond physical record length of %"
 "d."
 msgstr ""
 
-#: src/data-list.c:1925
+#: src/data-list.c:1937
 #, c-format
 msgid "Invalid value %d for OCCURS."
 msgstr ""
 
-#: src/data-list.c:1931
+#: src/data-list.c:1943
 #, c-format
 msgid "Beginning column for STARTS (%d) must be at least 1."
 msgstr ""
 
-#: src/data-list.c:1939
+#: src/data-list.c:1951
 #, c-format
 msgid "Ending column for STARTS (%d) is less than beginning column (%d)."
 msgstr ""
 
-#: src/data-list.c:1947
+#: src/data-list.c:1959
 #, c-format
 msgid "Invalid value %d for LENGTH."
 msgstr ""
 
-#: src/data-list.c:1954
+#: src/data-list.c:1966
 #, c-format
 msgid "Beginning column for CONTINUED (%d) must be at least 1."
 msgstr ""
 
-#: src/data-list.c:1962
+#: src/data-list.c:1974
 #, c-format
 msgid "Ending column for CONTINUED (%d) is less than beginning column (%d)."
 msgstr ""
 
-#: src/data-list.c:1994
+#: src/data-list.c:2006
 #, c-format
 msgid ""
 "Number of repetitions specified on OCCURS (%d) exceed number of repetitions "
 "available in space on STARTS (%d), and CONTINUED not specified."
 msgstr ""
 
-#: src/data-list.c:2012
+#: src/data-list.c:2024
 #, c-format
 msgid "Unexpected end of file with %d repetitions remaining out of %d."
 msgstr ""
 
-#: src/data-out.c:242
+#: src/data-out.c:245
 msgid ""
 "The N output format cannot be used to output a negative number or the system-"
 "missing value."
 msgstr ""
 
-#: src/data-out.c:356
+#: src/data-out.c:359
 #, c-format
 msgid ""
 "Quality of zoned decimal (Z) output format code is suspect.  Check your "
 "results. Report bugs to %s."
 msgstr ""
 
-#: src/data-out.c:364
+#: src/data-out.c:367
 msgid "The system-missing value cannot be output as a zoned decimal number."
 msgstr ""
 
-#: src/data-out.c:377
+#: src/data-out.c:380
 #, c-format
 msgid "Number %g too big to fit in field with format Z%d.%d."
 msgstr ""
 
-#: src/data-out.c:771
+#: src/data-out.c:774
 #, c-format
 msgid "Time value %g too large in magnitude to convert to alphanumeric time."
 msgstr ""
 
-#: src/data-out.c:822
+#: src/data-out.c:825
 #, c-format
 msgid "Weekday index %f does not lie between 1 and 7."
 msgstr ""
 
-#: src/data-out.c:842
+#: src/data-out.c:845
 #, c-format
 msgid "Month index %f does not lie between 1 and 12."
 msgstr ""
 
-#: src/data-out.c:955
+#: src/data-out.c:958
 #, c-format
 msgid ""
 "Year %d cannot be represented in four digits for output formatting purposes."
 msgstr ""
 
-#: src/date.c:32
+#: src/date.c:35
 msgid "Only USE ALL is currently implemented."
 msgstr ""
 
-#: src/descript.c:99 src/examine.q:1466 src/frequencies.q:112 src/oneway.q:394
-#: src/t-test.q:676 src/t-test.q:699 src/t-test.q:822 src/t-test.q:1159
+#: src/descript.c:103 src/examine.q:1470 src/frequencies.q:117
+#: src/oneway.q:398 src/t-test.q:680 src/t-test.q:703 src/t-test.q:826
+#: src/t-test.q:1163
 msgid "Mean"
 msgstr ""
 
-#: src/descript.c:100
+#: src/descript.c:104
 msgid "S E Mean"
 msgstr ""
 
-#: src/descript.c:101 src/frequencies.q:116
+#: src/descript.c:105 src/frequencies.q:121
 msgid "Std Dev"
 msgstr ""
 
-#: src/descript.c:102 src/examine.q:1546 src/frequencies.q:117
+#: src/descript.c:106 src/examine.q:1550 src/frequencies.q:122
 msgid "Variance"
 msgstr ""
 
-#: src/descript.c:103 src/examine.q:1653 src/frequencies.q:118
+#: src/descript.c:107 src/examine.q:1657 src/frequencies.q:123
 msgid "Kurtosis"
 msgstr ""
 
-#: src/descript.c:104
+#: src/descript.c:108
 msgid "S E Kurt"
 msgstr ""
 
-#: src/descript.c:105 src/examine.q:1633 src/frequencies.q:120
+#: src/descript.c:109 src/examine.q:1637 src/frequencies.q:125
 msgid "Skewness"
 msgstr ""
 
-#: src/descript.c:106
+#: src/descript.c:110
 msgid "S E Skew"
 msgstr ""
 
-#: src/descript.c:107 src/examine.q:1594 src/frequencies.q:122
+#: src/descript.c:111 src/examine.q:1598 src/frequencies.q:127
 msgid "Range"
 msgstr ""
 
-#: src/descript.c:108 src/examine.q:1571 src/frequencies.q:123
-#: src/oneway.q:406
+#: src/descript.c:112 src/examine.q:1575 src/frequencies.q:128
+#: src/oneway.q:410
 msgid "Minimum"
 msgstr ""
 
-#: src/descript.c:109 src/examine.q:1582 src/frequencies.q:124
-#: src/oneway.q:407
+#: src/descript.c:113 src/examine.q:1586 src/frequencies.q:129
+#: src/oneway.q:411
 msgid "Maximum"
 msgstr ""
 
-#: src/descript.c:110 src/frequencies.q:125
+#: src/descript.c:114 src/frequencies.q:130
 msgid "Sum"
 msgstr ""
 
-#: src/descript.c:333
+#: src/descript.c:337
 #, c-format
 msgid "Z-score variable name %s would be a duplicate variable name."
 msgstr ""
 
-#: src/descript.c:351 src/list.q:142
+#: src/descript.c:355 src/list.q:146
 msgid "No variables specified."
 msgstr ""
 
-#: src/descript.c:435
+#: src/descript.c:439
 msgid "expecting statistic name: reverting to default"
 msgstr ""
 
-#: src/descript.c:507
+#: src/descript.c:511
 msgid ""
 "Ran out of generic names for Z-score variables.  There are only 126 generic "
 "names: ZSC001-ZSC0999, STDZ01-STDZ09, ZZZZ01-ZZZZ09, ZQZQ01-ZQZQ09."
 msgstr ""
 
-#: src/descript.c:538
+#: src/descript.c:542
 msgid "Mapping of variables to corresponding Z-scores."
 msgstr ""
 
-#: src/descript.c:543
+#: src/descript.c:547
 msgid "Source"
 msgstr ""
 
-#: src/descript.c:544
+#: src/descript.c:548
 msgid "Target"
 msgstr ""
 
-#: src/descript.c:663 src/descript.c:669
+#: src/descript.c:667 src/descript.c:673
 msgid "Z-score of "
 msgstr ""
 
-#: src/descript.c:882
+#: src/descript.c:886
 msgid "Valid N"
 msgstr ""
 
-#: src/descript.c:883
+#: src/descript.c:887
 msgid "Missing N"
 msgstr ""
 
-#: src/descript.c:909
+#: src/descript.c:913
 #, c-format
 msgid "Valid cases = %g; cases with missing value(s) = %g."
 msgstr ""
 
-#: src/devind.c:136
+#: src/devind.c:139
 #, c-format
 msgid "DEVIND driver initializing as `%s'..."
 msgstr ""
 
-#: src/devind.c:218
+#: src/devind.c:221
 #, c-format
 msgid "Unknown configuration parameter `%s' for DEVIND device driver."
 msgstr ""
 
-#: src/devind.c:240
+#: src/devind.c:243
 #, c-format
 msgid "DEVIND output driver: %s: %s"
 msgstr ""
 
-#: src/devind.c:271
+#: src/devind.c:274
 #, c-format
 msgid "Cannot open first page on DEVIND device %s."
 msgstr ""
 
-#: src/dfm-read.c:153
+#: src/dfm-read.c:157
 #, c-format
 msgid "Could not open \"%s\" for reading as a data file: %s."
 msgstr ""
 
-#: src/dfm-read.c:186 src/dfm-read.c:204
+#: src/dfm-read.c:190 src/dfm-read.c:208
 msgid "BEGIN DATA expected."
 msgstr ""
 
-#: src/dfm-read.c:213
+#: src/dfm-read.c:217
 msgid ""
 "Unexpected end-of-file while reading data in BEGIN DATA.  This probably "
 "indicates a missing or misformatted END DATA command.  END DATA must appear "
 "by itself on a single line with exactly one space between words."
 msgstr ""
 
-#: src/dfm-read.c:246 src/dfm-read.c:266
+#: src/dfm-read.c:250 src/dfm-read.c:270
 #, c-format
 msgid "Error reading file %s: %s."
 msgstr ""
 
-#: src/dfm-read.c:269
+#: src/dfm-read.c:273
 #, c-format
 msgid "%s: Partial record at end of file."
 msgstr ""
 
-#: src/dfm-read.c:312
+#: src/dfm-read.c:316
 #, c-format
 msgid "Attempt to read beyond end-of-file on file %s."
 msgstr ""
 
-#: src/dfm-read.c:315
+#: src/dfm-read.c:319
 msgid "Attempt to read beyond END DATA."
 msgstr ""
 
-#: src/dfm-read.c:462
+#: src/dfm-read.c:466
 msgid ""
 "This command is not valid here since the current input program does not "
 "access the inline file."
 msgstr ""
 
-#: src/dfm-write.c:67
+#: src/dfm-write.c:70
 #, c-format
 msgid "An error occurred while opening \"%s\" for writing as a data file: %s."
 msgstr ""
 
-#: src/dfm-write.c:103
+#: src/dfm-write.c:106
 #, c-format
 msgid "Error writing file %s: %s."
 msgstr ""
 
-#: src/dictionary.c:682
+#: src/dictionary.c:685
 msgid ""
 "At least one case in the data file had a weight value that was user-missing, "
 "system-missing, zero, or negative.  These case(s) were ignored."
 msgstr ""
 
-#: src/do-if.c:113
+#: src/do-if.c:116
 msgid "There is no DO IF to match with this ELSE IF."
 msgstr ""
 
-#: src/do-if.c:118
+#: src/do-if.c:121
 msgid "The ELSE command must follow all ELSE IF commands in a DO IF structure."
 msgstr ""
 
-#: src/do-if.c:141
+#: src/do-if.c:144
 msgid "End of command expected."
 msgstr ""
 
-#: src/do-if.c:157
+#: src/do-if.c:160
 msgid "There is no DO IF to match with this ELSE."
 msgstr ""
 
-#: src/do-if.c:163
+#: src/do-if.c:166
 msgid ""
 "There may be at most one ELSE clause in each DO IF structure.  It must be "
 "the last clause."
 msgstr ""
 
-#: src/do-if.c:198
+#: src/do-if.c:201
 msgid "There is no DO IF to match with this END IF."
 msgstr ""
 
-#: src/do-if.c:284
+#: src/do-if.c:287
 #, c-format
 msgid "DO IF %d: true\n"
 msgstr ""
 
-#: src/do-if.c:289
+#: src/do-if.c:292
 #, c-format
 msgid "DO IF %d: false\n"
 msgstr ""
 
-#: src/do-if.c:294
+#: src/do-if.c:297
 #, c-format
 msgid "DO IF %d: missing\n"
 msgstr ""
 
-#: src/error.c:93
+#: src/error.c:97
 msgid "Terminating NOW due to a fatal error!"
 msgstr ""
 
-#: src/error.c:170
+#: src/error.c:174
 msgid "Terminating execution of syntax file due to error."
 msgstr ""
 
-#: src/error.c:172
+#: src/error.c:176
 #, c-format
 msgid "Errors (%d) exceeds limit (%d)."
 msgstr ""
 
-#: src/error.c:175
+#: src/error.c:179
 #, c-format
 msgid "Warnings (%d) exceed limit (%d)."
 msgstr ""
 
-#: src/error.c:237
+#: src/error.c:243
 msgid "fatal"
 msgstr ""
 
-#: src/error.c:239 src/error.c:246 src/error.c:249
+#: src/error.c:245 src/error.c:252 src/error.c:255
 msgid "error"
 msgstr ""
 
-#: src/error.c:240 src/error.c:247 src/error.c:250
+#: src/error.c:246 src/error.c:253 src/error.c:256
 msgid "warning"
 msgstr ""
 
-#: src/error.c:241 src/error.c:251
+#: src/error.c:247 src/error.c:257
 msgid "note"
 msgstr ""
 
-#: src/error.c:243 src/error.c:244
+#: src/error.c:249 src/error.c:250
 msgid "installation error"
 msgstr ""
 
-#: src/filename.c:221
+#: src/examine.q:471 src/examine.q:483
 #, c-format
-msgid "Searching for `%s'..."
+msgid "%s and %s are mutually exclusive"
 msgstr ""
 
-#: src/filename.c:229 src/filename.c:261
-msgid "Search unsuccessful!"
+#: src/examine.q:913
+msgid "Case Processing Summary"
 msgstr ""
 
-#: src/filename.c:254
-#, c-format
-msgid "Found `%s'."
+#: src/examine.q:1119
+msgid "Extreme Values"
 msgstr ""
 
-#: src/filename.c:686
-#, c-format
-msgid "Not opening pipe file `%s' because SAFER option set."
+#: src/examine.q:1135
+msgid "Case Number"
 msgstr ""
 
-#: src/file-type.c:131
-msgid "MIXED, GROUPED, or NESTED expected."
+#: src/examine.q:1220
+msgid "Highest"
 msgstr ""
 
-#: src/file-type.c:154
-msgid "The CASE subcommand is not valid on FILE TYPE MIXED."
+#: src/examine.q:1225
+msgid "Lowest"
 msgstr ""
 
-#: src/file-type.c:172
-msgid "WARN or NOWARN expected after WILD."
+#: src/examine.q:1366 src/oneway.q:400 src/oneway.q:684
+msgid "Std. Error"
 msgstr ""
 
-#: src/file-type.c:180
-msgid "The DUPLICATE subcommand is not valid on FILE TYPE MIXED."
+#: src/examine.q:1368 src/oneway.q:414
+msgid "Descriptives"
 msgstr ""
 
-#: src/file-type.c:194
-msgid "DUPLICATE=CASE is only valid on FILE TYPE NESTED."
+#: src/examine.q:1488 src/oneway.q:405
+#, c-format
+msgid "%g%% Confidence Interval for Mean"
 msgstr ""
 
-#: src/file-type.c:203
+#: src/examine.q:1494 src/oneway.q:407
+msgid "Lower Bound"
+msgstr ""
+
+#: src/examine.q:1505 src/oneway.q:408
+msgid "Upper Bound"
+msgstr ""
+
+#: src/examine.q:1517
+#, c-format
+msgid "5%% Trimmed Mean"
+msgstr ""
+
+#: src/examine.q:1528 src/frequencies.q:119
+msgid "Median"
+msgstr ""
+
+#: src/examine.q:1562 src/oneway.q:399 src/t-test.q:681 src/t-test.q:704
+#: src/t-test.q:828 src/t-test.q:1164
+msgid "Std. Deviation"
+msgstr ""
+
+#: src/examine.q:1610
+msgid "Interquartile Range"
+msgstr ""
+
+#: src/examine.q:1762
+#, c-format
+msgid "Boxplot of %s vs. %s"
+msgstr ""
+
+#: src/examine.q:1787
+msgid "Boxplot"
+msgstr ""
+
+#: src/examine.q:1829
+#, c-format
+msgid "Normal Q-Q Plot of %s"
+msgstr ""
+
+#: src/examine.q:1830 src/examine.q:1836
+msgid "Observed Value"
+msgstr ""
+
+#: src/examine.q:1831
+msgid "Expected Normal"
+msgstr ""
+
+#: src/examine.q:1834
+#, c-format
+msgid "Detrended Normal Q-Q Plot of %s"
+msgstr ""
+
+#: src/examine.q:1837
+msgid "Dev from Normal"
+msgstr ""
+
+#: src/examine.q:1956 src/examine.q:1978 src/frequencies.q:1525
+msgid "Percentiles"
+msgstr ""
+
+#: src/examine.q:2103
+msgid "Tukey's Hinges"
+msgstr ""
+
+#: src/expressions/evaluate.c:144
+msgid "expecting number or string"
+msgstr ""
+
+#: src/expressions/evaluate.c:155 src/pfm-read.c:537
+#, c-format
+msgid "Duplicate variable name %s."
+msgstr ""
+
+#: src/expressions/helpers.c:36
+msgid ""
+"One of the arguments to a DATE function is not an integer.  The result will "
+"be system-missing."
+msgstr ""
+
+#: src/expressions/helpers.c:58
+msgid ""
+"The week argument to DATE.WKYR is not an integer.  The result will be system-"
+"missing."
+msgstr ""
+
+#: src/expressions/helpers.c:64
+msgid ""
+"The week argument to DATE.WKYR is outside the acceptable range of 1 to 53.  "
+"The result will be system-missing."
+msgstr ""
+
+#: src/expressions/helpers.c:86
+msgid ""
+"The day argument to DATE.YRDAY is not an integer.  The result will be system-"
+"missing."
+msgstr ""
+
+#: src/expressions/helpers.c:92
+msgid ""
+"The day argument to DATE.YRDAY is outside the acceptable range of 1 to 366.  "
+"The result will be system-missing."
+msgstr ""
+
+#: src/expressions/helpers.c:114
+msgid ""
+"The year argument to YRMODA is greater than 47516.  The result will be "
+"system-missing."
+msgstr ""
+
+#: src/expressions/parse.c:241
+#, c-format
+msgid ""
+"Type mismatch: expression has %s type, but a numeric value is required here."
+msgstr ""
+
+#: src/expressions/parse.c:253
+#, c-format
+msgid ""
+"Type mismatch: expression has %s type, but a string value is required here."
+msgstr ""
+
+#: src/expressions/parse.c:394
+#, c-format
+msgid "Type mismatch while applying %s operator: cannot convert %s to %s."
+msgstr ""
+
+#: src/expressions/parse.c:599
+msgid ""
+"Chaining relational operators (e.g. \"a < b < c\") will not produce the "
+"mathematically expected result.  Use the AND logical operator to fix the "
+"problem (e.g. \"a < b AND b < c\").  If chaining is really intended, "
+"parentheses will disable this warning (e.g. \"(a < b) < c\".)"
+msgstr ""
+
+#: src/expressions/parse.c:698
+msgid ""
+"The exponentiation operator (\"**\") is left-associative, even though right-"
+"associative semantics are more useful.  That is, \"a**b**c\" equals \"(a**b)"
+"**c\", not as \"a**(b**c)\".  To disable this warning, insert parentheses."
+msgstr ""
+
+#: src/expressions/parse.c:760
+#, c-format
+msgid "Unknown system variable %s."
+msgstr ""
+
+#: src/expressions/parse.c:802
+#, c-format
+msgid "Unknown identifier %s."
+msgstr ""
+
+#: src/expressions/parse.c:837
+msgid "in expression"
+msgstr ""
+
+#: src/expressions/parse.c:1013
+#, c-format
+msgid "%s must have at least %d arguments in list."
+msgstr ""
+
+#: src/expressions/parse.c:1022
+#, c-format
+msgid "%s must have even number of arguments in list."
+msgstr ""
+
+#: src/expressions/parse.c:1025
+#, c-format
+msgid "%s must have multiple of %d arguments in list."
+msgstr ""
+
+#: src/expressions/parse.c:1035
+#, c-format
+msgid "%s function does not accept a minimum valid argument count."
+msgstr ""
+
+#: src/expressions/parse.c:1044
+#, c-format
+msgid "%s requires at least %d valid arguments in list."
+msgstr ""
+
+#: src/expressions/parse.c:1050
+#, c-format
+msgid ""
+"With %s, using minimum valid argument count of %d does not make sense when "
+"passing only %d arguments in list."
+msgstr ""
+
+#: src/expressions/parse.c:1104
+#, c-format
+msgid "Type mismatch invoking %s as "
+msgstr ""
+
+#: src/expressions/parse.c:1109
+msgid "Function invocation "
+msgstr ""
+
+#: src/expressions/parse.c:1111
+msgid " does not match any known function.  Candidates are:"
+msgstr ""
+
+#: src/expressions/parse.c:1141
+#, c-format
+msgid "No function or vector named %s."
+msgstr ""
+
+#: src/expressions/parse.c:1183
+#, c-format
+msgid "expecting `,' or `)' invoking %s function"
+msgstr ""
+
+#: src/expressions/parse.c:1203
+#, c-format
+msgid "%s is a PSPP extension."
+msgstr ""
+
+#: src/file-handle.q:127
+#, c-format
+msgid ""
+"File handle %s already refers to file %s.  File handles cannot be redefined "
+"within a session."
+msgstr ""
+
+#: src/file-handle.q:148
+msgid "The FILE HANDLE required subcommand NAME is not present."
+msgstr ""
+
+#: src/file-handle.q:167
+msgid ""
+"Fixed-length records were specified on /RECFORM, but record length was not "
+"specified on /LRECL.  Assuming 1024-character records."
+msgstr ""
+
+#: src/file-handle.q:174
+#, c-format
+msgid ""
+"Record length (%ld) must be at least one byte.  1-character records will be "
+"assumed."
+msgstr ""
+
+#: src/file-handle.q:274
+#, c-format
+msgid "Can't open %s as a %s because it is already open as a %s"
+msgstr ""
+
+#: src/file-handle.q:281
+#, c-format
+msgid "Can't open %s as a %s for %s because it is already open for %s"
+msgstr ""
+
+#: src/file-handle.q:289
+#, c-format
+msgid "Can't re-open %s as a %s for %s"
+msgstr ""
+
+#: src/file-handle.q:342
+msgid "expecting a file name or handle name"
+msgstr ""
+
+#: src/file-type.c:134
+msgid "MIXED, GROUPED, or NESTED expected."
+msgstr ""
+
+#: src/file-type.c:157
+msgid "The CASE subcommand is not valid on FILE TYPE MIXED."
+msgstr ""
+
+#: src/file-type.c:175
+msgid "WARN or NOWARN expected after WILD."
+msgstr ""
+
+#: src/file-type.c:183
+msgid "The DUPLICATE subcommand is not valid on FILE TYPE MIXED."
+msgstr ""
+
+#: src/file-type.c:197
+msgid "DUPLICATE=CASE is only valid on FILE TYPE NESTED."
+msgstr ""
+
+#: src/file-type.c:206
 #, c-format
 msgid "WARN%s expected after DUPLICATE."
 msgstr ""
 
-#: src/file-type.c:204
+#: src/file-type.c:207
 msgid ", NOWARN, or CASE"
 msgstr ""
 
-#: src/file-type.c:205
+#: src/file-type.c:208
 msgid " or NOWARN"
 msgstr ""
 
-#: src/file-type.c:213
+#: src/file-type.c:216
 msgid "The MISSING subcommand is not valid on FILE TYPE MIXED."
 msgstr ""
 
-#: src/file-type.c:225
+#: src/file-type.c:228
 msgid "WARN or NOWARN after MISSING."
 msgstr ""
 
-#: src/file-type.c:233
+#: src/file-type.c:236
 msgid "ORDERED is only valid on FILE TYPE GROUPED."
 msgstr ""
 
-#: src/file-type.c:244
+#: src/file-type.c:247
 msgid "YES or NO expected after ORDERED."
 msgstr ""
 
-#: src/file-type.c:250 src/file-type.c:545
+#: src/file-type.c:253 src/file-type.c:548
 msgid "while expecting a valid subcommand"
 msgstr ""
 
-#: src/file-type.c:257
+#: src/file-type.c:260
 msgid "The required RECORD subcommand was not present."
 msgstr ""
 
-#: src/file-type.c:265
+#: src/file-type.c:268
 msgid "The required CASE subcommand was not present."
 msgstr ""
 
-#: src/file-type.c:271
+#: src/file-type.c:274
 msgid "CASE and RECORD must specify different variable names."
 msgstr ""
 
-#: src/file-type.c:329
+#: src/file-type.c:332
 msgid "Column value must be positive."
 msgstr ""
 
-#: src/file-type.c:345
+#: src/file-type.c:348
 msgid "Ending column precedes beginning column."
 msgstr ""
 
-#: src/file-type.c:365
+#: src/file-type.c:368
 msgid "Bad format specifier name."
 msgstr ""
 
-#: src/file-type.c:394 src/file-type.c:583
+#: src/file-type.c:397 src/file-type.c:586
 msgid ""
 "This command may only appear within a FILE TYPE/END FILE TYPE structure."
 msgstr ""
 
-#: src/file-type.c:417
+#: src/file-type.c:420
 msgid "OTHER may appear only on the last RECORD TYPE command."
 msgstr ""
 
-#: src/file-type.c:427
+#: src/file-type.c:430
 msgid "No input commands (DATA LIST, REPEATING DATA) for above RECORD TYPE."
 msgstr ""
 
-#: src/file-type.c:478
+#: src/file-type.c:481
 msgid ""
 "The CASE subcommand is not allowed on the RECORD TYPE command for FILE TYPE "
 "MIXED."
 msgstr ""
 
-#: src/file-type.c:488
+#: src/file-type.c:491
 msgid ""
 "No variable name may be specified for the CASE subcommand on RECORD TYPE."
 msgstr ""
 
-#: src/file-type.c:496
+#: src/file-type.c:499
 msgid ""
 "The CASE column specification on RECORD TYPE must give a format specifier "
 "that is the same type as that of the CASE column specification given on FILE "
 "TYPE."
 msgstr ""
 
-#: src/file-type.c:512
+#: src/file-type.c:515
 msgid "WARN or NOWARN expected on DUPLICATE subcommand."
 msgstr ""
 
-#: src/file-type.c:526
+#: src/file-type.c:529
 msgid "WARN or NOWARN expected on MISSING subcommand."
 msgstr ""
 
-#: src/file-type.c:539
+#: src/file-type.c:542
 msgid "YES or NO expected on SPREAD subcommand."
 msgstr ""
 
-#: src/file-type.c:596
+#: src/file-type.c:599
 msgid "No input commands (DATA LIST, REPEATING DATA) on above RECORD TYPE."
 msgstr ""
 
-#: src/file-type.c:603
+#: src/file-type.c:606
 msgid "No commands between FILE TYPE and END FILE TYPE."
 msgstr ""
 
-#: src/file-type.c:672
+#: src/file-type.c:675
 #, c-format
 msgid "Unknown record type \"%.*s\"."
 msgstr ""
 
-#: src/file-type.c:696
+#: src/file-type.c:699
 #, c-format
 msgid "Unknown record type %g."
 msgstr ""
 
-#: src/flip.c:85
+#: src/filename.c:227
+#, c-format
+msgid "Searching for `%s'..."
+msgstr ""
+
+#: src/filename.c:235 src/filename.c:267
+msgid "Search unsuccessful!"
+msgstr ""
+
+#: src/filename.c:260
+#, c-format
+msgid "Found `%s'."
+msgstr ""
+
+#: src/filename.c:665
+#, c-format
+msgid "Not opening pipe file `%s' because SAFER option set."
+msgstr ""
+
+#: src/flip.c:88
 msgid ""
 "FLIP ignores TEMPORARY.  Temporary transformations will be made permanent."
 msgstr ""
 
-#: src/flip.c:229
+#: src/flip.c:232
 #, c-format
 msgid "Could not create acceptable variant for variable %s."
 msgstr ""
 
-#: src/flip.c:245
+#: src/flip.c:248
 msgid "Cannot create more than 99999 variable names."
 msgstr ""
 
-#: src/flip.c:289
+#: src/flip.c:292
 msgid "Could not create temporary file for FLIP."
 msgstr ""
 
-#: src/flip.c:297 src/flip.c:364
+#: src/flip.c:300 src/flip.c:367
 #, c-format
 msgid "Error writing FLIP file: %s."
 msgstr ""
 
-#: src/flip.c:406
+#: src/flip.c:409
 #, c-format
 msgid "Error rewinding FLIP file: %s."
 msgstr ""
 
-#: src/flip.c:410
+#: src/flip.c:413
 msgid "Error creating FLIP source file."
 msgstr ""
 
-#: src/flip.c:419
+#: src/flip.c:422
 #, c-format
 msgid "Error reading FLIP file: %s."
 msgstr ""
 
-#: src/flip.c:440
+#: src/flip.c:443
 #, c-format
 msgid "Error seeking FLIP source file: %s."
 msgstr ""
 
-#: src/flip.c:445
+#: src/flip.c:448
 #, c-format
 msgid "Error writing FLIP source file: %s."
 msgstr ""
 
-#: src/flip.c:456
+#: src/flip.c:459
 #, c-format
 msgid "Error rewind FLIP source file: %s."
 msgstr ""
 
-#: src/flip.c:508
+#: src/flip.c:511
 #, c-format
 msgid "Error reading FLIP temporary file: %s."
 msgstr ""
 
-#: src/flip.c:511
+#: src/flip.c:514
 msgid "Unexpected end of file reading FLIP temporary file."
 msgstr ""
 
-#: src/format.c:74
+#: src/format.c:77
 msgid "X and T format specifiers not allowed here."
 msgstr ""
 
-#: src/format.c:82
+#: src/format.c:85
 #, c-format
 msgid "%.*s is not a valid data format."
 msgstr ""
 
-#: src/format.c:131
+#: src/format.c:134
 #, c-format
-msgid ""
-"Format %s specifies an odd width %d, but format %s requires an even width."
+msgid "Format %s specifies an odd width %d, but an even width is required."
 msgstr ""
 
-#: src/format.c:139
+#: src/format.c:142
 #, c-format
 msgid ""
 "Format %s specifies a bad number of implied decimal places %d.  Input format "
 "%s allows up to 16 implied decimal places."
 msgstr ""
 
-#: src/format.c:163
+#: src/format.c:166
 #, c-format
 msgid "Format %s may not be used for input."
 msgstr ""
 
-#: src/format.c:169
+#: src/format.c:172
 #, c-format
 msgid ""
 "Input format %s specifies a bad width %d.  Format %s requires a width "
 "between %d and %d."
 msgstr ""
 
-#: src/format.c:179
+#: src/format.c:182
 #, c-format
 msgid ""
 "Input format %s is invalid because it specifies more decimal places than the "
 "field width."
 msgstr ""
 
-#: src/format.c:202
+#: src/format.c:205
 #, c-format
 msgid ""
 "Output format %s specifies a bad width %d.  Format %s requires a width "
 "between %d and %d."
 msgstr ""
 
-#: src/format.c:212
+#: src/format.c:215
 #, c-format
 msgid ""
 "Output format %s is invalid because it specifies as many decimal places as "
@@ -1490,1224 +2079,1431 @@ msgid ""
 "d instead."
 msgstr ""
 
-#: src/format.c:234
+#: src/format.c:237
 #, c-format
 msgid "%s variables are not compatible with %s format %s."
 msgstr ""
 
-#: src/format.c:235 src/pfm-read.c:473 src/sfm-read.c:1027 src/sfm-read.c:1036
+#: src/format.c:238 src/pfm-read.c:477 src/sfm-read.c:1030 src/sfm-read.c:1039
 msgid "String"
 msgstr ""
 
-#: src/format.c:235 src/pfm-read.c:473 src/sfm-read.c:1027 src/sfm-read.c:1036
+#: src/format.c:238 src/pfm-read.c:477 src/sfm-read.c:1030 src/sfm-read.c:1039
 msgid "Numeric"
 msgstr ""
 
-#: src/format.c:255
+#: src/format.c:258
 #, c-format
 msgid "String variable with width %d not compatible with format %s."
 msgstr ""
 
-#: src/format.c:379
+#: src/format.c:382
 msgid "Format specifier expected."
 msgstr ""
 
-#: src/format.c:391
+#: src/format.c:394
 #, c-format
 msgid "Data format %s does not specify a width."
 msgstr ""
 
-#: src/format.c:409
+#: src/format.c:412
 #, c-format
 msgid "Data format %s is not valid."
 msgstr ""
 
-#: src/formats.c:86
+#: src/formats.c:89
 msgid "`(' expected after variable list"
 msgstr ""
 
-#: src/formats.c:96 src/numeric.c:65 src/numeric.c:136
+#: src/formats.c:99 src/numeric.c:68 src/numeric.c:139
 msgid "`)' expected after output format."
 msgstr ""
 
-#: src/get.c:246
-#, c-format
-msgid "The required %s subcommand was not present"
+#: src/frequencies.q:118
+msgid "S.E. Mean"
 msgstr ""
 
-#: src/get.c:252
-#, c-format
-msgid "Unsupported sysfile version: %d. Using version %d instead."
+#: src/frequencies.q:120
+msgid "Mode"
 msgstr ""
 
-#: src/get.c:408 src/print.c:179
-msgid "expecting a valid subcommand"
+#: src/frequencies.q:124
+msgid "S.E. Kurt"
 msgstr ""
 
-#: src/get.c:451
-#, c-format
-msgid ""
-"Cannot rename %s as %s because there already exists a variable named %s.  To "
-"rename variables with overlapping names, use a single RENAME subcommand such "
-"as \"/RENAME (A=B)(B=C)(C=A)\", or equivalently, \"/RENAME (A B C=B C A)\"."
+#: src/frequencies.q:126
+msgid "S.E. Skew"
 msgstr ""
 
-#: src/get.c:476
-msgid "`=' expected after variable list."
+#: src/frequencies.q:401
+msgid ""
+"At most one of BARCHART, HISTOGRAM, or HBAR should be given.  HBAR will be "
+"assumed.  Argument values will be given precedence increasing along the "
+"order given."
 msgstr ""
 
-#: src/get.c:483
+#: src/frequencies.q:484
 #, c-format
 msgid ""
-"Number of variables on left side of `=' (%d) does not match number of "
-"variables on right side (%d), in parenthesized group %d of RENAME subcommand."
+"MAX must be greater than or equal to MIN, if both are specified.  However, "
+"MIN was specified as %g and MAX as %g.  MIN and MAX will be ignored."
 msgstr ""
 
-#: src/get.c:496
-#, c-format
-msgid "Requested renaming duplicates variable name %s."
+#: src/frequencies.q:807
+msgid ""
+"Upper limit of integer mode value range must be greater than lower limit."
 msgstr ""
 
-#: src/get.c:526
-msgid "Cannot DROP all variables from dictionary."
+#: src/frequencies.q:820
+#, c-format
+msgid "Variable %s specified multiple times on VARIABLES subcommand."
 msgstr ""
 
-#: src/get.c:787
-msgid "The active file may not be specified more than once."
+#: src/frequencies.q:826
+#, c-format
+msgid "Integer mode specified, but %s is not a numeric variable."
 msgstr ""
 
-#: src/get.c:796
-msgid "Cannot specify the active file since no active file has been defined."
+#: src/frequencies.q:892
+msgid "`)' expected after GROUPED interval list."
 msgstr ""
 
-#: src/get.c:804
-msgid ""
-"MATCH FILES may not be used after TEMPORARY when the active file is an input "
-"source.  Temporary transformations will be made permanent."
+#: src/frequencies.q:904
+#, c-format
+msgid "Variables %s specified on GROUPED but not on VARIABLES."
 msgstr ""
 
-#: src/get.c:842
-msgid "Multiple IN subcommands for a single FILE or TABLE."
+#: src/frequencies.q:911
+#, c-format
+msgid "Variables %s specified multiple times on GROUPED subcommand."
 msgstr ""
 
-#: src/get.c:862
-msgid "BY may appear at most once."
+#: src/frequencies.q:1142 src/frequencies.q:1234 src/frequencies.q:1235
+#: src/frequencies.q:1267
+msgid "Cum"
 msgstr ""
 
-#: src/get.c:882
-#, c-format
-msgid "File %s lacks BY variable %s."
+#: src/frequencies.q:1144 src/plot-hist.c:129
+msgid "Frequency"
 msgstr ""
 
-#: src/get.c:895
-msgid "FIRST may appear at most once."
+#: src/frequencies.q:1164
+msgid "Value Label"
 msgstr ""
 
-#: src/get.c:909
-msgid "LAST may appear at most once."
+#: src/frequencies.q:1265
+msgid "Freq"
 msgstr ""
 
-#: src/get.c:950
-msgid "BY is required when TABLE is specified."
+#: src/frequencies.q:1266 src/frequencies.q:1268
+msgid "Pct"
 msgstr ""
 
-#: src/get.c:955
-msgid "BY is required when IN is specified."
+#: src/frequencies.q:1487
+#, c-format
+msgid "No valid data for variable %s; statistics not displayed."
+msgstr ""
+
+#: src/get.c:249
+#, c-format
+msgid "The required %s subcommand was not present"
+msgstr ""
+
+#: src/get.c:255
+#, c-format
+msgid "Unsupported sysfile version: %d. Using version %d instead."
+msgstr ""
+
+#: src/get.c:411 src/print.c:182
+msgid "expecting a valid subcommand"
+msgstr ""
+
+#: src/get.c:454
+#, c-format
+msgid ""
+"Cannot rename %s as %s because there already exists a variable named %s.  To "
+"rename variables with overlapping names, use a single RENAME subcommand such "
+"as \"/RENAME (A=B)(B=C)(C=A)\", or equivalently, \"/RENAME (A B C=B C A)\"."
+msgstr ""
+
+#: src/get.c:479
+msgid "`=' expected after variable list."
+msgstr ""
+
+#: src/get.c:486
+#, c-format
+msgid ""
+"Number of variables on left side of `=' (%d) does not match number of "
+"variables on right side (%d), in parenthesized group %d of RENAME subcommand."
+msgstr ""
+
+#: src/get.c:499
+#, c-format
+msgid "Requested renaming duplicates variable name %s."
+msgstr ""
+
+#: src/get.c:529
+msgid "Cannot DROP all variables from dictionary."
+msgstr ""
+
+#: src/get.c:790
+msgid "The active file may not be specified more than once."
+msgstr ""
+
+#: src/get.c:799
+msgid "Cannot specify the active file since no active file has been defined."
+msgstr ""
+
+#: src/get.c:807
+msgid ""
+"MATCH FILES may not be used after TEMPORARY when the active file is an input "
+"source.  Temporary transformations will be made permanent."
+msgstr ""
+
+#: src/get.c:845
+msgid "Multiple IN subcommands for a single FILE or TABLE."
+msgstr ""
+
+#: src/get.c:865
+msgid "BY may appear at most once."
+msgstr ""
+
+#: src/get.c:885
+#, c-format
+msgid "File %s lacks BY variable %s."
+msgstr ""
+
+#: src/get.c:899
+msgid "FIRST may appear at most once."
+msgstr ""
+
+#: src/get.c:913
+msgid "LAST may appear at most once."
+msgstr ""
+
+#: src/get.c:954
+msgid "BY is required when TABLE is specified."
+msgstr ""
+
+#: src/get.c:959
+msgid "BY is required when IN is specified."
 msgstr ""
 
-#: src/get.c:983
+#: src/get.c:987
 #, c-format
 msgid "IN variable name %s duplicates an existing variable name."
 msgstr ""
 
-#: src/get.c:1417
+#: src/get.c:1416
 #, c-format
 msgid ""
 "Variable %s in file %s (%s) has different type or width from the same "
 "variable in earlier file (%s)."
 msgstr ""
 
-#: src/get.c:1508
+#: src/get.c:1507
 msgid "expecting COMM or TAPE"
 msgstr ""
 
-#: src/getline.c:175
+#: src/getl.c:178
 #, c-format
 msgid "Can't find `%s' in include file search path."
 msgstr ""
 
-#: src/getline.c:330
+#: src/getl.c:333
 #, c-format
 msgid "%s: Opening as syntax file."
 msgstr ""
 
-#: src/getline.c:335
+#: src/getl.c:338
 #, c-format
 msgid "Opening `%s': %s."
 msgstr ""
 
-#: src/getline.c:344 src/html.c:348 src/postscript.c:1466
+#: src/getl.c:347 src/html.c:349 src/postscript.c:1461
 #, c-format
 msgid "Reading `%s': %s."
 msgstr ""
 
-#: src/getline.c:402
+#: src/getl.c:405
 #, c-format
 msgid "Closing `%s': %s."
 msgstr ""
 
-#: src/groff-font.c:101
+#: src/groff-font.c:105
 #, c-format
 msgid "%s: Opening Groff font file..."
 msgstr ""
 
-#: src/groff-font.c:155
+#: src/groff-font.c:159
 msgid "Missing font name."
 msgstr ""
 
-#: src/groff-font.c:165
+#: src/groff-font.c:169
 msgid "Missing encoding filename."
 msgstr ""
 
-#: src/groff-font.c:178
+#: src/groff-font.c:182
 msgid "Bad spacewidth value."
 msgstr ""
 
-#: src/groff-font.c:190
+#: src/groff-font.c:194
 msgid "Bad slant value."
 msgstr ""
 
-#: src/groff-font.c:215
+#: src/groff-font.c:219
 #, c-format
 msgid "Unknown ligature `%s'."
 msgstr ""
 
-#: src/groff-font.c:250
+#: src/groff-font.c:254
 msgid "Unexpected end of line reading character set."
 msgstr ""
 
-#: src/groff-font.c:258
+#: src/groff-font.c:262
 msgid "Can't use ditto mark for first character."
 msgstr ""
 
-#: src/groff-font.c:263
+#: src/groff-font.c:267
 msgid "Can't ditto into an unnamed character."
 msgstr ""
 
-#: src/groff-font.c:280
+#: src/groff-font.c:284
 #, c-format
 msgid "Missing metrics for character `%s'."
 msgstr ""
 
-#: src/groff-font.c:289
+#: src/groff-font.c:293
 #, c-format
 msgid "Missing type for character `%s'."
 msgstr ""
 
-#: src/groff-font.c:298
+#: src/groff-font.c:302
 #, c-format
 msgid "Missing code for character `%s'."
 msgstr ""
 
-#: src/groff-font.c:317
+#: src/groff-font.c:321
 msgid "Malformed kernpair."
 msgstr ""
 
-#: src/groff-font.c:324
+#: src/groff-font.c:328
 msgid "Unexpected end of line reading kernpairs."
 msgstr ""
 
-#: src/groff-font.c:330
+#: src/groff-font.c:334
 msgid "Bad kern value."
 msgstr ""
 
-#: src/groff-font.c:362
+#: src/groff-font.c:366
 #, c-format
 msgid "Font read successfully with internal name %s."
 msgstr ""
 
-#: src/groff-font.c:383
+#: src/groff-font.c:387
 msgid "Error reading font."
 msgstr ""
 
-#: src/groff-font.c:394
+#: src/groff-font.c:398
 msgid "installation error: Groff font error: "
 msgstr ""
 
-#: src/groff-font.c:419
+#: src/groff-font.c:423
 #, c-format
 msgid "Bad character \\%3o."
 msgstr ""
 
-#: src/groff-font.c:673
+#: src/groff-font.c:677
 #, c-format
 msgid "Groff font error: Cannot find \"%s\"."
 msgstr ""
 
-#: src/groff-font.c:738
+#: src/groff-font.c:742
 #, c-format
 msgid "%s: Opening Groff description file..."
 msgstr ""
 
-#: src/groff-font.c:754
+#: src/groff-font.c:758
 msgid "Multiple `sizes' declarations."
 msgstr ""
 
-#: src/groff-font.c:771
+#: src/groff-font.c:775
 msgid "Unexpected end of file.  Missing 0 terminator to `sizes' command?"
 msgstr ""
 
-#: src/groff-font.c:783 src/groff-font.c:790 src/groff-font.c:803
+#: src/groff-font.c:787 src/groff-font.c:794 src/groff-font.c:807
 msgid "Bad argument to `sizes'."
 msgstr ""
 
-#: src/groff-font.c:795
+#: src/groff-font.c:799
 msgid "Bad range in argument to `sizes'."
 msgstr ""
 
-#: src/groff-font.c:824
+#: src/groff-font.c:828
 msgid "Family name expected."
 msgstr ""
 
-#: src/groff-font.c:829
+#: src/groff-font.c:833
 msgid "This command already specified."
 msgstr ""
 
-#: src/groff-font.c:849
+#: src/groff-font.c:853
 #, c-format
 msgid "%s: Device characteristic already defined."
 msgstr ""
 
-#: src/groff-font.c:855
+#: src/groff-font.c:859
 #, c-format
 msgid "%s: Invalid numeric format."
 msgstr ""
 
-#: src/groff-font.c:885
+#: src/groff-font.c:889
 msgid "Missing `res', `unitwidth', and/or `sizes' line(s)."
 msgstr ""
 
-#: src/groff-font.c:911
+#: src/groff-font.c:915
 msgid "Description file read successfully."
 msgstr ""
 
-#: src/groff-font.c:943
+#: src/groff-font.c:947
 msgid "Error reading description file."
 msgstr ""
 
-#: src/groff-font.c:1000
+#: src/groff-font.c:1004
 msgid "<<fallback>>"
 msgstr ""
 
-#: src/hash.c:577
+#: src/hash.c:581
 #, c-format
 msgid "hash table:"
 msgstr ""
 
-#: src/html.c:67
+#: src/html.c:72
 #, c-format
 msgid "HTML driver initializing as `%s'..."
 msgstr ""
 
-#: src/html.c:171
+#: src/html.c:176
 #, c-format
 msgid "Unknown configuration parameter `%s' for HTML device driver."
 msgstr ""
 
-#: src/html.c:254
+#: src/html.c:257
 msgid ""
 "Cannot find HTML prologue.  The use of `-vv' on the command line is "
 "suggested as a debugging aid."
 msgstr ""
 
-#: src/html.c:259
+#: src/html.c:262
 #, c-format
 msgid "%s: %s: Opening HTML prologue..."
 msgstr ""
 
-#: src/html.c:286 src/html.c:297 src/postscript.c:1358 src/postscript.c:1369
+#: src/html.c:286 src/postscript.c:1353 src/postscript.c:1364
 msgid "nobody"
 msgstr ""
 
-#: src/html.c:293 src/html.c:298 src/postscript.c:1365 src/postscript.c:1370
+#: src/html.c:295 src/html.c:298 src/postscript.c:1360 src/postscript.c:1365
 msgid "nowhere"
 msgstr ""
 
-#: src/html.c:357
+#: src/html.c:358
 #, c-format
 msgid "%s: HTML prologue read successfully."
 msgstr ""
 
-#: src/html.c:361
+#: src/html.c:362
 #, c-format
 msgid "%s: Error reading HTML prologue."
 msgstr ""
 
-#: src/html.c:389
+#: src/html.c:390
 #, c-format
 msgid "HTML output driver: %s: %s"
 msgstr ""
 
-#: src/html.c:420 src/list.q:252
+#: src/html.c:421 src/list.q:256
 #, c-format
 msgid "Cannot open first page on HTML device %s."
 msgstr ""
 
-#: src/include.c:40
+#: src/include.c:43
 msgid "expecting filename"
 msgstr ""
 
-#: src/inpt-pgm.c:81
+#: src/inpt-pgm.c:84
 msgid "No matching INPUT PROGRAM command."
 msgstr ""
 
-#: src/inpt-pgm.c:86
+#: src/inpt-pgm.c:89
 msgid ""
 "No data-input or transformation commands specified between INPUT PROGRAM and "
 "END INPUT PROGRAM."
 msgstr ""
 
-#: src/inpt-pgm.c:284 src/inpt-pgm.c:412
+#: src/inpt-pgm.c:287 src/inpt-pgm.c:415
 msgid ""
 "This command may only be executed between INPUT PROGRAM and END INPUT "
 "PROGRAM."
 msgstr ""
 
-#: src/inpt-pgm.c:334
+#: src/inpt-pgm.c:337
 msgid "COLUMN subcommand multiply specified."
 msgstr ""
 
-#: src/inpt-pgm.c:385
+#: src/inpt-pgm.c:388
 msgid ""
 "REREAD: Column numbers must be positive finite numbers.  Column set to 1."
 msgstr ""
 
-#: src/lexer.c:252
+#: src/lexer.c:256
 #, c-format
 msgid "%s does not form a valid number."
 msgstr ""
 
-#: src/lexer.c:369
+#: src/lexer.c:373
 #, c-format
 msgid "Bad character in input: `%c'."
 msgstr ""
 
-#: src/lexer.c:371
+#: src/lexer.c:375
 #, c-format
 msgid "Bad character in input: `\\%o'."
 msgstr ""
 
-#: src/lexer.c:409
+#: src/lexer.c:413
 #, c-format
 msgid "Syntax error %s at %s."
 msgstr ""
 
-#: src/lexer.c:412
+#: src/lexer.c:416
 #, c-format
 msgid "Syntax error at %s."
 msgstr ""
 
-#: src/lexer.c:530 src/lexer.c:547
+#: src/lexer.c:534 src/lexer.c:551
 #, c-format
 msgid "expecting `%s'"
 msgstr ""
 
-#: src/lexer.c:561 src/val-labs.c:154
+#: src/lexer.c:565 src/val-labs.c:157
 msgid "expecting string"
 msgstr ""
 
-#: src/lexer.c:575 src/val-labs.c:163
+#: src/lexer.c:579 src/val-labs.c:166
 msgid "expecting integer"
 msgstr ""
 
-#: src/lexer.c:589
+#: src/lexer.c:593
 msgid "expecting number"
 msgstr ""
 
-#: src/lexer.c:603
+#: src/lexer.c:607
 msgid "expecting identifier"
 msgstr ""
 
-#: src/lexer.c:889
+#: src/lexer.c:893
 msgid "<ERROR>"
 msgstr ""
 
-#: src/lexer.c:1023 src/repeat.c:214
+#: src/lexer.c:1027 src/repeat.c:217
 msgid "Unexpected end of file."
 msgstr ""
 
-#: src/lexer.c:1032
+#: src/lexer.c:1036
 msgid "binary"
 msgstr ""
 
-#: src/lexer.c:1032
+#: src/lexer.c:1036
 msgid "octal"
 msgstr ""
 
-#: src/lexer.c:1032
+#: src/lexer.c:1036
 msgid "hex"
 msgstr ""
 
-#: src/lexer.c:1046
+#: src/lexer.c:1050
 #, c-format
 msgid "String of %s digits has %d characters, which is not a multiple of %d."
 msgstr ""
 
-#: src/lexer.c:1075
+#: src/lexer.c:1079
 #, c-format
 msgid "`%c' is not a valid %s digit."
 msgstr ""
 
-#: src/lexer.c:1106
+#: src/lexer.c:1110
 msgid "Unterminated string constant."
 msgstr ""
 
-#: src/lexer.c:1178
+#: src/lexer.c:1182
 #, c-format
 msgid "String exceeds 255 characters in length (%d characters)."
 msgstr ""
 
-#: src/lexer.c:1193
+#: src/lexer.c:1197
 msgid ""
 "Sorry, literal strings may not contain null characters.  Replacing with "
 "spaces."
 msgstr ""
 
-#: src/loop.c:194
+#: src/list.q:154
+#, c-format
+msgid ""
+"The first case (%ld) specified precedes the last case (%ld) specified.  The "
+"values will be swapped."
+msgstr ""
+
+#: src/list.q:162
+#, c-format
+msgid ""
+"The first case (%ld) to list is less than 1.  The value is being reset to 1."
+msgstr ""
+
+#: src/list.q:168
+#, c-format
+msgid ""
+"The last case (%ld) to list is less than 1.  The value is being reset to 1."
+msgstr ""
+
+#: src/list.q:174
+#, c-format
+msgid "The step value %ld is less than 1.  The value is being reset to 1."
+msgstr ""
+
+#: src/list.q:201
+msgid "`/FORMAT WEIGHT' specified, but weighting is not on."
+msgstr ""
+
+#: src/list.q:442
+msgid "Line"
+msgstr ""
+
+#: src/loop.c:197
 msgid "The index variable may not be a string variable."
 msgstr ""
 
-#: src/loop.c:300
+#: src/loop.c:303
 msgid "There is no LOOP command that corresponds to this END LOOP."
 msgstr ""
 
-#: src/loop.c:494
+#: src/loop.c:497
 msgid ""
 "This command may only appear enclosed in a LOOP/END LOOP control structure."
 msgstr ""
 
-#: src/loop.c:500
+#: src/loop.c:503
 msgid "BREAK not enclosed in DO IF structure."
 msgstr ""
 
-#: src/loop.c:578
+#: src/loop.c:581
 #, c-format
 msgid "%s without %s."
 msgstr ""
 
-#: src/main.c:86
+#: src/main.c:89
 msgid "Error initializing output drivers."
 msgstr ""
 
-#: src/main.c:156
+#: src/main.c:159
 msgid "This command not executed."
 msgstr ""
 
-#: src/main.c:160
+#: src/main.c:163
 msgid ""
 "Skipping the rest of this command.  Part of this command may have been "
 "executed."
 msgstr ""
 
-#: src/main.c:165
+#: src/main.c:168
 msgid ""
 "Skipping the rest of this command.  This command was fully executed up to "
 "this point."
 msgstr ""
 
-#: src/main.c:170
+#: src/main.c:173
 msgid ""
 "Trailing garbage was encountered following this command.  The command was "
 "fully executed to this point."
 msgstr ""
 
-#: src/main.c:187
+#: src/main.c:190
 msgid "The rest of this command has been discarded."
 msgstr ""
 
-#: src/matrix-data.c:208
+#: src/matrix-data.c:211
 msgid "VARIABLES subcommand multiply specified."
 msgstr ""
 
-#: src/matrix-data.c:223
+#: src/matrix-data.c:226
 msgid "VARNAME_ cannot be explicitly specified on VARIABLES."
 msgstr ""
 
-#: src/matrix-data.c:284
+#: src/matrix-data.c:287
 msgid "in FORMAT subcommand"
 msgstr ""
 
-#: src/matrix-data.c:295
+#: src/matrix-data.c:298
 msgid "SPLIT subcommand multiply specified."
 msgstr ""
 
-#: src/matrix-data.c:302
+#: src/matrix-data.c:305
 msgid "in SPLIT subcommand"
 msgstr ""
 
-#: src/matrix-data.c:312
+#: src/matrix-data.c:315
 msgid "Split variable may not be named ROWTYPE_ or VARNAME_."
 msgstr ""
 
-#: src/matrix-data.c:346
+#: src/matrix-data.c:349
 #, c-format
 msgid "Split variable %s is already another type."
 msgstr ""
 
-#: src/matrix-data.c:361
+#: src/matrix-data.c:364
 msgid "FACTORS subcommand multiply specified."
 msgstr ""
 
-#: src/matrix-data.c:379
+#: src/matrix-data.c:382
 #, c-format
 msgid "Factor variable %s is already another type."
 msgstr ""
 
-#: src/matrix-data.c:394
+#: src/matrix-data.c:397
 msgid "CELLS subcommand multiply specified."
 msgstr ""
 
-#: src/matrix-data.c:400 src/matrix-data.c:419
+#: src/matrix-data.c:403 src/matrix-data.c:422
 msgid "expecting positive integer"
 msgstr ""
 
-#: src/matrix-data.c:413
+#: src/matrix-data.c:416
 msgid "N subcommand multiply specified."
 msgstr ""
 
-#: src/matrix-data.c:434
+#: src/matrix-data.c:437
 msgid "CONTENTS subcommand multiply specified."
 msgstr ""
 
-#: src/matrix-data.c:454
+#: src/matrix-data.c:457
 msgid "Nested parentheses not allowed."
 msgstr ""
 
-#: src/matrix-data.c:464
+#: src/matrix-data.c:467
 msgid "Mismatched right parenthesis (`(')."
 msgstr ""
 
-#: src/matrix-data.c:469
+#: src/matrix-data.c:472
 msgid "Empty parentheses not allowed."
 msgstr ""
 
-#: src/matrix-data.c:482 src/matrix-data.c:490
+#: src/matrix-data.c:485 src/matrix-data.c:493
 msgid "in CONTENTS subcommand"
 msgstr ""
 
-#: src/matrix-data.c:497
+#: src/matrix-data.c:500
 #, c-format
 msgid "Content multiply specified for %s."
 msgstr ""
 
-#: src/matrix-data.c:514
+#: src/matrix-data.c:517
 msgid "Missing right parenthesis."
 msgstr ""
 
-#: src/matrix-data.c:534
+#: src/matrix-data.c:537
 msgid "Missing VARIABLES subcommand."
 msgstr ""
 
-#: src/matrix-data.c:540
+#: src/matrix-data.c:543
 msgid ""
 "CONTENTS subcommand not specified: assuming file contains only CORR matrix."
 msgstr ""
 
-#: src/matrix-data.c:550
+#: src/matrix-data.c:553
 msgid ""
 "Missing CELLS subcommand.  CELLS is required when ROWTYPE_ is not given in "
 "the data and factors are present."
 msgstr ""
 
-#: src/matrix-data.c:558
+#: src/matrix-data.c:561
 msgid "Split file values must be present in the data when ROWTYPE_ is present."
 msgstr ""
 
-#: src/matrix-data.c:611
+#: src/matrix-data.c:614
 msgid "No continuous variables specified."
 msgstr ""
 
-#: src/matrix-data.c:854
+#: src/matrix-data.c:857
 msgid "Scope of string exceeds line."
 msgstr ""
 
-#: src/matrix-data.c:919
+#: src/matrix-data.c:922
 #, c-format
 msgid "End of line expected %s while reading %s."
 msgstr ""
 
-#: src/matrix-data.c:1104
+#: src/matrix-data.c:1107
 #, c-format
 msgid "expecting value for %s %s"
 msgstr ""
 
-#: src/matrix-data.c:1268
+#: src/matrix-data.c:1271
 #, c-format
 msgid "Syntax error expecting SPLIT FILE value %s."
 msgstr ""
 
-#: src/matrix-data.c:1277
+#: src/matrix-data.c:1280
 #, c-format
 msgid "Expecting value %g for %s."
 msgstr ""
 
-#: src/matrix-data.c:1318 src/matrix-data.c:1781
+#: src/matrix-data.c:1321 src/matrix-data.c:1784
 #, c-format
 msgid "Syntax error expecting factor value %s."
 msgstr ""
 
-#: src/matrix-data.c:1327
+#: src/matrix-data.c:1330
 #, c-format
 msgid "Syntax error expecting value %g for %s %s."
 msgstr ""
 
-#: src/matrix-data.c:1561
+#: src/matrix-data.c:1564
 #, c-format
 msgid "Syntax error %s expecting SPLIT FILE value."
 msgstr ""
 
-#: src/matrix-data.c:1688
+#: src/matrix-data.c:1691
 #, c-format
 msgid ""
 "Expected %d lines of data for %s content; actually saw %d lines.  No data "
 "will be output for this content."
 msgstr ""
 
-#: src/matrix-data.c:1723
+#: src/matrix-data.c:1726
 #, c-format
 msgid "Multiply specified ROWTYPE_ %s."
 msgstr ""
 
-#: src/matrix-data.c:1728
+#: src/matrix-data.c:1731
 #, c-format
 msgid "Syntax error %s expecting ROWTYPE_ string."
 msgstr ""
 
-#: src/matrix-data.c:1748
+#: src/matrix-data.c:1751
 #, c-format
 msgid "Syntax error %s."
 msgstr ""
 
-#: src/matrix-data.c:1898
+#: src/matrix-data.c:1901
 #, c-format
 msgid "Duplicate specification for %s."
 msgstr ""
 
-#: src/matrix-data.c:1910
+#: src/matrix-data.c:1913
 #, c-format
 msgid "Too many rows of matrix data for %s."
 msgstr ""
 
-#: src/matrix-data.c:1958
+#: src/matrix-data.c:1961
 #, c-format
 msgid "Syntax error expecting value for %s %s."
 msgstr ""
 
-#: src/mis-val.c:71
+#: src/means.q:104
+msgid "Missing required subcommand TABLES."
+msgstr ""
+
+#: src/means.q:138
+msgid "TABLES subcommand may not appear more than once."
+msgstr ""
+
+#: src/mis-val.c:74
 msgid "`)' expected after value specification."
 msgstr ""
 
-#: src/mis-val.c:101
+#: src/mis-val.c:104
 #, c-format
 msgid "`(' expected after variable name%s."
 msgstr ""
 
-#: src/mis-val.c:113
+#: src/mis-val.c:116
 msgid "Long string value specified."
 msgstr ""
 
-#: src/mis-val.c:118
+#: src/mis-val.c:121
 msgid "Short strings must be of equal width."
 msgstr ""
 
-#: src/mis-val.c:175
+#: src/mis-val.c:178
 #, c-format
 msgid "Range %g THRU %g is not valid because %g is greater than %g."
 msgstr ""
 
-#: src/mis-val.c:206
+#: src/mis-val.c:209
 msgid "Number or range expected."
 msgstr ""
 
-#: src/mis-val.c:239
+#: src/mis-val.c:242
 msgid "At most one range can exist in the missing values for any one variable."
 msgstr ""
 
-#: src/mis-val.c:245
+#: src/mis-val.c:248
 msgid "At most one individual value can be missing along with one range."
 msgstr ""
 
-#: src/mis-val.c:307
+#: src/mis-val.c:310
 msgid "String is not of proper length."
 msgstr ""
 
-#: src/mis-val.c:316 src/repeat.c:460
+#: src/mis-val.c:319 src/repeat.c:463
 msgid "String expected."
 msgstr ""
 
-#: src/mkfile.c:52
+#: src/mkfile.c:54
 #, c-format
 msgid "%s: Creating temporary file: %s."
 msgstr ""
 
-#: src/mkfile.c:94
+#: src/mkfile.c:96
 #, c-format
 msgid "%s: Creating file: %s."
 msgstr ""
 
-#: src/modify-vars.c:89
+#: src/modify-vars.c:92
 msgid ""
 "MODIFY VARS may not be used after TEMPORARY.  Temporary transformations will "
 "be made permanent."
 msgstr ""
 
-#: src/modify-vars.c:113
+#: src/modify-vars.c:116
 msgid "REORDER subcommand may be given at most once."
 msgstr ""
 
-#: src/modify-vars.c:136
+#: src/modify-vars.c:139
 msgid "Cannot specify ALL after specifying a set of variables."
 msgstr ""
 
-#: src/modify-vars.c:146
+#: src/modify-vars.c:149
 msgid "`(' expected on REORDER subcommand."
 msgstr ""
 
-#: src/modify-vars.c:158
+#: src/modify-vars.c:161
 msgid "`)' expected following variable names on REORDER subcommand."
 msgstr ""
 
-#: src/modify-vars.c:176
+#: src/modify-vars.c:179
 msgid "RENAME subcommand may be given at most once."
 msgstr ""
 
-#: src/modify-vars.c:189
+#: src/modify-vars.c:192
 msgid "`(' expected on RENAME subcommand."
 msgstr ""
 
-#: src/modify-vars.c:197
+#: src/modify-vars.c:200
 msgid ""
 "`=' expected between lists of new and old variable names on RENAME "
 "subcommand."
 msgstr ""
 
-#: src/modify-vars.c:205 src/rename-vars.c:75
+#: src/modify-vars.c:208 src/rename-vars.c:78
 #, c-format
 msgid ""
 "Differing number of variables in old name list (%d) and in new name list (%"
 "d)."
 msgstr ""
 
-#: src/modify-vars.c:216
+#: src/modify-vars.c:219
 msgid "`)' expected after variable lists on RENAME subcommand."
 msgstr ""
 
-#: src/modify-vars.c:230
+#: src/modify-vars.c:233
 msgid ""
 "KEEP subcommand may be given at most once.  It may notbe given in "
 "conjunction with the DROP subcommand."
 msgstr ""
 
-#: src/modify-vars.c:272
+#: src/modify-vars.c:275
 msgid ""
 "DROP subcommand may be given at most once.  It may not be given in "
 "conjunction with the KEEP subcommand."
 msgstr ""
 
-#: src/modify-vars.c:298
+#: src/modify-vars.c:301
 #, c-format
 msgid "Unrecognized subcommand name `%s'."
 msgstr ""
 
-#: src/modify-vars.c:300
+#: src/modify-vars.c:303
 msgid "Subcommand name expected."
 msgstr ""
 
-#: src/modify-vars.c:308
+#: src/modify-vars.c:311
 msgid "`/' or `.' expected."
 msgstr ""
 
-#: src/moments.c:513
+#: src/moments.c:516
 msgid "expecting weight value"
 msgstr ""
 
-#: src/numeric.c:58
+#: src/numeric.c:61
 #, c-format
 msgid "Format type %s may not be used with a numeric variable."
 msgstr ""
 
-#: src/numeric.c:77 src/numeric.c:159 src/vector.c:156
+#: src/numeric.c:80 src/numeric.c:162 src/vector.c:159
 #, c-format
 msgid "There is already a variable named %s."
 msgstr ""
 
-#: src/numeric.c:129
+#: src/numeric.c:132
 #, c-format
 msgid "Format type %s may not be used with a string variable."
 msgstr ""
 
-#: src/output.c:86
+#: src/oneway.q:174
+msgid "Number of contrast coefficients must equal the number of groups"
+msgstr ""
+
+#: src/oneway.q:183
+#, c-format
+msgid "Coefficients for contrast %d do not total zero"
+msgstr ""
+
+#: src/oneway.q:248
+#, c-format
+msgid "`%s' is not a variable name"
+msgstr ""
+
+#: src/oneway.q:283
+msgid "Sum of Squares"
+msgstr ""
+
+#: src/oneway.q:285
+msgid "Mean Square"
+msgstr ""
+
+#: src/oneway.q:286 src/t-test.q:974
+msgid "F"
+msgstr ""
+
+#: src/oneway.q:287 src/oneway.q:540
+msgid "Significance"
+msgstr ""
+
+#: src/oneway.q:309
+msgid "Between Groups"
+msgstr ""
+
+#: src/oneway.q:310
+msgid "Within Groups"
+msgstr ""
+
+#: src/oneway.q:357
+msgid "ANOVA"
+msgstr ""
+
+#: src/oneway.q:537
+msgid "Levene Statistic"
+msgstr ""
+
+#: src/oneway.q:538
+msgid "df1"
+msgstr ""
+
+#: src/oneway.q:539
+msgid "df2"
+msgstr ""
+
+#: src/oneway.q:543
+msgid "Test of Homogeneity of Variances"
+msgstr ""
+
+#: src/oneway.q:613
+msgid "Contrast Coefficients"
+msgstr ""
+
+#: src/oneway.q:615 src/oneway.q:682
+msgid "Contrast"
+msgstr ""
+
+#: src/oneway.q:680
+msgid "Contrast Tests"
+msgstr ""
+
+#: src/oneway.q:683
+msgid "Value of Contrast"
+msgstr ""
+
+#: src/oneway.q:685 src/t-test.q:976 src/t-test.q:1168 src/t-test.q:1260
+msgid "t"
+msgstr ""
+
+#: src/oneway.q:687 src/t-test.q:978 src/t-test.q:1170 src/t-test.q:1262
+msgid "Sig. (2-tailed)"
+msgstr ""
+
+#: src/oneway.q:731
+msgid "Assume equal variances"
+msgstr ""
+
+#: src/oneway.q:735
+msgid "Does not assume equal"
+msgstr ""
+
+#: src/output.c:89
 msgid "Attempt to iterate driver list reentrantly."
 msgstr ""
 
-#: src/output.c:163
+#: src/output.c:166
 #, c-format
 msgid "Unknown output driver `%s'."
 msgstr ""
 
-#: src/output.c:165
+#: src/output.c:168
 #, c-format
 msgid "Output driver `%s' referenced but never defined."
 msgstr ""
 
-#: src/output.c:295
-msgid "Cannot find output initialization file.  Use `-vv' to view search path."
+#: src/output.c:298
+msgid ""
+"Cannot find output initialization file.  Use `-vvvv' to view search path."
 msgstr ""
 
-#: src/output.c:300
+#: src/output.c:303
 #, c-format
 msgid "%s: Opening device description file..."
 msgstr ""
 
-#: src/output.c:304 src/output.c:1175 src/postscript.c:1102
+#: src/output.c:307 src/output.c:1183 src/postscript.c:1097
 #, c-format
 msgid "Opening %s: %s."
 msgstr ""
 
-#: src/output.c:315 src/output.c:1186 src/postscript.c:1117
+#: src/output.c:318 src/output.c:1194 src/postscript.c:1112
 #, c-format
 msgid "Reading %s: %s."
 msgstr ""
 
-#: src/output.c:337 src/output.c:499
+#: src/output.c:340 src/output.c:507
 msgid "Syntax error."
 msgstr ""
 
-#: src/output.c:347 src/postscript.c:1128
+#: src/output.c:350 src/postscript.c:1123
 #, c-format
 msgid "Closing %s: %s."
 msgstr ""
 
-#: src/output.c:352
+#: src/output.c:355
 msgid "No output drivers are active."
 msgstr ""
 
-#: src/output.c:355
+#: src/output.c:358
 msgid "Device definition file read successfully."
 msgstr ""
 
-#: src/output.c:357
+#: src/output.c:360
 msgid "Error reading device definition file."
 msgstr ""
 
-#: src/output.c:471
+#: src/output.c:479
 #, c-format
 msgid ""
 "Driver classes:\n"
 "\t"
 msgstr ""
 
-#: src/output.c:600
+#: src/output.c:608
 msgid "Syntax error in string constant."
 msgstr ""
 
-#: src/output.c:632
+#: src/output.c:640
 msgid "Syntax error in options."
 msgstr ""
 
-#: src/output.c:642
+#: src/output.c:650
 msgid "Syntax error in options (`=' expected)."
 msgstr ""
 
-#: src/output.c:649
+#: src/output.c:657
 msgid "Syntax error in options (value expected after `=')."
 msgstr ""
 
-#: src/output.c:721
+#: src/output.c:729
 msgid "Driver name expected."
 msgstr ""
 
-#: src/output.c:742
+#: src/output.c:750
 msgid "Class name expected."
 msgstr ""
 
-#: src/output.c:751
+#: src/output.c:759
 #, c-format
 msgid "Unknown output driver class `%s'."
 msgstr ""
 
-#: src/output.c:758
+#: src/output.c:766
 #, c-format
 msgid "Can't initialize output driver class `%s'."
 msgstr ""
 
-#: src/output.c:765
+#: src/output.c:773
 #, c-format
 msgid "Can't initialize output driver `%s' of class `%s'."
 msgstr ""
 
-#: src/output.c:787
+#: src/output.c:795
 #, c-format
 msgid "Unknown device type `%s'."
 msgstr ""
 
-#: src/output.c:799
+#: src/output.c:807
 #, c-format
 msgid "Can't complete initialization of output driver `%s' of class `%s'."
 msgstr ""
 
-#: src/output.c:846
+#: src/output.c:854
 #, c-format
 msgid "Can't deinitialize output driver class `%s'."
 msgstr ""
 
-#: src/output.c:919
+#: src/output.c:927
 #, c-format
 msgid "Trying to find keyword `%s'...\n"
 msgstr ""
 
-#: src/output.c:1036
+#: src/output.c:1044
 #, c-format
 msgid "Unit \"%s\" is unknown in dimension \"%s\"."
 msgstr ""
 
-#: src/output.c:1051
+#: src/output.c:1059
 #, c-format
 msgid "Bad dimension \"%s\"."
 msgstr ""
 
-#: src/output.c:1077
+#: src/output.c:1085
 #, c-format
 msgid "`x' expected in paper size `%s'."
 msgstr ""
 
-#: src/output.c:1087
+#: src/output.c:1095
 #, c-format
 msgid "Trailing garbage `%s' on paper size `%s'."
 msgstr ""
 
-#: src/output.c:1136
+#: src/output.c:1144
 msgid "Paper size name must not be empty."
 msgstr ""
 
-#: src/output.c:1167
+#: src/output.c:1175
 msgid "Cannot find `papersize' configuration file."
 msgstr ""
 
-#: src/output.c:1171
+#: src/output.c:1179
 #, c-format
 msgid "%s: Opening paper size definition file..."
 msgstr ""
 
-#: src/output.c:1213
+#: src/output.c:1221
 msgid "Syntax error in paper size definition."
 msgstr ""
 
-#: src/output.c:1242
+#: src/output.c:1250
 msgid "Paper size definition file read successfully."
 msgstr ""
 
-#: src/output.c:1244
+#: src/output.c:1252
 msgid "Error reading paper size definition file."
 msgstr ""
 
-#: src/output.c:1313
+#: src/output.c:1321
 #, c-format
 msgid "Error closing page on %s device of %s class."
 msgstr ""
 
-#: src/output.c:1317
+#: src/output.c:1325
 #, c-format
 msgid "Error opening page on %s device of %s class."
 msgstr ""
 
-#: src/percentiles.c:38
+#: src/percentiles.c:42
 msgid "HAverage"
 msgstr ""
 
-#: src/percentiles.c:39
+#: src/percentiles.c:43
 msgid "Weighted Average"
 msgstr ""
 
-#: src/percentiles.c:40
+#: src/percentiles.c:44
 msgid "Rounded"
 msgstr ""
 
-#: src/percentiles.c:41
+#: src/percentiles.c:45
 msgid "Empirical"
 msgstr ""
 
-#: src/percentiles.c:42
+#: src/percentiles.c:46
 msgid "Empirical with averaging"
 msgstr ""
 
-#: src/permissions.c:76
+#: src/permissions.c:77
 #, c-format
 msgid "Expecting %s or %s."
 msgstr ""
 
-#: src/permissions.c:109
+#: src/permissions.c:110
 #, c-format
 msgid "Cannot stat %s: %s"
 msgstr ""
 
-#: src/permissions.c:122
+#: src/permissions.c:123
 #, c-format
 msgid "Cannot change mode of %s: %s"
 msgstr ""
 
-#: src/pfm-read.c:85
+#: src/pfm-read.c:88
 #, c-format
 msgid "portable file %s corrupt at offset %ld: "
 msgstr ""
 
-#: src/pfm-read.c:112
+#: src/pfm-read.c:115
 msgid "unexpected end of file"
 msgstr ""
 
-#: src/pfm-read.c:170
+#: src/pfm-read.c:173
 #, c-format
 msgid ""
 "An error occurred while opening \"%s\" for reading as a portable file: %s."
 msgstr ""
 
-#: src/pfm-read.c:188
+#: src/pfm-read.c:191
 msgid "Data record expected."
 msgstr ""
 
-#: src/pfm-read.c:296
+#: src/pfm-read.c:299
 msgid "Missing numeric terminator."
 msgstr ""
 
-#: src/pfm-read.c:319
+#: src/pfm-read.c:322
 msgid "Invalid integer."
 msgstr ""
 
-#: src/pfm-read.c:330
+#: src/pfm-read.c:333
 #, c-format
 msgid "Bad string length %d."
 msgstr ""
 
-#: src/pfm-read.c:401
+#: src/pfm-read.c:404
 #, c-format
 msgid "%s: Not a portable file."
 msgstr ""
 
-#: src/pfm-read.c:425
+#: src/pfm-read.c:429
 #, c-format
 msgid "Bad date string length %d."
 msgstr ""
 
-#: src/pfm-read.c:427
+#: src/pfm-read.c:431
 #, c-format
 msgid "Bad time string length %d."
 msgstr ""
 
-#: src/pfm-read.c:465 src/sfm-read.c:1019
+#: src/pfm-read.c:469 src/sfm-read.c:1022
 #, c-format
 msgid "%s: Bad format specifier byte (%d)."
 msgstr ""
 
-#: src/pfm-read.c:472 src/sfm-read.c:1035
+#: src/pfm-read.c:476 src/sfm-read.c:1038
 #, c-format
 msgid "%s variable %s has invalid format specifier %s."
 msgstr ""
 
-#: src/pfm-read.c:487
+#: src/pfm-read.c:491
 msgid "Expected variable count record."
 msgstr ""
 
-#: src/pfm-read.c:491
+#: src/pfm-read.c:495
 #, c-format
 msgid "Invalid number of variables %d."
 msgstr ""
 
-#: src/pfm-read.c:501
+#: src/pfm-read.c:505
 #, c-format
 msgid "Weight variable name (%s) truncated."
 msgstr ""
 
-#: src/pfm-read.c:513
+#: src/pfm-read.c:517
 msgid "Expected variable record."
 msgstr ""
 
-#: src/pfm-read.c:517
+#: src/pfm-read.c:521
 #, c-format
 msgid "Invalid variable width %d."
 msgstr ""
 
-#: src/pfm-read.c:525
+#: src/pfm-read.c:529
 #, c-format
 msgid "position %d: Invalid variable name `%s'."
 msgstr ""
 
-#: src/pfm-read.c:533
-#, c-format
-msgid "Duplicate variable name %s."
-msgstr ""
-
-#: src/pfm-read.c:573
+#: src/pfm-read.c:577
 #, c-format
 msgid "Bad missing values for %s."
 msgstr ""
 
-#: src/pfm-read.c:591
+#: src/pfm-read.c:595
 #, c-format
 msgid "Weighting variable %s not present in dictionary."
 msgstr ""
 
-#: src/pfm-read.c:638
+#: src/pfm-read.c:642
 #, c-format
 msgid "Unknown variable %s while parsing value labels."
 msgstr ""
 
-#: src/pfm-read.c:641
+#: src/pfm-read.c:645
 #, c-format
 msgid ""
 "Cannot assign value labels to %s and %s, which have different variable types "
 "or widths."
 msgstr ""
 
-#: src/pfm-read.c:665
+#: src/pfm-read.c:669
 #, c-format
 msgid "Duplicate label for value %g for variable %s."
 msgstr ""
 
-#: src/pfm-read.c:668
+#: src/pfm-read.c:672
 #, c-format
 msgid "Duplicate label for value `%.*s' for variable %s."
 msgstr ""
 
-#: src/pfm-write.c:93
+#: src/pfm-write.c:99
 #, c-format
 msgid ""
 "An error occurred while opening \"%s\" for writing as a portable file: %s."
 msgstr ""
 
-#: src/pfm-write.c:155
+#: src/pfm-write.c:161
 #, c-format
 msgid "%s: Writing portable file: %s."
 msgstr ""
 
-#: src/pfm-write.c:493
+#: src/pfm-write.c:410
 #, c-format
 msgid "%s: Closing portable file: %s."
 msgstr ""
 
-#: src/plot-hist.c:126
+#: src/plot-hist.c:127
 msgid "HISTOGRAM"
 msgstr ""
 
-#: src/plot-hist.c:128 src/frequencies.q:1139
-msgid "Frequency"
-msgstr ""
-
-#: src/postscript.c:326
+#: src/postscript.c:321
 #, c-format
 msgid "PostScript driver initializing as `%s'..."
 msgstr ""
 
-#: src/postscript.c:450
+#: src/postscript.c:445
 #, c-format
 msgid ""
 "PostScript driver: The defined page is not long enough to hold margins and "
@@ -2715,195 +3511,200 @@ msgid ""
 "room for %d lines of each font at the default size of %d.%03d points."
 msgstr ""
 
-#: src/postscript.c:580
+#: src/postscript.c:575
 #, c-format
 msgid "Unknown configuration parameter `%s' for PostScript device driver."
 msgstr ""
 
-#: src/postscript.c:596
+#: src/postscript.c:591
 #, c-format
 msgid ""
 "Unknown orientation `%s'.  Valid orientations are `portrait' and `landscape'."
 msgstr ""
 
-#: src/postscript.c:608
+#: src/postscript.c:603
 msgid ""
 "Unknown value for `data'.  Valid values are `clean7bit', `clean8bit', and "
 "`binary'."
 msgstr ""
 
-#: src/postscript.c:617
+#: src/postscript.c:612
 msgid "Unknown value for `line-ends'.  Valid values are `lf' and `crlf'."
 msgstr ""
 
-#: src/postscript.c:626
+#: src/postscript.c:621
 msgid "Unknown value for `line-style'.  Valid values are `thick' and `double'."
 msgstr ""
 
-#: src/postscript.c:689
+#: src/postscript.c:684
 #, c-format
 msgid ""
 "Default font size must be at least 1 point (value of 1000 for key `%s')."
 msgstr ""
 
-#: src/postscript.c:721
+#: src/postscript.c:716
 #, c-format
 msgid "Value for `%s' must be a dimension of positive length (i.e., `1in')."
 msgstr ""
 
-#: src/postscript.c:785
+#: src/postscript.c:780
 #, c-format
 msgid "Nonnegative integer required as value for `%s'."
 msgstr ""
 
-#: src/postscript.c:911
+#: src/postscript.c:906
 #, c-format
 msgid "%s: %s: Opening PostScript font encoding..."
 msgstr ""
 
-#: src/postscript.c:917
+#: src/postscript.c:912
 #, c-format
 msgid ""
 "PostScript driver: Cannot open encoding file `%s': %s.  Substituting "
 "ISOLatin1Encoding for missing encoding."
 msgstr ""
 
-#: src/postscript.c:959
+#: src/postscript.c:954
 msgid "PostScript driver: Invalid numeric format."
 msgstr ""
 
-#: src/postscript.c:964
+#: src/postscript.c:959
 #, c-format
 msgid ""
 "PostScript driver: Codes must be between 0 and 255.  (%d is not allowed.)"
 msgstr ""
 
-#: src/postscript.c:1000
+#: src/postscript.c:995
 #, c-format
 msgid "PostScript driver: Error closing encoding file `%s'."
 msgstr ""
 
-#: src/postscript.c:1003
+#: src/postscript.c:998
 #, c-format
 msgid "%s: PostScript font encoding read successfully."
 msgstr ""
 
-#: src/postscript.c:1097
+#: src/postscript.c:1092
 #, c-format
 msgid "%s: %s: Opening PostScript encoding list file."
 msgstr ""
 
-#: src/postscript.c:1130
+#: src/postscript.c:1125
 #, c-format
 msgid "%s: PostScript encoding list file read successfully."
 msgstr ""
 
-#: src/postscript.c:1144
+#: src/postscript.c:1139
 msgid "<<default encoding>>"
 msgstr ""
 
-#: src/postscript.c:1302
+#: src/postscript.c:1297
 msgid ""
 "Cannot find PostScript prologue.  The use of `-vv' on the command line is "
 "suggested as a debugging aid."
 msgstr ""
 
-#: src/postscript.c:1307
+#: src/postscript.c:1302
 #, c-format
 msgid "%s: %s: Opening PostScript prologue..."
 msgstr ""
 
-#: src/postscript.c:1479
+#: src/postscript.c:1474
 #, c-format
 msgid "%s: PostScript prologue read successfully."
 msgstr ""
 
-#: src/postscript.c:1483
+#: src/postscript.c:1478
 #, c-format
 msgid "%s: Error reading PostScript prologue."
 msgstr ""
 
-#: src/postscript.c:1653
+#: src/postscript.c:1648
 #, c-format
 msgid "PostScript output driver: %s: %s"
 msgstr ""
 
-#: src/postscript.c:2337
+#: src/postscript.c:2347
 #, c-format
 msgid "PostScript driver: Cannot find encoding `%s' for PostScript font `%s'."
 msgstr ""
 
-#: src/postscript.c:2885
-msgid "Charts are currently unsupported with postscript drivers."
-msgstr ""
-
-#: src/print.c:365 src/print.c:382
+#: src/print.c:368 src/print.c:385
 #, c-format
 msgid "%g is not a valid column location."
 msgstr ""
 
-#: src/print.c:376
+#: src/print.c:379
 #, c-format
 msgid "Column location expected following `%d-'."
 msgstr ""
 
-#: src/print.c:387
+#: src/print.c:390
 #, c-format
 msgid ""
 "%d-%ld is not a valid column range.  The second column must be greater than "
 "or equal to the first."
 msgstr ""
 
-#: src/print.c:488
+#: src/print.c:491
 #, c-format
 msgid "Variable %s has width %d so it cannot be output as format %s."
 msgstr ""
 
-#: src/print.c:508
+#: src/print.c:511
 #, c-format
 msgid ""
 "%s is not of the same type as %s.  To specify variables of different types "
 "in the same variable list, use a FORTRAN-like format specifier."
 msgstr ""
 
-#: src/print.c:538
+#: src/print.c:541
 msgid ""
 "The ending column for a field must not be less than the starting column."
 msgstr ""
 
-#: src/print.c:686
+#: src/print.c:689
 msgid ""
 "The number of format specifications exceeds the number of variable names "
 "given."
 msgstr ""
 
-#: src/print.c:838
+#: src/print.c:841
 #, c-format
 msgid "Writing %d record(s) to file %s."
 msgstr ""
 
-#: src/print.c:841
+#: src/print.c:844
 #, c-format
 msgid "Writing %d record(s) to the listing file."
 msgstr ""
 
-#: src/print.c:1088
+#: src/print.c:1091
 msgid "The expression on PRINT SPACE evaluated to the system-missing value."
 msgstr ""
 
-#: src/print.c:1091
+#: src/print.c:1094
 #, c-format
 msgid "The expression on PRINT SPACE evaluated to %g."
 msgstr ""
 
-#: src/recode.c:283
+#: src/rank.q:242
+#, c-format
+msgid "Variable %s already exists."
+msgstr ""
+
+#: src/rank.q:247
+msgid "Too many variables in INTO clause."
+msgstr ""
+
+#: src/recode.c:286
 #, c-format
 msgid ""
 "%d variable(s) cannot be recoded into %d variable(s).  Specify the same "
 "number of variables as input and output variables."
 msgstr ""
 
-#: src/recode.c:297
+#: src/recode.c:300
 #, c-format
 msgid ""
 "There is no string variable named %s.  (All string variables specified on "
@@ -2911,83 +3712,83 @@ msgid ""
 "variable.)"
 msgstr ""
 
-#: src/recode.c:306
+#: src/recode.c:309
 #, c-format
 msgid ""
 "Type mismatch between input and output variables.  Output variable %s is not "
 "a string variable, but all the input variables are string variables."
 msgstr ""
 
-#: src/recode.c:325
+#: src/recode.c:328
 #, c-format
 msgid "Type mismatch after INTO: %s is not a numeric variable."
 msgstr ""
 
-#: src/recode.c:355
+#: src/recode.c:358
 msgid ""
 "INTO must be used when the input values are numeric and output values are "
 "string."
 msgstr ""
 
-#: src/recode.c:363
+#: src/recode.c:366
 msgid ""
 "INTO must be used when the input values are string and output values are "
 "numeric."
 msgstr ""
 
-#: src/recode.c:486
+#: src/recode.c:489
 msgid "expecting output value"
 msgstr ""
 
-#: src/recode.c:500
+#: src/recode.c:503
 msgid ""
 "Inconsistent output types.  The output values must be all numeric or all "
 "string."
 msgstr ""
 
-#: src/recode.c:551
+#: src/recode.c:554
 msgid "following LO THRU"
 msgstr ""
 
-#: src/recode.c:567 src/recode.c:596
+#: src/recode.c:570 src/recode.c:599
 msgid "in source value"
 msgstr ""
 
-#: src/recode.c:609
+#: src/recode.c:612
 msgid ""
 "Keyword CONVERT may only be used with string input values and numeric output "
 "values."
 msgstr ""
 
-#: src/rename-vars.c:48
+#: src/rename-vars.c:51
 msgid ""
 "RENAME VARS may not be used after TEMPORARY.  Temporary transformations will "
 "be made permanent."
 msgstr ""
 
-#: src/rename-vars.c:60
+#: src/rename-vars.c:63
 msgid "`(' expected."
 msgstr ""
 
-#: src/rename-vars.c:68
+#: src/rename-vars.c:71
 msgid "`=' expected between lists of new and old variable names."
 msgstr ""
 
-#: src/rename-vars.c:86
+#: src/rename-vars.c:89
 msgid "`)' expected after variable names."
 msgstr ""
 
-#: src/rename-vars.c:96
+#: src/rename-vars.c:99
 #, c-format
 msgid "Renaming would duplicate variable name %s."
 msgstr ""
 
-#: src/repeat.c:151
+#: src/repeat.c:154
 #, c-format
 msgid "Identifier %s is given twice."
 msgstr ""
 
-#: src/repeat.c:194
+#: src/repeat.c:197
 #, c-format
 msgid ""
 "There must be the same number of substitutions for each dummy variable "
@@ -2995,164 +3796,309 @@ msgid ""
 "s as well, but %d were specified."
 msgstr ""
 
-#: src/repeat.c:299
+#: src/repeat.c:302
 msgid "No commands in scope."
 msgstr ""
 
-#: src/repeat.c:487
+#: src/repeat.c:490
 msgid "No matching DO REPEAT."
 msgstr ""
 
-#: src/sample.c:73
+#: src/sample.c:76
 msgid "The sampling factor must be between 0 and 1 exclusive."
 msgstr ""
 
-#: src/sample.c:93
+#: src/sample.c:96
 #, c-format
 msgid "Cannot sample %d observations from a population of %d."
 msgstr ""
 
-#: src/sel-if.c:100
+#: src/sel-if.c:103
 msgid "The filter variable must be numeric."
 msgstr ""
 
-#: src/sel-if.c:106
+#: src/sel-if.c:109
 msgid "The filter variable may not be scratch."
 msgstr ""
 
-#: src/sel-if.c:137
+#: src/sel-if.c:140
 msgid "Only last instance of this command is in effect."
 msgstr ""
 
-#: src/sfm-read.c:129
-msgid "corrupt system file: "
-msgstr ""
-
-#: src/sfm-read.c:148 src/sfm-write.c:919
+#: src/set.q:224 src/set.q:303 src/set.q:346 src/set.q:401 src/set.q:403
+#: src/set.q:405 src/set.q:407 src/set.q:409 src/set.q:411 src/set.q:413
+#: src/set.q:415 src/set.q:417 src/set.q:419 src/set.q:421 src/set.q:423
+#: src/set.q:425 src/set.q:831 src/set.q:912 src/set.q:1007
 #, c-format
-msgid "%s: Closing system file: %s."
+msgid "%s is obsolete."
 msgstr ""
 
-#: src/sfm-read.c:234
-#, c-format
-msgid ""
-"An error occurred while opening \"%s\" for reading as a system file: %s."
+#: src/set.q:232
+msgid "LISTING is ON"
 msgstr ""
 
-#: src/sfm-read.c:252
-#, c-format
-msgid ""
-"%s: Index of weighting variable (%d) is not between 0 and number of elements "
-"per case (%d)."
+#: src/set.q:234
+msgid "LISTING is OFF"
 msgstr ""
 
-#: src/sfm-read.c:261
+#: src/set.q:248
 #, c-format
-msgid ""
-"%s: Weighting variable may not be a continuation of a long string variable."
+msgid "EPOCH is %d"
 msgstr ""
 
-#: src/sfm-read.c:264
-#, c-format
-msgid "%s: Weighting variable may not be a string variable."
+#: src/set.q:267
+msgid "Journalling is off"
 msgstr ""
 
-#: src/sfm-read.c:289
-#, c-format
+#: src/set.q:434
 msgid ""
-"%s: Orphaned variable index record (type 4).  Type 4 records must always "
-"immediately follow type 3 records."
+"CASE is not implemented and probably won't be.  If you care, complain about "
+"it."
 msgstr ""
 
-#: src/sfm-read.c:347
-#, c-format
-msgid "%s: Invalid subrecord length. Record: 7; Subrecord: 11"
+#: src/set.q:439
+msgid "Active file compression is not yet implemented (and probably won't be)."
 msgstr ""
 
-#: src/sfm-read.c:401
+#: src/set.q:453
 #, c-format
-msgid "%s: Trailing garbage in long variable name map."
+msgid ""
+"CC%c: Length of custom currency string `%s' (%d) exceeds maximum length of "
+"16."
 msgstr ""
 
-#: src/sfm-read.c:408
+#: src/set.q:475
 #, c-format
-msgid "%s: Long variable mapping to invalid variable name `%s'."
+msgid ""
+"CC%c: Custom currency string `%s' does not contain exactly three periods or "
+"commas (not both)."
 msgstr ""
 
-#: src/sfm-read.c:418
-#, c-format
-msgid "%s: Long variable mapping for nonexistent variable %s."
+#: src/set.q:528
+msgid "None"
 msgstr ""
 
-#: src/sfm-read.c:428
-#, c-format
-msgid "%s: Duplicate long variable name `%s' within system file."
+#: src/set.q:534
+msgid "Disabled"
 msgstr ""
 
-#: src/sfm-read.c:456
-#, c-format
-msgid "%s: Unrecognized record type 7, subtype %d encountered in system file."
+#: src/set.q:539
+msgid "Screen"
 msgstr ""
 
-#: src/sfm-read.c:481
-#, c-format
-msgid "%s: Unrecognized record type %d."
+#: src/set.q:546
+msgid "Listing"
 msgstr ""
 
-#: src/sfm-read.c:513
-#, c-format
-msgid ""
-"%s: Bad size (%d) or count (%d) field on record type 7, subtype 3.\tExpected "
-"size %d, count 8."
+#: src/set.q:553
+msgid "Other"
 msgstr ""
 
-#: src/sfm-read.c:524
+#: src/set.q:662
+msgid "EPOCH must be 1500 or later."
+msgstr ""
+
+#: src/set.q:669
+msgid "expecting AUTOMATIC or year"
+msgstr ""
+
+#: src/set.q:690
+msgid "LENGTH must be at least 1."
+msgstr ""
+
+#: src/set.q:729
+msgid "Missing identifier in RESULTS subcommand."
+msgstr ""
+
+#: src/set.q:740
+msgid "Unrecognized identifier in RESULTS subcommand."
+msgstr ""
+
+#: src/set.q:777
+msgid "WIDTH must be at least 1."
+msgstr ""
+
+#: src/set.q:800
+#, c-format
+msgid ""
+"FORMAT requires numeric output format as an argument.  Specified format %s "
+"is of type string."
+msgstr ""
+
+#: src/set.q:844
+msgid "Text color must be in range 0-15."
+msgstr "Text colour must be in range 0-15."
+
+#: src/set.q:857
+msgid "Background color must be in range 0-7."
+msgstr "Background colour must be in range 0-7."
+
+#: src/set.q:868
+msgid "Border color must be in range 0-7."
+msgstr "Border colour must be in range 0-7."
+
+#: src/set.q:924
+msgid "Lower window color must be between 0 and 6."
+msgstr "Lower window colour must be between 0 and 6."
+
+#: src/set.q:938
+msgid "Upper window color must be between 0 and 6."
+msgstr "Upper window colour must be between 0 and 6."
+
+#: src/set.q:950
+msgid "Frame color must be between 0 and 6."
+msgstr "Frame colour must be between 0 and 6."
+
+#: src/set.q:1016
+msgid "Drive letter expected in WORKDEV subcommand."
+msgstr ""
+
+#: src/set.q:1048
+msgid "Specify a terminal type with the TERM environment variable."
+msgstr ""
+
+#: src/set.q:1054
+msgid "Could not access the termcap data base."
+msgstr ""
+
+#: src/set.q:1056
+#, c-format
+msgid "Terminal type `%s' is not defined."
+msgstr ""
+
+#: src/set.q:1114
+msgid "data> "
+msgstr ""
+
+#: src/sfm-read.c:132
+msgid "corrupt system file: "
+msgstr ""
+
+#: src/sfm-read.c:151 src/sfm-write.c:922
+#, c-format
+msgid "%s: Closing system file: %s."
+msgstr ""
+
+#: src/sfm-read.c:237
+#, c-format
+msgid ""
+"An error occurred while opening \"%s\" for reading as a system file: %s."
+msgstr ""
+
+#: src/sfm-read.c:255
+#, c-format
+msgid ""
+"%s: Index of weighting variable (%d) is not between 0 and number of elements "
+"per case (%d)."
+msgstr ""
+
+#: src/sfm-read.c:264
+#, c-format
+msgid ""
+"%s: Weighting variable may not be a continuation of a long string variable."
+msgstr ""
+
+#: src/sfm-read.c:267
+#, c-format
+msgid "%s: Weighting variable may not be a string variable."
+msgstr ""
+
+#: src/sfm-read.c:292
+#, c-format
+msgid ""
+"%s: Orphaned variable index record (type 4).  Type 4 records must always "
+"immediately follow type 3 records."
+msgstr ""
+
+#: src/sfm-read.c:350
+#, c-format
+msgid "%s: Invalid subrecord length. Record: 7; Subrecord: 11"
+msgstr ""
+
+#: src/sfm-read.c:404
+#, c-format
+msgid "%s: Trailing garbage in long variable name map."
+msgstr ""
+
+#: src/sfm-read.c:411
+#, c-format
+msgid "%s: Long variable mapping to invalid variable name `%s'."
+msgstr ""
+
+#: src/sfm-read.c:421
+#, c-format
+msgid "%s: Long variable mapping for nonexistent variable %s."
+msgstr ""
+
+#: src/sfm-read.c:431
+#, c-format
+msgid "%s: Duplicate long variable name `%s' within system file."
+msgstr ""
+
+#: src/sfm-read.c:459
+#, c-format
+msgid "%s: Unrecognized record type 7, subtype %d encountered in system file."
+msgstr ""
+
+#: src/sfm-read.c:484
+#, c-format
+msgid "%s: Unrecognized record type %d."
+msgstr ""
+
+#: src/sfm-read.c:516
+#, c-format
+msgid ""
+"%s: Bad size (%d) or count (%d) field on record type 7, subtype 3.\tExpected "
+"size %d, count 8."
+msgstr ""
+
+#: src/sfm-read.c:527
 #, c-format
 msgid ""
 "%s: Floating-point representation in system file is not IEEE-754.  PSPP "
 "cannot convert between floating-point formats."
 msgstr ""
 
-#: src/sfm-read.c:540
+#: src/sfm-read.c:543
 #, c-format
 msgid ""
 "%s: File-indicated endianness (%s) does not match endianness intuited from "
 "file header (%s)."
 msgstr ""
 
-#: src/sfm-read.c:543 src/sfm-read.c:544
+#: src/sfm-read.c:546 src/sfm-read.c:547
 msgid "big-endian"
 msgstr ""
 
-#: src/sfm-read.c:543 src/sfm-read.c:544
+#: src/sfm-read.c:546 src/sfm-read.c:547
 msgid "little-endian"
 msgstr ""
 
-#: src/sfm-read.c:545
+#: src/sfm-read.c:548
 msgid "unknown"
 msgstr ""
 
-#: src/sfm-read.c:549
+#: src/sfm-read.c:552
 #, c-format
 msgid "%s: File-indicated character representation code (%s) is not ASCII."
 msgstr ""
 
-#: src/sfm-read.c:553
+#: src/sfm-read.c:556
 msgid "DEC Kanji"
 msgstr ""
 
-#: src/sfm-read.c:553 src/sysfile-info.c:115
+#: src/sfm-read.c:556 src/sysfile-info.c:118
 msgid "Unknown"
 msgstr ""
 
-#: src/sfm-read.c:569
+#: src/sfm-read.c:572
 #, c-format
 msgid ""
 "%s: Bad size (%d) or count (%d) field on record type 7, subtype 4.\tExpected "
 "size %d, count 8."
 msgstr ""
 
-#: src/sfm-read.c:584
+#: src/sfm-read.c:587
 #, c-format
 msgid ""
 "%s: File-indicated value is different from internal value for at least one "
@@ -3160,538 +4106,665 @@ msgid ""
 "%g; LOWEST: %g, %g."
 msgstr ""
 
-#: src/sfm-read.c:611
+#: src/sfm-read.c:614
 #, c-format
 msgid ""
 "%s: Bad magic.  Proper system files begin with the four characters `$FL2'. "
 "This file will not be read."
 msgstr ""
 
-#: src/sfm-read.c:653
+#: src/sfm-read.c:656
 #, c-format
 msgid ""
 "%s: File layout code has unexpected value %d.  Value should be 2, in big-"
 "endian or little-endian format."
 msgstr ""
 
-#: src/sfm-read.c:681
+#: src/sfm-read.c:684
 #, c-format
 msgid "%s: Number of cases in file (%ld) is not between -1 and %d."
 msgstr ""
 
-#: src/sfm-read.c:686
+#: src/sfm-read.c:689
 #, c-format
 msgid "%s: Compression bias (%g) is not the usual value of 100."
 msgstr ""
 
-#: src/sfm-read.c:809
+#: src/sfm-read.c:812
 #, c-format
 msgid ""
 "%s: position %d: String variable does not have proper number of continuation "
 "records."
 msgstr ""
 
-#: src/sfm-read.c:820
+#: src/sfm-read.c:823
 #, c-format
 msgid "%s: position %d: Superfluous long string continuation record."
 msgstr ""
 
-#: src/sfm-read.c:826
+#: src/sfm-read.c:829
 #, c-format
 msgid "%s: position %d: Bad variable type code %d."
 msgstr ""
 
-#: src/sfm-read.c:829
+#: src/sfm-read.c:832
 #, c-format
 msgid "%s: position %d: Variable label indicator field is not 0 or 1."
 msgstr ""
 
-#: src/sfm-read.c:833
+#: src/sfm-read.c:836
 #, c-format
 msgid ""
 "%s: position %d: Missing value indicator field is not -3, -2, 0, 1, 2, or 3."
 msgstr ""
 
-#: src/sfm-read.c:839
+#: src/sfm-read.c:842
 #, c-format
 msgid "%s: position %d: Variable name begins with invalid character."
 msgstr ""
 
-#: src/sfm-read.c:843
+#: src/sfm-read.c:846
 #, c-format
 msgid "%s: position %d: Variable name begins with lowercase letter %c."
 msgstr ""
 
-#: src/sfm-read.c:847
+#: src/sfm-read.c:850
 #, c-format
 msgid ""
 "%s: position %d: Variable name begins with octothorpe (`#').  Scratch "
 "variables should not appear in system files."
 msgstr ""
 
-#: src/sfm-read.c:862
+#: src/sfm-read.c:865
 #, c-format
 msgid "%s: position %d: Variable name character %d is lowercase letter %c."
 msgstr ""
 
-#: src/sfm-read.c:871
+#: src/sfm-read.c:874
 #, c-format
 msgid ""
 "%s: position %d: character `\\%03o' (%c) is not valid in a variable name."
 msgstr ""
 
-#: src/sfm-read.c:878
+#: src/sfm-read.c:881
 #, c-format
 msgid "%s: Invalid variable name `%s' within system file."
 msgstr ""
 
-#: src/sfm-read.c:885
+#: src/sfm-read.c:888
 #, c-format
 msgid "%s: Duplicate variable name `%s' within system file."
 msgstr ""
 
-#: src/sfm-read.c:908
+#: src/sfm-read.c:911
 #, c-format
 msgid "%s: Variable %s indicates variable label of invalid length %d."
 msgstr ""
 
-#: src/sfm-read.c:928
+#: src/sfm-read.c:931
 #, c-format
 msgid "%s: Long string variable %s may not have missing values."
 msgstr ""
 
-#: src/sfm-read.c:953
+#: src/sfm-read.c:956
 #, c-format
 msgid ""
 "%s: String variable %s may not have missing values specified as a range."
 msgstr ""
 
-#: src/sfm-read.c:995
+#: src/sfm-read.c:998
 #, c-format
 msgid "%s: Long string continuation records omitted at end of dictionary."
 msgstr ""
 
-#: src/sfm-read.c:1000
+#: src/sfm-read.c:1003
 #, c-format
 msgid ""
 "%s: System file header indicates %d variable positions but %d were read from "
 "file."
 msgstr ""
 
-#: src/sfm-read.c:1025
+#: src/sfm-read.c:1028
 #, c-format
 msgid "%s: %s variable %s has %s format specifier %s."
 msgstr ""
 
-#: src/sfm-read.c:1078
+#: src/sfm-read.c:1081
 #, c-format
 msgid "%s: Invalid number of labels: %d.  Ignoring labels."
 msgstr ""
 
-#: src/sfm-read.c:1120
+#: src/sfm-read.c:1123
 #, c-format
 msgid ""
 "%s: Variable index record (type 4) does not immediately follow value label "
 "record (type 3) as it should."
 msgstr ""
 
-#: src/sfm-read.c:1131
+#: src/sfm-read.c:1134
 #, c-format
 msgid ""
 "%s: Number of variables associated with a value label (%d) is not between 1 "
 "and the number of variables (%d)."
 msgstr ""
 
-#: src/sfm-read.c:1147
+#: src/sfm-read.c:1150
 #, c-format
 msgid ""
 "%s: Variable index associated with value label (%d) is not between 1 and the "
 "number of values (%d)."
 msgstr ""
 
-#: src/sfm-read.c:1154
+#: src/sfm-read.c:1157
 #, c-format
 msgid ""
 "%s: Variable index associated with value label (%d) refers to a continuation "
 "of a string variable, not to an actual variable."
 msgstr ""
 
-#: src/sfm-read.c:1159
+#: src/sfm-read.c:1162
 #, c-format
 msgid "%s: Value labels are not allowed on long string variables (%s)."
 msgstr ""
 
-#: src/sfm-read.c:1170
+#: src/sfm-read.c:1173
 #, c-format
 msgid ""
 "%s: Variables associated with value label are not all of identical type.  "
 "Variable %s has %s type, but variable %s has %s type."
 msgstr ""
 
-#: src/sfm-read.c:1211
+#: src/sfm-read.c:1214
 #, c-format
 msgid "%s: File contains duplicate label for value %g for variable %s."
 msgstr ""
 
-#: src/sfm-read.c:1215
+#: src/sfm-read.c:1218
 #, c-format
 msgid "%s: File contains duplicate label for value `%.*s' for variable %s."
 msgstr ""
 
-#: src/sfm-read.c:1257 src/sfm-read.c:1534
+#: src/sfm-read.c:1260 src/sfm-read.c:1537
 #, c-format
 msgid "%s: Reading system file: %s."
 msgstr ""
 
-#: src/sfm-read.c:1260 src/sfm-read.c:1375 src/sfm-read.c:1417
+#: src/sfm-read.c:1263 src/sfm-read.c:1378 src/sfm-read.c:1420
 #, c-format
 msgid "%s: Unexpected end of file."
 msgstr ""
 
-#: src/sfm-read.c:1275
+#: src/sfm-read.c:1278
 #, c-format
 msgid "%s: Seeking system file: %s."
 msgstr ""
 
-#: src/sfm-read.c:1290
+#: src/sfm-read.c:1293
 #, c-format
 msgid "%s: System file contains multiple type 6 (document) records."
 msgstr ""
 
-#: src/sfm-read.c:1296
+#: src/sfm-read.c:1299
 #, c-format
 msgid "%s: Number of document lines (%ld) must be greater than 0."
 msgstr ""
 
-#: src/sfm-read.c:1328
+#: src/sfm-read.c:1331
 #, c-format
 msgid "%s: Error reading file: %s."
 msgstr ""
 
-#: src/sfm-read.c:1365
+#: src/sfm-read.c:1368
 #, c-format
 msgid "%s: Compressed data is corrupted.  Data ends in partial case."
 msgstr ""
 
-#: src/sfm-read.c:1537
+#: src/sfm-read.c:1540
 #, c-format
 msgid "%s: Partial record at end of system file."
 msgstr ""
 
-#: src/sfm-write.c:154
+#: src/sfm-write.c:157
 #, c-format
 msgid "Error opening \"%s\" for writing as a system file: %s."
 msgstr ""
 
-#: src/sfm-write.c:739
+#: src/sfm-write.c:742
 #, c-format
 msgid "%s: Writing system file: %s."
 msgstr ""
 
-#: src/sort.c:82
+#: src/sort-prs.c:94
+msgid "`A' or `D' expected inside parentheses."
+msgstr ""
+
+#: src/sort-prs.c:99
+msgid "`)' expected."
+msgstr ""
+
+#: src/sort.c:85
 msgid "Buffer limit must be at least 2."
 msgstr ""
 
-#: src/sort.c:458
+#: src/sort.c:461
 #, c-format
 msgid ""
 "Out of memory.  Could not allocate room for minimum of %d cases of %d bytes "
 "each.  (PSPP workspace is currently restricted to a maximum of %d KB.)"
 msgstr ""
 
-#: src/sysfile-info.c:96
+#: src/sysfile-info.c:99
 msgid "File:"
 msgstr ""
 
-#: src/sysfile-info.c:98
+#: src/sysfile-info.c:101
 msgid "Label:"
 msgstr ""
 
-#: src/sysfile-info.c:102
+#: src/sysfile-info.c:105
 msgid "No label."
 msgstr ""
 
-#: src/sysfile-info.c:105
+#: src/sysfile-info.c:108
 msgid "Created:"
 msgstr ""
 
-#: src/sysfile-info.c:108
+#: src/sysfile-info.c:111
 msgid "Endian:"
 msgstr ""
 
-#: src/sysfile-info.c:109
+#: src/sysfile-info.c:112
 msgid "Big."
 msgstr ""
 
-#: src/sysfile-info.c:109
+#: src/sysfile-info.c:112
 msgid "Little."
 msgstr ""
 
-#: src/sysfile-info.c:110
+#: src/sysfile-info.c:113
 msgid "Variables:"
 msgstr ""
 
-#: src/sysfile-info.c:113
+#: src/sysfile-info.c:116
 msgid "Cases:"
 msgstr ""
 
-#: src/sysfile-info.c:116
+#: src/sysfile-info.c:119
 msgid "Type:"
 msgstr ""
 
-#: src/sysfile-info.c:117
+#: src/sysfile-info.c:120
 msgid "System File."
 msgstr ""
 
-#: src/sysfile-info.c:118
+#: src/sysfile-info.c:121
 msgid "Weight:"
 msgstr ""
 
-#: src/sysfile-info.c:122
+#: src/sysfile-info.c:125
 msgid "Not weighted."
 msgstr ""
 
-#: src/sysfile-info.c:124
+#: src/sysfile-info.c:127
 msgid "Mode:"
 msgstr ""
 
-#: src/sysfile-info.c:126
+#: src/sysfile-info.c:129
 #, c-format
 msgid "Compression %s."
 msgstr ""
 
-#: src/sysfile-info.c:126
+#: src/sysfile-info.c:129
 msgid "on"
 msgstr ""
 
-#: src/sysfile-info.c:126
+#: src/sysfile-info.c:129
 msgid "off"
 msgstr ""
 
-#: src/sysfile-info.c:136 src/sysfile-info.c:374
+#: src/sysfile-info.c:139 src/sysfile-info.c:377
 msgid "Description"
 msgstr ""
 
-#: src/sysfile-info.c:137 src/sysfile-info.c:372
+#: src/sysfile-info.c:140 src/sysfile-info.c:375
 msgid "Position"
 msgstr ""
 
-#: src/sysfile-info.c:195
+#: src/sysfile-info.c:198
 msgid "The active file does not have a file label."
 msgstr ""
 
-#: src/sysfile-info.c:198
+#: src/sysfile-info.c:201
 msgid "File label:"
 msgstr ""
 
-#: src/sysfile-info.c:260
+#: src/sysfile-info.c:263
 msgid "No variables to display."
 msgstr ""
 
-#: src/sysfile-info.c:279
+#: src/sysfile-info.c:282
 msgid "Macros not supported."
 msgstr ""
 
-#: src/sysfile-info.c:289
+#: src/sysfile-info.c:292
 msgid "The active file dictionary does not contain any documents."
 msgstr ""
 
-#: src/sysfile-info.c:298
+#: src/sysfile-info.c:301
 msgid "Documents in the active file:"
 msgstr ""
 
-#: src/sysfile-info.c:376 src/sysfile-info.c:534 src/vfm.c:811
+#: src/sysfile-info.c:379 src/sysfile-info.c:537 src/vfm.c:812
 msgid "Label"
 msgstr ""
 
-#: src/sysfile-info.c:448
+#: src/sysfile-info.c:451
 #, c-format
 msgid "Format: %s"
 msgstr ""
 
-#: src/sysfile-info.c:455
+#: src/sysfile-info.c:458
 #, c-format
 msgid "Print Format: %s"
 msgstr ""
 
-#: src/sysfile-info.c:458
+#: src/sysfile-info.c:461
 #, c-format
 msgid "Write Format: %s"
 msgstr ""
 
-#: src/sysfile-info.c:466
+#: src/sysfile-info.c:469
 msgid "Missing Values: "
 msgstr ""
 
-#: src/sysfile-info.c:533 src/vfm.c:810 src/crosstabs.q:1099
-#: src/crosstabs.q:1126 src/crosstabs.q:1146 src/crosstabs.q:1168
-#: src/examine.q:1130 src/frequencies.q:1138 src/frequencies.q:1259
-msgid "Value"
-msgstr ""
-
-#: src/sysfile-info.c:590
+#: src/sysfile-info.c:593
 msgid "No vectors defined."
 msgstr ""
 
-#: src/sysfile-info.c:605
+#: src/sysfile-info.c:608
 msgid "Vector"
 msgstr ""
 
-#: src/tab.c:254
+#: src/t-test.q:269
+msgid "TESTVAL, GROUPS and PAIRS subcommands are mutually exclusive."
+msgstr ""
+
+#: src/t-test.q:287
+msgid "VARIABLES subcommand is not appropriate with PAIRS"
+msgstr ""
+
+#: src/t-test.q:325
+msgid "One or more VARIABLES must be specified."
+msgstr ""
+
+#: src/t-test.q:376
+#, c-format
+msgid "Long string variable %s is not valid here."
+msgstr ""
+
+#: src/t-test.q:396 src/t-test.q:411
+msgid ""
+"When applying GROUPS to a string variable, two values must be specified."
+msgstr ""
+
+#: src/t-test.q:483
+#, c-format
+msgid ""
+"PAIRED was specified but the number of variables preceding WITH (%d) did not "
+"match the number following (%d)."
+msgstr ""
+
+#: src/t-test.q:500
+msgid "At least two variables must be specified on PAIRS."
+msgstr ""
+
+#: src/t-test.q:677
+msgid "One-Sample Statistics"
+msgstr ""
+
+#: src/t-test.q:682 src/t-test.q:705 src/t-test.q:829
+msgid "SE. Mean"
+msgstr ""
+
+#: src/t-test.q:699
+msgid "Group Statistics"
+msgstr ""
+
+#: src/t-test.q:823
+msgid "Paired Sample Statistics"
+msgstr ""
+
+#: src/t-test.q:845 src/t-test.q:1189 src/t-test.q:1379
+#, c-format
+msgid "Pair %d"
+msgstr ""
+
+#: src/t-test.q:962
+msgid "Independent Samples Test"
+msgstr ""
+
+#: src/t-test.q:970
+msgid "Levene's Test for Equality of Variances"
+msgstr ""
+
+#: src/t-test.q:972
+msgid "t-test for Equality of Means"
+msgstr ""
+
+#: src/t-test.q:975 src/t-test.q:1364
+msgid "Sig."
+msgstr ""
+
+#: src/t-test.q:979 src/t-test.q:1263
+msgid "Mean Difference"
+msgstr ""
+
+#: src/t-test.q:980
+msgid "Std. Error Difference"
+msgstr ""
+
+#: src/t-test.q:985 src/t-test.q:1160 src/t-test.q:1255
+#, c-format
+msgid "%g%% Confidence Interval of the Difference"
+msgstr ""
+
+#: src/t-test.q:1040
+msgid "Equal variances assumed"
+msgstr ""
+
+#: src/t-test.q:1092
+msgid "Equal variances not assumed"
+msgstr ""
+
+#: src/t-test.q:1150
+msgid "Paired Samples Test"
+msgstr ""
+
+#: src/t-test.q:1153
+msgid "Paired Differences"
+msgstr ""
+
+#: src/t-test.q:1165
+msgid "Std. Error Mean"
+msgstr ""
+
+#: src/t-test.q:1244
+msgid "One-Sample Test"
+msgstr ""
+
+#: src/t-test.q:1249
+#, c-format
+msgid "Test Value = %f"
+msgstr ""
+
+#: src/t-test.q:1359
+msgid "Paired Samples Correlations"
+msgstr ""
+
+#: src/t-test.q:1363
+msgid "Correlation"
+msgstr ""
+
+#: src/t-test.q:1382
+#, c-format
+msgid "%s & %s"
+msgstr ""
+
+#: src/tab.c:257
 #, c-format
 msgid "bad vline: x=%d+%d=%d y=(%d+%d=%d,%d+%d=%d) in table size (%d,%d)\n"
 msgstr ""
 
-#: src/tab.c:329
+#: src/tab.c:332
 #, c-format
 msgid ""
 "bad box: (%d+%d=%d,%d+%d=%d)-(%d+%d=%d,%d+%d=%d) in table size (%d,%d)\n"
 msgstr ""
 
-#: src/temporary.c:46
+#: src/temporary.c:49
 msgid "This command is not valid inside DO IF or LOOP."
 msgstr ""
 
-#: src/temporary.c:53
+#: src/temporary.c:56
 msgid ""
 "This command may only appear once between procedures and procedure-like "
 "commands."
 msgstr ""
 
-#: src/title.c:56
+#: src/title.c:59
 #, c-format
 msgid "%s before: %s\n"
 msgstr ""
 
-#: src/title.c:56
+#: src/title.c:59
 msgid "<none>"
 msgstr ""
 
-#: src/title.c:68
+#: src/title.c:71
 #, c-format
 msgid "%s: `.' expected after string."
 msgstr ""
 
-#: src/title.c:84
+#: src/title.c:87
 #, c-format
 msgid "%s after: %s\n"
 msgstr ""
 
-#: src/title.c:140
+#: src/title.c:143
 #, c-format
 msgid "Document entered %s %02d:%02d:%02d by %s (%s):"
 msgstr ""
 
-#: src/val-labs.c:118
+#: src/val-labs.c:121
 #, c-format
 msgid ""
 "It is not possible to assign value labels to long string variables such as %"
 "s."
 msgstr ""
 
-#: src/val-labs.c:167
+#: src/val-labs.c:170
 #, c-format
 msgid "Value label `%g' is not integer."
 msgstr ""
 
-#: src/val-labs.c:177
+#: src/val-labs.c:180
 msgid "Truncating value label to 60 characters."
 msgstr ""
 
-#: src/var-labs.c:47
+#: src/var-labs.c:50
 msgid "String expected for variable label."
 msgstr ""
 
-#: src/var-labs.c:53
+#: src/var-labs.c:56
 msgid "Truncating variable label to 255 characters."
 msgstr ""
 
-#: src/vars-atr.c:259
+#: src/vars-atr.c:262
 msgid "Variable name cannot be empty string."
 msgstr ""
 
-#: src/vars-atr.c:265
+#: src/vars-atr.c:268
 #, c-format
 msgid "Variable name %s exceeds %d-character limit."
 msgstr ""
 
-#: src/vars-atr.c:274
+#: src/vars-atr.c:277
 #, c-format
 msgid "Character `%c' (in %s) may not appear in a variable name."
 msgstr ""
 
-#: src/vars-atr.c:283
+#: src/vars-atr.c:286
 #, c-format
 msgid ""
 "Character `%c' (in %s), may not appear as the first character in a variable "
 "name."
 msgstr ""
 
-#: src/vars-atr.c:291
+#: src/vars-atr.c:295
 #, c-format
 msgid "%s may not be used as a variable name because it is a reserved word."
 msgstr ""
 
-#: src/vars-atr.c:386
+#: src/vars-atr.c:390
 msgid "Variable suffix too large."
 msgstr ""
 
-#: src/vars-prs.c:43
+#: src/vars-prs.c:46
 msgid "expecting variable name"
 msgstr ""
 
-#: src/vars-prs.c:49
+#: src/vars-prs.c:52
 #, c-format
 msgid "%s is not a variable name."
 msgstr ""
 
-#: src/vars-prs.c:111
+#: src/vars-prs.c:114
 msgid "ordinary"
 msgstr ""
 
-#: src/vars-prs.c:113
+#: src/vars-prs.c:116
 msgid "system"
 msgstr ""
 
-#: src/vars-prs.c:115
+#: src/vars-prs.c:118
 msgid "scratch"
 msgstr ""
 
-#: src/vars-prs.c:174
+#: src/vars-prs.c:177
 #, c-format
 msgid ""
 "%s is not a numeric variable.  It will not be included in the variable list."
 msgstr ""
 
-#: src/vars-prs.c:177
+#: src/vars-prs.c:180
 #, c-format
 msgid ""
 "%s is not a string variable.  It will not be included in the variable list."
 msgstr ""
 
-#: src/vars-prs.c:181
+#: src/vars-prs.c:184
 #, c-format
 msgid "Scratch variables (such as %s) are not allowed here."
 msgstr ""
 
-#: src/vars-prs.c:184
+#: src/vars-prs.c:187
 #, c-format
 msgid ""
 "%s and %s are not the same type.  All variables in this variable list must "
 "be of the same type.  %s will be omitted from list."
 msgstr ""
 
-#: src/vars-prs.c:189
+#: src/vars-prs.c:192
 #, c-format
 msgid "Variable %s appears twice in variable list."
 msgstr ""
 
-#: src/vars-prs.c:299
+#: src/vars-prs.c:302
 #, c-format
 msgid "%s TO %s is not valid syntax since %s precedes %s in the dictionary."
 msgstr ""
 
-#: src/vars-prs.c:308
+#: src/vars-prs.c:311
 #, c-format
 msgid ""
 "When using the TO keyword to specify several variables, both variables must "
@@ -3699,960 +4772,61 @@ msgid ""
 "system variables.  %s is a %s variable, whereas %s is %s."
 msgstr ""
 
-#: src/vars-prs.c:379
+#: src/vars-prs.c:382
 msgid "incorrect use of TO convention"
 msgstr ""
 
-#: src/vars-prs.c:422
+#: src/vars-prs.c:425
 msgid "Scratch variables not allowed here."
 msgstr ""
 
-#: src/vars-prs.c:444
+#: src/vars-prs.c:447
 msgid "Prefixes don't match in use of TO convention."
 msgstr ""
 
-#: src/vars-prs.c:449
+#: src/vars-prs.c:452
 msgid "Bad bounds in use of TO convention."
 msgstr ""
 
-#: src/vector.c:67
+#: src/vector.c:70
 #, c-format
 msgid "Vector name %s is given twice."
 msgstr ""
 
-#: src/vector.c:73
+#: src/vector.c:76
 #, c-format
 msgid "There is already a vector with name %s."
 msgstr ""
 
-#: src/vector.c:94
+#: src/vector.c:97
 msgid ""
 "A slash must be used to separate each vector specification when using the "
 "long form.  Commands such as VECTOR A,B=Q1 TO Q20 are not supported."
 msgstr ""
 
-#: src/vector.c:128
+#: src/vector.c:131
 msgid "Vectors must have at least one element."
 msgstr ""
 
-#: src/vector.c:142
+#: src/vector.c:145
 #, c-format
 msgid "%s%d is too long for a variable name."
 msgstr ""
 
-#: src/vector.c:181
+#: src/vector.c:184
 msgid ""
 "The syntax for this command does not match the expected syntax for either "
 "the long form or the short form of VECTOR."
 msgstr ""
 
-#: src/weight.c:53
+#: src/weight.c:56
 msgid "The weighting variable must be numeric."
 msgstr ""
 
-#: src/weight.c:58
+#: src/weight.c:61
 msgid "The weighting variable may not be scratch."
 msgstr ""
 
-#: src/crosstabs.q:261
-msgid ""
-"Missing mode REPORT not allowed in general mode.  Assuming MISSING=TABLE."
-msgstr ""
-
-#: src/crosstabs.q:271
-msgid "Write mode ALL not allowed in general mode.  Assuming WRITE=CELLS."
-msgstr ""
-
-#: src/crosstabs.q:332
-msgid "expecting BY"
-msgstr ""
-
-#: src/crosstabs.q:399
-msgid "VARIABLES must be specified before TABLES."
-msgstr ""
-
-#: src/crosstabs.q:436
-#, c-format
-msgid "Maximum value (%ld) less than minimum value (%ld)."
-msgstr ""
-
-#: src/crosstabs.q:800
-msgid "Summary."
-msgstr ""
-
-#: src/crosstabs.q:802 src/examine.q:915
-msgid "Cases"
-msgstr ""
-
-#: src/crosstabs.q:803 src/examine.q:849 src/frequencies.q:1136
-#: src/frequencies.q:1509
-msgid "Valid"
-msgstr ""
-
-#: src/crosstabs.q:804 src/examine.q:850 src/frequencies.q:1204
-#: src/frequencies.q:1510
-msgid "Missing"
-msgstr ""
-
-#: src/crosstabs.q:805 src/crosstabs.q:1008 src/crosstabs.q:1722
-#: src/examine.q:851 src/frequencies.q:1213 src/oneway.q:307 src/oneway.q:470
-msgid "Total"
-msgstr ""
-
-#: src/crosstabs.q:815 src/examine.q:927 src/frequencies.q:1508
-#: src/oneway.q:393 src/t-test.q:675 src/t-test.q:698 src/t-test.q:823
-#: src/t-test.q:1358
-msgid "N"
-msgstr ""
-
-#: src/crosstabs.q:816 src/examine.q:930 src/frequencies.q:1140
-#: src/frequencies.q:1141 src/frequencies.q:1142
-msgid "Percent"
-msgstr ""
-
-#: src/crosstabs.q:1058
-msgid "count"
-msgstr ""
-
-#: src/crosstabs.q:1059
-msgid "row %"
-msgstr ""
-
-#: src/crosstabs.q:1060
-msgid "column %"
-msgstr ""
-
-#: src/crosstabs.q:1061
-msgid "total %"
-msgstr ""
-
-#: src/crosstabs.q:1062
-msgid "expected"
-msgstr ""
-
-#: src/crosstabs.q:1063
-msgid "residual"
-msgstr ""
-
-#: src/crosstabs.q:1064
-msgid "std. resid."
-msgstr ""
-
-#: src/crosstabs.q:1065
-msgid "adj. resid."
-msgstr ""
-
-#: src/crosstabs.q:1098 src/crosstabs.q:1125 src/crosstabs.q:1145
-#: src/crosstabs.q:1166 src/examine.q:1361
-msgid "Statistic"
-msgstr ""
-
-#: src/crosstabs.q:1100 src/oneway.q:280 src/oneway.q:682 src/t-test.q:973
-#: src/t-test.q:1165 src/t-test.q:1257
-msgid "df"
-msgstr ""
-
-#: src/crosstabs.q:1102
-msgid "Asymp. Sig. (2-sided)"
-msgstr ""
-
-#: src/crosstabs.q:1104
-msgid "Exact. Sig. (2-sided)"
-msgstr ""
-
-#: src/crosstabs.q:1106
-msgid "Exact. Sig. (1-sided)"
-msgstr ""
-
-#: src/crosstabs.q:1124 src/crosstabs.q:1165
-msgid "Category"
-msgstr ""
-
-#: src/crosstabs.q:1127 src/crosstabs.q:1169
-msgid "Asymp. Std. Error"
-msgstr ""
-
-#: src/crosstabs.q:1128 src/crosstabs.q:1170
-msgid "Approx. T"
-msgstr ""
-
-#: src/crosstabs.q:1129 src/crosstabs.q:1171
-msgid "Approx. Sig."
-msgstr ""
-
-#: src/crosstabs.q:1144
-#, c-format
-msgid " 95%% Confidence Interval"
-msgstr ""
-
-#: src/crosstabs.q:1147 src/t-test.q:977 src/t-test.q:1162 src/t-test.q:1260
-msgid "Lower"
-msgstr ""
-
-#: src/crosstabs.q:1148 src/t-test.q:978 src/t-test.q:1163 src/t-test.q:1261
-msgid "Upper"
-msgstr ""
-
-#: src/crosstabs.q:1167
-msgid "Type"
-msgstr ""
-
-#: src/crosstabs.q:1916
-msgid "Pearson Chi-Square"
-msgstr ""
-
-#: src/crosstabs.q:1917
-msgid "Likelihood Ratio"
-msgstr ""
-
-#: src/crosstabs.q:1918
-msgid "Fisher's Exact Test"
-msgstr ""
-
-#: src/crosstabs.q:1919
-msgid "Continuity Correction"
-msgstr ""
-
-#: src/crosstabs.q:1920
-msgid "Linear-by-Linear Association"
-msgstr ""
-
-#: src/crosstabs.q:1957 src/crosstabs.q:2027 src/crosstabs.q:2086
-msgid "N of Valid Cases"
-msgstr ""
-
-#: src/crosstabs.q:1973 src/crosstabs.q:2102
-msgid "Nominal by Nominal"
-msgstr ""
-
-#: src/crosstabs.q:1974 src/crosstabs.q:2103
-msgid "Ordinal by Ordinal"
-msgstr ""
-
-#: src/crosstabs.q:1975
-msgid "Interval by Interval"
-msgstr ""
-
-#: src/crosstabs.q:1976
-msgid "Measure of Agreement"
-msgstr ""
-
-#: src/crosstabs.q:1981
-msgid "Phi"
-msgstr ""
-
-#: src/crosstabs.q:1982
-msgid "Cramer's V"
-msgstr ""
-
-#: src/crosstabs.q:1983
-msgid "Contingency Coefficient"
-msgstr ""
-
-#: src/crosstabs.q:1984
-msgid "Kendall's tau-b"
-msgstr ""
-
-#: src/crosstabs.q:1985
-msgid "Kendall's tau-c"
-msgstr ""
-
-#: src/crosstabs.q:1986
-msgid "Gamma"
-msgstr ""
-
-#: src/crosstabs.q:1987
-msgid "Spearman Correlation"
-msgstr ""
-
-#: src/crosstabs.q:1988
-msgid "Pearson's R"
-msgstr ""
-
-#: src/crosstabs.q:1989
-msgid "Kappa"
-msgstr ""
-
-#: src/crosstabs.q:2059
-#, c-format
-msgid "Odds Ratio for %s (%g / %g)"
-msgstr ""
-
-#: src/crosstabs.q:2062
-#, c-format
-msgid "Odds Ratio for %s (%.*s / %.*s)"
-msgstr ""
-
-#: src/crosstabs.q:2070
-#, c-format
-msgid "For cohort %s = %g"
-msgstr ""
-
-#: src/crosstabs.q:2073
-#, c-format
-msgid "For cohort %s = %.*s"
-msgstr ""
-
-#: src/crosstabs.q:2104
-msgid "Nominal by Interval"
-msgstr ""
-
-#: src/crosstabs.q:2109
-msgid "Lambda"
-msgstr ""
-
-#: src/crosstabs.q:2110
-msgid "Goodman and Kruskal tau"
-msgstr ""
-
-#: src/crosstabs.q:2111
-msgid "Uncertainty Coefficient"
-msgstr ""
-
-#: src/crosstabs.q:2112
-msgid "Somers' d"
-msgstr ""
-
-#: src/crosstabs.q:2113
-msgid "Eta"
-msgstr ""
-
-#: src/crosstabs.q:2118
-msgid "Symmetric"
-msgstr ""
-
-#: src/crosstabs.q:2119 src/crosstabs.q:2120
-#, c-format
-msgid "%s Dependent"
-msgstr ""
-
-#: src/examine.q:467 src/examine.q:479
-#, c-format
-msgid "%s and %s are mutually exclusive"
-msgstr ""
-
-#: src/examine.q:909
-msgid "Case Processing Summary"
-msgstr ""
-
-#: src/examine.q:1115
-msgid "Extreme Values"
-msgstr ""
-
-#: src/examine.q:1131
-msgid "Case Number"
-msgstr ""
-
-#: src/examine.q:1216
-msgid "Highest"
-msgstr ""
-
-#: src/examine.q:1221
-msgid "Lowest"
-msgstr ""
-
-#: src/examine.q:1362 src/oneway.q:396 src/oneway.q:680
-msgid "Std. Error"
-msgstr ""
-
-#: src/examine.q:1364 src/oneway.q:410
-msgid "Descriptives"
-msgstr ""
-
-#: src/examine.q:1484 src/oneway.q:401
-#, c-format
-msgid "%g%% Confidence Interval for Mean"
-msgstr ""
-
-#: src/examine.q:1490 src/oneway.q:403
-msgid "Lower Bound"
-msgstr ""
-
-#: src/examine.q:1501 src/oneway.q:404
-msgid "Upper Bound"
-msgstr ""
-
-#: src/examine.q:1513
-#, c-format
-msgid "5%% Trimmed Mean"
-msgstr ""
-
-#: src/examine.q:1524 src/frequencies.q:114
-msgid "Median"
-msgstr ""
-
-#: src/examine.q:1558 src/oneway.q:395 src/t-test.q:677 src/t-test.q:700
-#: src/t-test.q:824 src/t-test.q:1160
-msgid "Std. Deviation"
-msgstr ""
-
-#: src/examine.q:1606
-msgid "Interquartile Range"
-msgstr ""
-
-#: src/examine.q:1758
-#, c-format
-msgid "Boxplot of %s vs. %s"
-msgstr ""
-
-#: src/examine.q:1783
-msgid "Boxplot"
-msgstr ""
-
-#: src/examine.q:1825
-#, c-format
-msgid "Normal Q-Q Plot of %s"
-msgstr ""
-
-#: src/examine.q:1826 src/examine.q:1832
-msgid "Observed Value"
-msgstr ""
-
-#: src/examine.q:1827
-msgid "Expected Normal"
-msgstr ""
-
-#: src/examine.q:1830
-#, c-format
-msgid "Detrended Normal Q-Q Plot of %s"
-msgstr ""
-
-#: src/examine.q:1833
-msgid "Dev from Normal"
-msgstr ""
-
-#: src/examine.q:1952 src/examine.q:1974 src/frequencies.q:1520
-msgid "Percentiles"
-msgstr ""
-
-#: src/examine.q:2099
-msgid "Tukey's Hinges"
-msgstr ""
-
-#: src/file-handle.q:124
-#, c-format
-msgid ""
-"File handle %s already refers to file %s.  File handles cannot be redefined "
-"within a session."
-msgstr ""
-
-#: src/file-handle.q:145
-msgid "The FILE HANDLE required subcommand NAME is not present."
-msgstr ""
-
-#: src/file-handle.q:164
-msgid ""
-"Fixed-length records were specified on /RECFORM, but record length was not "
-"specified on /LRECL.  Assuming 1024-character records."
-msgstr ""
-
-#: src/file-handle.q:171
-#, c-format
-msgid ""
-"Record length (%ld) must be at least one byte.  1-character records will be "
-"assumed."
-msgstr ""
-
-#: src/file-handle.q:271
-#, c-format
-msgid "Can't open %s as a %s because it is already open as a %s"
-msgstr ""
-
-#: src/file-handle.q:278
-#, c-format
-msgid "Can't open %s as a %s for %s because it is already open for %s"
-msgstr ""
-
-#: src/file-handle.q:286
-#, c-format
-msgid "Can't re-open %s as a %s for %s"
-msgstr ""
-
-#: src/file-handle.q:339
-msgid "expecting a file name or handle name"
-msgstr ""
-
-#: src/frequencies.q:113
-msgid "S.E. Mean"
-msgstr ""
-
-#: src/frequencies.q:115
-msgid "Mode"
-msgstr ""
-
-#: src/frequencies.q:119
-msgid "S.E. Kurt"
-msgstr ""
-
-#: src/frequencies.q:121
-msgid "S.E. Skew"
-msgstr ""
-
-#: src/frequencies.q:396
-msgid ""
-"At most one of BARCHART, HISTOGRAM, or HBAR should be given.  HBAR will be "
-"assumed.  Argument values will be given precedence increasing along the "
-"order given."
-msgstr ""
-
-#: src/frequencies.q:479
-#, c-format
-msgid ""
-"MAX must be greater than or equal to MIN, if both are specified.  However, "
-"MIN was specified as %g and MAX as %g.  MIN and MAX will be ignored."
-msgstr ""
-
-#: src/frequencies.q:802
-msgid ""
-"Upper limit of integer mode value range must be greater than lower limit."
-msgstr ""
-
-#: src/frequencies.q:815
-#, c-format
-msgid "Variable %s specified multiple times on VARIABLES subcommand."
-msgstr ""
-
-#: src/frequencies.q:821
-#, c-format
-msgid "Integer mode specified, but %s is not a numeric variable."
-msgstr ""
-
-#: src/frequencies.q:887
-msgid "`)' expected after GROUPED interval list."
-msgstr ""
-
-#: src/frequencies.q:899
-#, c-format
-msgid "Variables %s specified on GROUPED but not on VARIABLES."
-msgstr ""
-
-#: src/frequencies.q:906
-#, c-format
-msgid "Variables %s specified multiple times on GROUPED subcommand."
-msgstr ""
-
-#: src/frequencies.q:1137 src/frequencies.q:1229 src/frequencies.q:1230
-#: src/frequencies.q:1262
-msgid "Cum"
-msgstr ""
-
-#: src/frequencies.q:1159
-msgid "Value Label"
-msgstr ""
-
-#: src/frequencies.q:1260
-msgid "Freq"
-msgstr ""
-
-#: src/frequencies.q:1261 src/frequencies.q:1263
-msgid "Pct"
-msgstr ""
-
-#: src/frequencies.q:1482
-#, c-format
-msgid "No valid data for variable %s; statistics not displayed."
-msgstr ""
-
-#: src/list.q:150
-#, c-format
-msgid ""
-"The first case (%ld) specified precedes the last case (%ld) specified.  The "
-"values will be swapped."
-msgstr ""
-
-#: src/list.q:158
-#, c-format
-msgid ""
-"The first case (%ld) to list is less than 1.  The value is being reset to 1."
-msgstr ""
-
-#: src/list.q:164
-#, c-format
-msgid ""
-"The last case (%ld) to list is less than 1.  The value is being reset to 1."
-msgstr ""
-
-#: src/list.q:170
-#, c-format
-msgid "The step value %ld is less than 1.  The value is being reset to 1."
-msgstr ""
-
-#: src/list.q:197
-msgid "`/FORMAT WEIGHT' specified, but weighting is not on."
-msgstr ""
-
-#: src/list.q:438
-msgid "Line"
-msgstr ""
-
-#: src/means.q:100
-msgid "Missing required subcommand TABLES."
-msgstr ""
-
-#: src/means.q:134
-msgid "TABLES subcommand may not appear more than once."
-msgstr ""
-
-#: src/oneway.q:170
-msgid "Number of contrast coefficients must equal the number of groups"
-msgstr ""
-
-#: src/oneway.q:179
-#, c-format
-msgid "Coefficients for contrast %d do not total zero"
-msgstr ""
-
-#: src/oneway.q:244
-#, c-format
-msgid "`%s' is not a variable name"
-msgstr ""
-
-#: src/oneway.q:279
-msgid "Sum of Squares"
-msgstr ""
-
-#: src/oneway.q:281
-msgid "Mean Square"
-msgstr ""
-
-#: src/oneway.q:282 src/t-test.q:970
-msgid "F"
-msgstr ""
-
-#: src/oneway.q:283 src/oneway.q:536
-msgid "Significance"
-msgstr ""
-
-#: src/oneway.q:305
-msgid "Between Groups"
-msgstr ""
-
-#: src/oneway.q:306
-msgid "Within Groups"
-msgstr ""
-
-#: src/oneway.q:353
-msgid "ANOVA"
-msgstr ""
-
-#: src/oneway.q:533
-msgid "Levene Statistic"
-msgstr ""
-
-#: src/oneway.q:534
-msgid "df1"
-msgstr ""
-
-#: src/oneway.q:535
-msgid "df2"
-msgstr ""
-
-#: src/oneway.q:539
-msgid "Test of Homogeneity of Variances"
-msgstr ""
-
-#: src/oneway.q:609
-msgid "Contrast Coefficients"
-msgstr ""
-
-#: src/oneway.q:611 src/oneway.q:678
-msgid "Contrast"
-msgstr ""
-
-#: src/oneway.q:676
-msgid "Contrast Tests"
-msgstr ""
-
-#: src/oneway.q:679
-msgid "Value of Contrast"
-msgstr ""
-
-#: src/oneway.q:681 src/t-test.q:972 src/t-test.q:1164 src/t-test.q:1256
-msgid "t"
-msgstr ""
-
-#: src/oneway.q:683 src/t-test.q:974 src/t-test.q:1166 src/t-test.q:1258
-msgid "Sig. (2-tailed)"
-msgstr ""
-
-#: src/oneway.q:727
-msgid "Assume equal variances"
-msgstr ""
-
-#: src/oneway.q:731
-msgid "Does not assume equal"
-msgstr ""
-
-#: src/set.q:221 src/set.q:300 src/set.q:343 src/set.q:398 src/set.q:400
-#: src/set.q:402 src/set.q:404 src/set.q:406 src/set.q:408 src/set.q:410
-#: src/set.q:412 src/set.q:414 src/set.q:416 src/set.q:418 src/set.q:420
-#: src/set.q:422 src/set.q:828 src/set.q:909 src/set.q:1004
-#, c-format
-msgid "%s is obsolete."
-msgstr ""
-
-#: src/set.q:229
-msgid "LISTING is ON"
-msgstr ""
-
-#: src/set.q:231
-msgid "LISTING is OFF"
-msgstr ""
-
-#: src/set.q:245
-#, c-format
-msgid "EPOCH is %d"
-msgstr ""
-
-#: src/set.q:264
-msgid "Journalling is off"
-msgstr ""
-
-#: src/set.q:431
-msgid ""
-"CASE is not implemented and probably won't be.  If you care, complain about "
-"it."
-msgstr ""
-
-#: src/set.q:436
-msgid "Active file compression is not yet implemented (and probably won't be)."
-msgstr ""
-
-#: src/set.q:450
-#, c-format
-msgid ""
-"CC%c: Length of custom currency string `%s' (%d) exceeds maximum length of "
-"16."
-msgstr ""
-
-#: src/set.q:472
-#, c-format
-msgid ""
-"CC%c: Custom currency string `%s' does not contain exactly three periods or "
-"commas (not both)."
-msgstr ""
-
-#: src/set.q:525
-msgid "None"
-msgstr ""
-
-#: src/set.q:531
-msgid "Disabled"
-msgstr ""
-
-#: src/set.q:536
-msgid "Screen"
-msgstr ""
-
-#: src/set.q:543
-msgid "Listing"
-msgstr ""
-
-#: src/set.q:550
-msgid "Other"
-msgstr ""
-
-#: src/set.q:659
-msgid "EPOCH must be 1500 or later."
-msgstr ""
-
-#: src/set.q:666
-msgid "expecting AUTOMATIC or year"
-msgstr ""
-
-#: src/set.q:687
-msgid "LENGTH must be at least 1."
-msgstr ""
-
-#: src/set.q:726
-msgid "Missing identifier in RESULTS subcommand."
-msgstr ""
-
-#: src/set.q:737
-msgid "Unrecognized identifier in RESULTS subcommand."
-msgstr ""
-
-#: src/set.q:774
-msgid "WIDTH must be at least 1."
-msgstr ""
-
-#: src/set.q:797
-#, c-format
-msgid ""
-"FORMAT requires numeric output format as an argument.  Specified format %s "
-"is of type string."
-msgstr ""
-
-#: src/set.q:841
-msgid "Text color must be in range 0-15."
-msgstr "Text colour must be in range 0-15."
-
-#: src/set.q:854
-msgid "Background color must be in range 0-7."
-msgstr "Background colour must be in range 0-7."
-
-#: src/set.q:865
-msgid "Border color must be in range 0-7."
-msgstr "Border colour must be in range 0-7."
-
-#: src/set.q:921
-msgid "Lower window color must be between 0 and 6."
-msgstr "Lower window colour must be between 0 and 6."
-
-#: src/set.q:935
-msgid "Upper window color must be between 0 and 6."
-msgstr "Upper window colour must be between 0 and 6."
-
-#: src/set.q:947
-msgid "Frame color must be between 0 and 6."
-msgstr "Frame colour must be between 0 and 6."
-
-#: src/set.q:1013
-msgid "Drive letter expected in WORKDEV subcommand."
-msgstr ""
-
-#: src/set.q:1045
-msgid "Specify a terminal type with the TERM environment variable."
-msgstr ""
-
-#: src/set.q:1051
-msgid "Could not access the termcap data base."
-msgstr ""
-
-#: src/set.q:1053
-#, c-format
-msgid "Terminal type `%s' is not defined."
-msgstr ""
-
-#: src/set.q:1111
-msgid "data> "
-msgstr ""
-
-#: src/t-test.q:265
-msgid "TESTVAL, GROUPS and PAIRS subcommands are mutually exclusive."
-msgstr ""
-
-#: src/t-test.q:283
-msgid "VARIABLES subcommand is not appropriate with PAIRS"
-msgstr ""
-
-#: src/t-test.q:321
-msgid "One or more VARIABLES must be specified."
-msgstr ""
-
-#: src/t-test.q:372
-#, c-format
-msgid "Long string variable %s is not valid here."
-msgstr ""
-
-#: src/t-test.q:392 src/t-test.q:407
-msgid ""
-"When applying GROUPS to a string variable, two values must be specified."
-msgstr ""
-
-#: src/t-test.q:479
-#, c-format
-msgid ""
-"PAIRED was specified but the number of variables preceding WITH (%d) did not "
-"match the number following (%d)."
-msgstr ""
-
-#: src/t-test.q:496
-msgid "At least two variables must be specified on PAIRS."
-msgstr ""
-
-#: src/t-test.q:673
-msgid "One-Sample Statistics"
-msgstr ""
-
-#: src/t-test.q:678 src/t-test.q:701 src/t-test.q:825
-msgid "SE. Mean"
-msgstr ""
-
-#: src/t-test.q:695
-msgid "Group Statistics"
-msgstr ""
-
-#: src/t-test.q:819
-msgid "Paired Sample Statistics"
-msgstr ""
-
-#: src/t-test.q:841 src/t-test.q:1185 src/t-test.q:1375
-#, c-format
-msgid "Pair %d"
-msgstr ""
-
-#: src/t-test.q:958
-msgid "Independent Samples Test"
-msgstr ""
-
-#: src/t-test.q:966
-msgid "Levene's Test for Equality of Variances"
-msgstr ""
-
-#: src/t-test.q:968
-msgid "t-test for Equality of Means"
-msgstr ""
-
-#: src/t-test.q:971 src/t-test.q:1360
-msgid "Sig."
-msgstr ""
-
-#: src/t-test.q:975 src/t-test.q:1259
-msgid "Mean Difference"
-msgstr ""
-
-#: src/t-test.q:976
-msgid "Std. Error Difference"
-msgstr ""
-
-#: src/t-test.q:981 src/t-test.q:1156 src/t-test.q:1251
-#, c-format
-msgid "%g%% Confidence Interval of the Difference"
-msgstr ""
-
-#: src/t-test.q:1036
-msgid "Equal variances assumed"
-msgstr ""
-
-#: src/t-test.q:1088
-msgid "Equal variances not assumed"
-msgstr ""
-
-#: src/t-test.q:1146
-msgid "Paired Samples Test"
-msgstr ""
-
-#: src/t-test.q:1149
-msgid "Paired Differences"
-msgstr ""
-
-#: src/t-test.q:1161
-msgid "Std. Error Mean"
-msgstr ""
-
-#: src/t-test.q:1240
-msgid "One-Sample Test"
-msgstr ""
-
-#: src/t-test.q:1245
-#, c-format
-msgid "Test Value = %f"
-msgstr ""
-
-#: src/t-test.q:1355
-msgid "Paired Samples Correlations"
-msgstr ""
-
-#: src/t-test.q:1359
-msgid "Correlation"
-msgstr ""
-
-#: src/t-test.q:1378
-#, c-format
-msgid "%s & %s"
-msgstr ""
-
 #, fuzzy
 #~ msgid "Week argument to WKYR must be in range 0 to 53."
 #~ msgstr "Text colour must be in range 0-15."
index db12dad62ffd93594854c18e76da164a6a299f3b..fd7f456e0d9cefaf02271139b6160c8167053ea6 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: pspp-dev@gnu.org\n"
-"POT-Creation-Date: 2005-05-27 12:24+0800\n"
+"POT-Creation-Date: 2005-07-30 23:26-0700\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -17,104 +17,104 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
 
-#: src/aggregate.c:196
+#: src/aggregate.c:199
 msgid "while expecting COLUMNWISE"
 msgstr ""
 
-#: src/aggregate.c:225
+#: src/aggregate.c:228
 msgid "expecting BREAK"
 msgstr ""
 
-#: src/aggregate.c:230
+#: src/aggregate.c:233
 msgid ""
 "When PRESORTED is specified, specifying sorting directions with (A) or (D) "
 "has no effect.  Output data will be sorted the same way as the input data."
 msgstr ""
 
-#: src/aggregate.c:386
+#: src/aggregate.c:389
 msgid "expecting aggregation function"
 msgstr ""
 
-#: src/aggregate.c:402
+#: src/aggregate.c:405
 #, c-format
 msgid "Unknown aggregation function %s."
 msgstr ""
 
-#: src/aggregate.c:417
+#: src/aggregate.c:420
 msgid "expecting `('"
 msgstr ""
 
-#: src/aggregate.c:454
+#: src/aggregate.c:457
 #, c-format
 msgid "Missing argument %d to %s."
 msgstr ""
 
-#: src/aggregate.c:463
+#: src/aggregate.c:466
 #, c-format
 msgid "Arguments to %s must be of same type as source variables."
 msgstr ""
 
-#: src/aggregate.c:473
+#: src/aggregate.c:476 src/expressions/parse.c:830
 msgid "expecting `)'"
 msgstr ""
 
-#: src/aggregate.c:485
+#: src/aggregate.c:488
 #, c-format
 msgid ""
 "Number of source variables (%d) does not match number of target variables (%"
 "d)."
 msgstr ""
 
-#: src/aggregate.c:501
+#: src/aggregate.c:504
 #, c-format
 msgid ""
 "The value arguments passed to the %s function are out-of-order.  They will "
 "be treated as if they had been specified in the correct order."
 msgstr ""
 
-#: src/aggregate.c:568
+#: src/aggregate.c:571
 #, c-format
 msgid ""
 "Variable name %s is not unique within the aggregate file dictionary, which "
 "contains the aggregate variables and the break variables."
 msgstr ""
 
-#: src/apply-dict.c:68
+#: src/apply-dict.c:71
 #, c-format
 msgid "Variable %s is %s in target file, but %s in source file."
 msgstr ""
 
-#: src/apply-dict.c:71 src/apply-dict.c:72 src/format.c:236
-#: src/sfm-read.c:1029 src/sfm-read.c:1174 src/sfm-read.c:1175
+#: src/apply-dict.c:74 src/apply-dict.c:75 src/format.c:239
+#: src/sfm-read.c:1032 src/sfm-read.c:1177 src/sfm-read.c:1178
 msgid "string"
 msgstr ""
 
-#: src/apply-dict.c:71 src/apply-dict.c:72 src/format.c:236
-#: src/sfm-read.c:1029 src/sfm-read.c:1174 src/sfm-read.c:1175
+#: src/apply-dict.c:74 src/apply-dict.c:75 src/format.c:239
+#: src/sfm-read.c:1032 src/sfm-read.c:1177 src/sfm-read.c:1178
 msgid "numeric"
 msgstr ""
 
-#: src/apply-dict.c:84
+#: src/apply-dict.c:87
 #, c-format
 msgid "Cannot add value labels from source file to long string variable %s."
 msgstr ""
 
-#: src/apply-dict.c:130
+#: src/apply-dict.c:133
 #, c-format
 msgid ""
 "Cannot apply missing values from source file to long string variable %s."
 msgstr ""
 
-#: src/apply-dict.c:163
+#: src/apply-dict.c:166
 msgid "No matching variables found between the source and target files."
 msgstr ""
 
-#: src/ascii.c:230
+#: src/ascii.c:233
 #, c-format
 msgid "ASCII driver initializing as `%s'..."
 msgstr ""
 
-#: src/ascii.c:285
+#: src/ascii.c:288
 #, c-format
 msgid ""
 "ascii driver: Area of page excluding margins and headers must be at least 59 "
@@ -122,186 +122,186 @@ msgid ""
 "by %d lines."
 msgstr ""
 
-#: src/ascii.c:390 src/devind.c:167 src/html.c:103 src/postscript.c:461
+#: src/ascii.c:393 src/devind.c:170 src/html.c:108 src/postscript.c:456
 #, c-format
 msgid "%s: Initialization complete."
 msgstr ""
 
-#: src/ascii.c:402 src/devind.c:179 src/html.c:115 src/postscript.c:474
+#: src/ascii.c:405 src/devind.c:182 src/html.c:120 src/postscript.c:469
 #, c-format
 msgid "%s: Beginning closing..."
 msgstr ""
 
-#: src/ascii.c:424 src/devind.c:184 src/html.c:120 src/postscript.c:493
+#: src/ascii.c:427 src/devind.c:187 src/html.c:125 src/postscript.c:488
 #, c-format
 msgid "%s: Finished closing."
 msgstr ""
 
-#: src/ascii.c:485
+#: src/ascii.c:488
 #, c-format
 msgid ""
 "Bad index value for `box' key: syntax is box[INDEX], 0 <= INDEX < %d "
 "decimal, with INDEX expressed in base 4."
 msgstr ""
 
-#: src/ascii.c:491
+#: src/ascii.c:494
 #, c-format
 msgid "Duplicate value for key `%s'."
 msgstr ""
 
-#: src/ascii.c:500
+#: src/ascii.c:503
 #, c-format
 msgid "Unknown configuration parameter `%s' for ascii device driver."
 msgstr ""
 
-#: src/ascii.c:513
+#: src/ascii.c:516
 #, c-format
 msgid ""
 "Unknown character set `%s'.  Valid character sets are `ascii' and `latin1'."
 msgstr ""
 
-#: src/ascii.c:522
+#: src/ascii.c:525
 #, c-format
 msgid ""
 "Unknown overstrike style `%s'.  Valid overstrike styles are `single' and "
 "`line'."
 msgstr ""
 
-#: src/ascii.c:531
+#: src/ascii.c:534
 #, c-format
 msgid ""
 "Unknown carriage return style `%s'.  Valid carriage return styles are `cr' "
 "and `bs'."
 msgstr ""
 
-#: src/ascii.c:543 src/postscript.c:684
+#: src/ascii.c:546 src/postscript.c:679
 #, c-format
 msgid "Positive integer required as value for `%s'."
 msgstr ""
 
-#: src/ascii.c:574
+#: src/ascii.c:577
 #, c-format
 msgid "Zero or positive integer required as value for `%s'."
 msgstr ""
 
-#: src/ascii.c:645 src/postscript.c:642
+#: src/ascii.c:648 src/postscript.c:637
 #, c-format
 msgid "Boolean value expected for %s."
 msgstr ""
 
-#: src/ascii.c:677 src/ascii.c:692 src/ascii.c:709
+#: src/ascii.c:680 src/ascii.c:695 src/ascii.c:712
 #, c-format
 msgid "ASCII output driver: %s: %s"
 msgstr ""
 
-#: src/ascii.c:785
+#: src/ascii.c:788
 #, c-format
 msgid "ascii_line_horz: bad hline (%d,%d),%d out of (%d,%d)\n"
 msgstr ""
 
-#: src/ascii.c:819
+#: src/ascii.c:822
 #, c-format
 msgid "ascii_line_vert: bad vline %d,(%d,%d) out of (%d,%d)\n"
 msgstr ""
 
-#: src/ascii.c:849
+#: src/ascii.c:852
 #, c-format
 msgid "ascii_line_intersection: bad intsct (%d,%d) out of (%d,%d)\n"
 msgstr ""
 
-#: src/ascii.c:997
+#: src/ascii.c:1000
 #, c-format
 msgid "%s: horiz=%d, vert=%d\n"
 msgstr ""
 
-#: src/ascii.c:1169
+#: src/ascii.c:1172
 #, c-format
 msgid "Writing `%s': %s"
 msgstr ""
 
-#: src/ascii.c:1579 src/postscript.c:2098
+#: src/ascii.c:1582 src/postscript.c:2108
 #, c-format
 msgid "%s - Page %d"
 msgstr ""
 
-#: src/ascii.c:1646
+#: src/ascii.c:1642
 msgid "Charts are unsupported with ascii drivers."
 msgstr ""
 
-#: src/autorecode.c:122
+#: src/autorecode.c:125
 #, c-format
 msgid "Source variable count (%d) does not match target variable count (%d)."
 msgstr ""
 
-#: src/autorecode.c:139 src/command.c:793 src/compute.c:277 src/do-if.c:253
-#: src/get.c:240 src/lexer.c:424 src/loop.c:241 src/matrix-data.c:528
-#: src/print.c:335 src/print.c:1045 src/recode.c:405 src/sel-if.c:54
-#: src/sel-if.c:131 src/vector.c:194 src/file-handle.q:139
+#: src/autorecode.c:142 src/command.c:797 src/compute.c:280 src/do-if.c:256
+#: src/file-handle.q:142 src/get.c:243 src/lexer.c:428 src/loop.c:244
+#: src/matrix-data.c:531 src/print.c:338 src/print.c:1048 src/recode.c:408
+#: src/sel-if.c:57 src/sel-if.c:134 src/vector.c:197
 msgid "expecting end of command"
 msgstr ""
 
-#: src/autorecode.c:149
+#: src/autorecode.c:152
 #, c-format
 msgid "Target variable %s duplicates existing variable %s."
 msgstr ""
 
-#: src/autorecode.c:156
+#: src/autorecode.c:159
 #, c-format
 msgid "Duplicate variable name %s among target variables."
 msgstr ""
 
-#: src/calendar.c:78
+#: src/calendar.c:81
 #, c-format
 msgid "Month %d is not in acceptable range of 0 to 13."
 msgstr ""
 
-#: src/calendar.c:86
+#: src/calendar.c:89
 #, c-format
 msgid "Day %d is not in acceptable range of 0 to 31."
 msgstr ""
 
-#: src/calendar.c:93
+#: src/calendar.c:96
 #, c-format
 msgid "Date %04d-%d-%d is before the earliest acceptable date of 1582-10-15."
 msgstr ""
 
-#: src/casefile.c:186
+#: src/casefile.c:252
 #, c-format
 msgid "%s: Removing temporary file: %s."
 msgstr ""
 
-#: src/casefile.c:333
+#: src/casefile.c:399
 #, c-format
 msgid "Error writing temporary file: %s."
 msgstr ""
 
-#: src/casefile.c:475
+#: src/casefile.c:541
 #, c-format
 msgid "%s: Opening temporary file: %s."
 msgstr ""
 
-#: src/casefile.c:501
+#: src/casefile.c:567
 #, c-format
 msgid "%s: Seeking temporary file: %s."
 msgstr ""
 
-#: src/casefile.c:517
+#: src/casefile.c:583
 #, c-format
 msgid "%s: Reading temporary file: %s."
 msgstr ""
 
-#: src/casefile.c:520
+#: src/casefile.c:586
 #, c-format
 msgid "%s: Temporary file ended unexpectedly."
 msgstr ""
 
-#: src/cmdline.c:141 src/cmdline.c:160 src/cmdline.c:172 src/command.c:209
-#: src/set.q:425 src/set.q:427 src/set.q:994
+#: src/cmdline.c:145 src/cmdline.c:164 src/cmdline.c:176 src/command.c:213
+#: src/expressions/parse.c:1206 src/set.q:428 src/set.q:430 src/set.q:997
 #, c-format
 msgid "%s is not yet implemented."
 msgstr ""
 
-#: src/cmdline.c:243
+#: src/cmdline.c:247
 #, c-format
 msgid ""
 "PSPP, a program for statistical analysis of sample data.\n"
@@ -351,32 +351,32 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/cmdline.c:281
+#: src/cmdline.c:285
 #, c-format
 msgid ""
 "\n"
 "Report bugs to <%s>.\n"
 msgstr ""
 
-#: src/command.c:146
+#: src/command.c:150
 #, c-format
 msgid "%s not allowed inside FILE TYPE/END FILE TYPE."
 msgstr ""
 
-#: src/command.c:149
+#: src/command.c:153
 #, c-format
 msgid "%s not allowed inside FILE TYPE GROUPED/END FILE TYPE."
 msgstr ""
 
-#: src/command.c:152
+#: src/command.c:156
 msgid "RECORD TYPE must be the first command inside a FILE TYPE structure."
 msgstr ""
 
-#: src/command.c:199
+#: src/command.c:203
 msgid "expecting command name"
 msgstr ""
 
-#: src/command.c:228
+#: src/command.c:232
 #, c-format
 msgid ""
 "%s is not allowed (1) before a command to specify the input program, such as "
@@ -384,109 +384,387 @@ msgid ""
 "PROGRAM and END INPUT PROGRAM."
 msgstr ""
 
-#: src/command.c:232
+#: src/command.c:236
 #, c-format
 msgid "%s is not allowed within an input program."
 msgstr ""
 
-#: src/command.c:233 src/command.c:234
+#: src/command.c:237 src/command.c:238
 #, c-format
 msgid "%s is only allowed within an input program."
 msgstr ""
 
-#: src/command.c:513
+#: src/command.c:517
 #, c-format
 msgid "Unknown command %s."
 msgstr ""
 
-#: src/command.c:619
+#: src/command.c:623
 msgid ""
 "This command is not accepted in a syntax file.  Instead, use FINISH to "
 "terminate a syntax file."
 msgstr ""
 
-#: src/command.c:637
+#: src/command.c:641
 msgid ""
 "This command is not executed in interactive mode.  Instead, PSPP drops down "
 "to the command prompt.  Use EXIT if you really want to quit."
 msgstr ""
 
-#: src/command.c:680 src/command.c:811 src/permissions.c:101
+#: src/command.c:684 src/command.c:815 src/permissions.c:102
 msgid "This command not allowed when the SAFER option is set."
 msgstr ""
 
-#: src/command.c:692
+#: src/command.c:696
 #, c-format
 msgid "Error removing `%s': %s."
 msgstr ""
 
-#: src/command.c:742
+#: src/command.c:746
 #, c-format
 msgid "Couldn't fork: %s."
 msgstr ""
 
-#: src/command.c:784
+#: src/command.c:788
 #, c-format
 msgid "Error executing command: %s."
 msgstr ""
 
-#: src/command.c:832
+#: src/command.c:836
 msgid "No operating system support for this command."
 msgstr ""
 
-#: src/command.c:855
+#: src/command.c:859
 msgid "This command is not valid in a syntax file."
 msgstr ""
 
-#: src/compute.c:141 src/compute.c:190
+#: src/compute.c:144 src/compute.c:193
 #, c-format
 msgid ""
 "When executing COMPUTE: SYSMIS is not a valid value as an index into vector %"
 "s."
 msgstr ""
 
-#: src/compute.c:144 src/compute.c:197
+#: src/compute.c:147 src/compute.c:200
 #, c-format
 msgid ""
 "When executing COMPUTE: %g is not a valid value as an index into vector %s."
 msgstr ""
 
-#: src/compute.c:339
+#: src/compute.c:342
 #, c-format
 msgid "There is no vector named %s."
 msgstr ""
 
-#: src/count.c:156
+#: src/count.c:159
 msgid "Destination cannot be a string variable."
 msgstr ""
 
-#: src/count.c:263
+#: src/count.c:266
 #, c-format
 msgid ""
 "%g THRU %g is not a valid range.  The number following THRU must be at least "
 "as big as the number preceding THRU."
 msgstr ""
 
-#: src/data-in.c:59
-msgid "data-file error: "
+#: src/crosstabs.q:265
+msgid ""
+"Missing mode REPORT not allowed in general mode.  Assuming MISSING=TABLE."
+msgstr ""
+
+#: src/crosstabs.q:275
+msgid "Write mode ALL not allowed in general mode.  Assuming WRITE=CELLS."
+msgstr ""
+
+#: src/crosstabs.q:336
+msgid "expecting BY"
+msgstr ""
+
+#: src/crosstabs.q:403
+msgid "VARIABLES must be specified before TABLES."
+msgstr ""
+
+#: src/crosstabs.q:440
+#, c-format
+msgid "Maximum value (%ld) less than minimum value (%ld)."
+msgstr ""
+
+#: src/crosstabs.q:804
+msgid "Summary."
+msgstr ""
+
+#: src/crosstabs.q:806 src/examine.q:919
+msgid "Cases"
+msgstr ""
+
+#: src/crosstabs.q:807 src/examine.q:853 src/frequencies.q:1141
+#: src/frequencies.q:1514
+msgid "Valid"
+msgstr ""
+
+#: src/crosstabs.q:808 src/examine.q:854 src/frequencies.q:1209
+#: src/frequencies.q:1515
+msgid "Missing"
+msgstr ""
+
+#: src/crosstabs.q:809 src/crosstabs.q:1012 src/crosstabs.q:1726
+#: src/examine.q:855 src/frequencies.q:1218 src/oneway.q:311 src/oneway.q:474
+msgid "Total"
+msgstr ""
+
+#: src/crosstabs.q:819 src/examine.q:931 src/frequencies.q:1513
+#: src/oneway.q:397 src/t-test.q:679 src/t-test.q:702 src/t-test.q:827
+#: src/t-test.q:1362
+msgid "N"
+msgstr ""
+
+#: src/crosstabs.q:820 src/examine.q:934 src/frequencies.q:1145
+#: src/frequencies.q:1146 src/frequencies.q:1147
+msgid "Percent"
+msgstr ""
+
+#: src/crosstabs.q:1062
+msgid "count"
+msgstr ""
+
+#: src/crosstabs.q:1063
+msgid "row %"
+msgstr ""
+
+#: src/crosstabs.q:1064
+msgid "column %"
+msgstr ""
+
+#: src/crosstabs.q:1065
+msgid "total %"
+msgstr ""
+
+#: src/crosstabs.q:1066
+msgid "expected"
+msgstr ""
+
+#: src/crosstabs.q:1067
+msgid "residual"
+msgstr ""
+
+#: src/crosstabs.q:1068
+msgid "std. resid."
+msgstr ""
+
+#: src/crosstabs.q:1069
+msgid "adj. resid."
+msgstr ""
+
+#: src/crosstabs.q:1102 src/crosstabs.q:1129 src/crosstabs.q:1149
+#: src/crosstabs.q:1170 src/examine.q:1365
+msgid "Statistic"
+msgstr ""
+
+#: src/crosstabs.q:1103 src/crosstabs.q:1130 src/crosstabs.q:1150
+#: src/crosstabs.q:1172 src/examine.q:1134 src/frequencies.q:1143
+#: src/frequencies.q:1264 src/sysfile-info.c:536 src/vfm.c:811
+msgid "Value"
+msgstr ""
+
+#: src/crosstabs.q:1104 src/oneway.q:284 src/oneway.q:686 src/t-test.q:977
+#: src/t-test.q:1169 src/t-test.q:1261
+msgid "df"
+msgstr ""
+
+#: src/crosstabs.q:1106
+msgid "Asymp. Sig. (2-sided)"
+msgstr ""
+
+#: src/crosstabs.q:1108
+msgid "Exact. Sig. (2-sided)"
+msgstr ""
+
+#: src/crosstabs.q:1110
+msgid "Exact. Sig. (1-sided)"
+msgstr ""
+
+#: src/crosstabs.q:1128 src/crosstabs.q:1169
+msgid "Category"
+msgstr ""
+
+#: src/crosstabs.q:1131 src/crosstabs.q:1173
+msgid "Asymp. Std. Error"
+msgstr ""
+
+#: src/crosstabs.q:1132 src/crosstabs.q:1174
+msgid "Approx. T"
+msgstr ""
+
+#: src/crosstabs.q:1133 src/crosstabs.q:1175
+msgid "Approx. Sig."
+msgstr ""
+
+#: src/crosstabs.q:1148
+#, c-format
+msgid " 95%% Confidence Interval"
+msgstr ""
+
+#: src/crosstabs.q:1151 src/t-test.q:981 src/t-test.q:1166 src/t-test.q:1264
+msgid "Lower"
+msgstr ""
+
+#: src/crosstabs.q:1152 src/t-test.q:982 src/t-test.q:1167 src/t-test.q:1265
+msgid "Upper"
+msgstr ""
+
+#: src/crosstabs.q:1171
+msgid "Type"
+msgstr ""
+
+#: src/crosstabs.q:1920
+msgid "Pearson Chi-Square"
+msgstr ""
+
+#: src/crosstabs.q:1921
+msgid "Likelihood Ratio"
+msgstr ""
+
+#: src/crosstabs.q:1922
+msgid "Fisher's Exact Test"
+msgstr ""
+
+#: src/crosstabs.q:1923
+msgid "Continuity Correction"
+msgstr ""
+
+#: src/crosstabs.q:1924
+msgid "Linear-by-Linear Association"
+msgstr ""
+
+#: src/crosstabs.q:1961 src/crosstabs.q:2031 src/crosstabs.q:2090
+msgid "N of Valid Cases"
+msgstr ""
+
+#: src/crosstabs.q:1977 src/crosstabs.q:2106
+msgid "Nominal by Nominal"
+msgstr ""
+
+#: src/crosstabs.q:1978 src/crosstabs.q:2107
+msgid "Ordinal by Ordinal"
+msgstr ""
+
+#: src/crosstabs.q:1979
+msgid "Interval by Interval"
+msgstr ""
+
+#: src/crosstabs.q:1980
+msgid "Measure of Agreement"
+msgstr ""
+
+#: src/crosstabs.q:1985
+msgid "Phi"
+msgstr ""
+
+#: src/crosstabs.q:1986
+msgid "Cramer's V"
+msgstr ""
+
+#: src/crosstabs.q:1987
+msgid "Contingency Coefficient"
+msgstr ""
+
+#: src/crosstabs.q:1988
+msgid "Kendall's tau-b"
+msgstr ""
+
+#: src/crosstabs.q:1989
+msgid "Kendall's tau-c"
+msgstr ""
+
+#: src/crosstabs.q:1990
+msgid "Gamma"
+msgstr ""
+
+#: src/crosstabs.q:1991
+msgid "Spearman Correlation"
+msgstr ""
+
+#: src/crosstabs.q:1992
+msgid "Pearson's R"
+msgstr ""
+
+#: src/crosstabs.q:1993
+msgid "Kappa"
+msgstr ""
+
+#: src/crosstabs.q:2063
+#, c-format
+msgid "Odds Ratio for %s (%g / %g)"
+msgstr ""
+
+#: src/crosstabs.q:2066
+#, c-format
+msgid "Odds Ratio for %s (%.*s / %.*s)"
+msgstr ""
+
+#: src/crosstabs.q:2074
+#, c-format
+msgid "For cohort %s = %g"
+msgstr ""
+
+#: src/crosstabs.q:2077
+#, c-format
+msgid "For cohort %s = %.*s"
+msgstr ""
+
+#: src/crosstabs.q:2108
+msgid "Nominal by Interval"
+msgstr ""
+
+#: src/crosstabs.q:2113
+msgid "Lambda"
+msgstr ""
+
+#: src/crosstabs.q:2114
+msgid "Goodman and Kruskal tau"
+msgstr ""
+
+#: src/crosstabs.q:2115
+msgid "Uncertainty Coefficient"
+msgstr ""
+
+#: src/crosstabs.q:2116
+msgid "Somers' d"
+msgstr ""
+
+#: src/crosstabs.q:2117
+msgid "Eta"
+msgstr ""
+
+#: src/crosstabs.q:2122
+msgid "Symmetric"
+msgstr ""
+
+#: src/crosstabs.q:2123 src/crosstabs.q:2124
+#, c-format
+msgid "%s Dependent"
 msgstr ""
 
 #: src/data-in.c:61
+msgid "data-file error: "
+msgstr ""
+
+#: src/data-in.c:63
 #, c-format
 msgid "(column %d"
 msgstr ""
 
-#: src/data-in.c:63
+#: src/data-in.c:65
 #, c-format
 msgid "(columns %d-%d"
 msgstr ""
 
-#: src/data-in.c:64
+#: src/data-in.c:66
 #, c-format
 msgid ", field type %s) "
 msgstr ""
 
-#: src/data-in.c:210
+#: src/data-in.c:212
 msgid "Field does not form a valid floating-point constant."
 msgstr ""
 
@@ -510,11 +788,11 @@ msgstr ""
 msgid "Unrecognized character in field."
 msgstr ""
 
-#: src/data-in.c:343 src/data-in.c:596
+#: src/data-in.c:343 src/data-in.c:598
 msgid "Field must have even length."
 msgstr ""
 
-#: src/data-in.c:353 src/data-in.c:606
+#: src/data-in.c:353 src/data-in.c:608
 msgid "Field must contain only hex digits."
 msgstr ""
 
@@ -541,949 +819,1260 @@ msgstr ""
 msgid "Error in syntax of zoned decimal number."
 msgstr ""
 
-#: src/data-in.c:646
+#: src/data-in.c:648
 msgid "Unexpected end of field."
 msgstr ""
 
-#: src/data-in.c:672
+#: src/data-in.c:674
 msgid "Digit expected in field."
 msgstr ""
 
-#: src/data-in.c:697
+#: src/data-in.c:699
 #, c-format
 msgid "Day (%ld) must be between 1 and 31."
 msgstr ""
 
-#: src/data-in.c:722
+#: src/data-in.c:724
 msgid "Delimiter expected between fields in date."
 msgstr ""
 
-#: src/data-in.c:755
+#: src/data-in.c:757
 #, c-format
 msgid "Parse error at `%c' expecting %s."
 msgstr ""
 
-#: src/data-in.c:769
+#: src/data-in.c:771
 #, c-format
 msgid "Unknown %s `%.*s'."
 msgstr ""
 
-#: src/data-in.c:819
+#: src/data-in.c:821
 #, c-format
 msgid "Month (%ld) must be between 1 and 12."
 msgstr ""
 
-#: src/data-in.c:823
+#: src/data-in.c:825
 msgid "month"
 msgstr ""
 
-#: src/data-in.c:837
+#: src/data-in.c:839
 #, c-format
 msgid "Year (%ld) must be between 1582 and 19999."
 msgstr ""
 
-#: src/data-in.c:848
+#: src/data-in.c:850
 #, c-format
 msgid "Trailing garbage \"%s\" following date."
 msgstr ""
 
-#: src/data-in.c:863
+#: src/data-in.c:865
 #, c-format
 msgid "Julian day (%d) must be between 1 and 366."
 msgstr ""
 
-#: src/data-in.c:875
+#: src/data-in.c:877
 #, c-format
 msgid "Year (%d) must be between 1582 and 19999."
 msgstr ""
 
-#: src/data-in.c:891
+#: src/data-in.c:893
 #, c-format
 msgid "Quarter (%ld) must be between 1 and 4."
 msgstr ""
 
-#: src/data-in.c:901
+#: src/data-in.c:903
 msgid "`Q' expected between quarter and year."
 msgstr ""
 
-#: src/data-in.c:917
+#: src/data-in.c:919
 #, c-format
 msgid "Week (%ld) must be between 1 and 53."
 msgstr ""
 
-#: src/data-in.c:928
+#: src/data-in.c:930
 msgid "`WK' expected between week and year."
 msgstr ""
 
-#: src/data-in.c:950
+#: src/data-in.c:952
 msgid "Delimiter expected between fields in time."
 msgstr ""
 
-#: src/data-in.c:962
+#: src/data-in.c:964
 #, c-format
 msgid "Hour (%ld) must be positive."
 msgstr ""
 
-#: src/data-in.c:974
+#: src/data-in.c:976
 #, c-format
 msgid "Minute (%ld) must be between 0 and 59."
 msgstr ""
 
-#: src/data-in.c:1021
+#: src/data-in.c:1023
 #, c-format
 msgid "Hour (%ld) must be between 0 and 23."
 msgstr ""
 
-#: src/data-in.c:1049
+#: src/data-in.c:1051
 msgid "weekday"
 msgstr ""
 
-#: src/data-in.c:1380
+#: src/data-in.c:1382
 #, c-format
 msgid "Field too long (%d characters).  Truncated after character %d."
 msgstr ""
 
-#: src/data-list.c:141
+#: src/data-list.c:144
 msgid ""
 "DATA LIST may not use a different file from that specified on its "
 "surrounding FILE TYPE."
 msgstr ""
 
-#: src/data-list.c:160
+#: src/data-list.c:163
 msgid "The END subcommand may only be specified once."
 msgstr ""
 
-#: src/data-list.c:195
+#: src/data-list.c:198
 msgid "Only one of FIXED, FREE, or LIST may be specified."
 msgstr ""
 
-#: src/data-list.c:351 src/print.c:296
+#: src/data-list.c:354 src/print.c:299
 #, c-format
 msgid ""
 "The record number specified, %ld, is before the previous record, %d.  Data "
 "fields must be listed in order of increasing record number."
 msgstr ""
 
-#: src/data-list.c:380 src/data-list.c:1727
+#: src/data-list.c:383 src/data-list.c:1747
 msgid ""
 "SPSS-like or FORTRAN-like format specification expected after variable names."
 msgstr ""
 
-#: src/data-list.c:391
+#: src/data-list.c:394
 msgid "At least one variable must be specified."
 msgstr ""
 
-#: src/data-list.c:396 src/print.c:328
+#: src/data-list.c:399 src/print.c:331
 msgid ""
 "Variables are specified on records that should not exist according to "
 "RECORDS subcommand."
 msgstr ""
 
-#: src/data-list.c:429 src/data-list.c:443 src/print.c:520 src/print.c:533
+#: src/data-list.c:432 src/data-list.c:446 src/print.c:523 src/print.c:536
 msgid "Column positions for fields must be positive."
 msgstr ""
 
-#: src/data-list.c:448
+#: src/data-list.c:451
 msgid "The ending column for a field must be greater than the starting column."
 msgstr ""
 
-#: src/data-list.c:462 src/print.c:610
+#: src/data-list.c:465 src/print.c:613
 #, c-format
 msgid "The %d columns %d-%d can't be evenly divided into %d fields."
 msgstr ""
 
-#: src/data-list.c:482 src/print.c:561
+#: src/data-list.c:485 src/print.c:564
 msgid "A format specifier on this line has extra characters on the end."
 msgstr ""
 
-#: src/data-list.c:497 src/print.c:577
+#: src/data-list.c:500 src/print.c:580
 msgid "The value for number of decimal places must be at least 1."
 msgstr ""
 
-#: src/data-list.c:511 src/print.c:590
+#: src/data-list.c:514 src/print.c:593
 #, c-format
 msgid "Input format %s doesn't accept decimal places."
 msgstr ""
 
-#: src/data-list.c:558 src/data-list.c:654 src/data-list.c:868
+#: src/data-list.c:561 src/data-list.c:657 src/data-list.c:871
 #, c-format
 msgid "%s is a duplicate variable name."
 msgstr ""
 
-#: src/data-list.c:563
+#: src/data-list.c:566
 #, c-format
 msgid "There is already a variable %s of a different type."
 msgstr ""
 
-#: src/data-list.c:570
+#: src/data-list.c:573
 #, c-format
 msgid "There is already a string variable %s of a different width."
 msgstr ""
 
-#: src/data-list.c:645
+#: src/data-list.c:648
 msgid ""
 "The number of format specifications exceeds the given number of variable "
 "names."
 msgstr ""
 
-#: src/data-list.c:758 src/print.c:765
+#: src/data-list.c:761 src/print.c:768
 msgid ""
 "There aren't enough format specifications to match the number of variable "
 "names given."
 msgstr ""
 
-#: src/data-list.c:785 src/data-list.c:909 src/descript.c:879 src/print.c:796
-#: src/sysfile-info.c:135 src/sysfile-info.c:369 src/vfm.c:809
+#: src/data-list.c:788 src/data-list.c:912 src/descript.c:883 src/print.c:799
+#: src/sysfile-info.c:138 src/sysfile-info.c:372 src/vfm.c:810
 msgid "Variable"
 msgstr ""
 
-#: src/data-list.c:786 src/print.c:797
+#: src/data-list.c:789 src/print.c:800
 msgid "Record"
 msgstr ""
 
-#: src/data-list.c:787 src/print.c:798
+#: src/data-list.c:790 src/print.c:801
 msgid "Columns"
 msgstr ""
 
-#: src/data-list.c:788 src/data-list.c:910 src/print.c:799
+#: src/data-list.c:791 src/data-list.c:913 src/print.c:802
 msgid "Format"
 msgstr ""
 
-#: src/data-list.c:804
+#: src/data-list.c:807
 #, c-format
 msgid "Reading %d record from file %s."
 msgid_plural "Reading %d records from file %s."
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/data-list.c:808
+#: src/data-list.c:811
 #, c-format
 msgid "Reading %d record from the command file."
 msgid_plural "Reading %d records from the command file."
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/data-list.c:926
+#: src/data-list.c:929
 #, c-format
 msgid "Reading free-form data from file %s."
 msgstr ""
 
-#: src/data-list.c:929
+#: src/data-list.c:932
 msgid "Reading free-form data from the command file."
 msgstr ""
 
-#: src/data-list.c:980
+#: src/data-list.c:983
 #, c-format
 msgid "Quoted string missing terminating `%c'."
 msgstr ""
 
-#: src/data-list.c:1089
+#: src/data-list.c:1092
 #, c-format
 msgid "Partial case of %d of %d records discarded."
 msgstr ""
 
-#: src/data-list.c:1143
+#: src/data-list.c:1146
 #, c-format
 msgid "Partial case discarded.  The first variable missing was %s."
 msgstr ""
 
-#: src/data-list.c:1187
+#: src/data-list.c:1190
 #, c-format
 msgid ""
 "Missing value(s) for all variables from %s onward.  These will be filled "
 "with the system-missing value or blanks, as appropriate."
 msgstr ""
 
-#: src/data-list.c:1264
+#: src/data-list.c:1267
 msgid "Attempt to read past end of file."
 msgstr ""
 
-#: src/data-list.c:1401
+#: src/data-list.c:1408
 msgid ""
 "REPEATING DATA must use the same file as its corresponding DATA LIST or FILE "
 "TYPE."
 msgstr ""
 
-#: src/data-list.c:1411 src/data-list.c:1446 src/data-list.c:1459
-#: src/data-list.c:1472 src/data-list.c:1505
+#: src/data-list.c:1418 src/data-list.c:1452 src/data-list.c:1465
+#: src/data-list.c:1478 src/data-list.c:1512
 #, c-format
 msgid "%s subcommand given multiple times."
 msgstr ""
 
-#: src/data-list.c:1435
+#: src/data-list.c:1441
 #, c-format
 msgid "STARTS beginning column (%d) exceeds STARTS ending column (%d)."
 msgstr ""
 
-#: src/data-list.c:1491
+#: src/data-list.c:1498
 #, c-format
 msgid "CONTINUED beginning column (%d) exceeds CONTINUED ending column (%d)."
 msgstr ""
 
-#: src/data-list.c:1514
+#: src/data-list.c:1521
 #, c-format
 msgid "ID beginning column (%ld) must be positive."
 msgstr ""
 
-#: src/data-list.c:1529
+#: src/data-list.c:1536
 #, c-format
 msgid "ID ending column (%ld) must be positive."
 msgstr ""
 
-#: src/data-list.c:1535
+#: src/data-list.c:1542
 #, c-format
 msgid "ID ending column (%ld) cannot be less than ID beginning column (%d)."
 msgstr ""
 
-#: src/data-list.c:1575
+#: src/data-list.c:1582
 msgid "Missing required specification STARTS."
 msgstr ""
 
-#: src/data-list.c:1577
+#: src/data-list.c:1584
 msgid "Missing required specification OCCURS."
 msgstr ""
 
-#: src/data-list.c:1584
+#: src/data-list.c:1591
 msgid "ID specified without CONTINUED."
 msgstr ""
 
-#: src/data-list.c:1676
+#: src/data-list.c:1602
+#, c-format
+msgid ""
+"STARTS beginning column (%d) exceeds default STARTS ending column taken from "
+"file's record width (%d)."
+msgstr ""
+
+#: src/data-list.c:1615
+#, c-format
+msgid ""
+"CONTINUED beginning column (%d) exceeds default CONTINUED ending column "
+"taken from file's record width (%d)."
+msgstr ""
+
+#: src/data-list.c:1696
 msgid "String variable not allowed here."
 msgstr ""
 
-#: src/data-list.c:1686
+#: src/data-list.c:1706
 #, c-format
 msgid "%s (%d) must be at least 1."
 msgstr ""
 
-#: src/data-list.c:1692
+#: src/data-list.c:1712
 #, c-format
 msgid "Variable or integer expected for %s."
 msgstr ""
 
-#: src/data-list.c:1825
+#: src/data-list.c:1837
 #, c-format
 msgid "Encountered mismatched record ID \"%s\" expecting \"%s\"."
 msgstr ""
 
-#: src/data-list.c:1857
+#: src/data-list.c:1869
 #, c-format
 msgid ""
 "Variable %s starting in column %d extends beyond physical record length of %"
 "d."
 msgstr ""
 
-#: src/data-list.c:1925
+#: src/data-list.c:1937
 #, c-format
 msgid "Invalid value %d for OCCURS."
 msgstr ""
 
-#: src/data-list.c:1931
+#: src/data-list.c:1943
 #, c-format
 msgid "Beginning column for STARTS (%d) must be at least 1."
 msgstr ""
 
-#: src/data-list.c:1939
+#: src/data-list.c:1951
 #, c-format
 msgid "Ending column for STARTS (%d) is less than beginning column (%d)."
 msgstr ""
 
-#: src/data-list.c:1947
+#: src/data-list.c:1959
 #, c-format
 msgid "Invalid value %d for LENGTH."
 msgstr ""
 
-#: src/data-list.c:1954
+#: src/data-list.c:1966
 #, c-format
 msgid "Beginning column for CONTINUED (%d) must be at least 1."
 msgstr ""
 
-#: src/data-list.c:1962
+#: src/data-list.c:1974
 #, c-format
 msgid "Ending column for CONTINUED (%d) is less than beginning column (%d)."
 msgstr ""
 
-#: src/data-list.c:1994
+#: src/data-list.c:2006
 #, c-format
 msgid ""
 "Number of repetitions specified on OCCURS (%d) exceed number of repetitions "
 "available in space on STARTS (%d), and CONTINUED not specified."
 msgstr ""
 
-#: src/data-list.c:2012
+#: src/data-list.c:2024
 #, c-format
 msgid "Unexpected end of file with %d repetitions remaining out of %d."
 msgstr ""
 
-#: src/data-out.c:242
+#: src/data-out.c:245
 msgid ""
 "The N output format cannot be used to output a negative number or the system-"
 "missing value."
 msgstr ""
 
-#: src/data-out.c:356
+#: src/data-out.c:359
 #, c-format
 msgid ""
 "Quality of zoned decimal (Z) output format code is suspect.  Check your "
 "results. Report bugs to %s."
 msgstr ""
 
-#: src/data-out.c:364
+#: src/data-out.c:367
 msgid "The system-missing value cannot be output as a zoned decimal number."
 msgstr ""
 
-#: src/data-out.c:377
+#: src/data-out.c:380
 #, c-format
 msgid "Number %g too big to fit in field with format Z%d.%d."
 msgstr ""
 
-#: src/data-out.c:771
+#: src/data-out.c:774
 #, c-format
 msgid "Time value %g too large in magnitude to convert to alphanumeric time."
 msgstr ""
 
-#: src/data-out.c:822
+#: src/data-out.c:825
 #, c-format
 msgid "Weekday index %f does not lie between 1 and 7."
 msgstr ""
 
-#: src/data-out.c:842
+#: src/data-out.c:845
 #, c-format
 msgid "Month index %f does not lie between 1 and 12."
 msgstr ""
 
-#: src/data-out.c:955
+#: src/data-out.c:958
 #, c-format
 msgid ""
 "Year %d cannot be represented in four digits for output formatting purposes."
 msgstr ""
 
-#: src/date.c:32
+#: src/date.c:35
 msgid "Only USE ALL is currently implemented."
 msgstr ""
 
-#: src/descript.c:99 src/examine.q:1466 src/frequencies.q:112 src/oneway.q:394
-#: src/t-test.q:676 src/t-test.q:699 src/t-test.q:822 src/t-test.q:1159
+#: src/descript.c:103 src/examine.q:1470 src/frequencies.q:117
+#: src/oneway.q:398 src/t-test.q:680 src/t-test.q:703 src/t-test.q:826
+#: src/t-test.q:1163
 msgid "Mean"
 msgstr ""
 
-#: src/descript.c:100
+#: src/descript.c:104
 msgid "S E Mean"
 msgstr ""
 
-#: src/descript.c:101 src/frequencies.q:116
+#: src/descript.c:105 src/frequencies.q:121
 msgid "Std Dev"
 msgstr ""
 
-#: src/descript.c:102 src/examine.q:1546 src/frequencies.q:117
+#: src/descript.c:106 src/examine.q:1550 src/frequencies.q:122
 msgid "Variance"
 msgstr ""
 
-#: src/descript.c:103 src/examine.q:1653 src/frequencies.q:118
+#: src/descript.c:107 src/examine.q:1657 src/frequencies.q:123
 msgid "Kurtosis"
 msgstr ""
 
-#: src/descript.c:104
+#: src/descript.c:108
 msgid "S E Kurt"
 msgstr ""
 
-#: src/descript.c:105 src/examine.q:1633 src/frequencies.q:120
+#: src/descript.c:109 src/examine.q:1637 src/frequencies.q:125
 msgid "Skewness"
 msgstr ""
 
-#: src/descript.c:106
+#: src/descript.c:110
 msgid "S E Skew"
 msgstr ""
 
-#: src/descript.c:107 src/examine.q:1594 src/frequencies.q:122
+#: src/descript.c:111 src/examine.q:1598 src/frequencies.q:127
 msgid "Range"
 msgstr ""
 
-#: src/descript.c:108 src/examine.q:1571 src/frequencies.q:123
-#: src/oneway.q:406
+#: src/descript.c:112 src/examine.q:1575 src/frequencies.q:128
+#: src/oneway.q:410
 msgid "Minimum"
 msgstr ""
 
-#: src/descript.c:109 src/examine.q:1582 src/frequencies.q:124
-#: src/oneway.q:407
+#: src/descript.c:113 src/examine.q:1586 src/frequencies.q:129
+#: src/oneway.q:411
 msgid "Maximum"
 msgstr ""
 
-#: src/descript.c:110 src/frequencies.q:125
+#: src/descript.c:114 src/frequencies.q:130
 msgid "Sum"
 msgstr ""
 
-#: src/descript.c:333
+#: src/descript.c:337
 #, c-format
 msgid "Z-score variable name %s would be a duplicate variable name."
 msgstr ""
 
-#: src/descript.c:351 src/list.q:142
+#: src/descript.c:355 src/list.q:146
 msgid "No variables specified."
 msgstr ""
 
-#: src/descript.c:435
+#: src/descript.c:439
 msgid "expecting statistic name: reverting to default"
 msgstr ""
 
-#: src/descript.c:507
+#: src/descript.c:511
 msgid ""
 "Ran out of generic names for Z-score variables.  There are only 126 generic "
 "names: ZSC001-ZSC0999, STDZ01-STDZ09, ZZZZ01-ZZZZ09, ZQZQ01-ZQZQ09."
 msgstr ""
 
-#: src/descript.c:538
+#: src/descript.c:542
 msgid "Mapping of variables to corresponding Z-scores."
 msgstr ""
 
-#: src/descript.c:543
+#: src/descript.c:547
 msgid "Source"
 msgstr ""
 
-#: src/descript.c:544
+#: src/descript.c:548
 msgid "Target"
 msgstr ""
 
-#: src/descript.c:663 src/descript.c:669
+#: src/descript.c:667 src/descript.c:673
 msgid "Z-score of "
 msgstr ""
 
-#: src/descript.c:882
+#: src/descript.c:886
 msgid "Valid N"
 msgstr ""
 
-#: src/descript.c:883
+#: src/descript.c:887
 msgid "Missing N"
 msgstr ""
 
-#: src/descript.c:909
+#: src/descript.c:913
 #, c-format
 msgid "Valid cases = %g; cases with missing value(s) = %g."
 msgstr ""
 
-#: src/devind.c:136
+#: src/devind.c:139
 #, c-format
 msgid "DEVIND driver initializing as `%s'..."
 msgstr ""
 
-#: src/devind.c:218
+#: src/devind.c:221
 #, c-format
 msgid "Unknown configuration parameter `%s' for DEVIND device driver."
 msgstr ""
 
-#: src/devind.c:240
+#: src/devind.c:243
 #, c-format
 msgid "DEVIND output driver: %s: %s"
 msgstr ""
 
-#: src/devind.c:271
+#: src/devind.c:274
 #, c-format
 msgid "Cannot open first page on DEVIND device %s."
 msgstr ""
 
-#: src/dfm-read.c:153
+#: src/dfm-read.c:157
 #, c-format
 msgid "Could not open \"%s\" for reading as a data file: %s."
 msgstr ""
 
-#: src/dfm-read.c:186 src/dfm-read.c:204
+#: src/dfm-read.c:190 src/dfm-read.c:208
 msgid "BEGIN DATA expected."
 msgstr ""
 
-#: src/dfm-read.c:213
+#: src/dfm-read.c:217
 msgid ""
 "Unexpected end-of-file while reading data in BEGIN DATA.  This probably "
 "indicates a missing or misformatted END DATA command.  END DATA must appear "
 "by itself on a single line with exactly one space between words."
 msgstr ""
 
-#: src/dfm-read.c:246 src/dfm-read.c:266
+#: src/dfm-read.c:250 src/dfm-read.c:270
 #, c-format
 msgid "Error reading file %s: %s."
 msgstr ""
 
-#: src/dfm-read.c:269
+#: src/dfm-read.c:273
 #, c-format
 msgid "%s: Partial record at end of file."
 msgstr ""
 
-#: src/dfm-read.c:312
+#: src/dfm-read.c:316
 #, c-format
 msgid "Attempt to read beyond end-of-file on file %s."
 msgstr ""
 
-#: src/dfm-read.c:315
+#: src/dfm-read.c:319
 msgid "Attempt to read beyond END DATA."
 msgstr ""
 
-#: src/dfm-read.c:462
+#: src/dfm-read.c:466
 msgid ""
 "This command is not valid here since the current input program does not "
 "access the inline file."
 msgstr ""
 
-#: src/dfm-write.c:67
+#: src/dfm-write.c:70
 #, c-format
 msgid "An error occurred while opening \"%s\" for writing as a data file: %s."
 msgstr ""
 
-#: src/dfm-write.c:103
+#: src/dfm-write.c:106
 #, c-format
 msgid "Error writing file %s: %s."
 msgstr ""
 
-#: src/dictionary.c:682
+#: src/dictionary.c:685
 msgid ""
 "At least one case in the data file had a weight value that was user-missing, "
 "system-missing, zero, or negative.  These case(s) were ignored."
 msgstr ""
 
-#: src/do-if.c:113
+#: src/do-if.c:116
 msgid "There is no DO IF to match with this ELSE IF."
 msgstr ""
 
-#: src/do-if.c:118
+#: src/do-if.c:121
 msgid "The ELSE command must follow all ELSE IF commands in a DO IF structure."
 msgstr ""
 
-#: src/do-if.c:141
+#: src/do-if.c:144
 msgid "End of command expected."
 msgstr ""
 
-#: src/do-if.c:157
+#: src/do-if.c:160
 msgid "There is no DO IF to match with this ELSE."
 msgstr ""
 
-#: src/do-if.c:163
+#: src/do-if.c:166
 msgid ""
 "There may be at most one ELSE clause in each DO IF structure.  It must be "
 "the last clause."
 msgstr ""
 
-#: src/do-if.c:198
+#: src/do-if.c:201
 msgid "There is no DO IF to match with this END IF."
 msgstr ""
 
-#: src/do-if.c:284
+#: src/do-if.c:287
 #, c-format
 msgid "DO IF %d: true\n"
 msgstr ""
 
-#: src/do-if.c:289
+#: src/do-if.c:292
 #, c-format
 msgid "DO IF %d: false\n"
 msgstr ""
 
-#: src/do-if.c:294
+#: src/do-if.c:297
 #, c-format
 msgid "DO IF %d: missing\n"
 msgstr ""
 
-#: src/error.c:93
+#: src/error.c:97
 msgid "Terminating NOW due to a fatal error!"
 msgstr ""
 
-#: src/error.c:170
+#: src/error.c:174
 msgid "Terminating execution of syntax file due to error."
 msgstr ""
 
-#: src/error.c:172
+#: src/error.c:176
 #, c-format
 msgid "Errors (%d) exceeds limit (%d)."
 msgstr ""
 
-#: src/error.c:175
+#: src/error.c:179
 #, c-format
 msgid "Warnings (%d) exceed limit (%d)."
 msgstr ""
 
-#: src/error.c:237
+#: src/error.c:243
 msgid "fatal"
 msgstr ""
 
-#: src/error.c:239 src/error.c:246 src/error.c:249
+#: src/error.c:245 src/error.c:252 src/error.c:255
 msgid "error"
 msgstr ""
 
-#: src/error.c:240 src/error.c:247 src/error.c:250
+#: src/error.c:246 src/error.c:253 src/error.c:256
 msgid "warning"
 msgstr ""
 
-#: src/error.c:241 src/error.c:251
+#: src/error.c:247 src/error.c:257
 msgid "note"
 msgstr ""
 
-#: src/error.c:243 src/error.c:244
+#: src/error.c:249 src/error.c:250
 msgid "installation error"
 msgstr ""
 
-#: src/filename.c:221
+#: src/examine.q:471 src/examine.q:483
 #, c-format
-msgid "Searching for `%s'..."
+msgid "%s and %s are mutually exclusive"
 msgstr ""
 
-#: src/filename.c:229 src/filename.c:261
-msgid "Search unsuccessful!"
+#: src/examine.q:913
+msgid "Case Processing Summary"
 msgstr ""
 
-#: src/filename.c:254
-#, c-format
-msgid "Found `%s'."
+#: src/examine.q:1119
+msgid "Extreme Values"
 msgstr ""
 
-#: src/filename.c:686
-#, c-format
-msgid "Not opening pipe file `%s' because SAFER option set."
+#: src/examine.q:1135
+msgid "Case Number"
 msgstr ""
 
-#: src/file-type.c:131
-msgid "MIXED, GROUPED, or NESTED expected."
+#: src/examine.q:1220
+msgid "Highest"
 msgstr ""
 
-#: src/file-type.c:154
-msgid "The CASE subcommand is not valid on FILE TYPE MIXED."
+#: src/examine.q:1225
+msgid "Lowest"
 msgstr ""
 
-#: src/file-type.c:172
-msgid "WARN or NOWARN expected after WILD."
+#: src/examine.q:1366 src/oneway.q:400 src/oneway.q:684
+msgid "Std. Error"
 msgstr ""
 
-#: src/file-type.c:180
-msgid "The DUPLICATE subcommand is not valid on FILE TYPE MIXED."
+#: src/examine.q:1368 src/oneway.q:414
+msgid "Descriptives"
 msgstr ""
 
-#: src/file-type.c:194
-msgid "DUPLICATE=CASE is only valid on FILE TYPE NESTED."
+#: src/examine.q:1488 src/oneway.q:405
+#, c-format
+msgid "%g%% Confidence Interval for Mean"
 msgstr ""
 
-#: src/file-type.c:203
+#: src/examine.q:1494 src/oneway.q:407
+msgid "Lower Bound"
+msgstr ""
+
+#: src/examine.q:1505 src/oneway.q:408
+msgid "Upper Bound"
+msgstr ""
+
+#: src/examine.q:1517
+#, c-format
+msgid "5%% Trimmed Mean"
+msgstr ""
+
+#: src/examine.q:1528 src/frequencies.q:119
+msgid "Median"
+msgstr ""
+
+#: src/examine.q:1562 src/oneway.q:399 src/t-test.q:681 src/t-test.q:704
+#: src/t-test.q:828 src/t-test.q:1164
+msgid "Std. Deviation"
+msgstr ""
+
+#: src/examine.q:1610
+msgid "Interquartile Range"
+msgstr ""
+
+#: src/examine.q:1762
+#, c-format
+msgid "Boxplot of %s vs. %s"
+msgstr ""
+
+#: src/examine.q:1787
+msgid "Boxplot"
+msgstr ""
+
+#: src/examine.q:1829
+#, c-format
+msgid "Normal Q-Q Plot of %s"
+msgstr ""
+
+#: src/examine.q:1830 src/examine.q:1836
+msgid "Observed Value"
+msgstr ""
+
+#: src/examine.q:1831
+msgid "Expected Normal"
+msgstr ""
+
+#: src/examine.q:1834
+#, c-format
+msgid "Detrended Normal Q-Q Plot of %s"
+msgstr ""
+
+#: src/examine.q:1837
+msgid "Dev from Normal"
+msgstr ""
+
+#: src/examine.q:1956 src/examine.q:1978 src/frequencies.q:1525
+msgid "Percentiles"
+msgstr ""
+
+#: src/examine.q:2103
+msgid "Tukey's Hinges"
+msgstr ""
+
+#: src/expressions/evaluate.c:144
+msgid "expecting number or string"
+msgstr ""
+
+#: src/expressions/evaluate.c:155 src/pfm-read.c:537
+#, c-format
+msgid "Duplicate variable name %s."
+msgstr ""
+
+#: src/expressions/helpers.c:36
+msgid ""
+"One of the arguments to a DATE function is not an integer.  The result will "
+"be system-missing."
+msgstr ""
+
+#: src/expressions/helpers.c:58
+msgid ""
+"The week argument to DATE.WKYR is not an integer.  The result will be system-"
+"missing."
+msgstr ""
+
+#: src/expressions/helpers.c:64
+msgid ""
+"The week argument to DATE.WKYR is outside the acceptable range of 1 to 53.  "
+"The result will be system-missing."
+msgstr ""
+
+#: src/expressions/helpers.c:86
+msgid ""
+"The day argument to DATE.YRDAY is not an integer.  The result will be system-"
+"missing."
+msgstr ""
+
+#: src/expressions/helpers.c:92
+msgid ""
+"The day argument to DATE.YRDAY is outside the acceptable range of 1 to 366.  "
+"The result will be system-missing."
+msgstr ""
+
+#: src/expressions/helpers.c:114
+msgid ""
+"The year argument to YRMODA is greater than 47516.  The result will be "
+"system-missing."
+msgstr ""
+
+#: src/expressions/parse.c:241
+#, c-format
+msgid ""
+"Type mismatch: expression has %s type, but a numeric value is required here."
+msgstr ""
+
+#: src/expressions/parse.c:253
+#, c-format
+msgid ""
+"Type mismatch: expression has %s type, but a string value is required here."
+msgstr ""
+
+#: src/expressions/parse.c:394
+#, c-format
+msgid "Type mismatch while applying %s operator: cannot convert %s to %s."
+msgstr ""
+
+#: src/expressions/parse.c:599
+msgid ""
+"Chaining relational operators (e.g. \"a < b < c\") will not produce the "
+"mathematically expected result.  Use the AND logical operator to fix the "
+"problem (e.g. \"a < b AND b < c\").  If chaining is really intended, "
+"parentheses will disable this warning (e.g. \"(a < b) < c\".)"
+msgstr ""
+
+#: src/expressions/parse.c:698
+msgid ""
+"The exponentiation operator (\"**\") is left-associative, even though right-"
+"associative semantics are more useful.  That is, \"a**b**c\" equals \"(a**b)"
+"**c\", not as \"a**(b**c)\".  To disable this warning, insert parentheses."
+msgstr ""
+
+#: src/expressions/parse.c:760
+#, c-format
+msgid "Unknown system variable %s."
+msgstr ""
+
+#: src/expressions/parse.c:802
+#, c-format
+msgid "Unknown identifier %s."
+msgstr ""
+
+#: src/expressions/parse.c:837
+msgid "in expression"
+msgstr ""
+
+#: src/expressions/parse.c:1013
+#, c-format
+msgid "%s must have at least %d arguments in list."
+msgstr ""
+
+#: src/expressions/parse.c:1022
+#, c-format
+msgid "%s must have even number of arguments in list."
+msgstr ""
+
+#: src/expressions/parse.c:1025
+#, c-format
+msgid "%s must have multiple of %d arguments in list."
+msgstr ""
+
+#: src/expressions/parse.c:1035
+#, c-format
+msgid "%s function does not accept a minimum valid argument count."
+msgstr ""
+
+#: src/expressions/parse.c:1044
+#, c-format
+msgid "%s requires at least %d valid arguments in list."
+msgstr ""
+
+#: src/expressions/parse.c:1050
+#, c-format
+msgid ""
+"With %s, using minimum valid argument count of %d does not make sense when "
+"passing only %d arguments in list."
+msgstr ""
+
+#: src/expressions/parse.c:1104
+#, c-format
+msgid "Type mismatch invoking %s as "
+msgstr ""
+
+#: src/expressions/parse.c:1109
+msgid "Function invocation "
+msgstr ""
+
+#: src/expressions/parse.c:1111
+msgid " does not match any known function.  Candidates are:"
+msgstr ""
+
+#: src/expressions/parse.c:1141
+#, c-format
+msgid "No function or vector named %s."
+msgstr ""
+
+#: src/expressions/parse.c:1183
+#, c-format
+msgid "expecting `,' or `)' invoking %s function"
+msgstr ""
+
+#: src/expressions/parse.c:1203
+#, c-format
+msgid "%s is a PSPP extension."
+msgstr ""
+
+#: src/file-handle.q:127
+#, c-format
+msgid ""
+"File handle %s already refers to file %s.  File handles cannot be redefined "
+"within a session."
+msgstr ""
+
+#: src/file-handle.q:148
+msgid "The FILE HANDLE required subcommand NAME is not present."
+msgstr ""
+
+#: src/file-handle.q:167
+msgid ""
+"Fixed-length records were specified on /RECFORM, but record length was not "
+"specified on /LRECL.  Assuming 1024-character records."
+msgstr ""
+
+#: src/file-handle.q:174
+#, c-format
+msgid ""
+"Record length (%ld) must be at least one byte.  1-character records will be "
+"assumed."
+msgstr ""
+
+#: src/file-handle.q:274
+#, c-format
+msgid "Can't open %s as a %s because it is already open as a %s"
+msgstr ""
+
+#: src/file-handle.q:281
+#, c-format
+msgid "Can't open %s as a %s for %s because it is already open for %s"
+msgstr ""
+
+#: src/file-handle.q:289
+#, c-format
+msgid "Can't re-open %s as a %s for %s"
+msgstr ""
+
+#: src/file-handle.q:342
+msgid "expecting a file name or handle name"
+msgstr ""
+
+#: src/file-type.c:134
+msgid "MIXED, GROUPED, or NESTED expected."
+msgstr ""
+
+#: src/file-type.c:157
+msgid "The CASE subcommand is not valid on FILE TYPE MIXED."
+msgstr ""
+
+#: src/file-type.c:175
+msgid "WARN or NOWARN expected after WILD."
+msgstr ""
+
+#: src/file-type.c:183
+msgid "The DUPLICATE subcommand is not valid on FILE TYPE MIXED."
+msgstr ""
+
+#: src/file-type.c:197
+msgid "DUPLICATE=CASE is only valid on FILE TYPE NESTED."
+msgstr ""
+
+#: src/file-type.c:206
 #, c-format
 msgid "WARN%s expected after DUPLICATE."
 msgstr ""
 
-#: src/file-type.c:204
+#: src/file-type.c:207
 msgid ", NOWARN, or CASE"
 msgstr ""
 
-#: src/file-type.c:205
+#: src/file-type.c:208
 msgid " or NOWARN"
 msgstr ""
 
-#: src/file-type.c:213
+#: src/file-type.c:216
 msgid "The MISSING subcommand is not valid on FILE TYPE MIXED."
 msgstr ""
 
-#: src/file-type.c:225
+#: src/file-type.c:228
 msgid "WARN or NOWARN after MISSING."
 msgstr ""
 
-#: src/file-type.c:233
+#: src/file-type.c:236
 msgid "ORDERED is only valid on FILE TYPE GROUPED."
 msgstr ""
 
-#: src/file-type.c:244
+#: src/file-type.c:247
 msgid "YES or NO expected after ORDERED."
 msgstr ""
 
-#: src/file-type.c:250 src/file-type.c:545
+#: src/file-type.c:253 src/file-type.c:548
 msgid "while expecting a valid subcommand"
 msgstr ""
 
-#: src/file-type.c:257
+#: src/file-type.c:260
 msgid "The required RECORD subcommand was not present."
 msgstr ""
 
-#: src/file-type.c:265
+#: src/file-type.c:268
 msgid "The required CASE subcommand was not present."
 msgstr ""
 
-#: src/file-type.c:271
+#: src/file-type.c:274
 msgid "CASE and RECORD must specify different variable names."
 msgstr ""
 
-#: src/file-type.c:329
+#: src/file-type.c:332
 msgid "Column value must be positive."
 msgstr ""
 
-#: src/file-type.c:345
+#: src/file-type.c:348
 msgid "Ending column precedes beginning column."
 msgstr ""
 
-#: src/file-type.c:365
+#: src/file-type.c:368
 msgid "Bad format specifier name."
 msgstr ""
 
-#: src/file-type.c:394 src/file-type.c:583
+#: src/file-type.c:397 src/file-type.c:586
 msgid ""
 "This command may only appear within a FILE TYPE/END FILE TYPE structure."
 msgstr ""
 
-#: src/file-type.c:417
+#: src/file-type.c:420
 msgid "OTHER may appear only on the last RECORD TYPE command."
 msgstr ""
 
-#: src/file-type.c:427
+#: src/file-type.c:430
 msgid "No input commands (DATA LIST, REPEATING DATA) for above RECORD TYPE."
 msgstr ""
 
-#: src/file-type.c:478
+#: src/file-type.c:481
 msgid ""
 "The CASE subcommand is not allowed on the RECORD TYPE command for FILE TYPE "
 "MIXED."
 msgstr ""
 
-#: src/file-type.c:488
+#: src/file-type.c:491
 msgid ""
 "No variable name may be specified for the CASE subcommand on RECORD TYPE."
 msgstr ""
 
-#: src/file-type.c:496
+#: src/file-type.c:499
 msgid ""
 "The CASE column specification on RECORD TYPE must give a format specifier "
 "that is the same type as that of the CASE column specification given on FILE "
 "TYPE."
 msgstr ""
 
-#: src/file-type.c:512
+#: src/file-type.c:515
 msgid "WARN or NOWARN expected on DUPLICATE subcommand."
 msgstr ""
 
-#: src/file-type.c:526
+#: src/file-type.c:529
 msgid "WARN or NOWARN expected on MISSING subcommand."
 msgstr ""
 
-#: src/file-type.c:539
+#: src/file-type.c:542
 msgid "YES or NO expected on SPREAD subcommand."
 msgstr ""
 
-#: src/file-type.c:596
+#: src/file-type.c:599
 msgid "No input commands (DATA LIST, REPEATING DATA) on above RECORD TYPE."
 msgstr ""
 
-#: src/file-type.c:603
+#: src/file-type.c:606
 msgid "No commands between FILE TYPE and END FILE TYPE."
 msgstr ""
 
-#: src/file-type.c:672
+#: src/file-type.c:675
 #, c-format
 msgid "Unknown record type \"%.*s\"."
 msgstr ""
 
-#: src/file-type.c:696
+#: src/file-type.c:699
 #, c-format
 msgid "Unknown record type %g."
 msgstr ""
 
-#: src/flip.c:85
+#: src/filename.c:227
+#, c-format
+msgid "Searching for `%s'..."
+msgstr ""
+
+#: src/filename.c:235 src/filename.c:267
+msgid "Search unsuccessful!"
+msgstr ""
+
+#: src/filename.c:260
+#, c-format
+msgid "Found `%s'."
+msgstr ""
+
+#: src/filename.c:665
+#, c-format
+msgid "Not opening pipe file `%s' because SAFER option set."
+msgstr ""
+
+#: src/flip.c:88
 msgid ""
 "FLIP ignores TEMPORARY.  Temporary transformations will be made permanent."
 msgstr ""
 
-#: src/flip.c:229
+#: src/flip.c:232
 #, c-format
 msgid "Could not create acceptable variant for variable %s."
 msgstr ""
 
-#: src/flip.c:245
+#: src/flip.c:248
 msgid "Cannot create more than 99999 variable names."
 msgstr ""
 
-#: src/flip.c:289
+#: src/flip.c:292
 msgid "Could not create temporary file for FLIP."
 msgstr ""
 
-#: src/flip.c:297 src/flip.c:364
+#: src/flip.c:300 src/flip.c:367
 #, c-format
 msgid "Error writing FLIP file: %s."
 msgstr ""
 
-#: src/flip.c:406
+#: src/flip.c:409
 #, c-format
 msgid "Error rewinding FLIP file: %s."
 msgstr ""
 
-#: src/flip.c:410
+#: src/flip.c:413
 msgid "Error creating FLIP source file."
 msgstr ""
 
-#: src/flip.c:419
+#: src/flip.c:422
 #, c-format
 msgid "Error reading FLIP file: %s."
 msgstr ""
 
-#: src/flip.c:440
+#: src/flip.c:443
 #, c-format
 msgid "Error seeking FLIP source file: %s."
 msgstr ""
 
-#: src/flip.c:445
+#: src/flip.c:448
 #, c-format
 msgid "Error writing FLIP source file: %s."
 msgstr ""
 
-#: src/flip.c:456
+#: src/flip.c:459
 #, c-format
 msgid "Error rewind FLIP source file: %s."
 msgstr ""
 
-#: src/flip.c:508
+#: src/flip.c:511
 #, c-format
 msgid "Error reading FLIP temporary file: %s."
 msgstr ""
 
-#: src/flip.c:511
+#: src/flip.c:514
 msgid "Unexpected end of file reading FLIP temporary file."
 msgstr ""
 
-#: src/format.c:74
+#: src/format.c:77
 msgid "X and T format specifiers not allowed here."
 msgstr ""
 
-#: src/format.c:82
+#: src/format.c:85
 #, c-format
 msgid "%.*s is not a valid data format."
 msgstr ""
 
-#: src/format.c:131
+#: src/format.c:134
 #, c-format
-msgid ""
-"Format %s specifies an odd width %d, but format %s requires an even width."
+msgid "Format %s specifies an odd width %d, but an even width is required."
 msgstr ""
 
-#: src/format.c:139
+#: src/format.c:142
 #, c-format
 msgid ""
 "Format %s specifies a bad number of implied decimal places %d.  Input format "
 "%s allows up to 16 implied decimal places."
 msgstr ""
 
-#: src/format.c:163
+#: src/format.c:166
 #, c-format
 msgid "Format %s may not be used for input."
 msgstr ""
 
-#: src/format.c:169
+#: src/format.c:172
 #, c-format
 msgid ""
 "Input format %s specifies a bad width %d.  Format %s requires a width "
 "between %d and %d."
 msgstr ""
 
-#: src/format.c:179
+#: src/format.c:182
 #, c-format
 msgid ""
 "Input format %s is invalid because it specifies more decimal places than the "
 "field width."
 msgstr ""
 
-#: src/format.c:202
+#: src/format.c:205
 #, c-format
 msgid ""
 "Output format %s specifies a bad width %d.  Format %s requires a width "
 "between %d and %d."
 msgstr ""
 
-#: src/format.c:212
+#: src/format.c:215
 #, c-format
 msgid ""
 "Output format %s is invalid because it specifies as many decimal places as "
@@ -1491,1224 +2080,1431 @@ msgid ""
 "d instead."
 msgstr ""
 
-#: src/format.c:234
+#: src/format.c:237
 #, c-format
 msgid "%s variables are not compatible with %s format %s."
 msgstr ""
 
-#: src/format.c:235 src/pfm-read.c:473 src/sfm-read.c:1027 src/sfm-read.c:1036
+#: src/format.c:238 src/pfm-read.c:477 src/sfm-read.c:1030 src/sfm-read.c:1039
 msgid "String"
 msgstr ""
 
-#: src/format.c:235 src/pfm-read.c:473 src/sfm-read.c:1027 src/sfm-read.c:1036
+#: src/format.c:238 src/pfm-read.c:477 src/sfm-read.c:1030 src/sfm-read.c:1039
 msgid "Numeric"
 msgstr ""
 
-#: src/format.c:255
+#: src/format.c:258
 #, c-format
 msgid "String variable with width %d not compatible with format %s."
 msgstr ""
 
-#: src/format.c:379
+#: src/format.c:382
 msgid "Format specifier expected."
 msgstr ""
 
-#: src/format.c:391
+#: src/format.c:394
 #, c-format
 msgid "Data format %s does not specify a width."
 msgstr ""
 
-#: src/format.c:409
+#: src/format.c:412
 #, c-format
 msgid "Data format %s is not valid."
 msgstr ""
 
-#: src/formats.c:86
+#: src/formats.c:89
 msgid "`(' expected after variable list"
 msgstr ""
 
-#: src/formats.c:96 src/numeric.c:65 src/numeric.c:136
+#: src/formats.c:99 src/numeric.c:68 src/numeric.c:139
 msgid "`)' expected after output format."
 msgstr ""
 
-#: src/get.c:246
-#, c-format
-msgid "The required %s subcommand was not present"
+#: src/frequencies.q:118
+msgid "S.E. Mean"
 msgstr ""
 
-#: src/get.c:252
-#, c-format
-msgid "Unsupported sysfile version: %d. Using version %d instead."
+#: src/frequencies.q:120
+msgid "Mode"
 msgstr ""
 
-#: src/get.c:408 src/print.c:179
-msgid "expecting a valid subcommand"
+#: src/frequencies.q:124
+msgid "S.E. Kurt"
 msgstr ""
 
-#: src/get.c:451
-#, c-format
-msgid ""
-"Cannot rename %s as %s because there already exists a variable named %s.  To "
-"rename variables with overlapping names, use a single RENAME subcommand such "
-"as \"/RENAME (A=B)(B=C)(C=A)\", or equivalently, \"/RENAME (A B C=B C A)\"."
+#: src/frequencies.q:126
+msgid "S.E. Skew"
 msgstr ""
 
-#: src/get.c:476
-msgid "`=' expected after variable list."
+#: src/frequencies.q:401
+msgid ""
+"At most one of BARCHART, HISTOGRAM, or HBAR should be given.  HBAR will be "
+"assumed.  Argument values will be given precedence increasing along the "
+"order given."
 msgstr ""
 
-#: src/get.c:483
+#: src/frequencies.q:484
 #, c-format
 msgid ""
-"Number of variables on left side of `=' (%d) does not match number of "
-"variables on right side (%d), in parenthesized group %d of RENAME subcommand."
+"MAX must be greater than or equal to MIN, if both are specified.  However, "
+"MIN was specified as %g and MAX as %g.  MIN and MAX will be ignored."
 msgstr ""
 
-#: src/get.c:496
-#, c-format
-msgid "Requested renaming duplicates variable name %s."
+#: src/frequencies.q:807
+msgid ""
+"Upper limit of integer mode value range must be greater than lower limit."
 msgstr ""
 
-#: src/get.c:526
-msgid "Cannot DROP all variables from dictionary."
+#: src/frequencies.q:820
+#, c-format
+msgid "Variable %s specified multiple times on VARIABLES subcommand."
 msgstr ""
 
-#: src/get.c:787
-msgid "The active file may not be specified more than once."
+#: src/frequencies.q:826
+#, c-format
+msgid "Integer mode specified, but %s is not a numeric variable."
 msgstr ""
 
-#: src/get.c:796
-msgid "Cannot specify the active file since no active file has been defined."
+#: src/frequencies.q:892
+msgid "`)' expected after GROUPED interval list."
 msgstr ""
 
-#: src/get.c:804
-msgid ""
-"MATCH FILES may not be used after TEMPORARY when the active file is an input "
-"source.  Temporary transformations will be made permanent."
+#: src/frequencies.q:904
+#, c-format
+msgid "Variables %s specified on GROUPED but not on VARIABLES."
 msgstr ""
 
-#: src/get.c:842
-msgid "Multiple IN subcommands for a single FILE or TABLE."
+#: src/frequencies.q:911
+#, c-format
+msgid "Variables %s specified multiple times on GROUPED subcommand."
 msgstr ""
 
-#: src/get.c:862
-msgid "BY may appear at most once."
+#: src/frequencies.q:1142 src/frequencies.q:1234 src/frequencies.q:1235
+#: src/frequencies.q:1267
+msgid "Cum"
 msgstr ""
 
-#: src/get.c:882
-#, c-format
-msgid "File %s lacks BY variable %s."
+#: src/frequencies.q:1144 src/plot-hist.c:129
+msgid "Frequency"
 msgstr ""
 
-#: src/get.c:895
-msgid "FIRST may appear at most once."
+#: src/frequencies.q:1164
+msgid "Value Label"
 msgstr ""
 
-#: src/get.c:909
-msgid "LAST may appear at most once."
+#: src/frequencies.q:1265
+msgid "Freq"
 msgstr ""
 
-#: src/get.c:950
-msgid "BY is required when TABLE is specified."
+#: src/frequencies.q:1266 src/frequencies.q:1268
+msgid "Pct"
 msgstr ""
 
-#: src/get.c:955
-msgid "BY is required when IN is specified."
+#: src/frequencies.q:1487
+#, c-format
+msgid "No valid data for variable %s; statistics not displayed."
+msgstr ""
+
+#: src/get.c:249
+#, c-format
+msgid "The required %s subcommand was not present"
+msgstr ""
+
+#: src/get.c:255
+#, c-format
+msgid "Unsupported sysfile version: %d. Using version %d instead."
+msgstr ""
+
+#: src/get.c:411 src/print.c:182
+msgid "expecting a valid subcommand"
+msgstr ""
+
+#: src/get.c:454
+#, c-format
+msgid ""
+"Cannot rename %s as %s because there already exists a variable named %s.  To "
+"rename variables with overlapping names, use a single RENAME subcommand such "
+"as \"/RENAME (A=B)(B=C)(C=A)\", or equivalently, \"/RENAME (A B C=B C A)\"."
+msgstr ""
+
+#: src/get.c:479
+msgid "`=' expected after variable list."
+msgstr ""
+
+#: src/get.c:486
+#, c-format
+msgid ""
+"Number of variables on left side of `=' (%d) does not match number of "
+"variables on right side (%d), in parenthesized group %d of RENAME subcommand."
+msgstr ""
+
+#: src/get.c:499
+#, c-format
+msgid "Requested renaming duplicates variable name %s."
+msgstr ""
+
+#: src/get.c:529
+msgid "Cannot DROP all variables from dictionary."
+msgstr ""
+
+#: src/get.c:790
+msgid "The active file may not be specified more than once."
+msgstr ""
+
+#: src/get.c:799
+msgid "Cannot specify the active file since no active file has been defined."
+msgstr ""
+
+#: src/get.c:807
+msgid ""
+"MATCH FILES may not be used after TEMPORARY when the active file is an input "
+"source.  Temporary transformations will be made permanent."
+msgstr ""
+
+#: src/get.c:845
+msgid "Multiple IN subcommands for a single FILE or TABLE."
+msgstr ""
+
+#: src/get.c:865
+msgid "BY may appear at most once."
+msgstr ""
+
+#: src/get.c:885
+#, c-format
+msgid "File %s lacks BY variable %s."
+msgstr ""
+
+#: src/get.c:899
+msgid "FIRST may appear at most once."
+msgstr ""
+
+#: src/get.c:913
+msgid "LAST may appear at most once."
+msgstr ""
+
+#: src/get.c:954
+msgid "BY is required when TABLE is specified."
+msgstr ""
+
+#: src/get.c:959
+msgid "BY is required when IN is specified."
 msgstr ""
 
-#: src/get.c:983
+#: src/get.c:987
 #, c-format
 msgid "IN variable name %s duplicates an existing variable name."
 msgstr ""
 
-#: src/get.c:1417
+#: src/get.c:1416
 #, c-format
 msgid ""
 "Variable %s in file %s (%s) has different type or width from the same "
 "variable in earlier file (%s)."
 msgstr ""
 
-#: src/get.c:1508
+#: src/get.c:1507
 msgid "expecting COMM or TAPE"
 msgstr ""
 
-#: src/getline.c:175
+#: src/getl.c:178
 #, c-format
 msgid "Can't find `%s' in include file search path."
 msgstr ""
 
-#: src/getline.c:330
+#: src/getl.c:333
 #, c-format
 msgid "%s: Opening as syntax file."
 msgstr ""
 
-#: src/getline.c:335
+#: src/getl.c:338
 #, c-format
 msgid "Opening `%s': %s."
 msgstr ""
 
-#: src/getline.c:344 src/html.c:348 src/postscript.c:1466
+#: src/getl.c:347 src/html.c:349 src/postscript.c:1461
 #, c-format
 msgid "Reading `%s': %s."
 msgstr ""
 
-#: src/getline.c:402
+#: src/getl.c:405
 #, c-format
 msgid "Closing `%s': %s."
 msgstr ""
 
-#: src/groff-font.c:101
+#: src/groff-font.c:105
 #, c-format
 msgid "%s: Opening Groff font file..."
 msgstr ""
 
-#: src/groff-font.c:155
+#: src/groff-font.c:159
 msgid "Missing font name."
 msgstr ""
 
-#: src/groff-font.c:165
+#: src/groff-font.c:169
 msgid "Missing encoding filename."
 msgstr ""
 
-#: src/groff-font.c:178
+#: src/groff-font.c:182
 msgid "Bad spacewidth value."
 msgstr ""
 
-#: src/groff-font.c:190
+#: src/groff-font.c:194
 msgid "Bad slant value."
 msgstr ""
 
-#: src/groff-font.c:215
+#: src/groff-font.c:219
 #, c-format
 msgid "Unknown ligature `%s'."
 msgstr ""
 
-#: src/groff-font.c:250
+#: src/groff-font.c:254
 msgid "Unexpected end of line reading character set."
 msgstr ""
 
-#: src/groff-font.c:258
+#: src/groff-font.c:262
 msgid "Can't use ditto mark for first character."
 msgstr ""
 
-#: src/groff-font.c:263
+#: src/groff-font.c:267
 msgid "Can't ditto into an unnamed character."
 msgstr ""
 
-#: src/groff-font.c:280
+#: src/groff-font.c:284
 #, c-format
 msgid "Missing metrics for character `%s'."
 msgstr ""
 
-#: src/groff-font.c:289
+#: src/groff-font.c:293
 #, c-format
 msgid "Missing type for character `%s'."
 msgstr ""
 
-#: src/groff-font.c:298
+#: src/groff-font.c:302
 #, c-format
 msgid "Missing code for character `%s'."
 msgstr ""
 
-#: src/groff-font.c:317
+#: src/groff-font.c:321
 msgid "Malformed kernpair."
 msgstr ""
 
-#: src/groff-font.c:324
+#: src/groff-font.c:328
 msgid "Unexpected end of line reading kernpairs."
 msgstr ""
 
-#: src/groff-font.c:330
+#: src/groff-font.c:334
 msgid "Bad kern value."
 msgstr ""
 
-#: src/groff-font.c:362
+#: src/groff-font.c:366
 #, c-format
 msgid "Font read successfully with internal name %s."
 msgstr ""
 
-#: src/groff-font.c:383
+#: src/groff-font.c:387
 msgid "Error reading font."
 msgstr ""
 
-#: src/groff-font.c:394
+#: src/groff-font.c:398
 msgid "installation error: Groff font error: "
 msgstr ""
 
-#: src/groff-font.c:419
+#: src/groff-font.c:423
 #, c-format
 msgid "Bad character \\%3o."
 msgstr ""
 
-#: src/groff-font.c:673
+#: src/groff-font.c:677
 #, c-format
 msgid "Groff font error: Cannot find \"%s\"."
 msgstr ""
 
-#: src/groff-font.c:738
+#: src/groff-font.c:742
 #, c-format
 msgid "%s: Opening Groff description file..."
 msgstr ""
 
-#: src/groff-font.c:754
+#: src/groff-font.c:758
 msgid "Multiple `sizes' declarations."
 msgstr ""
 
-#: src/groff-font.c:771
+#: src/groff-font.c:775
 msgid "Unexpected end of file.  Missing 0 terminator to `sizes' command?"
 msgstr ""
 
-#: src/groff-font.c:783 src/groff-font.c:790 src/groff-font.c:803
+#: src/groff-font.c:787 src/groff-font.c:794 src/groff-font.c:807
 msgid "Bad argument to `sizes'."
 msgstr ""
 
-#: src/groff-font.c:795
+#: src/groff-font.c:799
 msgid "Bad range in argument to `sizes'."
 msgstr ""
 
-#: src/groff-font.c:824
+#: src/groff-font.c:828
 msgid "Family name expected."
 msgstr ""
 
-#: src/groff-font.c:829
+#: src/groff-font.c:833
 msgid "This command already specified."
 msgstr ""
 
-#: src/groff-font.c:849
+#: src/groff-font.c:853
 #, c-format
 msgid "%s: Device characteristic already defined."
 msgstr ""
 
-#: src/groff-font.c:855
+#: src/groff-font.c:859
 #, c-format
 msgid "%s: Invalid numeric format."
 msgstr ""
 
-#: src/groff-font.c:885
+#: src/groff-font.c:889
 msgid "Missing `res', `unitwidth', and/or `sizes' line(s)."
 msgstr ""
 
-#: src/groff-font.c:911
+#: src/groff-font.c:915
 msgid "Description file read successfully."
 msgstr ""
 
-#: src/groff-font.c:943
+#: src/groff-font.c:947
 msgid "Error reading description file."
 msgstr ""
 
-#: src/groff-font.c:1000
+#: src/groff-font.c:1004
 msgid "<<fallback>>"
 msgstr ""
 
-#: src/hash.c:577
+#: src/hash.c:581
 #, c-format
 msgid "hash table:"
 msgstr ""
 
-#: src/html.c:67
+#: src/html.c:72
 #, c-format
 msgid "HTML driver initializing as `%s'..."
 msgstr ""
 
-#: src/html.c:171
+#: src/html.c:176
 #, c-format
 msgid "Unknown configuration parameter `%s' for HTML device driver."
 msgstr ""
 
-#: src/html.c:254
+#: src/html.c:257
 msgid ""
 "Cannot find HTML prologue.  The use of `-vv' on the command line is "
 "suggested as a debugging aid."
 msgstr ""
 
-#: src/html.c:259
+#: src/html.c:262
 #, c-format
 msgid "%s: %s: Opening HTML prologue..."
 msgstr ""
 
-#: src/html.c:286 src/html.c:297 src/postscript.c:1358 src/postscript.c:1369
+#: src/html.c:286 src/postscript.c:1353 src/postscript.c:1364
 msgid "nobody"
 msgstr ""
 
-#: src/html.c:293 src/html.c:298 src/postscript.c:1365 src/postscript.c:1370
+#: src/html.c:295 src/html.c:298 src/postscript.c:1360 src/postscript.c:1365
 msgid "nowhere"
 msgstr ""
 
-#: src/html.c:357
+#: src/html.c:358
 #, c-format
 msgid "%s: HTML prologue read successfully."
 msgstr ""
 
-#: src/html.c:361
+#: src/html.c:362
 #, c-format
 msgid "%s: Error reading HTML prologue."
 msgstr ""
 
-#: src/html.c:389
+#: src/html.c:390
 #, c-format
 msgid "HTML output driver: %s: %s"
 msgstr ""
 
-#: src/html.c:420 src/list.q:252
+#: src/html.c:421 src/list.q:256
 #, c-format
 msgid "Cannot open first page on HTML device %s."
 msgstr ""
 
-#: src/include.c:40
+#: src/include.c:43
 msgid "expecting filename"
 msgstr ""
 
-#: src/inpt-pgm.c:81
+#: src/inpt-pgm.c:84
 msgid "No matching INPUT PROGRAM command."
 msgstr ""
 
-#: src/inpt-pgm.c:86
+#: src/inpt-pgm.c:89
 msgid ""
 "No data-input or transformation commands specified between INPUT PROGRAM and "
 "END INPUT PROGRAM."
 msgstr ""
 
-#: src/inpt-pgm.c:284 src/inpt-pgm.c:412
+#: src/inpt-pgm.c:287 src/inpt-pgm.c:415
 msgid ""
 "This command may only be executed between INPUT PROGRAM and END INPUT "
 "PROGRAM."
 msgstr ""
 
-#: src/inpt-pgm.c:334
+#: src/inpt-pgm.c:337
 msgid "COLUMN subcommand multiply specified."
 msgstr ""
 
-#: src/inpt-pgm.c:385
+#: src/inpt-pgm.c:388
 msgid ""
 "REREAD: Column numbers must be positive finite numbers.  Column set to 1."
 msgstr ""
 
-#: src/lexer.c:252
+#: src/lexer.c:256
 #, c-format
 msgid "%s does not form a valid number."
 msgstr ""
 
-#: src/lexer.c:369
+#: src/lexer.c:373
 #, c-format
 msgid "Bad character in input: `%c'."
 msgstr ""
 
-#: src/lexer.c:371
+#: src/lexer.c:375
 #, c-format
 msgid "Bad character in input: `\\%o'."
 msgstr ""
 
-#: src/lexer.c:409
+#: src/lexer.c:413
 #, c-format
 msgid "Syntax error %s at %s."
 msgstr ""
 
-#: src/lexer.c:412
+#: src/lexer.c:416
 #, c-format
 msgid "Syntax error at %s."
 msgstr ""
 
-#: src/lexer.c:530 src/lexer.c:547
+#: src/lexer.c:534 src/lexer.c:551
 #, c-format
 msgid "expecting `%s'"
 msgstr ""
 
-#: src/lexer.c:561 src/val-labs.c:154
+#: src/lexer.c:565 src/val-labs.c:157
 msgid "expecting string"
 msgstr ""
 
-#: src/lexer.c:575 src/val-labs.c:163
+#: src/lexer.c:579 src/val-labs.c:166
 msgid "expecting integer"
 msgstr ""
 
-#: src/lexer.c:589
+#: src/lexer.c:593
 msgid "expecting number"
 msgstr ""
 
-#: src/lexer.c:603
+#: src/lexer.c:607
 msgid "expecting identifier"
 msgstr ""
 
-#: src/lexer.c:889
+#: src/lexer.c:893
 msgid "<ERROR>"
 msgstr ""
 
-#: src/lexer.c:1023 src/repeat.c:214
+#: src/lexer.c:1027 src/repeat.c:217
 msgid "Unexpected end of file."
 msgstr ""
 
-#: src/lexer.c:1032
+#: src/lexer.c:1036
 msgid "binary"
 msgstr ""
 
-#: src/lexer.c:1032
+#: src/lexer.c:1036
 msgid "octal"
 msgstr ""
 
-#: src/lexer.c:1032
+#: src/lexer.c:1036
 msgid "hex"
 msgstr ""
 
-#: src/lexer.c:1046
+#: src/lexer.c:1050
 #, c-format
 msgid "String of %s digits has %d characters, which is not a multiple of %d."
 msgstr ""
 
-#: src/lexer.c:1075
+#: src/lexer.c:1079
 #, c-format
 msgid "`%c' is not a valid %s digit."
 msgstr ""
 
-#: src/lexer.c:1106
+#: src/lexer.c:1110
 msgid "Unterminated string constant."
 msgstr ""
 
-#: src/lexer.c:1178
+#: src/lexer.c:1182
 #, c-format
 msgid "String exceeds 255 characters in length (%d characters)."
 msgstr ""
 
-#: src/lexer.c:1193
+#: src/lexer.c:1197
 msgid ""
 "Sorry, literal strings may not contain null characters.  Replacing with "
 "spaces."
 msgstr ""
 
-#: src/loop.c:194
+#: src/list.q:154
+#, c-format
+msgid ""
+"The first case (%ld) specified precedes the last case (%ld) specified.  The "
+"values will be swapped."
+msgstr ""
+
+#: src/list.q:162
+#, c-format
+msgid ""
+"The first case (%ld) to list is less than 1.  The value is being reset to 1."
+msgstr ""
+
+#: src/list.q:168
+#, c-format
+msgid ""
+"The last case (%ld) to list is less than 1.  The value is being reset to 1."
+msgstr ""
+
+#: src/list.q:174
+#, c-format
+msgid "The step value %ld is less than 1.  The value is being reset to 1."
+msgstr ""
+
+#: src/list.q:201
+msgid "`/FORMAT WEIGHT' specified, but weighting is not on."
+msgstr ""
+
+#: src/list.q:442
+msgid "Line"
+msgstr ""
+
+#: src/loop.c:197
 msgid "The index variable may not be a string variable."
 msgstr ""
 
-#: src/loop.c:300
+#: src/loop.c:303
 msgid "There is no LOOP command that corresponds to this END LOOP."
 msgstr ""
 
-#: src/loop.c:494
+#: src/loop.c:497
 msgid ""
 "This command may only appear enclosed in a LOOP/END LOOP control structure."
 msgstr ""
 
-#: src/loop.c:500
+#: src/loop.c:503
 msgid "BREAK not enclosed in DO IF structure."
 msgstr ""
 
-#: src/loop.c:578
+#: src/loop.c:581
 #, c-format
 msgid "%s without %s."
 msgstr ""
 
-#: src/main.c:86
+#: src/main.c:89
 msgid "Error initializing output drivers."
 msgstr ""
 
-#: src/main.c:156
+#: src/main.c:159
 msgid "This command not executed."
 msgstr ""
 
-#: src/main.c:160
+#: src/main.c:163
 msgid ""
 "Skipping the rest of this command.  Part of this command may have been "
 "executed."
 msgstr ""
 
-#: src/main.c:165
+#: src/main.c:168
 msgid ""
 "Skipping the rest of this command.  This command was fully executed up to "
 "this point."
 msgstr ""
 
-#: src/main.c:170
+#: src/main.c:173
 msgid ""
 "Trailing garbage was encountered following this command.  The command was "
 "fully executed to this point."
 msgstr ""
 
-#: src/main.c:187
+#: src/main.c:190
 msgid "The rest of this command has been discarded."
 msgstr ""
 
-#: src/matrix-data.c:208
+#: src/matrix-data.c:211
 msgid "VARIABLES subcommand multiply specified."
 msgstr ""
 
-#: src/matrix-data.c:223
+#: src/matrix-data.c:226
 msgid "VARNAME_ cannot be explicitly specified on VARIABLES."
 msgstr ""
 
-#: src/matrix-data.c:284
+#: src/matrix-data.c:287
 msgid "in FORMAT subcommand"
 msgstr ""
 
-#: src/matrix-data.c:295
+#: src/matrix-data.c:298
 msgid "SPLIT subcommand multiply specified."
 msgstr ""
 
-#: src/matrix-data.c:302
+#: src/matrix-data.c:305
 msgid "in SPLIT subcommand"
 msgstr ""
 
-#: src/matrix-data.c:312
+#: src/matrix-data.c:315
 msgid "Split variable may not be named ROWTYPE_ or VARNAME_."
 msgstr ""
 
-#: src/matrix-data.c:346
+#: src/matrix-data.c:349
 #, c-format
 msgid "Split variable %s is already another type."
 msgstr ""
 
-#: src/matrix-data.c:361
+#: src/matrix-data.c:364
 msgid "FACTORS subcommand multiply specified."
 msgstr ""
 
-#: src/matrix-data.c:379
+#: src/matrix-data.c:382
 #, c-format
 msgid "Factor variable %s is already another type."
 msgstr ""
 
-#: src/matrix-data.c:394
+#: src/matrix-data.c:397
 msgid "CELLS subcommand multiply specified."
 msgstr ""
 
-#: src/matrix-data.c:400 src/matrix-data.c:419
+#: src/matrix-data.c:403 src/matrix-data.c:422
 msgid "expecting positive integer"
 msgstr ""
 
-#: src/matrix-data.c:413
+#: src/matrix-data.c:416
 msgid "N subcommand multiply specified."
 msgstr ""
 
-#: src/matrix-data.c:434
+#: src/matrix-data.c:437
 msgid "CONTENTS subcommand multiply specified."
 msgstr ""
 
-#: src/matrix-data.c:454
+#: src/matrix-data.c:457
 msgid "Nested parentheses not allowed."
 msgstr ""
 
-#: src/matrix-data.c:464
+#: src/matrix-data.c:467
 msgid "Mismatched right parenthesis (`(')."
 msgstr ""
 
-#: src/matrix-data.c:469
+#: src/matrix-data.c:472
 msgid "Empty parentheses not allowed."
 msgstr ""
 
-#: src/matrix-data.c:482 src/matrix-data.c:490
+#: src/matrix-data.c:485 src/matrix-data.c:493
 msgid "in CONTENTS subcommand"
 msgstr ""
 
-#: src/matrix-data.c:497
+#: src/matrix-data.c:500
 #, c-format
 msgid "Content multiply specified for %s."
 msgstr ""
 
-#: src/matrix-data.c:514
+#: src/matrix-data.c:517
 msgid "Missing right parenthesis."
 msgstr ""
 
-#: src/matrix-data.c:534
+#: src/matrix-data.c:537
 msgid "Missing VARIABLES subcommand."
 msgstr ""
 
-#: src/matrix-data.c:540
+#: src/matrix-data.c:543
 msgid ""
 "CONTENTS subcommand not specified: assuming file contains only CORR matrix."
 msgstr ""
 
-#: src/matrix-data.c:550
+#: src/matrix-data.c:553
 msgid ""
 "Missing CELLS subcommand.  CELLS is required when ROWTYPE_ is not given in "
 "the data and factors are present."
 msgstr ""
 
-#: src/matrix-data.c:558
+#: src/matrix-data.c:561
 msgid "Split file values must be present in the data when ROWTYPE_ is present."
 msgstr ""
 
-#: src/matrix-data.c:611
+#: src/matrix-data.c:614
 msgid "No continuous variables specified."
 msgstr ""
 
-#: src/matrix-data.c:854
+#: src/matrix-data.c:857
 msgid "Scope of string exceeds line."
 msgstr ""
 
-#: src/matrix-data.c:919
+#: src/matrix-data.c:922
 #, c-format
 msgid "End of line expected %s while reading %s."
 msgstr ""
 
-#: src/matrix-data.c:1104
+#: src/matrix-data.c:1107
 #, c-format
 msgid "expecting value for %s %s"
 msgstr ""
 
-#: src/matrix-data.c:1268
+#: src/matrix-data.c:1271
 #, c-format
 msgid "Syntax error expecting SPLIT FILE value %s."
 msgstr ""
 
-#: src/matrix-data.c:1277
+#: src/matrix-data.c:1280
 #, c-format
 msgid "Expecting value %g for %s."
 msgstr ""
 
-#: src/matrix-data.c:1318 src/matrix-data.c:1781
+#: src/matrix-data.c:1321 src/matrix-data.c:1784
 #, c-format
 msgid "Syntax error expecting factor value %s."
 msgstr ""
 
-#: src/matrix-data.c:1327
+#: src/matrix-data.c:1330
 #, c-format
 msgid "Syntax error expecting value %g for %s %s."
 msgstr ""
 
-#: src/matrix-data.c:1561
+#: src/matrix-data.c:1564
 #, c-format
 msgid "Syntax error %s expecting SPLIT FILE value."
 msgstr ""
 
-#: src/matrix-data.c:1688
+#: src/matrix-data.c:1691
 #, c-format
 msgid ""
 "Expected %d lines of data for %s content; actually saw %d lines.  No data "
 "will be output for this content."
 msgstr ""
 
-#: src/matrix-data.c:1723
+#: src/matrix-data.c:1726
 #, c-format
 msgid "Multiply specified ROWTYPE_ %s."
 msgstr ""
 
-#: src/matrix-data.c:1728
+#: src/matrix-data.c:1731
 #, c-format
 msgid "Syntax error %s expecting ROWTYPE_ string."
 msgstr ""
 
-#: src/matrix-data.c:1748
+#: src/matrix-data.c:1751
 #, c-format
 msgid "Syntax error %s."
 msgstr ""
 
-#: src/matrix-data.c:1898
+#: src/matrix-data.c:1901
 #, c-format
 msgid "Duplicate specification for %s."
 msgstr ""
 
-#: src/matrix-data.c:1910
+#: src/matrix-data.c:1913
 #, c-format
 msgid "Too many rows of matrix data for %s."
 msgstr ""
 
-#: src/matrix-data.c:1958
+#: src/matrix-data.c:1961
 #, c-format
 msgid "Syntax error expecting value for %s %s."
 msgstr ""
 
-#: src/mis-val.c:71
+#: src/means.q:104
+msgid "Missing required subcommand TABLES."
+msgstr ""
+
+#: src/means.q:138
+msgid "TABLES subcommand may not appear more than once."
+msgstr ""
+
+#: src/mis-val.c:74
 msgid "`)' expected after value specification."
 msgstr ""
 
-#: src/mis-val.c:101
+#: src/mis-val.c:104
 #, c-format
 msgid "`(' expected after variable name%s."
 msgstr ""
 
-#: src/mis-val.c:113
+#: src/mis-val.c:116
 msgid "Long string value specified."
 msgstr ""
 
-#: src/mis-val.c:118
+#: src/mis-val.c:121
 msgid "Short strings must be of equal width."
 msgstr ""
 
-#: src/mis-val.c:175
+#: src/mis-val.c:178
 #, c-format
 msgid "Range %g THRU %g is not valid because %g is greater than %g."
 msgstr ""
 
-#: src/mis-val.c:206
+#: src/mis-val.c:209
 msgid "Number or range expected."
 msgstr ""
 
-#: src/mis-val.c:239
+#: src/mis-val.c:242
 msgid "At most one range can exist in the missing values for any one variable."
 msgstr ""
 
-#: src/mis-val.c:245
+#: src/mis-val.c:248
 msgid "At most one individual value can be missing along with one range."
 msgstr ""
 
-#: src/mis-val.c:307
+#: src/mis-val.c:310
 msgid "String is not of proper length."
 msgstr ""
 
-#: src/mis-val.c:316 src/repeat.c:460
+#: src/mis-val.c:319 src/repeat.c:463
 msgid "String expected."
 msgstr ""
 
-#: src/mkfile.c:52
+#: src/mkfile.c:54
 #, c-format
 msgid "%s: Creating temporary file: %s."
 msgstr ""
 
-#: src/mkfile.c:94
+#: src/mkfile.c:96
 #, c-format
 msgid "%s: Creating file: %s."
 msgstr ""
 
-#: src/modify-vars.c:89
+#: src/modify-vars.c:92
 msgid ""
 "MODIFY VARS may not be used after TEMPORARY.  Temporary transformations will "
 "be made permanent."
 msgstr ""
 
-#: src/modify-vars.c:113
+#: src/modify-vars.c:116
 msgid "REORDER subcommand may be given at most once."
 msgstr ""
 
-#: src/modify-vars.c:136
+#: src/modify-vars.c:139
 msgid "Cannot specify ALL after specifying a set of variables."
 msgstr ""
 
-#: src/modify-vars.c:146
+#: src/modify-vars.c:149
 msgid "`(' expected on REORDER subcommand."
 msgstr ""
 
-#: src/modify-vars.c:158
+#: src/modify-vars.c:161
 msgid "`)' expected following variable names on REORDER subcommand."
 msgstr ""
 
-#: src/modify-vars.c:176
+#: src/modify-vars.c:179
 msgid "RENAME subcommand may be given at most once."
 msgstr ""
 
-#: src/modify-vars.c:189
+#: src/modify-vars.c:192
 msgid "`(' expected on RENAME subcommand."
 msgstr ""
 
-#: src/modify-vars.c:197
+#: src/modify-vars.c:200
 msgid ""
 "`=' expected between lists of new and old variable names on RENAME "
 "subcommand."
 msgstr ""
 
-#: src/modify-vars.c:205 src/rename-vars.c:75
+#: src/modify-vars.c:208 src/rename-vars.c:78
 #, c-format
 msgid ""
 "Differing number of variables in old name list (%d) and in new name list (%"
 "d)."
 msgstr ""
 
-#: src/modify-vars.c:216
+#: src/modify-vars.c:219
 msgid "`)' expected after variable lists on RENAME subcommand."
 msgstr ""
 
-#: src/modify-vars.c:230
+#: src/modify-vars.c:233
 msgid ""
 "KEEP subcommand may be given at most once.  It may notbe given in "
 "conjunction with the DROP subcommand."
 msgstr ""
 
-#: src/modify-vars.c:272
+#: src/modify-vars.c:275
 msgid ""
 "DROP subcommand may be given at most once.  It may not be given in "
 "conjunction with the KEEP subcommand."
 msgstr ""
 
-#: src/modify-vars.c:298
+#: src/modify-vars.c:301
 #, c-format
 msgid "Unrecognized subcommand name `%s'."
 msgstr ""
 
-#: src/modify-vars.c:300
+#: src/modify-vars.c:303
 msgid "Subcommand name expected."
 msgstr ""
 
-#: src/modify-vars.c:308
+#: src/modify-vars.c:311
 msgid "`/' or `.' expected."
 msgstr ""
 
-#: src/moments.c:513
+#: src/moments.c:516
 msgid "expecting weight value"
 msgstr ""
 
-#: src/numeric.c:58
+#: src/numeric.c:61
 #, c-format
 msgid "Format type %s may not be used with a numeric variable."
 msgstr ""
 
-#: src/numeric.c:77 src/numeric.c:159 src/vector.c:156
+#: src/numeric.c:80 src/numeric.c:162 src/vector.c:159
 #, c-format
 msgid "There is already a variable named %s."
 msgstr ""
 
-#: src/numeric.c:129
+#: src/numeric.c:132
 #, c-format
 msgid "Format type %s may not be used with a string variable."
 msgstr ""
 
-#: src/output.c:86
+#: src/oneway.q:174
+msgid "Number of contrast coefficients must equal the number of groups"
+msgstr ""
+
+#: src/oneway.q:183
+#, c-format
+msgid "Coefficients for contrast %d do not total zero"
+msgstr ""
+
+#: src/oneway.q:248
+#, c-format
+msgid "`%s' is not a variable name"
+msgstr ""
+
+#: src/oneway.q:283
+msgid "Sum of Squares"
+msgstr ""
+
+#: src/oneway.q:285
+msgid "Mean Square"
+msgstr ""
+
+#: src/oneway.q:286 src/t-test.q:974
+msgid "F"
+msgstr ""
+
+#: src/oneway.q:287 src/oneway.q:540
+msgid "Significance"
+msgstr ""
+
+#: src/oneway.q:309
+msgid "Between Groups"
+msgstr ""
+
+#: src/oneway.q:310
+msgid "Within Groups"
+msgstr ""
+
+#: src/oneway.q:357
+msgid "ANOVA"
+msgstr ""
+
+#: src/oneway.q:537
+msgid "Levene Statistic"
+msgstr ""
+
+#: src/oneway.q:538
+msgid "df1"
+msgstr ""
+
+#: src/oneway.q:539
+msgid "df2"
+msgstr ""
+
+#: src/oneway.q:543
+msgid "Test of Homogeneity of Variances"
+msgstr ""
+
+#: src/oneway.q:613
+msgid "Contrast Coefficients"
+msgstr ""
+
+#: src/oneway.q:615 src/oneway.q:682
+msgid "Contrast"
+msgstr ""
+
+#: src/oneway.q:680
+msgid "Contrast Tests"
+msgstr ""
+
+#: src/oneway.q:683
+msgid "Value of Contrast"
+msgstr ""
+
+#: src/oneway.q:685 src/t-test.q:976 src/t-test.q:1168 src/t-test.q:1260
+msgid "t"
+msgstr ""
+
+#: src/oneway.q:687 src/t-test.q:978 src/t-test.q:1170 src/t-test.q:1262
+msgid "Sig. (2-tailed)"
+msgstr ""
+
+#: src/oneway.q:731
+msgid "Assume equal variances"
+msgstr ""
+
+#: src/oneway.q:735
+msgid "Does not assume equal"
+msgstr ""
+
+#: src/output.c:89
 msgid "Attempt to iterate driver list reentrantly."
 msgstr ""
 
-#: src/output.c:163
+#: src/output.c:166
 #, c-format
 msgid "Unknown output driver `%s'."
 msgstr ""
 
-#: src/output.c:165
+#: src/output.c:168
 #, c-format
 msgid "Output driver `%s' referenced but never defined."
 msgstr ""
 
-#: src/output.c:295
-msgid "Cannot find output initialization file.  Use `-vv' to view search path."
+#: src/output.c:298
+msgid ""
+"Cannot find output initialization file.  Use `-vvvv' to view search path."
 msgstr ""
 
-#: src/output.c:300
+#: src/output.c:303
 #, c-format
 msgid "%s: Opening device description file..."
 msgstr ""
 
-#: src/output.c:304 src/output.c:1175 src/postscript.c:1102
+#: src/output.c:307 src/output.c:1183 src/postscript.c:1097
 #, c-format
 msgid "Opening %s: %s."
 msgstr ""
 
-#: src/output.c:315 src/output.c:1186 src/postscript.c:1117
+#: src/output.c:318 src/output.c:1194 src/postscript.c:1112
 #, c-format
 msgid "Reading %s: %s."
 msgstr ""
 
-#: src/output.c:337 src/output.c:499
+#: src/output.c:340 src/output.c:507
 msgid "Syntax error."
 msgstr ""
 
-#: src/output.c:347 src/postscript.c:1128
+#: src/output.c:350 src/postscript.c:1123
 #, c-format
 msgid "Closing %s: %s."
 msgstr ""
 
-#: src/output.c:352
+#: src/output.c:355
 msgid "No output drivers are active."
 msgstr ""
 
-#: src/output.c:355
+#: src/output.c:358
 msgid "Device definition file read successfully."
 msgstr ""
 
-#: src/output.c:357
+#: src/output.c:360
 msgid "Error reading device definition file."
 msgstr ""
 
-#: src/output.c:471
+#: src/output.c:479
 #, c-format
 msgid ""
 "Driver classes:\n"
 "\t"
 msgstr ""
 
-#: src/output.c:600
+#: src/output.c:608
 msgid "Syntax error in string constant."
 msgstr ""
 
-#: src/output.c:632
+#: src/output.c:640
 msgid "Syntax error in options."
 msgstr ""
 
-#: src/output.c:642
+#: src/output.c:650
 msgid "Syntax error in options (`=' expected)."
 msgstr ""
 
-#: src/output.c:649
+#: src/output.c:657
 msgid "Syntax error in options (value expected after `=')."
 msgstr ""
 
-#: src/output.c:721
+#: src/output.c:729
 msgid "Driver name expected."
 msgstr ""
 
-#: src/output.c:742
+#: src/output.c:750
 msgid "Class name expected."
 msgstr ""
 
-#: src/output.c:751
+#: src/output.c:759
 #, c-format
 msgid "Unknown output driver class `%s'."
 msgstr ""
 
-#: src/output.c:758
+#: src/output.c:766
 #, c-format
 msgid "Can't initialize output driver class `%s'."
 msgstr ""
 
-#: src/output.c:765
+#: src/output.c:773
 #, c-format
 msgid "Can't initialize output driver `%s' of class `%s'."
 msgstr ""
 
-#: src/output.c:787
+#: src/output.c:795
 #, c-format
 msgid "Unknown device type `%s'."
 msgstr ""
 
-#: src/output.c:799
+#: src/output.c:807
 #, c-format
 msgid "Can't complete initialization of output driver `%s' of class `%s'."
 msgstr ""
 
-#: src/output.c:846
+#: src/output.c:854
 #, c-format
 msgid "Can't deinitialize output driver class `%s'."
 msgstr ""
 
-#: src/output.c:919
+#: src/output.c:927
 #, c-format
 msgid "Trying to find keyword `%s'...\n"
 msgstr ""
 
-#: src/output.c:1036
+#: src/output.c:1044
 #, c-format
 msgid "Unit \"%s\" is unknown in dimension \"%s\"."
 msgstr ""
 
-#: src/output.c:1051
+#: src/output.c:1059
 #, c-format
 msgid "Bad dimension \"%s\"."
 msgstr ""
 
-#: src/output.c:1077
+#: src/output.c:1085
 #, c-format
 msgid "`x' expected in paper size `%s'."
 msgstr ""
 
-#: src/output.c:1087
+#: src/output.c:1095
 #, c-format
 msgid "Trailing garbage `%s' on paper size `%s'."
 msgstr ""
 
-#: src/output.c:1136
+#: src/output.c:1144
 msgid "Paper size name must not be empty."
 msgstr ""
 
-#: src/output.c:1167
+#: src/output.c:1175
 msgid "Cannot find `papersize' configuration file."
 msgstr ""
 
-#: src/output.c:1171
+#: src/output.c:1179
 #, c-format
 msgid "%s: Opening paper size definition file..."
 msgstr ""
 
-#: src/output.c:1213
+#: src/output.c:1221
 msgid "Syntax error in paper size definition."
 msgstr ""
 
-#: src/output.c:1242
+#: src/output.c:1250
 msgid "Paper size definition file read successfully."
 msgstr ""
 
-#: src/output.c:1244
+#: src/output.c:1252
 msgid "Error reading paper size definition file."
 msgstr ""
 
-#: src/output.c:1313
+#: src/output.c:1321
 #, c-format
 msgid "Error closing page on %s device of %s class."
 msgstr ""
 
-#: src/output.c:1317
+#: src/output.c:1325
 #, c-format
 msgid "Error opening page on %s device of %s class."
 msgstr ""
 
-#: src/percentiles.c:38
+#: src/percentiles.c:42
 msgid "HAverage"
 msgstr ""
 
-#: src/percentiles.c:39
+#: src/percentiles.c:43
 msgid "Weighted Average"
 msgstr ""
 
-#: src/percentiles.c:40
+#: src/percentiles.c:44
 msgid "Rounded"
 msgstr ""
 
-#: src/percentiles.c:41
+#: src/percentiles.c:45
 msgid "Empirical"
 msgstr ""
 
-#: src/percentiles.c:42
+#: src/percentiles.c:46
 msgid "Empirical with averaging"
 msgstr ""
 
-#: src/permissions.c:76
+#: src/permissions.c:77
 #, c-format
 msgid "Expecting %s or %s."
 msgstr ""
 
-#: src/permissions.c:109
+#: src/permissions.c:110
 #, c-format
 msgid "Cannot stat %s: %s"
 msgstr ""
 
-#: src/permissions.c:122
+#: src/permissions.c:123
 #, c-format
 msgid "Cannot change mode of %s: %s"
 msgstr ""
 
-#: src/pfm-read.c:85
+#: src/pfm-read.c:88
 #, c-format
 msgid "portable file %s corrupt at offset %ld: "
 msgstr ""
 
-#: src/pfm-read.c:112
+#: src/pfm-read.c:115
 msgid "unexpected end of file"
 msgstr ""
 
-#: src/pfm-read.c:170
+#: src/pfm-read.c:173
 #, c-format
 msgid ""
 "An error occurred while opening \"%s\" for reading as a portable file: %s."
 msgstr ""
 
-#: src/pfm-read.c:188
+#: src/pfm-read.c:191
 msgid "Data record expected."
 msgstr ""
 
-#: src/pfm-read.c:296
+#: src/pfm-read.c:299
 msgid "Missing numeric terminator."
 msgstr ""
 
-#: src/pfm-read.c:319
+#: src/pfm-read.c:322
 msgid "Invalid integer."
 msgstr ""
 
-#: src/pfm-read.c:330
+#: src/pfm-read.c:333
 #, c-format
 msgid "Bad string length %d."
 msgstr ""
 
-#: src/pfm-read.c:401
+#: src/pfm-read.c:404
 #, c-format
 msgid "%s: Not a portable file."
 msgstr ""
 
-#: src/pfm-read.c:425
+#: src/pfm-read.c:429
 #, c-format
 msgid "Bad date string length %d."
 msgstr ""
 
-#: src/pfm-read.c:427
+#: src/pfm-read.c:431
 #, c-format
 msgid "Bad time string length %d."
 msgstr ""
 
-#: src/pfm-read.c:465 src/sfm-read.c:1019
+#: src/pfm-read.c:469 src/sfm-read.c:1022
 #, c-format
 msgid "%s: Bad format specifier byte (%d)."
 msgstr ""
 
-#: src/pfm-read.c:472 src/sfm-read.c:1035
+#: src/pfm-read.c:476 src/sfm-read.c:1038
 #, c-format
 msgid "%s variable %s has invalid format specifier %s."
 msgstr ""
 
-#: src/pfm-read.c:487
+#: src/pfm-read.c:491
 msgid "Expected variable count record."
 msgstr ""
 
-#: src/pfm-read.c:491
+#: src/pfm-read.c:495
 #, c-format
 msgid "Invalid number of variables %d."
 msgstr ""
 
-#: src/pfm-read.c:501
+#: src/pfm-read.c:505
 #, c-format
 msgid "Weight variable name (%s) truncated."
 msgstr ""
 
-#: src/pfm-read.c:513
+#: src/pfm-read.c:517
 msgid "Expected variable record."
 msgstr ""
 
-#: src/pfm-read.c:517
+#: src/pfm-read.c:521
 #, c-format
 msgid "Invalid variable width %d."
 msgstr ""
 
-#: src/pfm-read.c:525
+#: src/pfm-read.c:529
 #, c-format
 msgid "position %d: Invalid variable name `%s'."
 msgstr ""
 
-#: src/pfm-read.c:533
-#, c-format
-msgid "Duplicate variable name %s."
-msgstr ""
-
-#: src/pfm-read.c:573
+#: src/pfm-read.c:577
 #, c-format
 msgid "Bad missing values for %s."
 msgstr ""
 
-#: src/pfm-read.c:591
+#: src/pfm-read.c:595
 #, c-format
 msgid "Weighting variable %s not present in dictionary."
 msgstr ""
 
-#: src/pfm-read.c:638
+#: src/pfm-read.c:642
 #, c-format
 msgid "Unknown variable %s while parsing value labels."
 msgstr ""
 
-#: src/pfm-read.c:641
+#: src/pfm-read.c:645
 #, c-format
 msgid ""
 "Cannot assign value labels to %s and %s, which have different variable types "
 "or widths."
 msgstr ""
 
-#: src/pfm-read.c:665
+#: src/pfm-read.c:669
 #, c-format
 msgid "Duplicate label for value %g for variable %s."
 msgstr ""
 
-#: src/pfm-read.c:668
+#: src/pfm-read.c:672
 #, c-format
 msgid "Duplicate label for value `%.*s' for variable %s."
 msgstr ""
 
-#: src/pfm-write.c:93
+#: src/pfm-write.c:99
 #, c-format
 msgid ""
 "An error occurred while opening \"%s\" for writing as a portable file: %s."
 msgstr ""
 
-#: src/pfm-write.c:155
+#: src/pfm-write.c:161
 #, c-format
 msgid "%s: Writing portable file: %s."
 msgstr ""
 
-#: src/pfm-write.c:493
+#: src/pfm-write.c:410
 #, c-format
 msgid "%s: Closing portable file: %s."
 msgstr ""
 
-#: src/plot-hist.c:126
+#: src/plot-hist.c:127
 msgid "HISTOGRAM"
 msgstr ""
 
-#: src/plot-hist.c:128 src/frequencies.q:1139
-msgid "Frequency"
-msgstr ""
-
-#: src/postscript.c:326
+#: src/postscript.c:321
 #, c-format
 msgid "PostScript driver initializing as `%s'..."
 msgstr ""
 
-#: src/postscript.c:450
+#: src/postscript.c:445
 #, c-format
 msgid ""
 "PostScript driver: The defined page is not long enough to hold margins and "
@@ -2716,195 +3512,200 @@ msgid ""
 "room for %d lines of each font at the default size of %d.%03d points."
 msgstr ""
 
-#: src/postscript.c:580
+#: src/postscript.c:575
 #, c-format
 msgid "Unknown configuration parameter `%s' for PostScript device driver."
 msgstr ""
 
-#: src/postscript.c:596
+#: src/postscript.c:591
 #, c-format
 msgid ""
 "Unknown orientation `%s'.  Valid orientations are `portrait' and `landscape'."
 msgstr ""
 
-#: src/postscript.c:608
+#: src/postscript.c:603
 msgid ""
 "Unknown value for `data'.  Valid values are `clean7bit', `clean8bit', and "
 "`binary'."
 msgstr ""
 
-#: src/postscript.c:617
+#: src/postscript.c:612
 msgid "Unknown value for `line-ends'.  Valid values are `lf' and `crlf'."
 msgstr ""
 
-#: src/postscript.c:626
+#: src/postscript.c:621
 msgid "Unknown value for `line-style'.  Valid values are `thick' and `double'."
 msgstr ""
 
-#: src/postscript.c:689
+#: src/postscript.c:684
 #, c-format
 msgid ""
 "Default font size must be at least 1 point (value of 1000 for key `%s')."
 msgstr ""
 
-#: src/postscript.c:721
+#: src/postscript.c:716
 #, c-format
 msgid "Value for `%s' must be a dimension of positive length (i.e., `1in')."
 msgstr ""
 
-#: src/postscript.c:785
+#: src/postscript.c:780
 #, c-format
 msgid "Nonnegative integer required as value for `%s'."
 msgstr ""
 
-#: src/postscript.c:911
+#: src/postscript.c:906
 #, c-format
 msgid "%s: %s: Opening PostScript font encoding..."
 msgstr ""
 
-#: src/postscript.c:917
+#: src/postscript.c:912
 #, c-format
 msgid ""
 "PostScript driver: Cannot open encoding file `%s': %s.  Substituting "
 "ISOLatin1Encoding for missing encoding."
 msgstr ""
 
-#: src/postscript.c:959
+#: src/postscript.c:954
 msgid "PostScript driver: Invalid numeric format."
 msgstr ""
 
-#: src/postscript.c:964
+#: src/postscript.c:959
 #, c-format
 msgid ""
 "PostScript driver: Codes must be between 0 and 255.  (%d is not allowed.)"
 msgstr ""
 
-#: src/postscript.c:1000
+#: src/postscript.c:995
 #, c-format
 msgid "PostScript driver: Error closing encoding file `%s'."
 msgstr ""
 
-#: src/postscript.c:1003
+#: src/postscript.c:998
 #, c-format
 msgid "%s: PostScript font encoding read successfully."
 msgstr ""
 
-#: src/postscript.c:1097
+#: src/postscript.c:1092
 #, c-format
 msgid "%s: %s: Opening PostScript encoding list file."
 msgstr ""
 
-#: src/postscript.c:1130
+#: src/postscript.c:1125
 #, c-format
 msgid "%s: PostScript encoding list file read successfully."
 msgstr ""
 
-#: src/postscript.c:1144
+#: src/postscript.c:1139
 msgid "<<default encoding>>"
 msgstr ""
 
-#: src/postscript.c:1302
+#: src/postscript.c:1297
 msgid ""
 "Cannot find PostScript prologue.  The use of `-vv' on the command line is "
 "suggested as a debugging aid."
 msgstr ""
 
-#: src/postscript.c:1307
+#: src/postscript.c:1302
 #, c-format
 msgid "%s: %s: Opening PostScript prologue..."
 msgstr ""
 
-#: src/postscript.c:1479
+#: src/postscript.c:1474
 #, c-format
 msgid "%s: PostScript prologue read successfully."
 msgstr ""
 
-#: src/postscript.c:1483
+#: src/postscript.c:1478
 #, c-format
 msgid "%s: Error reading PostScript prologue."
 msgstr ""
 
-#: src/postscript.c:1653
+#: src/postscript.c:1648
 #, c-format
 msgid "PostScript output driver: %s: %s"
 msgstr ""
 
-#: src/postscript.c:2337
+#: src/postscript.c:2347
 #, c-format
 msgid "PostScript driver: Cannot find encoding `%s' for PostScript font `%s'."
 msgstr ""
 
-#: src/postscript.c:2885
-msgid "Charts are currently unsupported with postscript drivers."
-msgstr ""
-
-#: src/print.c:365 src/print.c:382
+#: src/print.c:368 src/print.c:385
 #, c-format
 msgid "%g is not a valid column location."
 msgstr ""
 
-#: src/print.c:376
+#: src/print.c:379
 #, c-format
 msgid "Column location expected following `%d-'."
 msgstr ""
 
-#: src/print.c:387
+#: src/print.c:390
 #, c-format
 msgid ""
 "%d-%ld is not a valid column range.  The second column must be greater than "
 "or equal to the first."
 msgstr ""
 
-#: src/print.c:488
+#: src/print.c:491
 #, c-format
 msgid "Variable %s has width %d so it cannot be output as format %s."
 msgstr ""
 
-#: src/print.c:508
+#: src/print.c:511
 #, c-format
 msgid ""
 "%s is not of the same type as %s.  To specify variables of different types "
 "in the same variable list, use a FORTRAN-like format specifier."
 msgstr ""
 
-#: src/print.c:538
+#: src/print.c:541
 msgid ""
 "The ending column for a field must not be less than the starting column."
 msgstr ""
 
-#: src/print.c:686
+#: src/print.c:689
 msgid ""
 "The number of format specifications exceeds the number of variable names "
 "given."
 msgstr ""
 
-#: src/print.c:838
+#: src/print.c:841
 #, c-format
 msgid "Writing %d record(s) to file %s."
 msgstr ""
 
-#: src/print.c:841
+#: src/print.c:844
 #, c-format
 msgid "Writing %d record(s) to the listing file."
 msgstr ""
 
-#: src/print.c:1088
+#: src/print.c:1091
 msgid "The expression on PRINT SPACE evaluated to the system-missing value."
 msgstr ""
 
-#: src/print.c:1091
+#: src/print.c:1094
 #, c-format
 msgid "The expression on PRINT SPACE evaluated to %g."
 msgstr ""
 
-#: src/recode.c:283
+#: src/rank.q:242
+#, c-format
+msgid "Variable %s already exists."
+msgstr ""
+
+#: src/rank.q:247
+msgid "Too many variables in INTO clause."
+msgstr ""
+
+#: src/recode.c:286
 #, c-format
 msgid ""
 "%d variable(s) cannot be recoded into %d variable(s).  Specify the same "
 "number of variables as input and output variables."
 msgstr ""
 
-#: src/recode.c:297
+#: src/recode.c:300
 #, c-format
 msgid ""
 "There is no string variable named %s.  (All string variables specified on "
@@ -2912,83 +3713,83 @@ msgid ""
 "variable.)"
 msgstr ""
 
-#: src/recode.c:306
+#: src/recode.c:309
 #, c-format
 msgid ""
 "Type mismatch between input and output variables.  Output variable %s is not "
 "a string variable, but all the input variables are string variables."
 msgstr ""
 
-#: src/recode.c:325
+#: src/recode.c:328
 #, c-format
 msgid "Type mismatch after INTO: %s is not a numeric variable."
 msgstr ""
 
-#: src/recode.c:355
+#: src/recode.c:358
 msgid ""
 "INTO must be used when the input values are numeric and output values are "
 "string."
 msgstr ""
 
-#: src/recode.c:363
+#: src/recode.c:366
 msgid ""
 "INTO must be used when the input values are string and output values are "
 "numeric."
 msgstr ""
 
-#: src/recode.c:486
+#: src/recode.c:489
 msgid "expecting output value"
 msgstr ""
 
-#: src/recode.c:500
+#: src/recode.c:503
 msgid ""
 "Inconsistent output types.  The output values must be all numeric or all "
 "string."
 msgstr ""
 
-#: src/recode.c:551
+#: src/recode.c:554
 msgid "following LO THRU"
 msgstr ""
 
-#: src/recode.c:567 src/recode.c:596
+#: src/recode.c:570 src/recode.c:599
 msgid "in source value"
 msgstr ""
 
-#: src/recode.c:609
+#: src/recode.c:612
 msgid ""
 "Keyword CONVERT may only be used with string input values and numeric output "
 "values."
 msgstr ""
 
-#: src/rename-vars.c:48
+#: src/rename-vars.c:51
 msgid ""
 "RENAME VARS may not be used after TEMPORARY.  Temporary transformations will "
 "be made permanent."
 msgstr ""
 
-#: src/rename-vars.c:60
+#: src/rename-vars.c:63
 msgid "`(' expected."
 msgstr ""
 
-#: src/rename-vars.c:68
+#: src/rename-vars.c:71
 msgid "`=' expected between lists of new and old variable names."
 msgstr ""
 
-#: src/rename-vars.c:86
+#: src/rename-vars.c:89
 msgid "`)' expected after variable names."
 msgstr ""
 
-#: src/rename-vars.c:96
+#: src/rename-vars.c:99
 #, c-format
 msgid "Renaming would duplicate variable name %s."
 msgstr ""
 
-#: src/repeat.c:151
+#: src/repeat.c:154
 #, c-format
 msgid "Identifier %s is given twice."
 msgstr ""
 
-#: src/repeat.c:194
+#: src/repeat.c:197
 #, c-format
 msgid ""
 "There must be the same number of substitutions for each dummy variable "
@@ -2996,164 +3797,309 @@ msgid ""
 "s as well, but %d were specified."
 msgstr ""
 
-#: src/repeat.c:299
+#: src/repeat.c:302
 msgid "No commands in scope."
 msgstr ""
 
-#: src/repeat.c:487
+#: src/repeat.c:490
 msgid "No matching DO REPEAT."
 msgstr ""
 
-#: src/sample.c:73
+#: src/sample.c:76
 msgid "The sampling factor must be between 0 and 1 exclusive."
 msgstr ""
 
-#: src/sample.c:93
+#: src/sample.c:96
 #, c-format
 msgid "Cannot sample %d observations from a population of %d."
 msgstr ""
 
-#: src/sel-if.c:100
+#: src/sel-if.c:103
 msgid "The filter variable must be numeric."
 msgstr ""
 
-#: src/sel-if.c:106
+#: src/sel-if.c:109
 msgid "The filter variable may not be scratch."
 msgstr ""
 
-#: src/sel-if.c:137
+#: src/sel-if.c:140
 msgid "Only last instance of this command is in effect."
 msgstr ""
 
-#: src/sfm-read.c:129
-msgid "corrupt system file: "
-msgstr ""
-
-#: src/sfm-read.c:148 src/sfm-write.c:919
+#: src/set.q:224 src/set.q:303 src/set.q:346 src/set.q:401 src/set.q:403
+#: src/set.q:405 src/set.q:407 src/set.q:409 src/set.q:411 src/set.q:413
+#: src/set.q:415 src/set.q:417 src/set.q:419 src/set.q:421 src/set.q:423
+#: src/set.q:425 src/set.q:831 src/set.q:912 src/set.q:1007
 #, c-format
-msgid "%s: Closing system file: %s."
+msgid "%s is obsolete."
 msgstr ""
 
-#: src/sfm-read.c:234
-#, c-format
-msgid ""
-"An error occurred while opening \"%s\" for reading as a system file: %s."
+#: src/set.q:232
+msgid "LISTING is ON"
 msgstr ""
 
-#: src/sfm-read.c:252
-#, c-format
-msgid ""
-"%s: Index of weighting variable (%d) is not between 0 and number of elements "
-"per case (%d)."
+#: src/set.q:234
+msgid "LISTING is OFF"
 msgstr ""
 
-#: src/sfm-read.c:261
+#: src/set.q:248
 #, c-format
-msgid ""
-"%s: Weighting variable may not be a continuation of a long string variable."
+msgid "EPOCH is %d"
 msgstr ""
 
-#: src/sfm-read.c:264
-#, c-format
-msgid "%s: Weighting variable may not be a string variable."
+#: src/set.q:267
+msgid "Journalling is off"
 msgstr ""
 
-#: src/sfm-read.c:289
-#, c-format
+#: src/set.q:434
 msgid ""
-"%s: Orphaned variable index record (type 4).  Type 4 records must always "
-"immediately follow type 3 records."
+"CASE is not implemented and probably won't be.  If you care, complain about "
+"it."
 msgstr ""
 
-#: src/sfm-read.c:347
-#, c-format
-msgid "%s: Invalid subrecord length. Record: 7; Subrecord: 11"
+#: src/set.q:439
+msgid "Active file compression is not yet implemented (and probably won't be)."
 msgstr ""
 
-#: src/sfm-read.c:401
+#: src/set.q:453
 #, c-format
-msgid "%s: Trailing garbage in long variable name map."
+msgid ""
+"CC%c: Length of custom currency string `%s' (%d) exceeds maximum length of "
+"16."
 msgstr ""
 
-#: src/sfm-read.c:408
+#: src/set.q:475
 #, c-format
-msgid "%s: Long variable mapping to invalid variable name `%s'."
+msgid ""
+"CC%c: Custom currency string `%s' does not contain exactly three periods or "
+"commas (not both)."
 msgstr ""
 
-#: src/sfm-read.c:418
-#, c-format
-msgid "%s: Long variable mapping for nonexistent variable %s."
+#: src/set.q:528
+msgid "None"
 msgstr ""
 
-#: src/sfm-read.c:428
-#, c-format
-msgid "%s: Duplicate long variable name `%s' within system file."
+#: src/set.q:534
+msgid "Disabled"
 msgstr ""
 
-#: src/sfm-read.c:456
-#, c-format
-msgid "%s: Unrecognized record type 7, subtype %d encountered in system file."
+#: src/set.q:539
+msgid "Screen"
 msgstr ""
 
-#: src/sfm-read.c:481
-#, c-format
-msgid "%s: Unrecognized record type %d."
+#: src/set.q:546
+msgid "Listing"
 msgstr ""
 
-#: src/sfm-read.c:513
-#, c-format
-msgid ""
-"%s: Bad size (%d) or count (%d) field on record type 7, subtype 3.\tExpected "
-"size %d, count 8."
+#: src/set.q:553
+msgid "Other"
 msgstr ""
 
-#: src/sfm-read.c:524
+#: src/set.q:662
+msgid "EPOCH must be 1500 or later."
+msgstr ""
+
+#: src/set.q:669
+msgid "expecting AUTOMATIC or year"
+msgstr ""
+
+#: src/set.q:690
+msgid "LENGTH must be at least 1."
+msgstr ""
+
+#: src/set.q:729
+msgid "Missing identifier in RESULTS subcommand."
+msgstr ""
+
+#: src/set.q:740
+msgid "Unrecognized identifier in RESULTS subcommand."
+msgstr ""
+
+#: src/set.q:777
+msgid "WIDTH must be at least 1."
+msgstr ""
+
+#: src/set.q:800
+#, c-format
+msgid ""
+"FORMAT requires numeric output format as an argument.  Specified format %s "
+"is of type string."
+msgstr ""
+
+#: src/set.q:844
+msgid "Text color must be in range 0-15."
+msgstr ""
+
+#: src/set.q:857
+msgid "Background color must be in range 0-7."
+msgstr ""
+
+#: src/set.q:868
+msgid "Border color must be in range 0-7."
+msgstr ""
+
+#: src/set.q:924
+msgid "Lower window color must be between 0 and 6."
+msgstr ""
+
+#: src/set.q:938
+msgid "Upper window color must be between 0 and 6."
+msgstr ""
+
+#: src/set.q:950
+msgid "Frame color must be between 0 and 6."
+msgstr ""
+
+#: src/set.q:1016
+msgid "Drive letter expected in WORKDEV subcommand."
+msgstr ""
+
+#: src/set.q:1048
+msgid "Specify a terminal type with the TERM environment variable."
+msgstr ""
+
+#: src/set.q:1054
+msgid "Could not access the termcap data base."
+msgstr ""
+
+#: src/set.q:1056
+#, c-format
+msgid "Terminal type `%s' is not defined."
+msgstr ""
+
+#: src/set.q:1114
+msgid "data> "
+msgstr ""
+
+#: src/sfm-read.c:132
+msgid "corrupt system file: "
+msgstr ""
+
+#: src/sfm-read.c:151 src/sfm-write.c:922
+#, c-format
+msgid "%s: Closing system file: %s."
+msgstr ""
+
+#: src/sfm-read.c:237
+#, c-format
+msgid ""
+"An error occurred while opening \"%s\" for reading as a system file: %s."
+msgstr ""
+
+#: src/sfm-read.c:255
+#, c-format
+msgid ""
+"%s: Index of weighting variable (%d) is not between 0 and number of elements "
+"per case (%d)."
+msgstr ""
+
+#: src/sfm-read.c:264
+#, c-format
+msgid ""
+"%s: Weighting variable may not be a continuation of a long string variable."
+msgstr ""
+
+#: src/sfm-read.c:267
+#, c-format
+msgid "%s: Weighting variable may not be a string variable."
+msgstr ""
+
+#: src/sfm-read.c:292
+#, c-format
+msgid ""
+"%s: Orphaned variable index record (type 4).  Type 4 records must always "
+"immediately follow type 3 records."
+msgstr ""
+
+#: src/sfm-read.c:350
+#, c-format
+msgid "%s: Invalid subrecord length. Record: 7; Subrecord: 11"
+msgstr ""
+
+#: src/sfm-read.c:404
+#, c-format
+msgid "%s: Trailing garbage in long variable name map."
+msgstr ""
+
+#: src/sfm-read.c:411
+#, c-format
+msgid "%s: Long variable mapping to invalid variable name `%s'."
+msgstr ""
+
+#: src/sfm-read.c:421
+#, c-format
+msgid "%s: Long variable mapping for nonexistent variable %s."
+msgstr ""
+
+#: src/sfm-read.c:431
+#, c-format
+msgid "%s: Duplicate long variable name `%s' within system file."
+msgstr ""
+
+#: src/sfm-read.c:459
+#, c-format
+msgid "%s: Unrecognized record type 7, subtype %d encountered in system file."
+msgstr ""
+
+#: src/sfm-read.c:484
+#, c-format
+msgid "%s: Unrecognized record type %d."
+msgstr ""
+
+#: src/sfm-read.c:516
+#, c-format
+msgid ""
+"%s: Bad size (%d) or count (%d) field on record type 7, subtype 3.\tExpected "
+"size %d, count 8."
+msgstr ""
+
+#: src/sfm-read.c:527
 #, c-format
 msgid ""
 "%s: Floating-point representation in system file is not IEEE-754.  PSPP "
 "cannot convert between floating-point formats."
 msgstr ""
 
-#: src/sfm-read.c:540
+#: src/sfm-read.c:543
 #, c-format
 msgid ""
 "%s: File-indicated endianness (%s) does not match endianness intuited from "
 "file header (%s)."
 msgstr ""
 
-#: src/sfm-read.c:543 src/sfm-read.c:544
+#: src/sfm-read.c:546 src/sfm-read.c:547
 msgid "big-endian"
 msgstr ""
 
-#: src/sfm-read.c:543 src/sfm-read.c:544
+#: src/sfm-read.c:546 src/sfm-read.c:547
 msgid "little-endian"
 msgstr ""
 
-#: src/sfm-read.c:545
+#: src/sfm-read.c:548
 msgid "unknown"
 msgstr ""
 
-#: src/sfm-read.c:549
+#: src/sfm-read.c:552
 #, c-format
 msgid "%s: File-indicated character representation code (%s) is not ASCII."
 msgstr ""
 
-#: src/sfm-read.c:553
+#: src/sfm-read.c:556
 msgid "DEC Kanji"
 msgstr ""
 
-#: src/sfm-read.c:553 src/sysfile-info.c:115
+#: src/sfm-read.c:556 src/sysfile-info.c:118
 msgid "Unknown"
 msgstr ""
 
-#: src/sfm-read.c:569
+#: src/sfm-read.c:572
 #, c-format
 msgid ""
 "%s: Bad size (%d) or count (%d) field on record type 7, subtype 4.\tExpected "
 "size %d, count 8."
 msgstr ""
 
-#: src/sfm-read.c:584
+#: src/sfm-read.c:587
 #, c-format
 msgid ""
 "%s: File-indicated value is different from internal value for at least one "
@@ -3161,538 +4107,665 @@ msgid ""
 "%g; LOWEST: %g, %g."
 msgstr ""
 
-#: src/sfm-read.c:611
+#: src/sfm-read.c:614
 #, c-format
 msgid ""
 "%s: Bad magic.  Proper system files begin with the four characters `$FL2'. "
 "This file will not be read."
 msgstr ""
 
-#: src/sfm-read.c:653
+#: src/sfm-read.c:656
 #, c-format
 msgid ""
 "%s: File layout code has unexpected value %d.  Value should be 2, in big-"
 "endian or little-endian format."
 msgstr ""
 
-#: src/sfm-read.c:681
+#: src/sfm-read.c:684
 #, c-format
 msgid "%s: Number of cases in file (%ld) is not between -1 and %d."
 msgstr ""
 
-#: src/sfm-read.c:686
+#: src/sfm-read.c:689
 #, c-format
 msgid "%s: Compression bias (%g) is not the usual value of 100."
 msgstr ""
 
-#: src/sfm-read.c:809
+#: src/sfm-read.c:812
 #, c-format
 msgid ""
 "%s: position %d: String variable does not have proper number of continuation "
 "records."
 msgstr ""
 
-#: src/sfm-read.c:820
+#: src/sfm-read.c:823
 #, c-format
 msgid "%s: position %d: Superfluous long string continuation record."
 msgstr ""
 
-#: src/sfm-read.c:826
+#: src/sfm-read.c:829
 #, c-format
 msgid "%s: position %d: Bad variable type code %d."
 msgstr ""
 
-#: src/sfm-read.c:829
+#: src/sfm-read.c:832
 #, c-format
 msgid "%s: position %d: Variable label indicator field is not 0 or 1."
 msgstr ""
 
-#: src/sfm-read.c:833
+#: src/sfm-read.c:836
 #, c-format
 msgid ""
 "%s: position %d: Missing value indicator field is not -3, -2, 0, 1, 2, or 3."
 msgstr ""
 
-#: src/sfm-read.c:839
+#: src/sfm-read.c:842
 #, c-format
 msgid "%s: position %d: Variable name begins with invalid character."
 msgstr ""
 
-#: src/sfm-read.c:843
+#: src/sfm-read.c:846
 #, c-format
 msgid "%s: position %d: Variable name begins with lowercase letter %c."
 msgstr ""
 
-#: src/sfm-read.c:847
+#: src/sfm-read.c:850
 #, c-format
 msgid ""
 "%s: position %d: Variable name begins with octothorpe (`#').  Scratch "
 "variables should not appear in system files."
 msgstr ""
 
-#: src/sfm-read.c:862
+#: src/sfm-read.c:865
 #, c-format
 msgid "%s: position %d: Variable name character %d is lowercase letter %c."
 msgstr ""
 
-#: src/sfm-read.c:871
+#: src/sfm-read.c:874
 #, c-format
 msgid ""
 "%s: position %d: character `\\%03o' (%c) is not valid in a variable name."
 msgstr ""
 
-#: src/sfm-read.c:878
+#: src/sfm-read.c:881
 #, c-format
 msgid "%s: Invalid variable name `%s' within system file."
 msgstr ""
 
-#: src/sfm-read.c:885
+#: src/sfm-read.c:888
 #, c-format
 msgid "%s: Duplicate variable name `%s' within system file."
 msgstr ""
 
-#: src/sfm-read.c:908
+#: src/sfm-read.c:911
 #, c-format
 msgid "%s: Variable %s indicates variable label of invalid length %d."
 msgstr ""
 
-#: src/sfm-read.c:928
+#: src/sfm-read.c:931
 #, c-format
 msgid "%s: Long string variable %s may not have missing values."
 msgstr ""
 
-#: src/sfm-read.c:953
+#: src/sfm-read.c:956
 #, c-format
 msgid ""
 "%s: String variable %s may not have missing values specified as a range."
 msgstr ""
 
-#: src/sfm-read.c:995
+#: src/sfm-read.c:998
 #, c-format
 msgid "%s: Long string continuation records omitted at end of dictionary."
 msgstr ""
 
-#: src/sfm-read.c:1000
+#: src/sfm-read.c:1003
 #, c-format
 msgid ""
 "%s: System file header indicates %d variable positions but %d were read from "
 "file."
 msgstr ""
 
-#: src/sfm-read.c:1025
+#: src/sfm-read.c:1028
 #, c-format
 msgid "%s: %s variable %s has %s format specifier %s."
 msgstr ""
 
-#: src/sfm-read.c:1078
+#: src/sfm-read.c:1081
 #, c-format
 msgid "%s: Invalid number of labels: %d.  Ignoring labels."
 msgstr ""
 
-#: src/sfm-read.c:1120
+#: src/sfm-read.c:1123
 #, c-format
 msgid ""
 "%s: Variable index record (type 4) does not immediately follow value label "
 "record (type 3) as it should."
 msgstr ""
 
-#: src/sfm-read.c:1131
+#: src/sfm-read.c:1134
 #, c-format
 msgid ""
 "%s: Number of variables associated with a value label (%d) is not between 1 "
 "and the number of variables (%d)."
 msgstr ""
 
-#: src/sfm-read.c:1147
+#: src/sfm-read.c:1150
 #, c-format
 msgid ""
 "%s: Variable index associated with value label (%d) is not between 1 and the "
 "number of values (%d)."
 msgstr ""
 
-#: src/sfm-read.c:1154
+#: src/sfm-read.c:1157
 #, c-format
 msgid ""
 "%s: Variable index associated with value label (%d) refers to a continuation "
 "of a string variable, not to an actual variable."
 msgstr ""
 
-#: src/sfm-read.c:1159
+#: src/sfm-read.c:1162
 #, c-format
 msgid "%s: Value labels are not allowed on long string variables (%s)."
 msgstr ""
 
-#: src/sfm-read.c:1170
+#: src/sfm-read.c:1173
 #, c-format
 msgid ""
 "%s: Variables associated with value label are not all of identical type.  "
 "Variable %s has %s type, but variable %s has %s type."
 msgstr ""
 
-#: src/sfm-read.c:1211
+#: src/sfm-read.c:1214
 #, c-format
 msgid "%s: File contains duplicate label for value %g for variable %s."
 msgstr ""
 
-#: src/sfm-read.c:1215
+#: src/sfm-read.c:1218
 #, c-format
 msgid "%s: File contains duplicate label for value `%.*s' for variable %s."
 msgstr ""
 
-#: src/sfm-read.c:1257 src/sfm-read.c:1534
+#: src/sfm-read.c:1260 src/sfm-read.c:1537
 #, c-format
 msgid "%s: Reading system file: %s."
 msgstr ""
 
-#: src/sfm-read.c:1260 src/sfm-read.c:1375 src/sfm-read.c:1417
+#: src/sfm-read.c:1263 src/sfm-read.c:1378 src/sfm-read.c:1420
 #, c-format
 msgid "%s: Unexpected end of file."
 msgstr ""
 
-#: src/sfm-read.c:1275
+#: src/sfm-read.c:1278
 #, c-format
 msgid "%s: Seeking system file: %s."
 msgstr ""
 
-#: src/sfm-read.c:1290
+#: src/sfm-read.c:1293
 #, c-format
 msgid "%s: System file contains multiple type 6 (document) records."
 msgstr ""
 
-#: src/sfm-read.c:1296
+#: src/sfm-read.c:1299
 #, c-format
 msgid "%s: Number of document lines (%ld) must be greater than 0."
 msgstr ""
 
-#: src/sfm-read.c:1328
+#: src/sfm-read.c:1331
 #, c-format
 msgid "%s: Error reading file: %s."
 msgstr ""
 
-#: src/sfm-read.c:1365
+#: src/sfm-read.c:1368
 #, c-format
 msgid "%s: Compressed data is corrupted.  Data ends in partial case."
 msgstr ""
 
-#: src/sfm-read.c:1537
+#: src/sfm-read.c:1540
 #, c-format
 msgid "%s: Partial record at end of system file."
 msgstr ""
 
-#: src/sfm-write.c:154
+#: src/sfm-write.c:157
 #, c-format
 msgid "Error opening \"%s\" for writing as a system file: %s."
 msgstr ""
 
-#: src/sfm-write.c:739
+#: src/sfm-write.c:742
 #, c-format
 msgid "%s: Writing system file: %s."
 msgstr ""
 
-#: src/sort.c:82
+#: src/sort-prs.c:94
+msgid "`A' or `D' expected inside parentheses."
+msgstr ""
+
+#: src/sort-prs.c:99
+msgid "`)' expected."
+msgstr ""
+
+#: src/sort.c:85
 msgid "Buffer limit must be at least 2."
 msgstr ""
 
-#: src/sort.c:458
+#: src/sort.c:461
 #, c-format
 msgid ""
 "Out of memory.  Could not allocate room for minimum of %d cases of %d bytes "
 "each.  (PSPP workspace is currently restricted to a maximum of %d KB.)"
 msgstr ""
 
-#: src/sysfile-info.c:96
+#: src/sysfile-info.c:99
 msgid "File:"
 msgstr ""
 
-#: src/sysfile-info.c:98
+#: src/sysfile-info.c:101
 msgid "Label:"
 msgstr ""
 
-#: src/sysfile-info.c:102
+#: src/sysfile-info.c:105
 msgid "No label."
 msgstr ""
 
-#: src/sysfile-info.c:105
+#: src/sysfile-info.c:108
 msgid "Created:"
 msgstr ""
 
-#: src/sysfile-info.c:108
+#: src/sysfile-info.c:111
 msgid "Endian:"
 msgstr ""
 
-#: src/sysfile-info.c:109
+#: src/sysfile-info.c:112
 msgid "Big."
 msgstr ""
 
-#: src/sysfile-info.c:109
+#: src/sysfile-info.c:112
 msgid "Little."
 msgstr ""
 
-#: src/sysfile-info.c:110
+#: src/sysfile-info.c:113
 msgid "Variables:"
 msgstr ""
 
-#: src/sysfile-info.c:113
+#: src/sysfile-info.c:116
 msgid "Cases:"
 msgstr ""
 
-#: src/sysfile-info.c:116
+#: src/sysfile-info.c:119
 msgid "Type:"
 msgstr ""
 
-#: src/sysfile-info.c:117
+#: src/sysfile-info.c:120
 msgid "System File."
 msgstr ""
 
-#: src/sysfile-info.c:118
+#: src/sysfile-info.c:121
 msgid "Weight:"
 msgstr ""
 
-#: src/sysfile-info.c:122
+#: src/sysfile-info.c:125
 msgid "Not weighted."
 msgstr ""
 
-#: src/sysfile-info.c:124
+#: src/sysfile-info.c:127
 msgid "Mode:"
 msgstr ""
 
-#: src/sysfile-info.c:126
+#: src/sysfile-info.c:129
 #, c-format
 msgid "Compression %s."
 msgstr ""
 
-#: src/sysfile-info.c:126
+#: src/sysfile-info.c:129
 msgid "on"
 msgstr ""
 
-#: src/sysfile-info.c:126
+#: src/sysfile-info.c:129
 msgid "off"
 msgstr ""
 
-#: src/sysfile-info.c:136 src/sysfile-info.c:374
+#: src/sysfile-info.c:139 src/sysfile-info.c:377
 msgid "Description"
 msgstr ""
 
-#: src/sysfile-info.c:137 src/sysfile-info.c:372
+#: src/sysfile-info.c:140 src/sysfile-info.c:375
 msgid "Position"
 msgstr ""
 
-#: src/sysfile-info.c:195
+#: src/sysfile-info.c:198
 msgid "The active file does not have a file label."
 msgstr ""
 
-#: src/sysfile-info.c:198
+#: src/sysfile-info.c:201
 msgid "File label:"
 msgstr ""
 
-#: src/sysfile-info.c:260
+#: src/sysfile-info.c:263
 msgid "No variables to display."
 msgstr ""
 
-#: src/sysfile-info.c:279
+#: src/sysfile-info.c:282
 msgid "Macros not supported."
 msgstr ""
 
-#: src/sysfile-info.c:289
+#: src/sysfile-info.c:292
 msgid "The active file dictionary does not contain any documents."
 msgstr ""
 
-#: src/sysfile-info.c:298
+#: src/sysfile-info.c:301
 msgid "Documents in the active file:"
 msgstr ""
 
-#: src/sysfile-info.c:376 src/sysfile-info.c:534 src/vfm.c:811
+#: src/sysfile-info.c:379 src/sysfile-info.c:537 src/vfm.c:812
 msgid "Label"
 msgstr ""
 
-#: src/sysfile-info.c:448
+#: src/sysfile-info.c:451
 #, c-format
 msgid "Format: %s"
 msgstr ""
 
-#: src/sysfile-info.c:455
+#: src/sysfile-info.c:458
 #, c-format
 msgid "Print Format: %s"
 msgstr ""
 
-#: src/sysfile-info.c:458
+#: src/sysfile-info.c:461
 #, c-format
 msgid "Write Format: %s"
 msgstr ""
 
-#: src/sysfile-info.c:466
+#: src/sysfile-info.c:469
 msgid "Missing Values: "
 msgstr ""
 
-#: src/sysfile-info.c:533 src/vfm.c:810 src/crosstabs.q:1099
-#: src/crosstabs.q:1126 src/crosstabs.q:1146 src/crosstabs.q:1168
-#: src/examine.q:1130 src/frequencies.q:1138 src/frequencies.q:1259
-msgid "Value"
-msgstr ""
-
-#: src/sysfile-info.c:590
+#: src/sysfile-info.c:593
 msgid "No vectors defined."
 msgstr ""
 
-#: src/sysfile-info.c:605
+#: src/sysfile-info.c:608
 msgid "Vector"
 msgstr ""
 
-#: src/tab.c:254
+#: src/t-test.q:269
+msgid "TESTVAL, GROUPS and PAIRS subcommands are mutually exclusive."
+msgstr ""
+
+#: src/t-test.q:287
+msgid "VARIABLES subcommand is not appropriate with PAIRS"
+msgstr ""
+
+#: src/t-test.q:325
+msgid "One or more VARIABLES must be specified."
+msgstr ""
+
+#: src/t-test.q:376
+#, c-format
+msgid "Long string variable %s is not valid here."
+msgstr ""
+
+#: src/t-test.q:396 src/t-test.q:411
+msgid ""
+"When applying GROUPS to a string variable, two values must be specified."
+msgstr ""
+
+#: src/t-test.q:483
+#, c-format
+msgid ""
+"PAIRED was specified but the number of variables preceding WITH (%d) did not "
+"match the number following (%d)."
+msgstr ""
+
+#: src/t-test.q:500
+msgid "At least two variables must be specified on PAIRS."
+msgstr ""
+
+#: src/t-test.q:677
+msgid "One-Sample Statistics"
+msgstr ""
+
+#: src/t-test.q:682 src/t-test.q:705 src/t-test.q:829
+msgid "SE. Mean"
+msgstr ""
+
+#: src/t-test.q:699
+msgid "Group Statistics"
+msgstr ""
+
+#: src/t-test.q:823
+msgid "Paired Sample Statistics"
+msgstr ""
+
+#: src/t-test.q:845 src/t-test.q:1189 src/t-test.q:1379
+#, c-format
+msgid "Pair %d"
+msgstr ""
+
+#: src/t-test.q:962
+msgid "Independent Samples Test"
+msgstr ""
+
+#: src/t-test.q:970
+msgid "Levene's Test for Equality of Variances"
+msgstr ""
+
+#: src/t-test.q:972
+msgid "t-test for Equality of Means"
+msgstr ""
+
+#: src/t-test.q:975 src/t-test.q:1364
+msgid "Sig."
+msgstr ""
+
+#: src/t-test.q:979 src/t-test.q:1263
+msgid "Mean Difference"
+msgstr ""
+
+#: src/t-test.q:980
+msgid "Std. Error Difference"
+msgstr ""
+
+#: src/t-test.q:985 src/t-test.q:1160 src/t-test.q:1255
+#, c-format
+msgid "%g%% Confidence Interval of the Difference"
+msgstr ""
+
+#: src/t-test.q:1040
+msgid "Equal variances assumed"
+msgstr ""
+
+#: src/t-test.q:1092
+msgid "Equal variances not assumed"
+msgstr ""
+
+#: src/t-test.q:1150
+msgid "Paired Samples Test"
+msgstr ""
+
+#: src/t-test.q:1153
+msgid "Paired Differences"
+msgstr ""
+
+#: src/t-test.q:1165
+msgid "Std. Error Mean"
+msgstr ""
+
+#: src/t-test.q:1244
+msgid "One-Sample Test"
+msgstr ""
+
+#: src/t-test.q:1249
+#, c-format
+msgid "Test Value = %f"
+msgstr ""
+
+#: src/t-test.q:1359
+msgid "Paired Samples Correlations"
+msgstr ""
+
+#: src/t-test.q:1363
+msgid "Correlation"
+msgstr ""
+
+#: src/t-test.q:1382
+#, c-format
+msgid "%s & %s"
+msgstr ""
+
+#: src/tab.c:257
 #, c-format
 msgid "bad vline: x=%d+%d=%d y=(%d+%d=%d,%d+%d=%d) in table size (%d,%d)\n"
 msgstr ""
 
-#: src/tab.c:329
+#: src/tab.c:332
 #, c-format
 msgid ""
 "bad box: (%d+%d=%d,%d+%d=%d)-(%d+%d=%d,%d+%d=%d) in table size (%d,%d)\n"
 msgstr ""
 
-#: src/temporary.c:46
+#: src/temporary.c:49
 msgid "This command is not valid inside DO IF or LOOP."
 msgstr ""
 
-#: src/temporary.c:53
+#: src/temporary.c:56
 msgid ""
 "This command may only appear once between procedures and procedure-like "
 "commands."
 msgstr ""
 
-#: src/title.c:56
+#: src/title.c:59
 #, c-format
 msgid "%s before: %s\n"
 msgstr ""
 
-#: src/title.c:56
+#: src/title.c:59
 msgid "<none>"
 msgstr ""
 
-#: src/title.c:68
+#: src/title.c:71
 #, c-format
 msgid "%s: `.' expected after string."
 msgstr ""
 
-#: src/title.c:84
+#: src/title.c:87
 #, c-format
 msgid "%s after: %s\n"
 msgstr ""
 
-#: src/title.c:140
+#: src/title.c:143
 #, c-format
 msgid "Document entered %s %02d:%02d:%02d by %s (%s):"
 msgstr ""
 
-#: src/val-labs.c:118
+#: src/val-labs.c:121
 #, c-format
 msgid ""
 "It is not possible to assign value labels to long string variables such as %"
 "s."
 msgstr ""
 
-#: src/val-labs.c:167
+#: src/val-labs.c:170
 #, c-format
 msgid "Value label `%g' is not integer."
 msgstr ""
 
-#: src/val-labs.c:177
+#: src/val-labs.c:180
 msgid "Truncating value label to 60 characters."
 msgstr ""
 
-#: src/var-labs.c:47
+#: src/var-labs.c:50
 msgid "String expected for variable label."
 msgstr ""
 
-#: src/var-labs.c:53
+#: src/var-labs.c:56
 msgid "Truncating variable label to 255 characters."
 msgstr ""
 
-#: src/vars-atr.c:259
+#: src/vars-atr.c:262
 msgid "Variable name cannot be empty string."
 msgstr ""
 
-#: src/vars-atr.c:265
+#: src/vars-atr.c:268
 #, c-format
 msgid "Variable name %s exceeds %d-character limit."
 msgstr ""
 
-#: src/vars-atr.c:274
+#: src/vars-atr.c:277
 #, c-format
 msgid "Character `%c' (in %s) may not appear in a variable name."
 msgstr ""
 
-#: src/vars-atr.c:283
+#: src/vars-atr.c:286
 #, c-format
 msgid ""
 "Character `%c' (in %s), may not appear as the first character in a variable "
 "name."
 msgstr ""
 
-#: src/vars-atr.c:291
+#: src/vars-atr.c:295
 #, c-format
 msgid "%s may not be used as a variable name because it is a reserved word."
 msgstr ""
 
-#: src/vars-atr.c:386
+#: src/vars-atr.c:390
 msgid "Variable suffix too large."
 msgstr ""
 
-#: src/vars-prs.c:43
+#: src/vars-prs.c:46
 msgid "expecting variable name"
 msgstr ""
 
-#: src/vars-prs.c:49
+#: src/vars-prs.c:52
 #, c-format
 msgid "%s is not a variable name."
 msgstr ""
 
-#: src/vars-prs.c:111
+#: src/vars-prs.c:114
 msgid "ordinary"
 msgstr ""
 
-#: src/vars-prs.c:113
+#: src/vars-prs.c:116
 msgid "system"
 msgstr ""
 
-#: src/vars-prs.c:115
+#: src/vars-prs.c:118
 msgid "scratch"
 msgstr ""
 
-#: src/vars-prs.c:174
+#: src/vars-prs.c:177
 #, c-format
 msgid ""
 "%s is not a numeric variable.  It will not be included in the variable list."
 msgstr ""
 
-#: src/vars-prs.c:177
+#: src/vars-prs.c:180
 #, c-format
 msgid ""
 "%s is not a string variable.  It will not be included in the variable list."
 msgstr ""
 
-#: src/vars-prs.c:181
+#: src/vars-prs.c:184
 #, c-format
 msgid "Scratch variables (such as %s) are not allowed here."
 msgstr ""
 
-#: src/vars-prs.c:184
+#: src/vars-prs.c:187
 #, c-format
 msgid ""
 "%s and %s are not the same type.  All variables in this variable list must "
 "be of the same type.  %s will be omitted from list."
 msgstr ""
 
-#: src/vars-prs.c:189
+#: src/vars-prs.c:192
 #, c-format
 msgid "Variable %s appears twice in variable list."
 msgstr ""
 
-#: src/vars-prs.c:299
+#: src/vars-prs.c:302
 #, c-format
 msgid "%s TO %s is not valid syntax since %s precedes %s in the dictionary."
 msgstr ""
 
-#: src/vars-prs.c:308
+#: src/vars-prs.c:311
 #, c-format
 msgid ""
 "When using the TO keyword to specify several variables, both variables must "
@@ -3700,956 +4773,57 @@ msgid ""
 "system variables.  %s is a %s variable, whereas %s is %s."
 msgstr ""
 
-#: src/vars-prs.c:379
+#: src/vars-prs.c:382
 msgid "incorrect use of TO convention"
 msgstr ""
 
-#: src/vars-prs.c:422
+#: src/vars-prs.c:425
 msgid "Scratch variables not allowed here."
 msgstr ""
 
-#: src/vars-prs.c:444
+#: src/vars-prs.c:447
 msgid "Prefixes don't match in use of TO convention."
 msgstr ""
 
-#: src/vars-prs.c:449
+#: src/vars-prs.c:452
 msgid "Bad bounds in use of TO convention."
 msgstr ""
 
-#: src/vector.c:67
+#: src/vector.c:70
 #, c-format
 msgid "Vector name %s is given twice."
 msgstr ""
 
-#: src/vector.c:73
+#: src/vector.c:76
 #, c-format
 msgid "There is already a vector with name %s."
 msgstr ""
 
-#: src/vector.c:94
+#: src/vector.c:97
 msgid ""
 "A slash must be used to separate each vector specification when using the "
 "long form.  Commands such as VECTOR A,B=Q1 TO Q20 are not supported."
 msgstr ""
 
-#: src/vector.c:128
+#: src/vector.c:131
 msgid "Vectors must have at least one element."
 msgstr ""
 
-#: src/vector.c:142
+#: src/vector.c:145
 #, c-format
 msgid "%s%d is too long for a variable name."
 msgstr ""
 
-#: src/vector.c:181
+#: src/vector.c:184
 msgid ""
 "The syntax for this command does not match the expected syntax for either "
 "the long form or the short form of VECTOR."
 msgstr ""
 
-#: src/weight.c:53
+#: src/weight.c:56
 msgid "The weighting variable must be numeric."
 msgstr ""
 
-#: src/weight.c:58
+#: src/weight.c:61
 msgid "The weighting variable may not be scratch."
 msgstr ""
-
-#: src/crosstabs.q:261
-msgid ""
-"Missing mode REPORT not allowed in general mode.  Assuming MISSING=TABLE."
-msgstr ""
-
-#: src/crosstabs.q:271
-msgid "Write mode ALL not allowed in general mode.  Assuming WRITE=CELLS."
-msgstr ""
-
-#: src/crosstabs.q:332
-msgid "expecting BY"
-msgstr ""
-
-#: src/crosstabs.q:399
-msgid "VARIABLES must be specified before TABLES."
-msgstr ""
-
-#: src/crosstabs.q:436
-#, c-format
-msgid "Maximum value (%ld) less than minimum value (%ld)."
-msgstr ""
-
-#: src/crosstabs.q:800
-msgid "Summary."
-msgstr ""
-
-#: src/crosstabs.q:802 src/examine.q:915
-msgid "Cases"
-msgstr ""
-
-#: src/crosstabs.q:803 src/examine.q:849 src/frequencies.q:1136
-#: src/frequencies.q:1509
-msgid "Valid"
-msgstr ""
-
-#: src/crosstabs.q:804 src/examine.q:850 src/frequencies.q:1204
-#: src/frequencies.q:1510
-msgid "Missing"
-msgstr ""
-
-#: src/crosstabs.q:805 src/crosstabs.q:1008 src/crosstabs.q:1722
-#: src/examine.q:851 src/frequencies.q:1213 src/oneway.q:307 src/oneway.q:470
-msgid "Total"
-msgstr ""
-
-#: src/crosstabs.q:815 src/examine.q:927 src/frequencies.q:1508
-#: src/oneway.q:393 src/t-test.q:675 src/t-test.q:698 src/t-test.q:823
-#: src/t-test.q:1358
-msgid "N"
-msgstr ""
-
-#: src/crosstabs.q:816 src/examine.q:930 src/frequencies.q:1140
-#: src/frequencies.q:1141 src/frequencies.q:1142
-msgid "Percent"
-msgstr ""
-
-#: src/crosstabs.q:1058
-msgid "count"
-msgstr ""
-
-#: src/crosstabs.q:1059
-msgid "row %"
-msgstr ""
-
-#: src/crosstabs.q:1060
-msgid "column %"
-msgstr ""
-
-#: src/crosstabs.q:1061
-msgid "total %"
-msgstr ""
-
-#: src/crosstabs.q:1062
-msgid "expected"
-msgstr ""
-
-#: src/crosstabs.q:1063
-msgid "residual"
-msgstr ""
-
-#: src/crosstabs.q:1064
-msgid "std. resid."
-msgstr ""
-
-#: src/crosstabs.q:1065
-msgid "adj. resid."
-msgstr ""
-
-#: src/crosstabs.q:1098 src/crosstabs.q:1125 src/crosstabs.q:1145
-#: src/crosstabs.q:1166 src/examine.q:1361
-msgid "Statistic"
-msgstr ""
-
-#: src/crosstabs.q:1100 src/oneway.q:280 src/oneway.q:682 src/t-test.q:973
-#: src/t-test.q:1165 src/t-test.q:1257
-msgid "df"
-msgstr ""
-
-#: src/crosstabs.q:1102
-msgid "Asymp. Sig. (2-sided)"
-msgstr ""
-
-#: src/crosstabs.q:1104
-msgid "Exact. Sig. (2-sided)"
-msgstr ""
-
-#: src/crosstabs.q:1106
-msgid "Exact. Sig. (1-sided)"
-msgstr ""
-
-#: src/crosstabs.q:1124 src/crosstabs.q:1165
-msgid "Category"
-msgstr ""
-
-#: src/crosstabs.q:1127 src/crosstabs.q:1169
-msgid "Asymp. Std. Error"
-msgstr ""
-
-#: src/crosstabs.q:1128 src/crosstabs.q:1170
-msgid "Approx. T"
-msgstr ""
-
-#: src/crosstabs.q:1129 src/crosstabs.q:1171
-msgid "Approx. Sig."
-msgstr ""
-
-#: src/crosstabs.q:1144
-#, c-format
-msgid " 95%% Confidence Interval"
-msgstr ""
-
-#: src/crosstabs.q:1147 src/t-test.q:977 src/t-test.q:1162 src/t-test.q:1260
-msgid "Lower"
-msgstr ""
-
-#: src/crosstabs.q:1148 src/t-test.q:978 src/t-test.q:1163 src/t-test.q:1261
-msgid "Upper"
-msgstr ""
-
-#: src/crosstabs.q:1167
-msgid "Type"
-msgstr ""
-
-#: src/crosstabs.q:1916
-msgid "Pearson Chi-Square"
-msgstr ""
-
-#: src/crosstabs.q:1917
-msgid "Likelihood Ratio"
-msgstr ""
-
-#: src/crosstabs.q:1918
-msgid "Fisher's Exact Test"
-msgstr ""
-
-#: src/crosstabs.q:1919
-msgid "Continuity Correction"
-msgstr ""
-
-#: src/crosstabs.q:1920
-msgid "Linear-by-Linear Association"
-msgstr ""
-
-#: src/crosstabs.q:1957 src/crosstabs.q:2027 src/crosstabs.q:2086
-msgid "N of Valid Cases"
-msgstr ""
-
-#: src/crosstabs.q:1973 src/crosstabs.q:2102
-msgid "Nominal by Nominal"
-msgstr ""
-
-#: src/crosstabs.q:1974 src/crosstabs.q:2103
-msgid "Ordinal by Ordinal"
-msgstr ""
-
-#: src/crosstabs.q:1975
-msgid "Interval by Interval"
-msgstr ""
-
-#: src/crosstabs.q:1976
-msgid "Measure of Agreement"
-msgstr ""
-
-#: src/crosstabs.q:1981
-msgid "Phi"
-msgstr ""
-
-#: src/crosstabs.q:1982
-msgid "Cramer's V"
-msgstr ""
-
-#: src/crosstabs.q:1983
-msgid "Contingency Coefficient"
-msgstr ""
-
-#: src/crosstabs.q:1984
-msgid "Kendall's tau-b"
-msgstr ""
-
-#: src/crosstabs.q:1985
-msgid "Kendall's tau-c"
-msgstr ""
-
-#: src/crosstabs.q:1986
-msgid "Gamma"
-msgstr ""
-
-#: src/crosstabs.q:1987
-msgid "Spearman Correlation"
-msgstr ""
-
-#: src/crosstabs.q:1988
-msgid "Pearson's R"
-msgstr ""
-
-#: src/crosstabs.q:1989
-msgid "Kappa"
-msgstr ""
-
-#: src/crosstabs.q:2059
-#, c-format
-msgid "Odds Ratio for %s (%g / %g)"
-msgstr ""
-
-#: src/crosstabs.q:2062
-#, c-format
-msgid "Odds Ratio for %s (%.*s / %.*s)"
-msgstr ""
-
-#: src/crosstabs.q:2070
-#, c-format
-msgid "For cohort %s = %g"
-msgstr ""
-
-#: src/crosstabs.q:2073
-#, c-format
-msgid "For cohort %s = %.*s"
-msgstr ""
-
-#: src/crosstabs.q:2104
-msgid "Nominal by Interval"
-msgstr ""
-
-#: src/crosstabs.q:2109
-msgid "Lambda"
-msgstr ""
-
-#: src/crosstabs.q:2110
-msgid "Goodman and Kruskal tau"
-msgstr ""
-
-#: src/crosstabs.q:2111
-msgid "Uncertainty Coefficient"
-msgstr ""
-
-#: src/crosstabs.q:2112
-msgid "Somers' d"
-msgstr ""
-
-#: src/crosstabs.q:2113
-msgid "Eta"
-msgstr ""
-
-#: src/crosstabs.q:2118
-msgid "Symmetric"
-msgstr ""
-
-#: src/crosstabs.q:2119 src/crosstabs.q:2120
-#, c-format
-msgid "%s Dependent"
-msgstr ""
-
-#: src/examine.q:467 src/examine.q:479
-#, c-format
-msgid "%s and %s are mutually exclusive"
-msgstr ""
-
-#: src/examine.q:909
-msgid "Case Processing Summary"
-msgstr ""
-
-#: src/examine.q:1115
-msgid "Extreme Values"
-msgstr ""
-
-#: src/examine.q:1131
-msgid "Case Number"
-msgstr ""
-
-#: src/examine.q:1216
-msgid "Highest"
-msgstr ""
-
-#: src/examine.q:1221
-msgid "Lowest"
-msgstr ""
-
-#: src/examine.q:1362 src/oneway.q:396 src/oneway.q:680
-msgid "Std. Error"
-msgstr ""
-
-#: src/examine.q:1364 src/oneway.q:410
-msgid "Descriptives"
-msgstr ""
-
-#: src/examine.q:1484 src/oneway.q:401
-#, c-format
-msgid "%g%% Confidence Interval for Mean"
-msgstr ""
-
-#: src/examine.q:1490 src/oneway.q:403
-msgid "Lower Bound"
-msgstr ""
-
-#: src/examine.q:1501 src/oneway.q:404
-msgid "Upper Bound"
-msgstr ""
-
-#: src/examine.q:1513
-#, c-format
-msgid "5%% Trimmed Mean"
-msgstr ""
-
-#: src/examine.q:1524 src/frequencies.q:114
-msgid "Median"
-msgstr ""
-
-#: src/examine.q:1558 src/oneway.q:395 src/t-test.q:677 src/t-test.q:700
-#: src/t-test.q:824 src/t-test.q:1160
-msgid "Std. Deviation"
-msgstr ""
-
-#: src/examine.q:1606
-msgid "Interquartile Range"
-msgstr ""
-
-#: src/examine.q:1758
-#, c-format
-msgid "Boxplot of %s vs. %s"
-msgstr ""
-
-#: src/examine.q:1783
-msgid "Boxplot"
-msgstr ""
-
-#: src/examine.q:1825
-#, c-format
-msgid "Normal Q-Q Plot of %s"
-msgstr ""
-
-#: src/examine.q:1826 src/examine.q:1832
-msgid "Observed Value"
-msgstr ""
-
-#: src/examine.q:1827
-msgid "Expected Normal"
-msgstr ""
-
-#: src/examine.q:1830
-#, c-format
-msgid "Detrended Normal Q-Q Plot of %s"
-msgstr ""
-
-#: src/examine.q:1833
-msgid "Dev from Normal"
-msgstr ""
-
-#: src/examine.q:1952 src/examine.q:1974 src/frequencies.q:1520
-msgid "Percentiles"
-msgstr ""
-
-#: src/examine.q:2099
-msgid "Tukey's Hinges"
-msgstr ""
-
-#: src/file-handle.q:124
-#, c-format
-msgid ""
-"File handle %s already refers to file %s.  File handles cannot be redefined "
-"within a session."
-msgstr ""
-
-#: src/file-handle.q:145
-msgid "The FILE HANDLE required subcommand NAME is not present."
-msgstr ""
-
-#: src/file-handle.q:164
-msgid ""
-"Fixed-length records were specified on /RECFORM, but record length was not "
-"specified on /LRECL.  Assuming 1024-character records."
-msgstr ""
-
-#: src/file-handle.q:171
-#, c-format
-msgid ""
-"Record length (%ld) must be at least one byte.  1-character records will be "
-"assumed."
-msgstr ""
-
-#: src/file-handle.q:271
-#, c-format
-msgid "Can't open %s as a %s because it is already open as a %s"
-msgstr ""
-
-#: src/file-handle.q:278
-#, c-format
-msgid "Can't open %s as a %s for %s because it is already open for %s"
-msgstr ""
-
-#: src/file-handle.q:286
-#, c-format
-msgid "Can't re-open %s as a %s for %s"
-msgstr ""
-
-#: src/file-handle.q:339
-msgid "expecting a file name or handle name"
-msgstr ""
-
-#: src/frequencies.q:113
-msgid "S.E. Mean"
-msgstr ""
-
-#: src/frequencies.q:115
-msgid "Mode"
-msgstr ""
-
-#: src/frequencies.q:119
-msgid "S.E. Kurt"
-msgstr ""
-
-#: src/frequencies.q:121
-msgid "S.E. Skew"
-msgstr ""
-
-#: src/frequencies.q:396
-msgid ""
-"At most one of BARCHART, HISTOGRAM, or HBAR should be given.  HBAR will be "
-"assumed.  Argument values will be given precedence increasing along the "
-"order given."
-msgstr ""
-
-#: src/frequencies.q:479
-#, c-format
-msgid ""
-"MAX must be greater than or equal to MIN, if both are specified.  However, "
-"MIN was specified as %g and MAX as %g.  MIN and MAX will be ignored."
-msgstr ""
-
-#: src/frequencies.q:802
-msgid ""
-"Upper limit of integer mode value range must be greater than lower limit."
-msgstr ""
-
-#: src/frequencies.q:815
-#, c-format
-msgid "Variable %s specified multiple times on VARIABLES subcommand."
-msgstr ""
-
-#: src/frequencies.q:821
-#, c-format
-msgid "Integer mode specified, but %s is not a numeric variable."
-msgstr ""
-
-#: src/frequencies.q:887
-msgid "`)' expected after GROUPED interval list."
-msgstr ""
-
-#: src/frequencies.q:899
-#, c-format
-msgid "Variables %s specified on GROUPED but not on VARIABLES."
-msgstr ""
-
-#: src/frequencies.q:906
-#, c-format
-msgid "Variables %s specified multiple times on GROUPED subcommand."
-msgstr ""
-
-#: src/frequencies.q:1137 src/frequencies.q:1229 src/frequencies.q:1230
-#: src/frequencies.q:1262
-msgid "Cum"
-msgstr ""
-
-#: src/frequencies.q:1159
-msgid "Value Label"
-msgstr ""
-
-#: src/frequencies.q:1260
-msgid "Freq"
-msgstr ""
-
-#: src/frequencies.q:1261 src/frequencies.q:1263
-msgid "Pct"
-msgstr ""
-
-#: src/frequencies.q:1482
-#, c-format
-msgid "No valid data for variable %s; statistics not displayed."
-msgstr ""
-
-#: src/list.q:150
-#, c-format
-msgid ""
-"The first case (%ld) specified precedes the last case (%ld) specified.  The "
-"values will be swapped."
-msgstr ""
-
-#: src/list.q:158
-#, c-format
-msgid ""
-"The first case (%ld) to list is less than 1.  The value is being reset to 1."
-msgstr ""
-
-#: src/list.q:164
-#, c-format
-msgid ""
-"The last case (%ld) to list is less than 1.  The value is being reset to 1."
-msgstr ""
-
-#: src/list.q:170
-#, c-format
-msgid "The step value %ld is less than 1.  The value is being reset to 1."
-msgstr ""
-
-#: src/list.q:197
-msgid "`/FORMAT WEIGHT' specified, but weighting is not on."
-msgstr ""
-
-#: src/list.q:438
-msgid "Line"
-msgstr ""
-
-#: src/means.q:100
-msgid "Missing required subcommand TABLES."
-msgstr ""
-
-#: src/means.q:134
-msgid "TABLES subcommand may not appear more than once."
-msgstr ""
-
-#: src/oneway.q:170
-msgid "Number of contrast coefficients must equal the number of groups"
-msgstr ""
-
-#: src/oneway.q:179
-#, c-format
-msgid "Coefficients for contrast %d do not total zero"
-msgstr ""
-
-#: src/oneway.q:244
-#, c-format
-msgid "`%s' is not a variable name"
-msgstr ""
-
-#: src/oneway.q:279
-msgid "Sum of Squares"
-msgstr ""
-
-#: src/oneway.q:281
-msgid "Mean Square"
-msgstr ""
-
-#: src/oneway.q:282 src/t-test.q:970
-msgid "F"
-msgstr ""
-
-#: src/oneway.q:283 src/oneway.q:536
-msgid "Significance"
-msgstr ""
-
-#: src/oneway.q:305
-msgid "Between Groups"
-msgstr ""
-
-#: src/oneway.q:306
-msgid "Within Groups"
-msgstr ""
-
-#: src/oneway.q:353
-msgid "ANOVA"
-msgstr ""
-
-#: src/oneway.q:533
-msgid "Levene Statistic"
-msgstr ""
-
-#: src/oneway.q:534
-msgid "df1"
-msgstr ""
-
-#: src/oneway.q:535
-msgid "df2"
-msgstr ""
-
-#: src/oneway.q:539
-msgid "Test of Homogeneity of Variances"
-msgstr ""
-
-#: src/oneway.q:609
-msgid "Contrast Coefficients"
-msgstr ""
-
-#: src/oneway.q:611 src/oneway.q:678
-msgid "Contrast"
-msgstr ""
-
-#: src/oneway.q:676
-msgid "Contrast Tests"
-msgstr ""
-
-#: src/oneway.q:679
-msgid "Value of Contrast"
-msgstr ""
-
-#: src/oneway.q:681 src/t-test.q:972 src/t-test.q:1164 src/t-test.q:1256
-msgid "t"
-msgstr ""
-
-#: src/oneway.q:683 src/t-test.q:974 src/t-test.q:1166 src/t-test.q:1258
-msgid "Sig. (2-tailed)"
-msgstr ""
-
-#: src/oneway.q:727
-msgid "Assume equal variances"
-msgstr ""
-
-#: src/oneway.q:731
-msgid "Does not assume equal"
-msgstr ""
-
-#: src/set.q:221 src/set.q:300 src/set.q:343 src/set.q:398 src/set.q:400
-#: src/set.q:402 src/set.q:404 src/set.q:406 src/set.q:408 src/set.q:410
-#: src/set.q:412 src/set.q:414 src/set.q:416 src/set.q:418 src/set.q:420
-#: src/set.q:422 src/set.q:828 src/set.q:909 src/set.q:1004
-#, c-format
-msgid "%s is obsolete."
-msgstr ""
-
-#: src/set.q:229
-msgid "LISTING is ON"
-msgstr ""
-
-#: src/set.q:231
-msgid "LISTING is OFF"
-msgstr ""
-
-#: src/set.q:245
-#, c-format
-msgid "EPOCH is %d"
-msgstr ""
-
-#: src/set.q:264
-msgid "Journalling is off"
-msgstr ""
-
-#: src/set.q:431
-msgid ""
-"CASE is not implemented and probably won't be.  If you care, complain about "
-"it."
-msgstr ""
-
-#: src/set.q:436
-msgid "Active file compression is not yet implemented (and probably won't be)."
-msgstr ""
-
-#: src/set.q:450
-#, c-format
-msgid ""
-"CC%c: Length of custom currency string `%s' (%d) exceeds maximum length of "
-"16."
-msgstr ""
-
-#: src/set.q:472
-#, c-format
-msgid ""
-"CC%c: Custom currency string `%s' does not contain exactly three periods or "
-"commas (not both)."
-msgstr ""
-
-#: src/set.q:525
-msgid "None"
-msgstr ""
-
-#: src/set.q:531
-msgid "Disabled"
-msgstr ""
-
-#: src/set.q:536
-msgid "Screen"
-msgstr ""
-
-#: src/set.q:543
-msgid "Listing"
-msgstr ""
-
-#: src/set.q:550
-msgid "Other"
-msgstr ""
-
-#: src/set.q:659
-msgid "EPOCH must be 1500 or later."
-msgstr ""
-
-#: src/set.q:666
-msgid "expecting AUTOMATIC or year"
-msgstr ""
-
-#: src/set.q:687
-msgid "LENGTH must be at least 1."
-msgstr ""
-
-#: src/set.q:726
-msgid "Missing identifier in RESULTS subcommand."
-msgstr ""
-
-#: src/set.q:737
-msgid "Unrecognized identifier in RESULTS subcommand."
-msgstr ""
-
-#: src/set.q:774
-msgid "WIDTH must be at least 1."
-msgstr ""
-
-#: src/set.q:797
-#, c-format
-msgid ""
-"FORMAT requires numeric output format as an argument.  Specified format %s "
-"is of type string."
-msgstr ""
-
-#: src/set.q:841
-msgid "Text color must be in range 0-15."
-msgstr ""
-
-#: src/set.q:854
-msgid "Background color must be in range 0-7."
-msgstr ""
-
-#: src/set.q:865
-msgid "Border color must be in range 0-7."
-msgstr ""
-
-#: src/set.q:921
-msgid "Lower window color must be between 0 and 6."
-msgstr ""
-
-#: src/set.q:935
-msgid "Upper window color must be between 0 and 6."
-msgstr ""
-
-#: src/set.q:947
-msgid "Frame color must be between 0 and 6."
-msgstr ""
-
-#: src/set.q:1013
-msgid "Drive letter expected in WORKDEV subcommand."
-msgstr ""
-
-#: src/set.q:1045
-msgid "Specify a terminal type with the TERM environment variable."
-msgstr ""
-
-#: src/set.q:1051
-msgid "Could not access the termcap data base."
-msgstr ""
-
-#: src/set.q:1053
-#, c-format
-msgid "Terminal type `%s' is not defined."
-msgstr ""
-
-#: src/set.q:1111
-msgid "data> "
-msgstr ""
-
-#: src/t-test.q:265
-msgid "TESTVAL, GROUPS and PAIRS subcommands are mutually exclusive."
-msgstr ""
-
-#: src/t-test.q:283
-msgid "VARIABLES subcommand is not appropriate with PAIRS"
-msgstr ""
-
-#: src/t-test.q:321
-msgid "One or more VARIABLES must be specified."
-msgstr ""
-
-#: src/t-test.q:372
-#, c-format
-msgid "Long string variable %s is not valid here."
-msgstr ""
-
-#: src/t-test.q:392 src/t-test.q:407
-msgid ""
-"When applying GROUPS to a string variable, two values must be specified."
-msgstr ""
-
-#: src/t-test.q:479
-#, c-format
-msgid ""
-"PAIRED was specified but the number of variables preceding WITH (%d) did not "
-"match the number following (%d)."
-msgstr ""
-
-#: src/t-test.q:496
-msgid "At least two variables must be specified on PAIRS."
-msgstr ""
-
-#: src/t-test.q:673
-msgid "One-Sample Statistics"
-msgstr ""
-
-#: src/t-test.q:678 src/t-test.q:701 src/t-test.q:825
-msgid "SE. Mean"
-msgstr ""
-
-#: src/t-test.q:695
-msgid "Group Statistics"
-msgstr ""
-
-#: src/t-test.q:819
-msgid "Paired Sample Statistics"
-msgstr ""
-
-#: src/t-test.q:841 src/t-test.q:1185 src/t-test.q:1375
-#, c-format
-msgid "Pair %d"
-msgstr ""
-
-#: src/t-test.q:958
-msgid "Independent Samples Test"
-msgstr ""
-
-#: src/t-test.q:966
-msgid "Levene's Test for Equality of Variances"
-msgstr ""
-
-#: src/t-test.q:968
-msgid "t-test for Equality of Means"
-msgstr ""
-
-#: src/t-test.q:971 src/t-test.q:1360
-msgid "Sig."
-msgstr ""
-
-#: src/t-test.q:975 src/t-test.q:1259
-msgid "Mean Difference"
-msgstr ""
-
-#: src/t-test.q:976
-msgid "Std. Error Difference"
-msgstr ""
-
-#: src/t-test.q:981 src/t-test.q:1156 src/t-test.q:1251
-#, c-format
-msgid "%g%% Confidence Interval of the Difference"
-msgstr ""
-
-#: src/t-test.q:1036
-msgid "Equal variances assumed"
-msgstr ""
-
-#: src/t-test.q:1088
-msgid "Equal variances not assumed"
-msgstr ""
-
-#: src/t-test.q:1146
-msgid "Paired Samples Test"
-msgstr ""
-
-#: src/t-test.q:1149
-msgid "Paired Differences"
-msgstr ""
-
-#: src/t-test.q:1161
-msgid "Std. Error Mean"
-msgstr ""
-
-#: src/t-test.q:1240
-msgid "One-Sample Test"
-msgstr ""
-
-#: src/t-test.q:1245
-#, c-format
-msgid "Test Value = %f"
-msgstr ""
-
-#: src/t-test.q:1355
-msgid "Paired Samples Correlations"
-msgstr ""
-
-#: src/t-test.q:1359
-msgid "Correlation"
-msgstr ""
-
-#: src/t-test.q:1378
-#, c-format
-msgid "%s & %s"
-msgstr ""
index 2193c6b4082b1fcbf340b8161fd0e5be07d02ae2..f17dd334a508ace00b52f6198b08c9a3ca004e06 100644 (file)
@@ -38,6 +38,9 @@
    declarations on whether gcc is in use. */
 #if __GNUC__ > 1
 #define ATTRIBUTE(X) __attribute__ (X)
+
+/* Only necessary because of a wart in gnulib's xalloc.h. */
+#define __attribute__(X) __attribute__ (X)
 #else
 #define ATTRIBUTE(X)
 #endif
 #define MALLOC_LIKE
 #endif
 \f
-/* Internationalization. */
-#include <libintl.h>
-
-#if !ENABLE_NLS
-/* If we don't do this then gettext() still monkeys with the
-   string, keeping gcc from checking printf() format types. */
-#undef gettext
-#define gettext(STRING) STRING
-#endif
-
-#define _(STRING) gettext(STRING)
-#define N_(STRING) STRING
-\f
 /* Filesystems. */
 
 /* Directory separator and path delimiter for this OS. */
index 38129a867f28faf5f684da3e866a05155edcbf0f..f034dd45fddac7e36ac26449650128c752335336 100644 (file)
@@ -1,3 +1,64 @@
+Sun Jul 31 14:09:57 2005  Ben Pfaff  <blp@gnu.org>
+
+       Adopt use of gnulib for portability.
+
+       * Make.build: Add $(top_srcdir)/gl and $(top_builddir)/gl to
+       include path.
+
+       * Makefile.am: Remove bool.h, stat.h and change getline.[ch] to
+       getl.[ch] in pspp_SOURCES.  Remove libmisc, add libgl in
+       pspp_LDADD.
+
+       * In many source files, added an explicit inclusion of gettext.h
+       and definition of _ macro.  These are no longer in pref.h because
+       it interfered with definitions in a few gnulib source files.
+
+       * In many source files, changed #include "bool.h" to #include
+       <stdbool.h>, which is provided by gnulib.
+
+       * alloc.c: Removed functions defined in gnulib:
+       (xmalloc) Removed.
+       (xcalloc) Removed.
+       (xrealloc) Removed.
+       (xstrdup) Removed.
+       (out_of_memory) Redefined as wrapper for xalloc_die().
+
+       * alloc.h: Replace prototypes by #include "xalloc.h".
+
+       * casefile.c: Use full_read() and full_write() from gnulib instead
+       of our home-grown versions.
+       (full_read) Removed.
+       (full_write) Removed.
+
+       * getline.c: Renamed getl.c.
+
+       * getline.h: Renamed getl.h, updated all references.
+
+       * filename.c: (fn_readlink) Change to wrapper around xreadlink()
+       from gnulib.
+
+       * glob.c: Just #include <time.h> instead of the crazy rigmarole
+       here before.
+       (init_glob) Call set_program_name() to initial gnulib progname
+       module.
+
+       * html.c: (postopen) Use getlogin_r(), gethostname() from gnulib.
+
+       * permissions.c: Use "stat-macros.h" from gnulib.
+
+       * postscript.c: Just #include <time.h> instead of the crazy
+       rigmarole here before.
+
+       * q2c.c: (main) Make generated code #include "gettext.h".
+
+       * str.h: Get rid of most explicit declarations of standard
+       functions, in favor of including gnulib header files.
+
+       * expressions/evaluate.c: Ditto.
+
+       * expressions/operations.h.pl: Make generated code #include
+       <stdbool.h>, not "bool.h".
+
 Sat Jul 30 23:13:17 2005  Ben Pfaff  <blp@gnu.org>
 
        * expressions/parse.c: (validate_function_args) Fix two msg() bugs
index aad9687c0d11207caf4f27e385d6f5b18af850dd..6a4f36564ef6c6f1b89b3855f77c9dbe858bdbcb 100644 (file)
@@ -1,7 +1,7 @@
 ## Makefile.am include file -*- makefile -*-
 
 AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/src -I$(top_srcdir)/lib  \
--I$(top_srcdir)/intl 
+-I$(top_srcdir)/intl -I$(top_srcdir)/gl -I$(top_builddir)/gl
 
 AM_CFLAGS=
 
index 6623c2540060401cd9ba17e3cf98fc2d99d4c2c4..dcb6d078f511c49976a084f0dd12020da18fc713 100644 (file)
@@ -44,7 +44,6 @@ endif
 pspp_SOURCES = $(q_sources_c) $(chart_sources) \
 aggregate.c algorithm.c algorithm.h    \
 alloc.c alloc.h apply-dict.c ascii.c autorecode.c bitvector.h          \
-bool.h \
 calendar.c calendar.h case.c case.h casefile.c casefile.h chart.c      \
 chart.h cmdline.c cmdline.h command.c command.def \
 command.h compute.c copyleft.c copyleft.h count.c data-in.c data-in.h  \
@@ -53,7 +52,7 @@ devind.c devind.h dfm-read.c dfm-read.h dfm-write.c dfm-write.h       \
 dictionary.c dictionary.h do-if.c do-ifP.h echo.c error.c \
 error.h factor_stats.c factor_stats.h file-handle.h    \
 file-type.c filename.c filename.h flip.c font.h format.c format.def    \
-format.h formats.c get.c getline.c getline.h glob.c glob.h             \
+format.h formats.c get.c getl.c getl.h glob.c glob.h           \
 groff-font.c group.c group.h group_proc.h \
 hash.c hash.h histogram.c histogram.h \
 html.c htmlP.h include.c inpt-pgm.c lexer.c lexer.h levene.c levene.h \
@@ -68,17 +67,17 @@ rename-vars.c repeat.c repeat.h sample.c sel-if.c settings.h                \
 sfm-read.c sfm-read.h sfm-write.c sfm-write.h sfmP.h som.c som.h       \
 sort.c sort.h sort-prs.c sort-prs.h \
 split-file.c str.c str.h subclist.c subclist.h \
-sysfile-info.c tab.c tab.h temporary.c stat.h mkfile.c mkfile.h \
+sysfile-info.c tab.c tab.h temporary.c mkfile.c mkfile.h \
 title.c  val.h val-labs.c value-labels.c value-labels.h                \
 var-display.c \
 var-labs.c var.h vars-atr.c vars-prs.c vector.c version.h      \
 vfm.c vfm.h vfmP.h weight.c 
 
 
-pspp_LDADD = \
-       ../lib/misc/libmisc.a                   \
+pspp_LDADD =                                   \
        expressions/libexpressions.a            \
        ../lib/gsl-extras/libgsl-extras.a       \
+       ../gl/libgl.a                           \
        @LIBINTL@
 
 nodist_pspp_SOURCES = version.c
index 8fe168ecf78175581c92de4d50f4c3ba6bb0b144..2c1495f0e25762bc57b80fbdc86ab27dd26361eb 100644 (file)
@@ -40,6 +40,9 @@
 #include "vfm.h"
 #include "vfmP.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 /* Specifies how to make an aggregate variable. */
 struct agr_var
   {
index 8d1e39a633e78a967a1315b6c799e72afd33bd22..015d3397c19f28bd511bfe51307ff25a366ebfc3 100644 (file)
 #include <stdlib.h>
 #include "error.h"
 #include "str.h"
-\f
-/* Public functions. */
-
-/* Allocates a block of SIZE bytes and returns it.
-   If SIZE is 0, returns a null pointer.
-   Aborts if unsuccessful. */
-void *
-xmalloc (size_t size)
-{
-  void *vp;
-  if (size == 0)
-    return NULL;
-
-  vp = malloc (size);
-  if (!vp)
-    out_of_memory ();
-
-  return vp;
-}
-
-
-/* Allocates a continous block of N_MEMB by SIZE elements, with all
-   bits set to 0.
-   Aborts if unsuccessful.
-*/
-void *
-xcalloc (size_t n_memb, size_t size)
-{
-  const size_t prod = size * n_memb; 
-  void *vp = 0;
-
-  if (prod == 0)
-    return NULL;
-
-  /* Trap overflow errors */
-  assert ( prod >= size );
-  assert ( prod >= n_memb ) ;
-
-  vp = xmalloc ( prod );
-  memset (vp, 0, prod);
-  return vp;
-}
-
-
-
-/* If SIZE is 0, then block PTR is freed and a null pointer is
-   returned.
-   Otherwise, if PTR is a null pointer, then a new block is allocated
-   and returned.
-   Otherwise, block PTR is reallocated to be SIZE bytes in size and
-   the new location of the block is returned.
-   Aborts if unsuccessful. */
-void *
-xrealloc (void *ptr, size_t size)
-{
-  void *vp;
-  if (!size)
-    {
-      if (ptr)
-       free (ptr);
-
-      return NULL;
-    }
-
-  if (ptr)
-    vp = realloc (ptr, size);
-  else
-    vp = malloc (size);
-
-  if (!vp)
-    out_of_memory ();
-
-  return vp;
-}
-
-/* Makes a copy of string S in malloc()'d memory and returns the copy.
-   S must not be a null pointer. */
-char *
-xstrdup (const char *s)
-{
-  size_t size;
-  char *t;
-
-  assert (s != NULL);
-
-  size = strlen (s) + 1;
-
-  t = malloc (size);
-  if (!t)
-    out_of_memory ();
-
-  memcpy (t, s, size);
-  return t;
-}
 
 /* Report an out-of-memory condition and abort execution. */
 void
 out_of_memory (void)
 {
-  fprintf (stderr, "virtual memory exhausted\n");
-  exit (EXIT_FAILURE);
+  xalloc_die ();
 }
index c14bc7a904730d087be7bd84264105bf79bb1276..c1148413f3bf7e66b372be33aa587209d9a212dd 100644 (file)
 #include <stddef.h>
 
 /* malloc() wrapper functions. */
-void *xmalloc (size_t size);
-void *xcalloc (size_t n_memb, size_t size);
-void *xrealloc (void *ptr, size_t size);
-char *xstrdup (const char *s);
+#include "xalloc.h"
 void out_of_memory (void) NO_RETURN;
 \f
 /* alloca() wrapper functions. */
index 661628f1244ebfd835db645369c742ad661173ed..74c1642b96df8f466a978d27abd2ef6134936e62 100644 (file)
@@ -30,6 +30,9 @@
 #include "value-labels.h"
 #include "var.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 #include "debug-print.h"
 
 /* Parses and executes APPLY DICTIONARY. */
index b91b6a6b4b1fd43e53593dc22889fea49de62d40..63aa4c1d82465fa96bc1a0c844c5664db755ea44 100644 (file)
@@ -32,6 +32,9 @@
 #include "pool.h"
 #include "version.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 /* ASCII driver options: (defaults listed first)
 
    output-file="pspp.list"
index 7887d8a698b65f1a99a8b0c01e9d88dea30f84bd..1f0fd8a3d6943581c3a91b56d619cf609b0b53a5 100644 (file)
@@ -32,6 +32,9 @@
 #include "var.h"
 #include "vfm.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 /* FIXME: Implement PRINT subcommand. */
 
 /* Explains how to recode one value.  `from' must be first element.  */
diff --git a/src/bool.h b/src/bool.h
deleted file mode 100644 (file)
index f5e898f..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-#ifndef BOOL_H
-#define BOOL_H 1
-
-#if HAVE_STDBOOL_H
-# include <stdbool.h>
-#else
-# if ! HAVE__BOOL
-#  ifdef __cplusplus
-typedef bool _Bool;
-#  else
-typedef unsigned char _Bool;
-#  endif
-# endif
-# define bool _Bool
-# define false 0
-# define true 1
-# define __bool_true_false_are_defined 1
-#endif
-
-#endif /* bool.h */
index 76af982871080b2c7522a106510356c2ad510be0..e5695c44262db3e9957f4fe95c93a1495eb429ad 100644 (file)
@@ -1,10 +1,13 @@
 #include <config.h>
 #include "calendar.h"
 #include <assert.h>
-#include "bool.h"
+#include <stdbool.h>
 #include "settings.h"
 #include "val.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 /* 14 Oct 1582. */
 #define EPOCH (-577734)
 
index af5fc049c2ef68605328c14c1e4efcb3613c47c1..cf99e0226e4bb1883050f7d3be2b7611763cd58b 100644 (file)
@@ -21,7 +21,7 @@
 #define HEADER_CASE
 
 #include <stddef.h>
-#include "bool.h"
+#include <stdbool.h>
 #include "val.h"
 
 /* Opaque structure that represents a case.  Use accessor
index 706a6b93916dc727e5e5711bdf579a730e69a852..9c3da66023384390cf3018d61a202abee95d851c 100644 (file)
 #include "alloc.h"
 #include "case.h"
 #include "error.h"
+#include "full-read.h"
+#include "full-write.h"
 #include "misc.h"
 #include "mkfile.h"
 #include "settings.h"
 #include "var.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 #define IO_BUF_SIZE (8192 / sizeof (union value))
 
 /* A casefile represents a sequentially accessible stream of
@@ -173,8 +178,6 @@ static void fill_buffer (struct casereader *reader);
 
 static int safe_open (const char *filename, int flags);
 static int safe_close (int fd);
-static int full_read (int fd, void *buffer, size_t size);
-static int full_write (int fd, const void *buffer, size_t size);
 
 /* Creates and returns a casefile to store cases of VALUE_CNT
    `union value's each. */
@@ -727,49 +730,6 @@ static int safe_close (int fd)
   return retval;
 }
 
-/* Calls read(), passing FD, BUFFER, and SIZE, repeating as
-   necessary to deal with interrupted calls. */
-static int
-full_read (int fd, void *buffer_, size_t size) 
-{
-  char *buffer = buffer_;
-  size_t bytes_read = 0;
-  
-  while (bytes_read < size)
-    {
-      int retval = read (fd, buffer + bytes_read, size - bytes_read);
-      if (retval > 0) 
-        bytes_read += retval; 
-      else if (retval == 0) 
-        return bytes_read;
-      else if (errno != EINTR)
-        return -1;
-    }
-
-  return bytes_read;
-}
-
-/* Calls write(), passing FD, BUFFER, and SIZE, repeating as
-   necessary to deal with interrupted calls. */
-static int
-full_write (int fd, const void *buffer_, size_t size) 
-{
-  const char *buffer = buffer_;
-  size_t bytes_written = 0;
-  
-  while (bytes_written < size)
-    {
-      int retval = write (fd, buffer + bytes_written, size - bytes_written);
-      if (retval >= 0) 
-        bytes_written += retval; 
-      else if (errno != EINTR)
-        return -1;
-    }
-
-  return bytes_written;
-}
-
-
 /* Registers our exit handler with atexit() if it has not already
    been registered. */
 static void
index 48c9cd78ea3a3042b6837c55b9c6361c8503d5af..4286a78a5286154853fafdde8108efd490dd55c2 100644 (file)
@@ -21,7 +21,7 @@
 #define HEADER_CASEFILE
 
 #include <stddef.h>
-#include "bool.h"
+#include <stdbool.h>
 
 struct ccase;
 struct casefile;
index 6d45bd68c0aeeae04bae42d47352f4a4ad070e56..50214db2717daeac333e2707509c6ea7769bae56 100644 (file)
@@ -28,7 +28,7 @@
 #include "alloc.h"
 #include "error.h"
 #include "filename.h"
-#include "getline.h"
+#include "getl.h"
 #include "main.h"
 #include "output.h"
 #include "settings.h"
 #include "copyleft.h"
 #include "glob.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+#define N_(msgid) msgid
+
 void welcome (void);
 static void usage (void);
 
@@ -138,7 +142,7 @@ parse_command_line (int argc, char **argv)
          config_path = optarg;
          break;
        case 'f':
-         printf(_("%s is not yet implemented."), "-f");
+         printf (_("%s is not yet implemented."), "-f");
           putchar('\n');
          break;
        case 'h':
index de77be80e8f95596e67c291309590691b84b2377..4203ac32d0ea7f478ed1dd65a51bae61ed58f13a 100644 (file)
@@ -28,7 +28,7 @@
 #include "dictionary.h"
 #include "error.h"
 #include "glob.h"
-#include "getline.h"
+#include "getl.h"
 #include "lexer.h"
 #include "main.h"
 #include "settings.h"
 #if HAVE_SYS_WAIT_H
 #include <sys/wait.h>
 #endif
+
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+#define N_(msgid) msgid
 \f
 /* Global variables. */
 
index 256b6a7e3eec3be34d1590c6b88974b661c1b1e4..6e6bd96ad18992c1b361b2d191825d6c0459ff7a 100644 (file)
@@ -31,6 +31,9 @@
 #include "str.h"
 #include "var.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 struct compute_trns;
 struct lvalue;
 
index e3220d79485a5d94ea9c39f8c24374897c46fcd0..bab59f90c7c7db3d0f432bcf61948ad860368a43 100644 (file)
@@ -29,6 +29,9 @@
 #include "str.h"
 #include "var.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 /* Implementation details:
 
    The S?SS manuals do not specify the order that COUNT subcommands are
index 62ba0a3a4c42c304b1d779897fbbfe1267c327b7..09873e85e1d71abeab56778b360ea43c1de146ef 100644 (file)
 #include "var.h"
 #include "vfm.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+#define N_(msgid) msgid
+
 /* (headers) */
 
 #include "debug-print.h"
index ec03274b45bed23c4e247d03fe8634bb85fc260e..879ad10bd4fc3442a0be3935eb7ba5b0c70875a4 100644 (file)
@@ -26,9 +26,9 @@
 #include <stddef.h>
 #include <stdio.h>
 #include <stdlib.h>
-#include "bool.h"
+#include <stdbool.h>
 #include "error.h"
-#include "getline.h"
+#include "getl.h"
 #include "calendar.h"
 #include "lexer.h"
 #include "magic.h"
 #include "settings.h"
 #include "str.h"
 #include "var.h"
-\f
-#include "debug-print.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
+#include "debug-print.h"
 \f
 /* Specialized error routine. */
 
index 382b412909a0ca93000e92c8653d252d22a15991..9499f78cb0b669994dd0aba78744d9e57f60a33e 100644 (file)
@@ -21,7 +21,7 @@
 #define data_in_h 1
 
 #include <stddef.h>
-#include "bool.h"
+#include <stdbool.h>
 #include "format.h"
 
 /* Flags. */
index bab5d215e9fe8ea0ed7f2c5560dd254350b277cd..2b088860bf71f7493995bb160852db1556828ef4 100644 (file)
@@ -41,6 +41,9 @@
 #include "tab.h"
 #include "var.h"
 #include "vfm.h"
+
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
 \f
 /* Utility function. */
 
index ae322bce59953ddc9ebbf69a6a1be4f813e8e8ce..2600ccb8037dfac35af8494b60b6c5b23a6eaa9f 100644 (file)
@@ -34,6 +34,9 @@
 #include "str.h"
 #include "var.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 #include "debug-print.h"
 \f
 /* Public functions. */
index 0339a0dd82ee95c6e9455c252d658a71d40b8d0a..f21856a76857161d875675691c96ce738abf90b1 100644 (file)
@@ -22,6 +22,9 @@
 #include "error.h"
 #include "lexer.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 /* Stub for USE command. */
 int
 cmd_use (void) 
index ba33b263ea51e609116b13548d1bf0c3e0674257..fedba7f6938586ee098ee4c758a3e24111c271d8 100644 (file)
 #include "var.h"
 #include "vfm.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+#define N_(msgid) msgid
+
 /* DESCRIPTIVES private data. */
 
 struct dsc_proc;
index 83576e9dcee9c640402958ef2287630c2e98f7a7..39f0550e5aba217565f5b0daeeb80b2a7e6ab32b 100644 (file)
 #include "alloc.h"
 #include "error.h"
 #include "filename.h"
-#include "getline.h"
+#include "getl.h"
 #include "output.h"
 #include "som.h"
 #include "tab.h"
 #include "version.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 /* Device-independent output driver extension record. */
 struct devind_driver_ext
   {
index 76f80ad0520f3a969e30575aefe901a84e681033..2f17d41980fcdc04329e74e8fcafbd8af042e66f 100644 (file)
 #include "error.h"
 #include "file-handle.h"
 #include "filename.h"
-#include "getline.h"
+#include "getl.h"
 #include "lexer.h"
 #include "str.h"
 #include "vfm.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 #include "debug-print.h"
 
 /* Flags for DFM readers. */
index e971ea1110734c98554d8144830bc562601edc0e..2bf3f15674bfafd291aef0473a11d8af32681f2d 100644 (file)
@@ -28,6 +28,9 @@
 #include "filename.h"
 #include "str.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 /* Data file writer. */
 struct dfm_writer
   {
index 6fbd5dfa575783efe2447225682fc6cbe1c055c6..9ea9f31a2a644063d07ebf895f584607b1482745 100644 (file)
@@ -32,6 +32,9 @@
 #include "value-labels.h"
 #include "var.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 /* A dictionary. */
 struct dictionary
   {
index fa12f6852ae7833fafab4a725f2bebd45abf22ee..1acf84936c0b8b96c1bb16501a7b8dc882b2fa0a 100644 (file)
@@ -29,6 +29,9 @@
 #include "str.h"
 #include "var.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 #include "debug-print.h"
 
 /* *INDENT-OFF* */
index 571e6393340640107bb6773fd7a7f8bd79f1883d..0d1a58791a58aa3107c8bc65eab954dee6dede43 100644 (file)
@@ -25,7 +25,7 @@
 #include <stdlib.h>
 #include "alloc.h"
 #include "command.h"
-#include "getline.h"
+#include "getl.h"
 #include "glob.h"
 #include "lexer.h"
 #include "main.h"
 #include "var.h"
 #include "version.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+#define N_(msgid) msgid
+
 int err_error_count;
 int err_warning_count;
 
index 562defe7b403ca7663722cb70b1394d50584bbb5..b54f574b5c36631f79ed2b7e98f0fd5f3daca5f3 100644 (file)
@@ -44,6 +44,10 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
 #include "moments.h"
 #include "percentiles.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+#define N_(msgid) msgid
+
 /* (headers) */
 #include "chart.h"
 
index d5ee125ef769a76cf87f6ddf98e76d17bbb93ace..4331d030ff65285761e1a5cf1f50287eedd156ea 100644 (file)
 #include <config.h>
 #include "private.h"
 
-#if TIME_WITH_SYS_TIME
-#include <sys/time.h>
-#include <time.h>
-#else
-#if HAVE_SYS_TIME_H
-#include <sys/time.h>
-#else
-#include <time.h>
-#endif
-#endif
-
 #include <ctype.h>
 #include "alloc.h"
 #include "error.h"
index 6e51fdf4aefaf98ffb09e989034169eccad8bdb3..4011d843def35d74877cabcaa0db53596af10720 100644 (file)
@@ -8,7 +8,7 @@
 #include <gsl/gsl_sf.h>
 #include <limits.h>
 #include <math.h>
-#include "bool.h"
+#include <stdbool.h>
 #include "case.h"
 #include "data-in.h"
 #include "dictionary.h"
@@ -23,6 +23,9 @@
 #include "var.h"
 #include "vfm.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 static inline double check_errno (double x) 
 {
   return errno == 0 ? x : SYSMIS;
index d9d3b3c30507eb77798ed57bdf254ce25dd39e7a..d43a502126bdd71299d93b18f9c3798cea7ec85e 100644 (file)
@@ -2,7 +2,7 @@ do 'generate.pl';
 
 sub generate_output {
     print "#include <stdlib.h>\n";
-    print "#include \"bool.h\"\n\n";
+    print "#include <stdbool.h>\n\n";
 
     print "typedef enum";
     print "  {\n";
index f1c5f19b14928b2d44c458827ce5cb1c3e5084f4..6ea731ef13311ec2217ddebc37fcf9502eb450b7 100644 (file)
 #include "filename.h"
 #include "command.h"
 #include "lexer.h"
-#include "getline.h"
+#include "getl.h"
 #include "error.h"
 #include "magic.h"
 #include "var.h"
 #include "linked-list.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 /* (headers) */
 
 /* File handle. */
index b90ae1840dbc1b7a462086ea85fcdb4ee76c5326..5751fd40a280d81f14108d6154b30166e5438a30 100644 (file)
@@ -33,6 +33,9 @@
 #include "var.h"
 #include "vfm.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 /* Defines the three types of complex files read by FILE TYPE. */
 enum
   {
index 3b25b99c9e768452916412083f05b65643fc5c86..b8f8332fdb9057f753435aedd92e84ae33d27d14 100644 (file)
@@ -20,6 +20,7 @@
 #include <config.h>
 #include "error.h"
 #include "filename.h"
+#include <stdio.h>
 #include <stdlib.h>
 #include <ctype.h>
 #include <errno.h>
 #include "settings.h"
 #include "str.h"
 #include "version.h"
+#include "xreadlink.h"
+
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
 
 #include "debug-print.h"
 
@@ -38,7 +43,8 @@
 #if HAVE_UNISTD_H
 #include <unistd.h>
 #endif
-#include "stat.h"
+#include <sys/stat.h>
+#include "stat-macros.h"
 #endif
 
 #ifdef __WIN32__
@@ -619,40 +625,13 @@ fn_exists_p (const char *name)
 #endif
 }
 
-#ifdef unix
-/* Stolen from libc.info but heavily modified, this is a wrapper
-   around readlink() that allows for arbitrary filename length. */
-char *
-fn_readlink (const char *filename)
-{
-  int size = 128;
-
-  for (;;)
-    {
-      char *buffer = xmalloc (size);
-      int nchars  = readlink (filename, buffer, size);
-      if (nchars == -1)
-       {
-         free (buffer);
-         return NULL;
-       }
-
-      if (nchars < size - 1)
-       {
-         buffer[nchars] = 0;
-         return buffer;
-       }
-      free (buffer);
-      size *= 2;
-    }
-}
-#else /* Not UNIX. */
+/* Returns the symbolic link value for FILENAME as a dynamically
+   allocated buffer, or a null pointer on failure. */
 char *
 fn_readlink (const char *filename)
 {
-  return NULL;
+  return xreadlink (filename, 32);
 }
-#endif /* Not UNIX. */
 \f
 /* Environment variables. */
 
index 37b461db375cab18d2a25a9e57b2b40b6c82812b..7b33d3dbbbb67ed207e87359a614af0e026f69b3 100644 (file)
@@ -42,6 +42,9 @@
 #include <sys/types.h>
 #endif
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 /* List of variable names. */
 struct varname
   {
index 217aa523d24ee5f082d77f7355314a4911b13b30..a37f71e814082bc6fadc02df4ce778f724baf162 100644 (file)
@@ -28,6 +28,9 @@
 #include "str.h"
 #include "var.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 #define DEFFMT(LABEL, NAME, N_ARGS, IMIN_W, IMAX_W, OMIN_W, OMAX_W, CAT, \
               OUTPUT, SPSS_FMT) \
        {NAME, N_ARGS, IMIN_W, IMAX_W, OMIN_W, OMAX_W, CAT, OUTPUT, SPSS_FMT},
index da33f5f3abf323a973628c3297256b9ff068c45f..988c8f8c6ae982941954de882d346b7a2c6b4a9b 100644 (file)
@@ -22,7 +22,7 @@
 
 /* Display format types. */
 
-#include "bool.h"
+#include <stdbool.h>
 
 /* See the definitions of these functions and variables when modifying
    this list:
index 6b5f8d219e119f8f57c4d61a1ad1b9d8e799be2d..a569c678a4b7c4bf1d165fef891e91fd20e23e79 100644 (file)
@@ -28,6 +28,9 @@
 #include "str.h"
 #include "var.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 #include "debug-print.h"
 
 enum
index 983f35daa08c8bd3172312101b4867e2070c1fab..c165c21d6926bf2dbe6468f8ce55ec69c23ba4b7 100644 (file)
 #include "vfm.h"
 #include "settings.h"
 #include "chart.h"
+
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+#define N_(msgid) msgid
+
 /* (headers) */
 
 #include "debug-print.h"
index bda892a503c6c0ef95e4f0ba63f2cf6d2c7aaf11..a13277a6bf4676ccc0125d1bf846e5f50b9a25a4 100644 (file)
--- a/src/get.c
+++ b/src/get.c
@@ -40,6 +40,9 @@
 #include "vfm.h"
 #include "vfmP.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 #include "debug-print.h"
 
 /* Rearranging and reducing a dictionary. */
diff --git a/src/getl.c b/src/getl.c
new file mode 100644 (file)
index 0000000..65ecb12
--- /dev/null
@@ -0,0 +1,540 @@
+/* PSPP - computes sample statistics.
+   Copyright (C) 1997-9, 2000 Free Software Foundation, Inc.
+   Written by Ben Pfaff <blp@gnu.org>.
+
+   This program is free software; you can redistribute it and/or
+   modify it under the terms of the GNU General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful, but
+   WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+   02110-1301, USA. */
+
+#include <config.h>
+#include "getl.h"
+#include "error.h"
+#include <stdio.h>
+#include <errno.h>
+#include <stdlib.h>
+#include "alloc.h"
+#include "command.h"
+#include "error.h"
+#include "filename.h"
+#include "lexer.h"
+#include "repeat.h"
+#include "settings.h"
+#include "str.h"
+#include "tab.h"
+#include "var.h"
+#include "version.h"
+
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
+/* Global variables. */
+struct string getl_buf;
+struct getl_script *getl_head;
+struct getl_script *getl_tail;
+int getl_interactive;
+int getl_welcomed;
+int getl_mode;
+int getl_prompt;
+
+#if HAVE_LIBREADLINE
+#include <readline/readline.h>
+#endif
+
+#if HAVE_LIBHISTORY
+static char *history_file;
+
+#if HAVE_READLINE_HISTORY_H
+#include <readline/history.h>
+#else /* no readline/history.h */
+extern void add_history (char *);
+extern void using_history (void);
+extern int read_history (char *);
+extern void stifle_history (int);
+extern int write_history (char *);
+#endif /* no readline/history.h */
+#endif /* -lhistory */
+
+
+extern struct cmd_set cmd;
+
+static struct string getl_include_path;
+
+/* Number of levels of DO REPEAT structures we're nested inside.  If
+   this is greater than zero then DO REPEAT macro substitutions are
+   performed. */
+static int DO_REPEAT_level;
+
+static int read_console (void);
+
+/* Initialize getl. */
+void
+getl_initialize (void)
+{
+  ds_create (&getl_include_path,
+            fn_getenv_default ("STAT_INCLUDE_PATH", include_path));
+  ds_init (&getl_buf, 256);
+#if HAVE_LIBREADLINE 
+  rl_completion_entry_function = pspp_completion_function;
+#endif
+}
+
+/* Close getl. */
+void
+getl_uninitialize (void)
+{
+  getl_close_all();
+#if HAVE_LIBHISTORY && defined (unix)
+  if (history_file)
+    write_history (history_file);
+#endif
+  ds_destroy (&getl_buf);
+  ds_destroy (&getl_include_path);
+}
+
+/* Returns a string that represents the directory that the syntax file
+   currently being read resides in.  If there is no syntax file then
+   returns the OS current working directory.  Return value must be
+   free()'d. */
+char *
+getl_get_current_directory (void)
+{
+  return getl_head ? fn_dirname (getl_head->fn) : fn_get_cwd ();
+}
+
+/* Delete everything from the include path. */
+void
+getl_clear_include_path (void)
+{
+  ds_clear (&getl_include_path);
+}
+
+/* Add to the include path. */
+void
+getl_add_include_dir (const char *path)
+{
+  if (ds_length (&getl_include_path))
+    ds_putc (&getl_include_path, PATH_DELIMITER);
+
+  ds_puts (&getl_include_path, path);
+}
+
+/* Adds FN to the tail end of the list of script files to execute.
+   OPTIONS is the value to stick in the options field of the
+   getl_script struct.  If WHERE is zero then the file is added after
+   all other files; otherwise it is added before all other files (this
+   can be done only if parsing has not yet begun). */
+void
+getl_add_file (const char *fn, int separate, int where)
+{
+  struct getl_script *n = xmalloc (sizeof *n);
+
+  assert (fn != NULL);
+  n->next = NULL;
+  if (getl_tail == NULL)
+    getl_head = getl_tail = n;
+  else if (!where)
+    getl_tail = getl_tail->next = n;
+  else
+    {
+      assert (getl_head->f == NULL);
+      n->next = getl_head;
+      getl_head = n;
+    }
+  n->included_from = n->includes = NULL;
+  n->fn = xstrdup (fn);
+  n->ln = 0;
+  n->f = NULL;
+  n->separate = separate;
+  n->first_line = NULL;
+}
+
+/* Inserts the given file with filename FN into the current file after
+   the current line. */
+void
+getl_include (const char *fn)
+{
+  struct getl_script *n;
+  char *real_fn;
+
+  {
+    char *cur_dir = getl_get_current_directory ();
+    real_fn = fn_search_path (fn, ds_c_str (&getl_include_path), cur_dir);
+    free (cur_dir);
+  }
+
+  if (!real_fn)
+    {
+      msg (SE, _("Can't find `%s' in include file search path."), fn);
+      return;
+    }
+
+  if (!getl_head)
+    {
+      getl_add_file (real_fn, 0, 0);
+      free (real_fn);
+    }
+  else
+    {
+      n = xmalloc (sizeof *n);
+      n->included_from = getl_head;
+      getl_head = getl_head->includes = n;
+      n->includes = NULL;
+      n->next = NULL;
+      n->fn = real_fn;
+      n->ln = 0;
+      n->f = NULL;
+      n->separate = 0;
+      n->first_line = NULL;
+    }
+}
+
+/* Add the virtual file FILE to the list of files to be processed.
+   The first_line field in FILE must already have been initialized. */
+void 
+getl_add_virtual_file (struct getl_script *file)
+{
+  if (getl_tail == NULL)
+    getl_head = getl_tail = file;
+  else
+    getl_tail = getl_tail->next = file;
+  file->included_from = file->includes = NULL;
+  file->next = NULL;
+  file->fn = file->first_line->line;
+  file->ln = -file->first_line->len - 1;
+  file->separate = 0;
+  file->f = NULL;
+  file->cur_line = NULL;
+  file->remaining_loops = 1;
+  file->loop_index = -1;
+  file->macros = NULL;
+}
+
+/* Causes the DO REPEAT virtual file passed in FILE to be included in
+   the current file.  The first_line, cur_line, remaining_loops,
+   loop_index, and macros fields in FILE must already have been
+   initialized. */
+void
+getl_add_DO_REPEAT_file (struct getl_script *file)
+{
+  /* getl_head == NULL can't happen. */
+  assert (getl_head);
+
+  DO_REPEAT_level++;
+  file->included_from = getl_head;
+  getl_head = getl_head->includes = file;
+  file->includes = NULL;
+  file->next = NULL;
+  assert (file->first_line->len < 0);
+  file->fn = file->first_line->line;
+  file->ln = -file->first_line->len - 1;
+  file->separate = 0;
+  file->f = NULL;
+}
+
+/* Display a welcoming message. */
+static void
+welcome (void)
+{
+  getl_welcomed = 1;
+  fputs ("PSPP is free software and you are welcome to distribute copies of "
+        "it\nunder certain conditions; type \"show copying.\" to see the "
+        "conditions.\nThere is ABSOLUTELY NO WARRANTY for PSPP; type \"show "
+        "warranty.\" for details.\n", stdout);
+  puts (stat_version);
+}
+
+/* Reads a single line from the user's terminal. */
+
+/* From repeat.c. */
+extern void perform_DO_REPEAT_substitutions (void);
+  
+/* Reads a single line from the line buffer associated with getl_head.
+   Returns 1 if a line was successfully read or 0 if no more lines are
+   available. */
+static int
+handle_line_buffer (void)
+{
+  struct getl_script *s = getl_head;
+
+  /* Check that we're not all done. */
+  do
+    {
+      if (s->cur_line == NULL)
+       {
+         s->loop_index++;
+         if (s->remaining_loops-- == 0)
+           return 0;
+         s->cur_line = s->first_line;
+       }
+
+      if (s->cur_line->len < 0)
+       {
+         s->ln = -s->cur_line->len - 1;
+         s->fn = s->cur_line->line;
+         s->cur_line = s->cur_line->next;
+         continue;
+       }
+    }
+  while (s->cur_line == NULL);
+
+  ds_concat (&getl_buf, s->cur_line->line, s->cur_line->len);
+
+  /* Advance pointers. */
+  s->cur_line = s->cur_line->next;
+  s->ln++;
+
+  return 1;
+}
+
+/* Reads a single line into getl_buf from the list of files.  Will not
+   read from the eof of one file to the beginning of another unless
+   the options field on the new file's getl_script is nonzero.  Return
+   zero on eof. */
+int
+getl_read_line (void)
+{
+  getl_mode = GETL_MODE_BATCH;
+  
+  while (getl_head)
+    {
+      struct getl_script *s = getl_head;
+
+      ds_clear (&getl_buf);
+      if (s->separate)
+       return 0;
+
+      if (s->first_line)
+       {
+         if (!handle_line_buffer ())
+           {
+             getl_close_file ();
+             continue;
+           }
+         perform_DO_REPEAT_substitutions ();
+         if (getl_head->print)
+           tab_output_text (TAB_LEFT | TAT_FIX | TAT_PRINTF, "+%s",
+                            ds_c_str (&getl_buf));
+         return 1;
+       }
+      
+      if (s->f == NULL)
+       {
+         msg (VM (1), _("%s: Opening as syntax file."), s->fn);
+         s->f = fn_open (s->fn, "r");
+
+         if (s->f == NULL)
+           {
+             msg (ME, _("Opening `%s': %s."), s->fn, strerror (errno));
+             getl_close_file ();
+             continue;
+           }
+       }
+
+      if (!ds_gets (&getl_buf, s->f))
+       {
+         if (ferror (s->f))
+           msg (ME, _("Reading `%s': %s."), s->fn, strerror (errno));
+         getl_close_file ();
+         continue;
+       }
+      if (ds_length (&getl_buf) > 0 && ds_end (&getl_buf)[-1] == '\n')
+       ds_truncate (&getl_buf, ds_length (&getl_buf) - 1);
+
+      if (get_echo())
+       tab_output_text (TAB_LEFT | TAT_FIX, ds_c_str (&getl_buf));
+
+      getl_head->ln++;
+
+      /* Allows shebang invocation: `#! /usr/local/bin/pspp'. */
+      if (ds_c_str (&getl_buf)[0] == '#'
+         && ds_c_str (&getl_buf)[1] == '!')
+       continue;
+
+      return 1;
+    }
+
+  if (getl_interactive == 0)
+    return 0;
+
+  getl_mode = GETL_MODE_INTERACTIVE;
+  
+  if (getl_welcomed == 0)
+    welcome ();
+
+  return read_console ();
+}
+
+/* Closes the current file, whether it be a main file or included
+   file, then moves getl_head to the next file in the chain. */
+void
+getl_close_file (void)
+{
+  struct getl_script *s = getl_head;
+
+  if (!s)
+    return;
+  assert (getl_tail != NULL);
+
+  if (s->first_line)
+    {
+      struct getl_line_list *cur, *next;
+
+      s->fn = NULL; /* It will be freed below. */
+      for (cur = s->first_line; cur; cur = next)
+       {
+         next = cur->next;
+         free (cur->line);
+         free (cur);
+       }
+
+      DO_REPEAT_level--;
+    }
+  
+  if (s->f && EOF == fn_close (s->fn, s->f))
+    msg (MW, _("Closing `%s': %s."), s->fn, strerror (errno));
+  free (s->fn);
+
+  if (s->included_from)
+    {
+      getl_head = s->included_from;
+      getl_head->includes = NULL;
+    }
+  else
+    {
+      getl_head = s->next;
+      if (NULL == getl_head)
+       getl_tail = NULL;
+    }
+  
+  free (s);
+}
+
+/* PORTME: Adapt to your local system's idea of the terminal. */
+#if HAVE_LIBREADLINE
+
+#if HAVE_READLINE_READLINE_H
+#include <readline/readline.h>
+#else /* no readline/readline.h */
+extern char *readline (char *);
+#endif /* no readline/readline.h */
+
+static int
+read_console (void)
+{
+  char *line;
+  char *prompt;
+
+  err_error_count = err_warning_count = 0;
+  err_already_flagged = 0;
+
+#if HAVE_LIBHISTORY
+  if (!history_file)
+    {
+#ifdef unix
+      history_file = tilde_expand (HISTORY_FILE);
+#endif
+      using_history ();
+      read_history (history_file);
+      stifle_history (MAX_HISTORY);
+    }
+#endif /* -lhistory */
+
+  switch (getl_prompt)
+    {
+    case GETL_PRPT_STANDARD:
+      prompt = get_prompt();
+      break;
+
+    case GETL_PRPT_CONTINUATION:
+      prompt = get_cprompt();
+      break;
+
+    case GETL_PRPT_DATA:
+      prompt = get_dprompt();
+      break;
+
+    default:
+      assert (0);
+      abort ();
+    }
+
+  line = readline (prompt);
+  if (!line)
+    return 0;
+
+#if HAVE_LIBHISTORY
+  if (*line)
+    add_history (line);
+#endif
+
+  ds_clear (&getl_buf);
+  ds_puts (&getl_buf, line);
+
+  free (line);
+
+  return 1;
+}
+#else /* no -lreadline */
+static int
+read_console (void)
+{
+  err_error_count = err_warning_count = 0;
+  err_already_flagged = 0;
+
+  fputs (getl_prompt ? get_cprompt() : get_prompt(), stdout);
+  ds_clear (&getl_buf);
+  if (ds_gets (&getl_buf, stdin))
+    return 1;
+
+  if (ferror (stdin))
+    msg (FE, "stdin: fgets(): %s.", strerror (errno));
+
+  return 0;
+}
+#endif /* no -lreadline */
+
+/* Closes all files. */
+void
+getl_close_all (void)
+{
+  while (getl_head)
+    getl_close_file ();
+}
+
+/* Sets the options flag of the current script to 0, thus allowing it
+   to be read in.  Returns nonzero if this action was taken, zero
+   otherwise. */
+int
+getl_perform_delayed_reset (void)
+{
+  if (getl_head && getl_head->separate)
+    {
+      getl_head->separate = 0;
+      discard_variables ();
+      lex_reset_eof ();
+      return 1;
+    }
+  return 0;
+}
+
+/* Puts the current file and line number in *FN and *LN, respectively,
+   or NULL and -1 if none. */
+void
+getl_location (const char **fn, int *ln)
+{
+  if (fn != NULL)
+    *fn = getl_head ? getl_head->fn : NULL;
+  if (ln != NULL)
+    *ln = getl_head ? getl_head->ln : -1;
+}
diff --git a/src/getl.h b/src/getl.h
new file mode 100644 (file)
index 0000000..483d9a2
--- /dev/null
@@ -0,0 +1,117 @@
+/* PSPP - computes sample statistics.
+   Copyright (C) 1997-9, 2000 Free Software Foundation, Inc.
+   Written by Ben Pfaff <blp@gnu.org>.
+
+   This program is free software; you can redistribute it and/or
+   modify it under the terms of the GNU General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful, but
+   WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+   02110-1301, USA. */
+
+#if !getl_h
+#define getl_h 1
+
+#include <stdio.h>
+
+/* Defines a list of lines used by DO REPEAT. */
+/* Special case: if LEN is negative then it is a line number; in this
+   case LINE is a file name.  This is used to allow errors to be
+   reported for the correct file and line number when DO REPEAT spans
+   files. */
+struct getl_line_list
+  {
+    char *line;                                /* Line contents. */
+    int len;                           /* Line length. */
+    struct getl_line_list *next;       /* Next line. */
+  };
+
+/* Source file. */
+struct getl_script
+  {
+    struct getl_script *included_from; /* File that this is nested inside. */
+    struct getl_script *includes;      /* File nested inside this file. */
+    struct getl_script *next;          /* Next file in list. */
+    char *fn;                          /* Filename. */
+    int ln;                            /* Line number. */
+    int separate;                      /* !=0 means this is a separate job. */
+    FILE *f;                           /* File handle. */
+
+    /* Used only if F is NULL.  Used for DO REPEAT. */
+    struct getl_line_list *first_line; /* First line in line buffer. */
+    struct getl_line_list *cur_line;   /* Current line in line buffer. */
+    int remaining_loops;               /* Number of remaining loops through LINES. */
+    int loop_index;                    /* Number of loops through LINES so far. */
+    void *macros;                      /* Pointer to macro table. */
+    int print;                         /* 1=Print lines as executed. */
+  };
+
+/* List of script files. */
+extern struct getl_script *getl_head;  /* Current file. */
+extern struct getl_script *getl_tail;  /* End of list. */
+
+/* If getl_head==0 and getl_interactive!=0, lines will be read from
+   the console rather than terminating. */
+extern int getl_interactive;
+
+/* 1=the welcome message has been printed. */
+extern int getl_welcomed;
+
+/* Prompt styles. */
+enum
+  {
+    GETL_PRPT_STANDARD,                /* Just asks for a command. */
+    GETL_PRPT_CONTINUATION,    /* Continuation lines for a single command. */
+    GETL_PRPT_DATA             /* Between BEGIN DATA and END DATA. */
+  };
+
+/* Current mode. */
+enum
+  {
+    GETL_MODE_BATCH,           /* Batch mode. */
+    GETL_MODE_INTERACTIVE      /* Interactive mode. */
+  };
+
+/* One of GETL_MODE_*, representing the current mode. */
+extern int getl_mode;
+
+/* Current prompting style: one of GETL_PRPT_*. */
+extern int getl_prompt;
+
+/* Are we reading a script? Are we interactive? */
+#define getl_am_interactive (getl_head == NULL)
+#define getl_reading_script (getl_head != NULL)
+
+/* Current line.  This line may be modified by modules other than
+   getl.c, and by lexer.c in particular. */
+extern struct string getl_buf;
+
+/* Name of the command history file. */
+#if HAVE_LIBREADLINE && HAVE_LIBHISTORY
+extern char *getl_history;
+#endif
+
+void getl_initialize (void);
+void getl_uninitialize (void);
+void getl_clear_include_path (void);
+char *getl_get_current_directory (void);
+void getl_add_include_dir (const char *);
+void getl_add_file (const char *fn, int separate, int where);
+void getl_include (const char *fn);
+int getl_read_line (void);
+void getl_close_file (void);
+void getl_close_all (void);
+int getl_perform_delayed_reset (void);
+void getl_add_DO_REPEAT_file (struct getl_script *);
+void getl_add_virtual_file (struct getl_script *);
+void getl_location (const char **, int *);
+
+#endif /* getl_h */
diff --git a/src/getline.c b/src/getline.c
deleted file mode 100644 (file)
index d017098..0000000
+++ /dev/null
@@ -1,537 +0,0 @@
-/* PSPP - computes sample statistics.
-   Copyright (C) 1997-9, 2000 Free Software Foundation, Inc.
-   Written by Ben Pfaff <blp@gnu.org>.
-
-   This program is free software; you can redistribute it and/or
-   modify it under the terms of the GNU General Public License as
-   published by the Free Software Foundation; either version 2 of the
-   License, or (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful, but
-   WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-   02110-1301, USA. */
-
-#include <config.h>
-#include "getline.h"
-#include "error.h"
-#include <stdio.h>
-#include <errno.h>
-#include <stdlib.h>
-#include "alloc.h"
-#include "command.h"
-#include "error.h"
-#include "filename.h"
-#include "lexer.h"
-#include "repeat.h"
-#include "settings.h"
-#include "str.h"
-#include "tab.h"
-#include "var.h"
-#include "version.h"
-
-/* Global variables. */
-struct string getl_buf;
-struct getl_script *getl_head;
-struct getl_script *getl_tail;
-int getl_interactive;
-int getl_welcomed;
-int getl_mode;
-int getl_prompt;
-
-#if HAVE_LIBREADLINE
-#include <readline/readline.h>
-#endif
-
-#if HAVE_LIBHISTORY
-static char *history_file;
-
-#if HAVE_READLINE_HISTORY_H
-#include <readline/history.h>
-#else /* no readline/history.h */
-extern void add_history (char *);
-extern void using_history (void);
-extern int read_history (char *);
-extern void stifle_history (int);
-extern int write_history (char *);
-#endif /* no readline/history.h */
-#endif /* -lhistory */
-
-
-extern struct cmd_set cmd;
-
-static struct string getl_include_path;
-
-/* Number of levels of DO REPEAT structures we're nested inside.  If
-   this is greater than zero then DO REPEAT macro substitutions are
-   performed. */
-static int DO_REPEAT_level;
-
-static int read_console (void);
-
-/* Initialize getline. */
-void
-getl_initialize (void)
-{
-  ds_create (&getl_include_path,
-            fn_getenv_default ("STAT_INCLUDE_PATH", include_path));
-  ds_init (&getl_buf, 256);
-#if HAVE_LIBREADLINE 
-  rl_completion_entry_function = pspp_completion_function;
-#endif
-}
-
-/* Close getline. */
-void
-getl_uninitialize (void)
-{
-  getl_close_all();
-#if HAVE_LIBHISTORY && defined (unix)
-  if (history_file)
-    write_history (history_file);
-#endif
-  ds_destroy (&getl_buf);
-  ds_destroy (&getl_include_path);
-}
-
-/* Returns a string that represents the directory that the syntax file
-   currently being read resides in.  If there is no syntax file then
-   returns the OS current working directory.  Return value must be
-   free()'d. */
-char *
-getl_get_current_directory (void)
-{
-  return getl_head ? fn_dirname (getl_head->fn) : fn_get_cwd ();
-}
-
-/* Delete everything from the include path. */
-void
-getl_clear_include_path (void)
-{
-  ds_clear (&getl_include_path);
-}
-
-/* Add to the include path. */
-void
-getl_add_include_dir (const char *path)
-{
-  if (ds_length (&getl_include_path))
-    ds_putc (&getl_include_path, PATH_DELIMITER);
-
-  ds_puts (&getl_include_path, path);
-}
-
-/* Adds FN to the tail end of the list of script files to execute.
-   OPTIONS is the value to stick in the options field of the
-   getl_script struct.  If WHERE is zero then the file is added after
-   all other files; otherwise it is added before all other files (this
-   can be done only if parsing has not yet begun). */
-void
-getl_add_file (const char *fn, int separate, int where)
-{
-  struct getl_script *n = xmalloc (sizeof *n);
-
-  assert (fn != NULL);
-  n->next = NULL;
-  if (getl_tail == NULL)
-    getl_head = getl_tail = n;
-  else if (!where)
-    getl_tail = getl_tail->next = n;
-  else
-    {
-      assert (getl_head->f == NULL);
-      n->next = getl_head;
-      getl_head = n;
-    }
-  n->included_from = n->includes = NULL;
-  n->fn = xstrdup (fn);
-  n->ln = 0;
-  n->f = NULL;
-  n->separate = separate;
-  n->first_line = NULL;
-}
-
-/* Inserts the given file with filename FN into the current file after
-   the current line. */
-void
-getl_include (const char *fn)
-{
-  struct getl_script *n;
-  char *real_fn;
-
-  {
-    char *cur_dir = getl_get_current_directory ();
-    real_fn = fn_search_path (fn, ds_c_str (&getl_include_path), cur_dir);
-    free (cur_dir);
-  }
-
-  if (!real_fn)
-    {
-      msg (SE, _("Can't find `%s' in include file search path."), fn);
-      return;
-    }
-
-  if (!getl_head)
-    {
-      getl_add_file (real_fn, 0, 0);
-      free (real_fn);
-    }
-  else
-    {
-      n = xmalloc (sizeof *n);
-      n->included_from = getl_head;
-      getl_head = getl_head->includes = n;
-      n->includes = NULL;
-      n->next = NULL;
-      n->fn = real_fn;
-      n->ln = 0;
-      n->f = NULL;
-      n->separate = 0;
-      n->first_line = NULL;
-    }
-}
-
-/* Add the virtual file FILE to the list of files to be processed.
-   The first_line field in FILE must already have been initialized. */
-void 
-getl_add_virtual_file (struct getl_script *file)
-{
-  if (getl_tail == NULL)
-    getl_head = getl_tail = file;
-  else
-    getl_tail = getl_tail->next = file;
-  file->included_from = file->includes = NULL;
-  file->next = NULL;
-  file->fn = file->first_line->line;
-  file->ln = -file->first_line->len - 1;
-  file->separate = 0;
-  file->f = NULL;
-  file->cur_line = NULL;
-  file->remaining_loops = 1;
-  file->loop_index = -1;
-  file->macros = NULL;
-}
-
-/* Causes the DO REPEAT virtual file passed in FILE to be included in
-   the current file.  The first_line, cur_line, remaining_loops,
-   loop_index, and macros fields in FILE must already have been
-   initialized. */
-void
-getl_add_DO_REPEAT_file (struct getl_script *file)
-{
-  /* getl_head == NULL can't happen. */
-  assert (getl_head);
-
-  DO_REPEAT_level++;
-  file->included_from = getl_head;
-  getl_head = getl_head->includes = file;
-  file->includes = NULL;
-  file->next = NULL;
-  assert (file->first_line->len < 0);
-  file->fn = file->first_line->line;
-  file->ln = -file->first_line->len - 1;
-  file->separate = 0;
-  file->f = NULL;
-}
-
-/* Display a welcoming message. */
-static void
-welcome (void)
-{
-  getl_welcomed = 1;
-  fputs ("PSPP is free software and you are welcome to distribute copies of "
-        "it\nunder certain conditions; type \"show copying.\" to see the "
-        "conditions.\nThere is ABSOLUTELY NO WARRANTY for PSPP; type \"show "
-        "warranty.\" for details.\n", stdout);
-  puts (stat_version);
-}
-
-/* Reads a single line from the user's terminal. */
-
-/* From repeat.c. */
-extern void perform_DO_REPEAT_substitutions (void);
-  
-/* Reads a single line from the line buffer associated with getl_head.
-   Returns 1 if a line was successfully read or 0 if no more lines are
-   available. */
-static int
-handle_line_buffer (void)
-{
-  struct getl_script *s = getl_head;
-
-  /* Check that we're not all done. */
-  do
-    {
-      if (s->cur_line == NULL)
-       {
-         s->loop_index++;
-         if (s->remaining_loops-- == 0)
-           return 0;
-         s->cur_line = s->first_line;
-       }
-
-      if (s->cur_line->len < 0)
-       {
-         s->ln = -s->cur_line->len - 1;
-         s->fn = s->cur_line->line;
-         s->cur_line = s->cur_line->next;
-         continue;
-       }
-    }
-  while (s->cur_line == NULL);
-
-  ds_concat (&getl_buf, s->cur_line->line, s->cur_line->len);
-
-  /* Advance pointers. */
-  s->cur_line = s->cur_line->next;
-  s->ln++;
-
-  return 1;
-}
-
-/* Reads a single line into getl_buf from the list of files.  Will not
-   read from the eof of one file to the beginning of another unless
-   the options field on the new file's getl_script is nonzero.  Return
-   zero on eof. */
-int
-getl_read_line (void)
-{
-  getl_mode = GETL_MODE_BATCH;
-  
-  while (getl_head)
-    {
-      struct getl_script *s = getl_head;
-
-      ds_clear (&getl_buf);
-      if (s->separate)
-       return 0;
-
-      if (s->first_line)
-       {
-         if (!handle_line_buffer ())
-           {
-             getl_close_file ();
-             continue;
-           }
-         perform_DO_REPEAT_substitutions ();
-         if (getl_head->print)
-           tab_output_text (TAB_LEFT | TAT_FIX | TAT_PRINTF, "+%s",
-                            ds_c_str (&getl_buf));
-         return 1;
-       }
-      
-      if (s->f == NULL)
-       {
-         msg (VM (1), _("%s: Opening as syntax file."), s->fn);
-         s->f = fn_open (s->fn, "r");
-
-         if (s->f == NULL)
-           {
-             msg (ME, _("Opening `%s': %s."), s->fn, strerror (errno));
-             getl_close_file ();
-             continue;
-           }
-       }
-
-      if (!ds_gets (&getl_buf, s->f))
-       {
-         if (ferror (s->f))
-           msg (ME, _("Reading `%s': %s."), s->fn, strerror (errno));
-         getl_close_file ();
-         continue;
-       }
-      if (ds_length (&getl_buf) > 0 && ds_end (&getl_buf)[-1] == '\n')
-       ds_truncate (&getl_buf, ds_length (&getl_buf) - 1);
-
-      if (get_echo())
-       tab_output_text (TAB_LEFT | TAT_FIX, ds_c_str (&getl_buf));
-
-      getl_head->ln++;
-
-      /* Allows shebang invocation: `#! /usr/local/bin/pspp'. */
-      if (ds_c_str (&getl_buf)[0] == '#'
-         && ds_c_str (&getl_buf)[1] == '!')
-       continue;
-
-      return 1;
-    }
-
-  if (getl_interactive == 0)
-    return 0;
-
-  getl_mode = GETL_MODE_INTERACTIVE;
-  
-  if (getl_welcomed == 0)
-    welcome ();
-
-  return read_console ();
-}
-
-/* Closes the current file, whether it be a main file or included
-   file, then moves getl_head to the next file in the chain. */
-void
-getl_close_file (void)
-{
-  struct getl_script *s = getl_head;
-
-  if (!s)
-    return;
-  assert (getl_tail != NULL);
-
-  if (s->first_line)
-    {
-      struct getl_line_list *cur, *next;
-
-      s->fn = NULL; /* It will be freed below. */
-      for (cur = s->first_line; cur; cur = next)
-       {
-         next = cur->next;
-         free (cur->line);
-         free (cur);
-       }
-
-      DO_REPEAT_level--;
-    }
-  
-  if (s->f && EOF == fn_close (s->fn, s->f))
-    msg (MW, _("Closing `%s': %s."), s->fn, strerror (errno));
-  free (s->fn);
-
-  if (s->included_from)
-    {
-      getl_head = s->included_from;
-      getl_head->includes = NULL;
-    }
-  else
-    {
-      getl_head = s->next;
-      if (NULL == getl_head)
-       getl_tail = NULL;
-    }
-  
-  free (s);
-}
-
-/* PORTME: Adapt to your local system's idea of the terminal. */
-#if HAVE_LIBREADLINE
-
-#if HAVE_READLINE_READLINE_H
-#include <readline/readline.h>
-#else /* no readline/readline.h */
-extern char *readline (char *);
-#endif /* no readline/readline.h */
-
-static int
-read_console (void)
-{
-  char *line;
-  char *prompt;
-
-  err_error_count = err_warning_count = 0;
-  err_already_flagged = 0;
-
-#if HAVE_LIBHISTORY
-  if (!history_file)
-    {
-#ifdef unix
-      history_file = tilde_expand (HISTORY_FILE);
-#endif
-      using_history ();
-      read_history (history_file);
-      stifle_history (MAX_HISTORY);
-    }
-#endif /* -lhistory */
-
-  switch (getl_prompt)
-    {
-    case GETL_PRPT_STANDARD:
-      prompt = get_prompt();
-      break;
-
-    case GETL_PRPT_CONTINUATION:
-      prompt = get_cprompt();
-      break;
-
-    case GETL_PRPT_DATA:
-      prompt = get_dprompt();
-      break;
-
-    default:
-      assert (0);
-      abort ();
-    }
-
-  line = readline (prompt);
-  if (!line)
-    return 0;
-
-#if HAVE_LIBHISTORY
-  if (*line)
-    add_history (line);
-#endif
-
-  ds_clear (&getl_buf);
-  ds_puts (&getl_buf, line);
-
-  free (line);
-
-  return 1;
-}
-#else /* no -lreadline */
-static int
-read_console (void)
-{
-  err_error_count = err_warning_count = 0;
-  err_already_flagged = 0;
-
-  fputs (getl_prompt ? get_cprompt() : get_prompt(), stdout);
-  ds_clear (&getl_buf);
-  if (ds_gets (&getl_buf, stdin))
-    return 1;
-
-  if (ferror (stdin))
-    msg (FE, "stdin: fgets(): %s.", strerror (errno));
-
-  return 0;
-}
-#endif /* no -lreadline */
-
-/* Closes all files. */
-void
-getl_close_all (void)
-{
-  while (getl_head)
-    getl_close_file ();
-}
-
-/* Sets the options flag of the current script to 0, thus allowing it
-   to be read in.  Returns nonzero if this action was taken, zero
-   otherwise. */
-int
-getl_perform_delayed_reset (void)
-{
-  if (getl_head && getl_head->separate)
-    {
-      getl_head->separate = 0;
-      discard_variables ();
-      lex_reset_eof ();
-      return 1;
-    }
-  return 0;
-}
-
-/* Puts the current file and line number in *FN and *LN, respectively,
-   or NULL and -1 if none. */
-void
-getl_location (const char **fn, int *ln)
-{
-  if (fn != NULL)
-    *fn = getl_head ? getl_head->fn : NULL;
-  if (ln != NULL)
-    *ln = getl_head ? getl_head->ln : -1;
-}
diff --git a/src/getline.h b/src/getline.h
deleted file mode 100644 (file)
index 2ad1f25..0000000
+++ /dev/null
@@ -1,117 +0,0 @@
-/* PSPP - computes sample statistics.
-   Copyright (C) 1997-9, 2000 Free Software Foundation, Inc.
-   Written by Ben Pfaff <blp@gnu.org>.
-
-   This program is free software; you can redistribute it and/or
-   modify it under the terms of the GNU General Public License as
-   published by the Free Software Foundation; either version 2 of the
-   License, or (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful, but
-   WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-   02110-1301, USA. */
-
-#if !getline_h
-#define getline_h 1
-
-#include <stdio.h>
-
-/* Defines a list of lines used by DO REPEAT. */
-/* Special case: if LEN is negative then it is a line number; in this
-   case LINE is a file name.  This is used to allow errors to be
-   reported for the correct file and line number when DO REPEAT spans
-   files. */
-struct getl_line_list
-  {
-    char *line;                                /* Line contents. */
-    int len;                           /* Line length. */
-    struct getl_line_list *next;       /* Next line. */
-  };
-
-/* Source file. */
-struct getl_script
-  {
-    struct getl_script *included_from; /* File that this is nested inside. */
-    struct getl_script *includes;      /* File nested inside this file. */
-    struct getl_script *next;          /* Next file in list. */
-    char *fn;                          /* Filename. */
-    int ln;                            /* Line number. */
-    int separate;                      /* !=0 means this is a separate job. */
-    FILE *f;                           /* File handle. */
-
-    /* Used only if F is NULL.  Used for DO REPEAT. */
-    struct getl_line_list *first_line; /* First line in line buffer. */
-    struct getl_line_list *cur_line;   /* Current line in line buffer. */
-    int remaining_loops;               /* Number of remaining loops through LINES. */
-    int loop_index;                    /* Number of loops through LINES so far. */
-    void *macros;                      /* Pointer to macro table. */
-    int print;                         /* 1=Print lines as executed. */
-  };
-
-/* List of script files. */
-extern struct getl_script *getl_head;  /* Current file. */
-extern struct getl_script *getl_tail;  /* End of list. */
-
-/* If getl_head==0 and getl_interactive!=0, lines will be read from
-   the console rather than terminating. */
-extern int getl_interactive;
-
-/* 1=the welcome message has been printed. */
-extern int getl_welcomed;
-
-/* Prompt styles. */
-enum
-  {
-    GETL_PRPT_STANDARD,                /* Just asks for a command. */
-    GETL_PRPT_CONTINUATION,    /* Continuation lines for a single command. */
-    GETL_PRPT_DATA             /* Between BEGIN DATA and END DATA. */
-  };
-
-/* Current mode. */
-enum
-  {
-    GETL_MODE_BATCH,           /* Batch mode. */
-    GETL_MODE_INTERACTIVE      /* Interactive mode. */
-  };
-
-/* One of GETL_MODE_*, representing the current mode. */
-extern int getl_mode;
-
-/* Current prompting style: one of GETL_PRPT_*. */
-extern int getl_prompt;
-
-/* Are we reading a script? Are we interactive? */
-#define getl_am_interactive (getl_head == NULL)
-#define getl_reading_script (getl_head != NULL)
-
-/* Current line.  This line may be modified by modules other than
-   getline.c, and by lexer.c in particular. */
-extern struct string getl_buf;
-
-/* Name of the command history file. */
-#if HAVE_LIBREADLINE && HAVE_LIBHISTORY
-extern char *getl_history;
-#endif
-
-void getl_initialize (void);
-void getl_uninitialize (void);
-void getl_clear_include_path (void);
-char *getl_get_current_directory (void);
-void getl_add_include_dir (const char *);
-void getl_add_file (const char *fn, int separate, int where);
-void getl_include (const char *fn);
-int getl_read_line (void);
-void getl_close_file (void);
-void getl_close_all (void);
-int getl_perform_delayed_reset (void);
-void getl_add_DO_REPEAT_file (struct getl_script *);
-void getl_add_virtual_file (struct getl_script *);
-void getl_location (const char **, int *);
-
-#endif /* getline_h */
index 3ea676707c269b94841ee430bcf1108ab890669c..1b5de09955e0bc4ee2611c4fda74e2d1c5cbe5f0 100644 (file)
 #include <config.h>
 #include "glob.h"
 #include "error.h"
+#include "progname.h"
 #include <stdlib.h>
 #include <stdio.h>
-
-#if TIME_WITH_SYS_TIME
-#include <sys/time.h>
-#include <time.h>
-#else
-#if HAVE_SYS_TIME_H
-#include <sys/time.h>
-#else
 #include <time.h>
-#endif
-#endif
 
 #if HAVE_LIBHISTORY
 #if HAVE_READLINE_HISTORY_H
@@ -76,7 +67,7 @@ extern void stifle_history ();
 #include "error.h"
 #include "file-handle.h"
 #include "filename.h"
-#include "getline.h"
+#include "getl.h"
 #include "hash.h"
 #include "lexer.h"
 #include "magic.h"
@@ -87,6 +78,8 @@ extern void stifle_history ();
 #include "version.h"
 #include "vfm.h"
 
+#include "gettext.h"
+
 /* var.h */
 struct dictionary *default_dict;
 struct expression *process_if_expr;
@@ -117,6 +110,8 @@ static void get_date (void);
 void
 init_glob (int argc UNUSED, char **argv)
 {
+  set_program_name (argv[0]);
+
   /* FIXME: Allow i18n of other locale items (besides LC_MESSAGES). */
 #if ENABLE_NLS
 #if HAVE_LC_MESSAGES
index 9427089d3009f330e1e5997a6c59aab56583862e..af86e784f2ad958849c41509f3bc56de8eae64a2 100644 (file)
 #include "alloc.h"
 #include "error.h"
 #include "filename.h"
+#include "getline.h"
 #include "hash.h"
 #include "pool.h"
 #include "str.h"
 #include "version.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 int font_number_to_index (int);
 
 int space_index;
index 1293398daebf3dbd615e2e8928ffa97a95a4c46b..019ddb1a4ae87e02aed24ed115f53fb5c48a4e3e 100644 (file)
 #include <stdlib.h>
 #include "algorithm.h"
 #include "alloc.h"
-#include "bool.h"
+#include <stdbool.h>
 #include "misc.h"
 #include "str.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 /* Note for constructing hash functions:
 
    You can store the hash values in the records, then compare hash
index fbb6b968d37074256606c23a1077b4fcfa10cb3b..f902520d0e1a2580530e7ba633211d9c7db8e2ed 100644 (file)
 #include "alloc.h"
 #include "error.h"
 #include "filename.h"
+#include "getl.h"
 #include "getline.h"
+#include "getlogin_r.h"
 #include "output.h"
 #include "som.h"
 #include "tab.h"
 #include "version.h"
 #include "mkfile.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 /* Prototypes. */
 static int postopen (struct file_ext *);
 static int preclose (struct file_ext *);
@@ -234,9 +239,7 @@ postopen (struct file_ext *f)
       {"source-file", 0},
       {0, 0},
     };
-#if HAVE_UNISTD_H
-  char host[128];
-#endif
+  char login[128], host[128];
   time_t curtime;
   struct tm *loctime;
 
@@ -277,14 +280,13 @@ postopen (struct file_ext *f)
       *cp = 0;
   }
 
-  /* PORTME: Determine username, net address. */
-#if HAVE_UNISTD_H
-  dict[2].value = getenv ("LOGNAME");
-  if (!dict[2].value)
-    dict[2].value = getlogin ();
-  if (!dict[2].value)
-    dict[2].value = _("nobody");
+  if (getenv ("LOGNAME") != NULL)
+    str_copy_rpad (login, sizeof login, getenv ("LOGNAME"));
+  else if (getlogin_r (login, sizeof login))
+    strcpy (login, _("nobody"));
+  dict[2].value = login;
 
+#ifdef HAVE_UNISTD_H
   if (gethostname (host, 128) == -1)
     {
       if (errno == ENAMETOOLONG)
@@ -292,11 +294,10 @@ postopen (struct file_ext *f)
       else
        strcpy (host, _("nowhere"));
     }
+#else
+  strcpy (host, _("nowhere"));
+#endif
   dict[3].value = host;
-#else /* !HAVE_UNISTD_H */
-  dict[2].value = _("nobody");
-  dict[3].value = _("nowhere");
-#endif /* !HAVE_UNISTD_H */
 
   dict[4].value = outp_title ? outp_title : "";
   dict[5].value = outp_subtitle ? outp_subtitle : "";
index 7e3bacc6d7182ae913dc3ae553ffb61dffd7df39..abce511a0a74db2c3a8d57639f7dc9cad88d2107 100644 (file)
 #include "alloc.h"
 #include "command.h"
 #include "error.h"
-#include "getline.h"
+#include "getl.h"
 #include "lexer.h"
 #include "str.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 int
 cmd_include (void)
 {
index ef9c3646440cc889c8d0fcd2fee0e93ee927bd28..0225f3f73780452292623cfcf195f738ecca04c9 100644 (file)
@@ -36,6 +36,9 @@
 #include "var.h"
 #include "vfm.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 #include "debug-print.h"
 
 /* Indicates how a `union value' should be initialized. */
index ff93e0d9f42f9aa27520e4434f50377de7a8145e..fe999ff1aff50c24c783bab6a96dfa12dcd3d9a6 100644 (file)
 #include "alloc.h"
 #include "command.h"
 #include "error.h"
-#include "getline.h"
+#include "getl.h"
 #include "magic.h"
 #include "settings.h"
 #include "str.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+#define N_(msgid) msgid
+
 /*
 #define DUMP_TOKENS 1
 */
index 05ce4fe60c13c6c0da8b3ec2c9b8dc90c782ce44..af3aeb0ae0f7bf54b5c5b226dd37ad3775fbbe17 100644 (file)
@@ -22,7 +22,7 @@
 
 #include "var.h"
 #include <ctype.h>
-#include "bool.h"
+#include <stdbool.h>
 
 /* Returns nonzero if character CH may be the first character in an
    identifier. */
index 97f5372d02584e96bdcf77867ce470e45c7f592a..1876f69f4ffbbd0feb35d4827c12c2412b6f4d33 100644 (file)
 #include "var.h"
 #include "vfm.h"
 #include "format.h"
+
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 /* (headers) */
 
 #include "debug-print.h"
index b6df5c2d6263aac1e4d81532a582448f17b6fe60..06936778ef0f990751174373f5b7499a339c4eee 100644 (file)
@@ -32,6 +32,9 @@
 #include "str.h"
 #include "var.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 #include "debug-print.h"
 
 /* LOOP strategy:
index ab3a0b6d0ec30cf1eb710a1cc2e23b9d6aaea7c0..f9c4e83b7bdfed59274591ab8568427a3893aabf 100644 (file)
@@ -25,7 +25,7 @@
 #include "command.h"
 #include "dictionary.h"
 #include "error.h"
-#include "getline.h"
+#include "getl.h"
 #include "glob.h"
 #include "lexer.h"
 #include "output.h"
@@ -33,6 +33,9 @@
 #include "var.h"
 #include <signal.h>
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 #include <stdlib.h>
 
 #include "debug-print.h"
index d3cde3e68a9896076afa9b1b9b3c8c1271c0553a..e90b2ac68e8ea818ca2f4d4c9384a9c1fc44f83b 100644 (file)
@@ -38,6 +38,9 @@
 #include "var.h"
 #include "vfm.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 #include "debug-print.h"
 
 /* FIXME: /N subcommand not implemented.  It should be pretty simple,
index 873798c6cd37784f7e4f7a44f4f1dc24268a1c8e..f367d42c457cb445d01b60e2947242d1985165c4 100644 (file)
 #include "error.h"
 #include "magic.h"
 #include "var.h"
+
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 /* (headers) */
 
 #include "debug-print.h"
index 68d642a09c2ed3f9c355a061d168d5c4cf0d46f4..27a5134307e9572aaface102bc3739da462e5351 100644 (file)
@@ -27,6 +27,9 @@
 #include "str.h"
 #include "var.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 #include "debug-print.h"
 
 /* Variables on MIS VAL. */
index 8b471f0f5f0d982e32ee704333d9455132a0fe9b..b8a8aa3bb6a71bc48c134b8bd59ad69a032aa175 100644 (file)
 #include <string.h>
 #include <errno.h>
 #include <stdio.h>
-
 #include "mkfile.h"
 #include "error.h"
 #include "alloc.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 /* Creates a temporary file and stores its name in *FILENAME and
    a file descriptor for it in *FD.  Returns success.  Caller is
    responsible for freeing *FILENAME. */
index fee6d59b840f92afdff88c1a877dc0a15cfc0a6e..86ef2b3c54666ad59320bdff93caad793e8e709c 100644 (file)
@@ -33,6 +33,9 @@
 #include "var.h"
 #include "vfm.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 /* FIXME: should change weighting variable, etc. */
 /* These control the ordering produced by
    compare_variables_given_ordering(). */
index 4bafb0515781095521a1d15efd998f8c78e2b22e..00e0ac800358a3479b73e69fadeeaffcd7e4441f 100644 (file)
@@ -25,6 +25,9 @@
 #include "alloc.h"
 #include "misc.h"
 #include "val.h"
+
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
 \f
 /* Calculates variance, skewness, and kurtosis into *VARIANCE,
    *SKEWNESS, and *KURTOSIS if they are non-null and not greater
index 844465eb126a3425e90c43039929e5a2596b1753..a2b6d8047f748739a6ad1d23df118a45c8854e36 100644 (file)
@@ -27,6 +27,9 @@
 #include "str.h"
 #include "var.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 #include "debug-print.h"
 
 /* Parses the NUMERIC command. */
index aa45fbed6572edad9967c73859ed3e8e52c61b69..9aebbf61b4bf62c04239eb5ffdd4e466df75d6c0 100644 (file)
@@ -43,6 +43,10 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
 #include "group_proc.h"
 #include "group.h"
 #include "levene.h"
+
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 /* (headers) */
 
 /* (specification)
index b9f465dbfcb78351f2adfb35b6ced889c7ae353d..59bccb8045324f707f792d3be6be4f2feabc1ec3 100644 (file)
@@ -34,6 +34,9 @@
 #include "settings.h"
 #include "str.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 /* FIXME? Should the output configuration format be changed to
    drivername:classname:devicetype:options, where devicetype is zero
    or more of screen, printer, listing? */
index 8782c36a9b7e77f3fa5c3a60b9f17b0e543dbbba..4e618ad4a30f5b12c0f43b81c1bf81accd3fa722 100644 (file)
@@ -22,6 +22,10 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
 #include "percentiles.h"
 #include "misc.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+#define N_(msgid) msgid
+
 #include <assert.h>
 
 
index 1c3ee1fc1c2adf61328fe00f074cd85d39315f9d..140c79ef27fe10a8f722624efb0573ef211b5f0a 100644 (file)
 #include <sys/stat.h>
 #include <unistd.h>
 #include <errno.h>
-
 #include "settings.h"
 #include "command.h"
 #include "error.h"
 #include "lexer.h"
 #include "misc.h"
+#include "stat-macros.h"
 #include "str.h"
 
-
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
 
 enum PER {PER_RO, PER_RW};
 
index 4d95eba22ae3a05b7ff716c3d7dfb96c9fcb2025..c7a604dbf0949f2e2052dbbdc409fa48ce1381fe 100644 (file)
 #include <math.h>
 #include <setjmp.h>
 #include "alloc.h"
-#include "bool.h"
+#include <stdbool.h>
 #include "case.h"
 #include "dictionary.h"
 #include "file-handle.h"
 #include "format.h"
-#include "getline.h"
+#include "getl.h"
 #include "hash.h"
 #include "magic.h"
 #include "misc.h"
@@ -44,6 +44,9 @@
 #include "value-labels.h"
 #include "var.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 #include "debug-print.h"
 
 /* Portable file reader. */
index 7c9b5e8871522ec99a0b547f869b4e9132dad0cb..5346f1539149db09a32b2aec385c34aab9d1a4d9 100644 (file)
@@ -22,7 +22,7 @@
 
 /* Portable file reading. */
 
-#include "bool.h"
+#include <stdbool.h>
 
 /* Portable file types. */
 enum pfm_type
index b900c2292f81f19801e4fe8da794aeff581bb020..30615418fd0728ccc642956c36a4da352ef1a0da 100644 (file)
@@ -40,6 +40,9 @@
 #include "var.h"
 #include "version.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 #include "debug-print.h"
 
 /* Portable file writer. */
index 85fb3700e6985b41b7878eddeb37b046035a001b..15578879e1eba6fe9679225e15cd67565e53c23e 100644 (file)
 #include <gsl/gsl_histogram.h>
 #include <gsl/gsl_randist.h>
 #include <assert.h>
-
 #include "hash.h"
-
 #include "var.h"
 #include "chart.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 /* Write the legend of the chart */
 void
 histogram_write_legend(struct chart *ch, const struct normal_curve *norm)
index c5bde5e65a4f2aaa30d1f572c61195834aba499a..11473f6488faaa94de282739ecd556232a3d5ec7 100644 (file)
 #include <errno.h>
 #include <limits.h>
 #include <stdlib.h>
+#include <time.h>
 
 #if HAVE_UNISTD_H
 #include <unistd.h>
 #endif
 
-#if TIME_WITH_SYS_TIME
-#include <sys/time.h>
-#include <time.h>
-#else
-#if HAVE_SYS_TIME_H
-#include <sys/time.h>
-#else
-#include <time.h>
-#endif
-#endif
-
 #include "alloc.h"
 #include "bitvector.h"
 #include "error.h"
 #include "filename.h"
 #include "font.h"
+#include "getl.h"
 #include "getline.h"
 #include "hash.h"
 #include "main.h"
@@ -57,6 +48,9 @@
 #include "som.h"
 #include "version.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 /* FIXMEs:
 
    optimize-text-size not implemented.
index 9e2bd74705b9814406e5e0919fdd6840e7d485cb..ccbb8c8c2d69ef9579e48334fbcaaa8c456c935f 100644 (file)
@@ -35,6 +35,9 @@
 #include "tab.h"
 #include "var.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 /* Describes what to do when an output field is encountered. */
 enum
   {
index a62e62d40942d9bc506e4763b41cfaca4bebf2a2..545f26fe56cf2404008f8e76dc3929d307bb0544 100644 (file)
--- a/src/q2c.c
+++ b/src/q2c.c
@@ -2206,7 +2206,10 @@ main (int argc, char *argv[])
          dump (0, "#include \"str.h\"");
           dump (0, "#include \"subclist.h\"");
          dump (0, "#include \"var.h\"");
+         dump (0, nullstr);
 
+          dump (0, "#include \"gettext.h\"");
+          dump (0, "#define _(msgid) gettext (msgid)");
          dump (0, nullstr);
        }
       else if (!strcmp (directive, "declarations"))
index 2b768e54d6da04e7c869cd4ac56acbbb868c7469..ddaa020c4eb3c6307f91ea93b41a05eaee80fb51 100644 (file)
@@ -25,6 +25,9 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
 #include "sort-prs.h"
 #include "var.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 /* (headers) */
 
 /* (specification)
index 90792afa4197d5a204423b312847e3c2d4d51127..b25ac4567ea621609825abf39f1752ccd7adc6a3 100644 (file)
@@ -31,6 +31,9 @@
 #include "magic.h"
 #include "str.h"
 #include "var.h"
+
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
 \f
 /* Definitions. */
 
index eeb0b89dfce277e8fdc20ea9d5471b20f4f0efe8..57af1c01023fafee8e49d06323d8e9f0ad2d43d5 100644 (file)
@@ -29,6 +29,9 @@
 #include "str.h"
 #include "var.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 /* The code for this function is very similar to the code for the
    RENAME subcommand of MODIFY VARS. */
 int
index 5ca7dd9b2dcfdeee33675abd90b2526e26babfb2..0f5bb42f4dbc4aec79b75417b040f4c779314a57 100644 (file)
 #include "command.h"
 #include "dictionary.h"
 #include "error.h"
-#include "getline.h"
+#include "getl.h"
 #include "lexer.h"
 #include "misc.h"
 #include "settings.h"
 #include "str.h"
 #include "var.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 #include "debug-print.h"
 
 /* Describes one DO REPEAT macro. */
index 631736d013f2083259d8b851a62ea76459253268..57548c1cd306fc95e0c3bdc06ba915deeed1bdb8 100644 (file)
@@ -30,6 +30,9 @@
 #include "str.h"
 #include "var.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 #include "debug-print.h"
 
 /* The two different types of samples. */
index 862b0443fe921c17929e02a62307898155d43c36..c703e2f460fcc898140bffc37448a35661d76f54 100644 (file)
@@ -27,6 +27,9 @@
 #include "str.h"
 #include "var.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 /* SELECT IF transformation. */
 struct select_if_trns
   {
index f9a00c52a17b6c7c9f64e5a82e75d2a459e95bf0..300111c90b2de5462d95421056be18f2330e18a1 100644 (file)
--- a/src/set.q
+++ b/src/set.q
@@ -87,6 +87,9 @@ int tgetnum (const char *);
 #endif /* !HAVE_TERMCAP_H */
 #endif /* !HAVE_LIBTERMCAP */
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 static int set_errors;
 static int set_messages;
 static int set_results;
index fef4eb5cf5d0f79a002b0c8d9a274df1b8ad535f..0c07150eac3097b2c15bc3f9c98c922d4bee6443 100644 (file)
@@ -33,7 +33,7 @@
 #include "file-handle.h"
 #include "filename.h"
 #include "format.h"
-#include "getline.h"
+#include "getl.h"
 #include "hash.h"
 #include "magic.h"
 #include "misc.h"
@@ -41,6 +41,9 @@
 #include "str.h"
 #include "var.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 #include "debug-print.h"
 
 /* System file reader. */
@@ -93,7 +96,7 @@ bswap (unsigned char *a, unsigned char *b)
   *b = t;
 }
 
-/* bswap_int32(): Reverse the byte order of 32-bit integer *X. */
+/* Reverse the byte order of 32-bit integer *X. */
 static inline void
 bswap_int32 (int32 *x_)
 {
index 99dd47bdfa65c25c20ad2231518f76e119795d30..e1e103e5005c247dd9477c6dbd3c280a7f7bcef8 100644 (file)
@@ -33,7 +33,7 @@
 #include "dictionary.h"
 #include "error.h"
 #include "file-handle.h"
-#include "getline.h"
+#include "getl.h"
 #include "hash.h"
 #include "magic.h"
 #include "misc.h"
@@ -42,6 +42,9 @@
 #include "var.h"
 #include "version.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 #include "debug-print.h"
 
 /* Compression bias used by PSPP.  Values between (1 -
index 9d195c94e0a6a8282faf852c07b156de6ea82954..1568dca30613af29ec5a198a5a3abcc55e90e835 100644 (file)
--- a/src/som.h
+++ b/src/som.h
@@ -36,7 +36,7 @@
    desired, and in fact almost every operation performed by som may be
    overridden in a table class.  */
 
-#include "bool.h"
+#include <stdbool.h>
 
 enum som_type
   {
index 2682588efe76042c07575c8200ba50a259e881e2..2114d09318e4ca2ba5bd49c1b6db7704449a1402 100644 (file)
@@ -21,7 +21,6 @@
 #include <sys/types.h>
 #include <assert.h>
 #include <stdlib.h>
-
 #include "alloc.h"
 #include "error.h"
 #include "lexer.h"
@@ -29,7 +28,8 @@
 #include "sort.h"
 #include "var.h"
 
-
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
 
 static bool  is_terminator(int tok, const int *terminators);
 
index e7ee48503e2369795d0a3a19c57c65b3eedcd9aa..b2c1e54fa0f69c709344faab7eca3968f8665808 100644 (file)
@@ -21,7 +21,7 @@
 #define SORT_PRS_H
 
 #include <config.h>
-#include "bool.h"
+#include <stdbool.h>
 
 struct variable;
 struct dictionary;
index bb4220b75943a231d6bdd5395d6615bf3acef70a..80380e7d0ca41581396e94079e06d682b4d61b15 100644 (file)
@@ -26,7 +26,7 @@
 #include <errno.h>
 #include "algorithm.h"
 #include "alloc.h"
-#include "bool.h"
+#include <stdbool.h>
 #include "case.h"
 #include "casefile.h"
 #include "command.h"
@@ -42,6 +42,9 @@
 #include "vfm.h"
 #include "vfmP.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 #include "debug-print.h"
 
 /* These should only be changed for testing purposes. */
index 37d9db577f30e02b2b6ade3857f4d0981d9e8de1..af443edc34b8b4f5b5003b2d73d8f805b29003ce 100644 (file)
@@ -21,7 +21,7 @@
 #define sort_h 1
 
 #include <stddef.h>
-#include "bool.h"
+#include <stdbool.h>
 
 struct casereader;
 struct dictionary;
diff --git a/src/stat.h b/src/stat.h
deleted file mode 100644 (file)
index 53c8674..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-/* PSPP - computes sample statistics.
-   Copyright (C) 1997-9, 2000 Free Software Foundation, Inc.
-   Written by Ben Pfaff <blp@gnu.org>.
-
-   This program is free software; you can redistribute it and/or
-   modify it under the terms of the GNU General Public License as
-   published by the Free Software Foundation; either version 2 of the
-   License, or (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful, but
-   WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-   02110-1301, USA. */
-
-#include <sys/stat.h>
-
-#ifdef STAT_MACROS_BROKEN
-#undef S_ISBLK
-#undef S_ISCHR
-#undef S_ISDIR
-#undef S_ISFIFO
-#undef S_ISLNK
-#undef S_ISMPB
-#undef S_ISMPC
-#undef S_ISNWK
-#undef S_ISREG
-#undef S_ISSOCK
-#endif /* STAT_MACROS_BROKEN.  */
-
-#if !defined(S_ISBLK) && defined(S_IFBLK)
-#define        S_ISBLK(m) (((m) & S_IFMT) == S_IFBLK)
-#endif
-#if !defined(S_ISCHR) && defined(S_IFCHR)
-#define        S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR)
-#endif
-#if !defined(S_ISDIR) && defined(S_IFDIR)
-#define        S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
-#endif
-#if !defined(S_ISREG) && defined(S_IFREG)
-#define        S_ISREG(m) (((m) & S_IFMT) == S_IFREG)
-#endif
-#if !defined(S_ISFIFO) && defined(S_IFIFO)
-#define        S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO)
-#endif
-#if !defined(S_ISLNK) && defined(S_IFLNK)
-#define        S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK)
-#endif
-#if !defined(S_ISSOCK) && defined(S_IFSOCK)
-#define        S_ISSOCK(m) (((m) & S_IFMT) == S_IFSOCK)
-#endif
-#if !defined(S_ISMPB) && defined(S_IFMPB) /* V7 */
-#define S_ISMPB(m) (((m) & S_IFMT) == S_IFMPB)
-#define S_ISMPC(m) (((m) & S_IFMT) == S_IFMPC)
-#endif
-#if !defined(S_ISNWK) && defined(S_IFNWK) /* HP/UX */
-#define S_ISNWK(m) (((m) & S_IFMT) == S_IFNWK)
-#endif
-#if !defined(HAVE_MKFIFO)
-#define mkfifo(path, mode) (mknod ((path), (mode) | S_IFIFO, 0))
-#endif
index 7816acf2ec78fb4ba290f3d42b2230b10ae4d373..8c9ebc1800b5635dcffccf94bd66591109be7f11 100644 (file)
--- a/src/str.h
+++ b/src/str.h
 
 #include <stdarg.h>
 #include <stdio.h>
-
-#if STDC_HEADERS
-  #include <string.h>
-#else
-  #ifndef HAVE_STRCHR 
-    #define strchr index
-    #define strrchr rindex
-  #endif
-
-  char *strchr (), *strrchr ();
-#endif
-
-#if !HAVE_STRTOK_R
-  char *strtok_r (char *, const char *, char **);
-#endif
-
-#if !HAVE_STPCPY
-  char *stpcpy (char *dest, const char *src);
-#endif
-
-#if !HAVE_STRCASECMP
-  int strcasecmp (const char *s1, const char *s2);
-#endif
-
-#if !HAVE_STRNCASECMP
-  int strncasecmp (const char *s1, const char *s2, size_t n);
+#include <string.h>
+
+#include "memmem.h"
+#include "snprintf.h"
+#include "stpcpy.h"
+#include "strcase.h"
+#include "strftime.h"
+#include "strstr.h"
+#include "strtok_r.h"
+#include "vsnprintf.h"
+
+#ifndef HAVE_STRCHR
+#define strchr index
 #endif
-
-#if !HAVE_MEMMEM
-  void *memmem (const void *haystack, size_t haystack_len,
-               const void *needle, size_t needle_len);
+#ifndef HAVE_STRRCHR
+#define strrchr rindex
 #endif
 \f
 /* sprintf() wrapper functions for convenience. */
     int nvsprintf (char *buf, const char *format, va_list args);
   #endif /* Not good sprintf(). */
 #endif /* Not GNU C. */
-
-#if !HAVE_GETLINE
-long getline (char **lineptr, size_t *n, FILE *stream);
-#endif
-
-#if !HAVE_GETDELIM
-long getdelim (char **lineptr, size_t * n, int delimiter, FILE * stream);
-#endif
 \f
 /* Miscellaneous. */
 
index 6c5d533def45623fa765fd44b1b7cab7b0ae7f89..08d5484f70e0d285fd4b8317f7ec2379ca09bd35 100644 (file)
@@ -37,6 +37,9 @@
 #include "value-labels.h"
 #include "var.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 /* Constants for DISPLAY utility. */
 enum
   {
index 38ea420e5c10335c00a4a44656cba3c8ce02a9a0..07bcdd07f0db51c351df8b88c3e15e7bf9aa4bce 100644 (file)
 #include "group_proc.h"
 #include "casefile.h"
 #include "levene.h"
+
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 /* (headers) */
 
 /* (specification)
index fdcf0013e1ff98c77f71ea9f1bbfab625770ed77..47fd0b92419ad47ae724ed556212d460cce22b3e 100644 (file)
--- a/src/tab.c
+++ b/src/tab.c
@@ -34,6 +34,9 @@
 #include "som.h"
 #include "var.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 #include "debug-print.h"
 \f
 struct som_table_class tab_table_class;
index 293ed30c174ff16b63d9adf3d19937871503e7ef..f277152e8f00beb6159a8d8605eecf7dbcc6848b 100644 (file)
@@ -32,6 +32,9 @@
 #include "value-labels.h"
 #include "var.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 int temporary;
 struct dictionary *temp_dict;
 int temp_trns;
index e8d95bf0e58a26c7cc02c578428f9bc4d01cb60f..d4a95c18d478e3eb35fd6d602df1b9301aca8f9f 100644 (file)
@@ -31,6 +31,9 @@
 #include "version.h"
 #include "vfm.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 #include "debug-print.h"
 
 static int get_title (const char *cmd, char **title);
index 3dc4254f6d1c74ad89d37a623578c8244f17b152..47d1ee65b406d67d839161c0f5ee42fa80dbd986 100644 (file)
@@ -28,6 +28,9 @@
 #include "str.h"
 #include "value-labels.h"
 #include "var.h"
+
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
 \f
 /* Declarations. */
 
index cbcf984529fe9ce3626a92f653558998e8bfe007..65da79082bbeefea8e44e7291eb13ee601fcc0ce 100644 (file)
@@ -27,6 +27,9 @@
 #include "str.h"
 #include "var.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 #include "debug-print.h"
 
 int
index 1d36467b09534ef7a30221cfcbb823534cda000f..3bfc43df7b731a4b1e937075e7225f8167dbf836 100644 (file)
--- a/src/var.h
+++ b/src/var.h
@@ -23,7 +23,7 @@
 
 #include <stddef.h>
 #include "config.h"
-#include "bool.h"
+#include <stdbool.h>
 #include "format.h"
 #include "val.h"
 
index 70669837590a3accc7e99c65581b13d9d39b90e6..a854033a0831e5ea8dbc2bffab22835724a798da 100644 (file)
@@ -34,6 +34,9 @@
 #include "value-labels.h"
 #include "vfm.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 #include "debug-print.h"
 
 /* Assign auxiliary data AUX to variable V, which must not
index 1773e4d8d5f74bec6688bbdf41c05662b291748f..7a6e8633c46eee3cefccca4b296443b546daf4d3 100644 (file)
@@ -30,6 +30,9 @@
 #include "misc.h"
 #include "str.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 /* Parses a name as a variable within VS and returns the
    variable's index if successful.  On failure emits an error
    message and returns a null pointer. */
index 558db4e047b055aac0d356abdf27e3e667576b2b..1192252baf6c9434e825bbf0a5fbe18d04a4eb52 100644 (file)
@@ -29,6 +29,9 @@
 #include "str.h"
 #include "var.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 int
 cmd_vector (void)
 {
index 3b403995e70ea0ce54ec6a39067c9a818010a12a..0414234c01d2be666208fb4c7db1e67c5b315974 100644 (file)
--- a/src/vfm.c
+++ b/src/vfm.c
@@ -42,6 +42,9 @@
 #include "var.h"
 #include "value-labels.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 /*
    Virtual File Manager (vfm):
 
index 212c77d5f4c906afb9831c8d13c03f0dffd186f0..9128bc3e90038b2f44bb33e0df94528144ea5195 100644 (file)
@@ -27,6 +27,9 @@
 #include "str.h"
 #include "var.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 /* WEIGHT transformation. */
 struct weight_trns
   {
diff --git a/stamp-h.in b/stamp-h.in
deleted file mode 100644 (file)
index 9788f70..0000000
+++ /dev/null
@@ -1 +0,0 @@
-timestamp