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
 Makefile.in
 aclocal.m4
 autom4te.cache
+config.guess
 config.h
 config.h.in
 config.log
 config.rpath
 config.status
 config.h
 config.h.in
 config.log
 config.rpath
 config.status
+config.sub
 configure
 configure
+depcomp
+gl
+install-sh
 intl
 m4
 intl
 m4
+missing
 mkinstalldirs
 mkinstalldirs
+potfiles.tmp
 pref.h
 stamp-h1
 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
 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
 
 
 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
 
 
 DISTCLEANFILES = pref.h
 
@@ -22,10 +18,9 @@ private-install:
 private-uninstall:
        $(MAKE) private-uninstall -C config
 
 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 
 
 
 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.
 
 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.
           
 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
 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 
 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:
 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.
 
 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
 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" )
 
 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
 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
 
 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
 
 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")
 
 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(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])
 
 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 "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, 
 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_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
 
 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) 
 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)
 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
 
 BLP_INT_DIGITS
 BLP_RANDOM
 
-AC_FUNC_ALLOCA
-AC_FUNC_MEMCMP
 AC_FUNC_VPRINTF
 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
 
 
 AC_PROG_LN_S
 
@@ -132,7 +136,7 @@ AH_BOTTOM([#include <pref.h>])
 
 
 AM_CONDITIONAL(unix, test x"$host_os" != x"msdos" )
 
 
 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>])
 
 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_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
                 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
          ])
           fi
           if test -f pref.h; then touch pref.h; fi
          ])
-AC_OUTPUT(intl/Makefile)
+AC_OUTPUT
 
 dnl configure.ac ends here
 
 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.
 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 -*-
 
 ## Process this file with automake to produce Makefile.in  -*- makefile -*-
 
-SUBDIRS = misc gsl-extras
+SUBDIRS = gsl-extras
 
 MAINTAINERCLEANFILES = Makefile.in
 
 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"
 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"
 "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"
 
 "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 ""
 
 msgid "while expecting COLUMNWISE"
 msgstr ""
 
-#: src/aggregate.c:225
+#: src/aggregate.c:228
 msgid "expecting BREAK"
 msgstr ""
 
 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 ""
 
 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 ""
 
 msgid "expecting aggregation function"
 msgstr ""
 
-#: src/aggregate.c:402
+#: src/aggregate.c:405
 #, c-format
 msgid "Unknown aggregation function %s."
 msgstr ""
 
 #, c-format
 msgid "Unknown aggregation function %s."
 msgstr ""
 
-#: src/aggregate.c:417
+#: src/aggregate.c:420
 msgid "expecting `('"
 msgstr ""
 
 msgid "expecting `('"
 msgstr ""
 
-#: src/aggregate.c:454
+#: src/aggregate.c:457
 #, c-format
 msgid "Missing argument %d to %s."
 msgstr ""
 
 #, 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 ""
 
 #, 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 ""
 
 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 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 ""
 
 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 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 ""
 
 #, 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 "
 #, 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 ""
 
 "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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, c-format
 msgid "%s - Page %d"
 msgstr ""
 
-#: src/ascii.c:1646
+#: src/ascii.c:1642
 msgid "Charts are unsupported with ascii drivers."
 msgstr ""
 
 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 ""
 
 #, 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 ""
 
 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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"
 #, c-format
 msgid ""
 "PSPP, a program for statistical analysis of sample data.\n"
@@ -350,32 +350,32 @@ msgid ""
 "\n"
 msgstr ""
 
 "\n"
 msgstr ""
 
-#: src/cmdline.c:281
+#: src/cmdline.c:285
 #, c-format
 msgid ""
 "\n"
 "Report bugs to <%s>.\n"
 msgstr ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 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 ""
 
 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 "
 #, 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 ""
 
 "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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 #, c-format
 msgid "Error removing `%s': %s."
 msgstr ""
 
-#: src/command.c:742
+#: src/command.c:746
 #, c-format
 msgid "Couldn't fork: %s."
 msgstr ""
 
 #, c-format
 msgid "Couldn't fork: %s."
 msgstr ""
 
-#: src/command.c:784
+#: src/command.c:788
 #, c-format
 msgid "Error executing command: %s."
 msgstr ""
 
 #, 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 ""
 
 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 ""
 
 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 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 ""
 
 #, 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
 msgstr ""
 
 #: src/data-in.c:61
+msgid "data-file error: "
+msgstr ""
+
+#: src/data-in.c:63
 #, c-format
 msgid "(column %d"
 msgstr ""
 
 #, c-format
 msgid "(column %d"
 msgstr ""
 
-#: src/data-in.c:63
+#: src/data-in.c:65
 #, c-format
 msgid "(columns %d-%d"
 msgstr ""
 
 #, c-format
 msgid "(columns %d-%d"
 msgstr ""
 
-#: src/data-in.c:64
+#: src/data-in.c:66
 #, c-format
 msgid ", field type %s) "
 msgstr ""
 
 #, 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 ""
 
 msgid "Field does not form a valid floating-point constant."
 msgstr ""
 
@@ -509,11 +787,11 @@ msgstr ""
 msgid "Unrecognized character in field."
 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 ""
 
 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 ""
 
 msgid "Field must contain only hex digits."
 msgstr ""
 
@@ -540,949 +818,1260 @@ msgstr ""
 msgid "Error in syntax of zoned decimal number."
 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 ""
 
 msgid "Unexpected end of field."
 msgstr ""
 
-#: src/data-in.c:672
+#: src/data-in.c:674
 msgid "Digit expected in field."
 msgstr ""
 
 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 ""
 
 #, 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 ""
 
 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 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 ""
 
 #, 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 ""
 
 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 ""
 
 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 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 ""
 
 #, 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 #, 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 #, 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 ""
 
 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 ""
 
 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 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 ""
 
 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 ""
 
 msgid "Variable"
 msgstr ""
 
-#: src/data-list.c:786 src/print.c:797
+#: src/data-list.c:789 src/print.c:800
 msgid "Record"
 msgstr ""
 
 msgid "Record"
 msgstr ""
 
-#: src/data-list.c:787 src/print.c:798
+#: src/data-list.c:790 src/print.c:801
 msgid "Columns"
 msgstr ""
 
 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 ""
 
 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] ""
 
 #, 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] ""
 
 #, 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 ""
 
 #, 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 ""
 
 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 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 ""
 
 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 msgid "Missing required specification STARTS."
 msgstr ""
 
-#: src/data-list.c:1577
+#: src/data-list.c:1584
 msgid "Missing required specification OCCURS."
 msgstr ""
 
 msgid "Missing required specification OCCURS."
 msgstr ""
 
-#: src/data-list.c:1584
+#: src/data-list.c:1591
 msgid "ID specified without CONTINUED."
 msgstr ""
 
 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 ""
 
 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 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 ""
 
 #, 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 ""
 
 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 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 ""
 
 msgid "Mean"
 msgstr ""
 
-#: src/descript.c:100
+#: src/descript.c:104
 msgid "S E Mean"
 msgstr ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 msgid "Kurtosis"
 msgstr ""
 
-#: src/descript.c:104
+#: src/descript.c:108
 msgid "S E Kurt"
 msgstr ""
 
 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 ""
 
 msgid "Skewness"
 msgstr ""
 
-#: src/descript.c:106
+#: src/descript.c:110
 msgid "S E Skew"
 msgstr ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 msgid "Maximum"
 msgstr ""
 
-#: src/descript.c:110 src/frequencies.q:125
+#: src/descript.c:114 src/frequencies.q:130
 msgid "Sum"
 msgstr ""
 
 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 ""
 
 #, 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 ""
 
 msgid "No variables specified."
 msgstr ""
 
-#: src/descript.c:435
+#: src/descript.c:439
 msgid "expecting statistic name: reverting to default"
 msgstr ""
 
 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 ""
 
 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 ""
 
 msgid "Mapping of variables to corresponding Z-scores."
 msgstr ""
 
-#: src/descript.c:543
+#: src/descript.c:547
 msgid "Source"
 msgstr ""
 
 msgid "Source"
 msgstr ""
 
-#: src/descript.c:544
+#: src/descript.c:548
 msgid "Target"
 msgstr ""
 
 msgid "Target"
 msgstr ""
 
-#: src/descript.c:663 src/descript.c:669
+#: src/descript.c:667 src/descript.c:673
 msgid "Z-score of "
 msgstr ""
 
 msgid "Z-score of "
 msgstr ""
 
-#: src/descript.c:882
+#: src/descript.c:886
 msgid "Valid N"
 msgstr ""
 
 msgid "Valid N"
 msgstr ""
 
-#: src/descript.c:883
+#: src/descript.c:887
 msgid "Missing N"
 msgstr ""
 
 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 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 ""
 
 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 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 ""
 
 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 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 ""
 
 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 ""
 
 #, 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 ""
 
 #, c-format
 msgid "Warnings (%d) exceed limit (%d)."
 msgstr ""
 
-#: src/error.c:237
+#: src/error.c:243
 msgid "fatal"
 msgstr ""
 
 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 ""
 
 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 ""
 
 msgid "warning"
 msgstr ""
 
-#: src/error.c:241 src/error.c:251
+#: src/error.c:247 src/error.c:257
 msgid "note"
 msgstr ""
 
 msgid "note"
 msgstr ""
 
-#: src/error.c:243 src/error.c:244
+#: src/error.c:249 src/error.c:250
 msgid "installation error"
 msgstr ""
 
 msgid "installation error"
 msgstr ""
 
-#: src/filename.c:221
+#: src/examine.q:471 src/examine.q:483
 #, c-format
 #, c-format
-msgid "Searching for `%s'..."
+msgid "%s and %s are mutually exclusive"
 msgstr ""
 
 msgstr ""
 
-#: src/filename.c:229 src/filename.c:261
-msgid "Search unsuccessful!"
+#: src/examine.q:913
+msgid "Case Processing Summary"
 msgstr ""
 
 msgstr ""
 
-#: src/filename.c:254
-#, c-format
-msgid "Found `%s'."
+#: src/examine.q:1119
+msgid "Extreme Values"
 msgstr ""
 
 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 ""
 
 msgstr ""
 
-#: src/file-type.c:131
-msgid "MIXED, GROUPED, or NESTED expected."
+#: src/examine.q:1220
+msgid "Highest"
 msgstr ""
 
 msgstr ""
 
-#: src/file-type.c:154
-msgid "The CASE subcommand is not valid on FILE TYPE MIXED."
+#: src/examine.q:1225
+msgid "Lowest"
 msgstr ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 #, c-format
 msgid "WARN%s expected after DUPLICATE."
 msgstr ""
 
-#: src/file-type.c:204
+#: src/file-type.c:207
 msgid ", NOWARN, or CASE"
 msgstr ""
 
 msgid ", NOWARN, or CASE"
 msgstr ""
 
-#: src/file-type.c:205
+#: src/file-type.c:208
 msgid " or NOWARN"
 msgstr ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 msgid "Column value must be positive."
 msgstr ""
 
-#: src/file-type.c:345
+#: src/file-type.c:348
 msgid "Ending column precedes beginning column."
 msgstr ""
 
 msgid "Ending column precedes beginning column."
 msgstr ""
 
-#: src/file-type.c:365
+#: src/file-type.c:368
 msgid "Bad format specifier name."
 msgstr ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 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 ""
 
 #, 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 ""
 
 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 ""
 
 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 ""
 
 #, 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 ""
 
 #, c-format
 msgid "Error rewinding FLIP file: %s."
 msgstr ""
 
-#: src/flip.c:410
+#: src/flip.c:413
 msgid "Error creating FLIP source file."
 msgstr ""
 
 msgid "Error creating FLIP source file."
 msgstr ""
 
-#: src/flip.c:419
+#: src/flip.c:422
 #, c-format
 msgid "Error reading FLIP file: %s."
 msgstr ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 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 ""
 
 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 ""
 
 #, c-format
 msgid "%.*s is not a valid data format."
 msgstr ""
 
-#: src/format.c:131
+#: src/format.c:134
 #, c-format
 #, 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 ""
 
 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 "
 #, c-format
 msgid ""
 "Output format %s is invalid because it specifies as many decimal places as "
@@ -1490,1224 +2079,1431 @@ msgid ""
 "d instead."
 msgstr ""
 
 "d instead."
 msgstr ""
 
-#: src/format.c:234
+#: src/format.c:237
 #, c-format
 msgid "%s variables are not compatible with %s format %s."
 msgstr ""
 
 #, 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 ""
 
 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 ""
 
 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 ""
 
 #, 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 ""
 
 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 ""
 
 #, 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 ""
 
 #, c-format
 msgid "Data format %s is not valid."
 msgstr ""
 
-#: src/formats.c:86
+#: src/formats.c:89
 msgid "`(' expected after variable list"
 msgstr ""
 
 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 ""
 
 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 ""
 
 msgstr ""
 
-#: src/get.c:252
-#, c-format
-msgid "Unsupported sysfile version: %d. Using version %d instead."
+#: src/frequencies.q:120
+msgid "Mode"
 msgstr ""
 
 msgstr ""
 
-#: src/get.c:408 src/print.c:179
-msgid "expecting a valid subcommand"
+#: src/frequencies.q:124
+msgid "S.E. Kurt"
 msgstr ""
 
 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 ""
 
 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 ""
 
 msgstr ""
 
-#: src/get.c:483
+#: src/frequencies.q:484
 #, c-format
 msgid ""
 #, 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 msgstr ""
 
-#: src/get.c:895
-msgid "FIRST may appear at most once."
+#: src/frequencies.q:1164
+msgid "Value Label"
 msgstr ""
 
 msgstr ""
 
-#: src/get.c:909
-msgid "LAST may appear at most once."
+#: src/frequencies.q:1265
+msgid "Freq"
 msgstr ""
 
 msgstr ""
 
-#: src/get.c:950
-msgid "BY is required when TABLE is specified."
+#: src/frequencies.q:1266 src/frequencies.q:1268
+msgid "Pct"
 msgstr ""
 
 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 ""
 
 msgstr ""
 
-#: src/get.c:983
+#: src/get.c:987
 #, c-format
 msgid "IN variable name %s duplicates an existing variable name."
 msgstr ""
 
 #, 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 ""
 
 #, 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 ""
 
 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 ""
 
 #, 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 ""
 
 #, c-format
 msgid "%s: Opening as syntax file."
 msgstr ""
 
-#: src/getline.c:335
+#: src/getl.c:338
 #, c-format
 msgid "Opening `%s': %s."
 msgstr ""
 
 #, 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 ""
 
 #, c-format
 msgid "Reading `%s': %s."
 msgstr ""
 
-#: src/getline.c:402
+#: src/getl.c:405
 #, c-format
 msgid "Closing `%s': %s."
 msgstr ""
 
 #, 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 ""
 
 #, c-format
 msgid "%s: Opening Groff font file..."
 msgstr ""
 
-#: src/groff-font.c:155
+#: src/groff-font.c:159
 msgid "Missing font name."
 msgstr ""
 
 msgid "Missing font name."
 msgstr ""
 
-#: src/groff-font.c:165
+#: src/groff-font.c:169
 msgid "Missing encoding filename."
 msgstr ""
 
 msgid "Missing encoding filename."
 msgstr ""
 
-#: src/groff-font.c:178
+#: src/groff-font.c:182
 msgid "Bad spacewidth value."
 msgstr ""
 
 msgid "Bad spacewidth value."
 msgstr ""
 
-#: src/groff-font.c:190
+#: src/groff-font.c:194
 msgid "Bad slant value."
 msgstr ""
 
 msgid "Bad slant value."
 msgstr ""
 
-#: src/groff-font.c:215
+#: src/groff-font.c:219
 #, c-format
 msgid "Unknown ligature `%s'."
 msgstr ""
 
 #, 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, c-format
 msgid "Missing code for character `%s'."
 msgstr ""
 
-#: src/groff-font.c:317
+#: src/groff-font.c:321
 msgid "Malformed kernpair."
 msgstr ""
 
 msgid "Malformed kernpair."
 msgstr ""
 
-#: src/groff-font.c:324
+#: src/groff-font.c:328
 msgid "Unexpected end of line reading kernpairs."
 msgstr ""
 
 msgid "Unexpected end of line reading kernpairs."
 msgstr ""
 
-#: src/groff-font.c:330
+#: src/groff-font.c:334
 msgid "Bad kern value."
 msgstr ""
 
 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 ""
 
 #, 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 ""
 
 msgid "Error reading font."
 msgstr ""
 
-#: src/groff-font.c:394
+#: src/groff-font.c:398
 msgid "installation error: Groff font error: "
 msgstr ""
 
 msgid "installation error: Groff font error: "
 msgstr ""
 
-#: src/groff-font.c:419
+#: src/groff-font.c:423
 #, c-format
 msgid "Bad character \\%3o."
 msgstr ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, c-format
 msgid "%s: Opening Groff description file..."
 msgstr ""
 
-#: src/groff-font.c:754
+#: src/groff-font.c:758
 msgid "Multiple `sizes' declarations."
 msgstr ""
 
 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 ""
 
 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 ""
 
 msgid "Bad argument to `sizes'."
 msgstr ""
 
-#: src/groff-font.c:795
+#: src/groff-font.c:799
 msgid "Bad range in argument to `sizes'."
 msgstr ""
 
 msgid "Bad range in argument to `sizes'."
 msgstr ""
 
-#: src/groff-font.c:824
+#: src/groff-font.c:828
 msgid "Family name expected."
 msgstr ""
 
 msgid "Family name expected."
 msgstr ""
 
-#: src/groff-font.c:829
+#: src/groff-font.c:833
 msgid "This command already specified."
 msgstr ""
 
 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 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 ""
 
 msgid "Description file read successfully."
 msgstr ""
 
-#: src/groff-font.c:943
+#: src/groff-font.c:947
 msgid "Error reading description file."
 msgstr ""
 
 msgid "Error reading description file."
 msgstr ""
 
-#: src/groff-font.c:1000
+#: src/groff-font.c:1004
 msgid "<<fallback>>"
 msgstr ""
 
 msgid "<<fallback>>"
 msgstr ""
 
-#: src/hash.c:577
+#: src/hash.c:581
 #, c-format
 msgid "hash table:"
 msgstr ""
 
 #, c-format
 msgid "hash table:"
 msgstr ""
 
-#: src/html.c:67
+#: src/html.c:72
 #, c-format
 msgid "HTML driver initializing as `%s'..."
 msgstr ""
 
 #, 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 ""
 
 #, 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 ""
 
 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 ""
 
 #, 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 ""
 
 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 ""
 
 msgid "nowhere"
 msgstr ""
 
-#: src/html.c:357
+#: src/html.c:358
 #, c-format
 msgid "%s: HTML prologue read successfully."
 msgstr ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, c-format
 msgid "Cannot open first page on HTML device %s."
 msgstr ""
 
-#: src/include.c:40
+#: src/include.c:43
 msgid "expecting filename"
 msgstr ""
 
 msgid "expecting filename"
 msgstr ""
 
-#: src/inpt-pgm.c:81
+#: src/inpt-pgm.c:84
 msgid "No matching INPUT PROGRAM command."
 msgstr ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 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 ""
 
 msgid "expecting integer"
 msgstr ""
 
-#: src/lexer.c:589
+#: src/lexer.c:593
 msgid "expecting number"
 msgstr ""
 
 msgid "expecting number"
 msgstr ""
 
-#: src/lexer.c:603
+#: src/lexer.c:607
 msgid "expecting identifier"
 msgstr ""
 
 msgid "expecting identifier"
 msgstr ""
 
-#: src/lexer.c:889
+#: src/lexer.c:893
 msgid "<ERROR>"
 msgstr ""
 
 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 ""
 
 msgid "Unexpected end of file."
 msgstr ""
 
-#: src/lexer.c:1032
+#: src/lexer.c:1036
 msgid "binary"
 msgstr ""
 
 msgid "binary"
 msgstr ""
 
-#: src/lexer.c:1032
+#: src/lexer.c:1036
 msgid "octal"
 msgstr ""
 
 msgid "octal"
 msgstr ""
 
-#: src/lexer.c:1032
+#: src/lexer.c:1036
 msgid "hex"
 msgstr ""
 
 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 ""
 
 #, 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 ""
 
 #, c-format
 msgid "`%c' is not a valid %s digit."
 msgstr ""
 
-#: src/lexer.c:1106
+#: src/lexer.c:1110
 msgid "Unterminated string constant."
 msgstr ""
 
 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 ""
 
 #, 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 msgid "BREAK not enclosed in DO IF structure."
 msgstr ""
 
-#: src/loop.c:578
+#: src/loop.c:581
 #, c-format
 msgid "%s without %s."
 msgstr ""
 
 #, c-format
 msgid "%s without %s."
 msgstr ""
 
-#: src/main.c:86
+#: src/main.c:89
 msgid "Error initializing output drivers."
 msgstr ""
 
 msgid "Error initializing output drivers."
 msgstr ""
 
-#: src/main.c:156
+#: src/main.c:159
 msgid "This command not executed."
 msgstr ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 msgid "VARNAME_ cannot be explicitly specified on VARIABLES."
 msgstr ""
 
-#: src/matrix-data.c:284
+#: src/matrix-data.c:287
 msgid "in FORMAT subcommand"
 msgstr ""
 
 msgid "in FORMAT subcommand"
 msgstr ""
 
-#: src/matrix-data.c:295
+#: src/matrix-data.c:298
 msgid "SPLIT subcommand multiply specified."
 msgstr ""
 
 msgid "SPLIT subcommand multiply specified."
 msgstr ""
 
-#: src/matrix-data.c:302
+#: src/matrix-data.c:305
 msgid "in SPLIT subcommand"
 msgstr ""
 
 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 ""
 
 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 ""
 
 #, 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 ""
 
 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 ""
 
 #, 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 ""
 
 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 ""
 
 msgid "expecting positive integer"
 msgstr ""
 
-#: src/matrix-data.c:413
+#: src/matrix-data.c:416
 msgid "N subcommand multiply specified."
 msgstr ""
 
 msgid "N subcommand multiply specified."
 msgstr ""
 
-#: src/matrix-data.c:434
+#: src/matrix-data.c:437
 msgid "CONTENTS subcommand multiply specified."
 msgstr ""
 
 msgid "CONTENTS subcommand multiply specified."
 msgstr ""
 
-#: src/matrix-data.c:454
+#: src/matrix-data.c:457
 msgid "Nested parentheses not allowed."
 msgstr ""
 
 msgid "Nested parentheses not allowed."
 msgstr ""
 
-#: src/matrix-data.c:464
+#: src/matrix-data.c:467
 msgid "Mismatched right parenthesis (`(')."
 msgstr ""
 
 msgid "Mismatched right parenthesis (`(')."
 msgstr ""
 
-#: src/matrix-data.c:469
+#: src/matrix-data.c:472
 msgid "Empty parentheses not allowed."
 msgstr ""
 
 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 ""
 
 msgid "in CONTENTS subcommand"
 msgstr ""
 
-#: src/matrix-data.c:497
+#: src/matrix-data.c:500
 #, c-format
 msgid "Content multiply specified for %s."
 msgstr ""
 
 #, c-format
 msgid "Content multiply specified for %s."
 msgstr ""
 
-#: src/matrix-data.c:514
+#: src/matrix-data.c:517
 msgid "Missing right parenthesis."
 msgstr ""
 
 msgid "Missing right parenthesis."
 msgstr ""
 
-#: src/matrix-data.c:534
+#: src/matrix-data.c:537
 msgid "Missing VARIABLES subcommand."
 msgstr ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 msgid "No continuous variables specified."
 msgstr ""
 
-#: src/matrix-data.c:854
+#: src/matrix-data.c:857
 msgid "Scope of string exceeds line."
 msgstr ""
 
 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 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 ""
 
 #, 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 ""
 
 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 ""
 
 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 ""
 
 #, 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 msgid "String expected."
 msgstr ""
 
-#: src/mkfile.c:52
+#: src/mkfile.c:54
 #, c-format
 msgid "%s: Creating temporary file: %s."
 msgstr ""
 
 #, 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 ""
 
 #, 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 #, 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 #, c-format
 msgid "Unrecognized subcommand name `%s'."
 msgstr ""
 
-#: src/modify-vars.c:300
+#: src/modify-vars.c:303
 msgid "Subcommand name expected."
 msgstr ""
 
 msgid "Subcommand name expected."
 msgstr ""
 
-#: src/modify-vars.c:308
+#: src/modify-vars.c:311
 msgid "`/' or `.' expected."
 msgstr ""
 
 msgid "`/' or `.' expected."
 msgstr ""
 
-#: src/moments.c:513
+#: src/moments.c:516
 msgid "expecting weight value"
 msgstr ""
 
 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 msgid "Attempt to iterate driver list reentrantly."
 msgstr ""
 
-#: src/output.c:163
+#: src/output.c:166
 #, c-format
 msgid "Unknown output driver `%s'."
 msgstr ""
 
 #, 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 ""
 
 #, 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 ""
 
 msgstr ""
 
-#: src/output.c:300
+#: src/output.c:303
 #, c-format
 msgid "%s: Opening device description file..."
 msgstr ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 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 ""
 
 #, c-format
 msgid "Closing %s: %s."
 msgstr ""
 
-#: src/output.c:352
+#: src/output.c:355
 msgid "No output drivers are active."
 msgstr ""
 
 msgid "No output drivers are active."
 msgstr ""
 
-#: src/output.c:355
+#: src/output.c:358
 msgid "Device definition file read successfully."
 msgstr ""
 
 msgid "Device definition file read successfully."
 msgstr ""
 
-#: src/output.c:357
+#: src/output.c:360
 msgid "Error reading device definition file."
 msgstr ""
 
 msgid "Error reading device definition file."
 msgstr ""
 
-#: src/output.c:471
+#: src/output.c:479
 #, c-format
 msgid ""
 "Driver classes:\n"
 "\t"
 msgstr ""
 
 #, c-format
 msgid ""
 "Driver classes:\n"
 "\t"
 msgstr ""
 
-#: src/output.c:600
+#: src/output.c:608
 msgid "Syntax error in string constant."
 msgstr ""
 
 msgid "Syntax error in string constant."
 msgstr ""
 
-#: src/output.c:632
+#: src/output.c:640
 msgid "Syntax error in options."
 msgstr ""
 
 msgid "Syntax error in options."
 msgstr ""
 
-#: src/output.c:642
+#: src/output.c:650
 msgid "Syntax error in options (`=' expected)."
 msgstr ""
 
 msgid "Syntax error in options (`=' expected)."
 msgstr ""
 
-#: src/output.c:649
+#: src/output.c:657
 msgid "Syntax error in options (value expected after `=')."
 msgstr ""
 
 msgid "Syntax error in options (value expected after `=')."
 msgstr ""
 
-#: src/output.c:721
+#: src/output.c:729
 msgid "Driver name expected."
 msgstr ""
 
 msgid "Driver name expected."
 msgstr ""
 
-#: src/output.c:742
+#: src/output.c:750
 msgid "Class name expected."
 msgstr ""
 
 msgid "Class name expected."
 msgstr ""
 
-#: src/output.c:751
+#: src/output.c:759
 #, c-format
 msgid "Unknown output driver class `%s'."
 msgstr ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 msgid "Paper size name must not be empty."
 msgstr ""
 
-#: src/output.c:1167
+#: src/output.c:1175
 msgid "Cannot find `papersize' configuration file."
 msgstr ""
 
 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 ""
 
 #, 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 ""
 
 msgid "Syntax error in paper size definition."
 msgstr ""
 
-#: src/output.c:1242
+#: src/output.c:1250
 msgid "Paper size definition file read successfully."
 msgstr ""
 
 msgid "Paper size definition file read successfully."
 msgstr ""
 
-#: src/output.c:1244
+#: src/output.c:1252
 msgid "Error reading paper size definition file."
 msgstr ""
 
 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 ""
 
 #, 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 ""
 
 #, c-format
 msgid "Error opening page on %s device of %s class."
 msgstr ""
 
-#: src/percentiles.c:38
+#: src/percentiles.c:42
 msgid "HAverage"
 msgstr ""
 
 msgid "HAverage"
 msgstr ""
 
-#: src/percentiles.c:39
+#: src/percentiles.c:43
 msgid "Weighted Average"
 msgstr ""
 
 msgid "Weighted Average"
 msgstr ""
 
-#: src/percentiles.c:40
+#: src/percentiles.c:44
 msgid "Rounded"
 msgstr ""
 
 msgid "Rounded"
 msgstr ""
 
-#: src/percentiles.c:41
+#: src/percentiles.c:45
 msgid "Empirical"
 msgstr ""
 
 msgid "Empirical"
 msgstr ""
 
-#: src/percentiles.c:42
+#: src/percentiles.c:46
 msgid "Empirical with averaging"
 msgstr ""
 
 msgid "Empirical with averaging"
 msgstr ""
 
-#: src/permissions.c:76
+#: src/permissions.c:77
 #, c-format
 msgid "Expecting %s or %s."
 msgstr ""
 
 #, c-format
 msgid "Expecting %s or %s."
 msgstr ""
 
-#: src/permissions.c:109
+#: src/permissions.c:110
 #, c-format
 msgid "Cannot stat %s: %s"
 msgstr ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 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 ""
 
 #, 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 ""
 
 msgid "Data record expected."
 msgstr ""
 
-#: src/pfm-read.c:296
+#: src/pfm-read.c:299
 msgid "Missing numeric terminator."
 msgstr ""
 
 msgid "Missing numeric terminator."
 msgstr ""
 
-#: src/pfm-read.c:319
+#: src/pfm-read.c:322
 msgid "Invalid integer."
 msgstr ""
 
 msgid "Invalid integer."
 msgstr ""
 
-#: src/pfm-read.c:330
+#: src/pfm-read.c:333
 #, c-format
 msgid "Bad string length %d."
 msgstr ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 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 ""
 
 #, 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 ""
 
 #, c-format
 msgid "Weight variable name (%s) truncated."
 msgstr ""
 
-#: src/pfm-read.c:513
+#: src/pfm-read.c:517
 msgid "Expected variable record."
 msgstr ""
 
 msgid "Expected variable record."
 msgstr ""
 
-#: src/pfm-read.c:517
+#: src/pfm-read.c:521
 #, c-format
 msgid "Invalid variable width %d."
 msgstr ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, c-format
 msgid "%s: Closing portable file: %s."
 msgstr ""
 
-#: src/plot-hist.c:126
+#: src/plot-hist.c:127
 msgid "HISTOGRAM"
 msgstr ""
 
 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 ""
 
 #, 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 "
 #, 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 ""
 
 "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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, c-format
 msgid "%s: PostScript encoding list file read successfully."
 msgstr ""
 
-#: src/postscript.c:1144
+#: src/postscript.c:1139
 msgid "<<default encoding>>"
 msgstr ""
 
 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 ""
 
 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 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 ""
 
 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 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 ""
 
 #, 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 ""
 
 #, 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 "
 #, c-format
 msgid ""
 "There is no string variable named %s.  (All string variables specified on "
@@ -2911,83 +3712,83 @@ msgid ""
 "variable.)"
 msgstr ""
 
 "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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 msgid "`(' expected."
 msgstr ""
 
-#: src/rename-vars.c:68
+#: src/rename-vars.c:71
 msgid "`=' expected between lists of new and old variable names."
 msgstr ""
 
 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 ""
 
 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 ""
 
 #, 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 ""
 
 #, 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 "
 #, 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 ""
 
 "s as well, but %d were specified."
 msgstr ""
 
-#: src/repeat.c:299
+#: src/repeat.c:302
 msgid "No commands in scope."
 msgstr ""
 
 msgid "No commands in scope."
 msgstr ""
 
-#: src/repeat.c:487
+#: src/repeat.c:490
 msgid "No matching DO REPEAT."
 msgstr ""
 
 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 ""
 
 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 ""
 
 #, 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 ""
 
 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 ""
 
 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 ""
 
 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
 #, c-format
-msgid "%s: Closing system file: %s."
+msgid "%s is obsolete."
 msgstr ""
 
 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 ""
 
 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 ""
 
 msgstr ""
 
-#: src/sfm-read.c:261
+#: src/set.q:248
 #, c-format
 #, c-format
-msgid ""
-"%s: Weighting variable may not be a continuation of a long string variable."
+msgid "EPOCH is %d"
 msgstr ""
 
 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 ""
 
 msgstr ""
 
-#: src/sfm-read.c:289
-#, c-format
+#: src/set.q:434
 msgid ""
 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 ""
 
 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 ""
 
 msgstr ""
 
-#: src/sfm-read.c:401
+#: src/set.q:453
 #, c-format
 #, 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 ""
 
 msgstr ""
 
-#: src/sfm-read.c:408
+#: src/set.q:475
 #, c-format
 #, 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 ""
 
 msgstr ""
 
-#: src/sfm-read.c:418
-#, c-format
-msgid "%s: Long variable mapping for nonexistent variable %s."
+#: src/set.q:528
+msgid "None"
 msgstr ""
 
 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 ""
 
 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 ""
 
 msgstr ""
 
-#: src/sfm-read.c:481
-#, c-format
-msgid "%s: Unrecognized record type %d."
+#: src/set.q:546
+msgid "Listing"
 msgstr ""
 
 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 ""
 
 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 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 ""
 
 msgid "little-endian"
 msgstr ""
 
-#: src/sfm-read.c:545
+#: src/sfm-read.c:548
 msgid "unknown"
 msgstr ""
 
 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 ""
 
 #, 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 ""
 
 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 ""
 
 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 ""
 
 #, 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 "
 #, 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 ""
 
 "%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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 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 ""
 
 #, 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 ""
 
 msgid "File:"
 msgstr ""
 
-#: src/sysfile-info.c:98
+#: src/sysfile-info.c:101
 msgid "Label:"
 msgstr ""
 
 msgid "Label:"
 msgstr ""
 
-#: src/sysfile-info.c:102
+#: src/sysfile-info.c:105
 msgid "No label."
 msgstr ""
 
 msgid "No label."
 msgstr ""
 
-#: src/sysfile-info.c:105
+#: src/sysfile-info.c:108
 msgid "Created:"
 msgstr ""
 
 msgid "Created:"
 msgstr ""
 
-#: src/sysfile-info.c:108
+#: src/sysfile-info.c:111
 msgid "Endian:"
 msgstr ""
 
 msgid "Endian:"
 msgstr ""
 
-#: src/sysfile-info.c:109
+#: src/sysfile-info.c:112
 msgid "Big."
 msgstr ""
 
 msgid "Big."
 msgstr ""
 
-#: src/sysfile-info.c:109
+#: src/sysfile-info.c:112
 msgid "Little."
 msgstr ""
 
 msgid "Little."
 msgstr ""
 
-#: src/sysfile-info.c:110
+#: src/sysfile-info.c:113
 msgid "Variables:"
 msgstr ""
 
 msgid "Variables:"
 msgstr ""
 
-#: src/sysfile-info.c:113
+#: src/sysfile-info.c:116
 msgid "Cases:"
 msgstr ""
 
 msgid "Cases:"
 msgstr ""
 
-#: src/sysfile-info.c:116
+#: src/sysfile-info.c:119
 msgid "Type:"
 msgstr ""
 
 msgid "Type:"
 msgstr ""
 
-#: src/sysfile-info.c:117
+#: src/sysfile-info.c:120
 msgid "System File."
 msgstr ""
 
 msgid "System File."
 msgstr ""
 
-#: src/sysfile-info.c:118
+#: src/sysfile-info.c:121
 msgid "Weight:"
 msgstr ""
 
 msgid "Weight:"
 msgstr ""
 
-#: src/sysfile-info.c:122
+#: src/sysfile-info.c:125
 msgid "Not weighted."
 msgstr ""
 
 msgid "Not weighted."
 msgstr ""
 
-#: src/sysfile-info.c:124
+#: src/sysfile-info.c:127
 msgid "Mode:"
 msgstr ""
 
 msgid "Mode:"
 msgstr ""
 
-#: src/sysfile-info.c:126
+#: src/sysfile-info.c:129
 #, c-format
 msgid "Compression %s."
 msgstr ""
 
 #, c-format
 msgid "Compression %s."
 msgstr ""
 
-#: src/sysfile-info.c:126
+#: src/sysfile-info.c:129
 msgid "on"
 msgstr ""
 
 msgid "on"
 msgstr ""
 
-#: src/sysfile-info.c:126
+#: src/sysfile-info.c:129
 msgid "off"
 msgstr ""
 
 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 ""
 
 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 ""
 
 msgid "Position"
 msgstr ""
 
-#: src/sysfile-info.c:195
+#: src/sysfile-info.c:198
 msgid "The active file does not have a file label."
 msgstr ""
 
 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 ""
 
 msgid "File label:"
 msgstr ""
 
-#: src/sysfile-info.c:260
+#: src/sysfile-info.c:263
 msgid "No variables to display."
 msgstr ""
 
 msgid "No variables to display."
 msgstr ""
 
-#: src/sysfile-info.c:279
+#: src/sysfile-info.c:282
 msgid "Macros not supported."
 msgstr ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 msgid "Label"
 msgstr ""
 
-#: src/sysfile-info.c:448
+#: src/sysfile-info.c:451
 #, c-format
 msgid "Format: %s"
 msgstr ""
 
 #, c-format
 msgid "Format: %s"
 msgstr ""
 
-#: src/sysfile-info.c:455
+#: src/sysfile-info.c:458
 #, c-format
 msgid "Print Format: %s"
 msgstr ""
 
 #, c-format
 msgid "Print Format: %s"
 msgstr ""
 
-#: src/sysfile-info.c:458
+#: src/sysfile-info.c:461
 #, c-format
 msgid "Write Format: %s"
 msgstr ""
 
 #, c-format
 msgid "Write Format: %s"
 msgstr ""
 
-#: src/sysfile-info.c:466
+#: src/sysfile-info.c:469
 msgid "Missing Values: "
 msgstr ""
 
 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 ""
 
 msgid "No vectors defined."
 msgstr ""
 
-#: src/sysfile-info.c:605
+#: src/sysfile-info.c:608
 msgid "Vector"
 msgstr ""
 
 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 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 ""
 
 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 ""
 
 #, c-format
 msgid "%s before: %s\n"
 msgstr ""
 
-#: src/title.c:56
+#: src/title.c:59
 msgid "<none>"
 msgstr ""
 
 msgid "<none>"
 msgstr ""
 
-#: src/title.c:68
+#: src/title.c:71
 #, c-format
 msgid "%s: `.' expected after string."
 msgstr ""
 
 #, c-format
 msgid "%s: `.' expected after string."
 msgstr ""
 
-#: src/title.c:84
+#: src/title.c:87
 #, c-format
 msgid "%s after: %s\n"
 msgstr ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 msgid "Variable suffix too large."
 msgstr ""
 
-#: src/vars-prs.c:43
+#: src/vars-prs.c:46
 msgid "expecting variable name"
 msgstr ""
 
 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 ""
 
 #, c-format
 msgid "%s is not a variable name."
 msgstr ""
 
-#: src/vars-prs.c:111
+#: src/vars-prs.c:114
 msgid "ordinary"
 msgstr ""
 
 msgid "ordinary"
 msgstr ""
 
-#: src/vars-prs.c:113
+#: src/vars-prs.c:116
 msgid "system"
 msgstr ""
 
 msgid "system"
 msgstr ""
 
-#: src/vars-prs.c:115
+#: src/vars-prs.c:118
 msgid "scratch"
 msgstr ""
 
 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 "
 #, 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 ""
 
 "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 ""
 
 msgid "incorrect use of TO convention"
 msgstr ""
 
-#: src/vars-prs.c:422
+#: src/vars-prs.c:425
 msgid "Scratch variables not allowed here."
 msgstr ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 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 ""
 
 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 ""
 
 #, 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 ""
 
 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 ""
 
 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 ""
 
 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."
 #, 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"
 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"
 "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"
 
 "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 ""
 
 msgid "while expecting COLUMNWISE"
 msgstr ""
 
-#: src/aggregate.c:225
+#: src/aggregate.c:228
 msgid "expecting BREAK"
 msgstr ""
 
 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 ""
 
 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 ""
 
 msgid "expecting aggregation function"
 msgstr ""
 
-#: src/aggregate.c:402
+#: src/aggregate.c:405
 #, c-format
 msgid "Unknown aggregation function %s."
 msgstr ""
 
 #, c-format
 msgid "Unknown aggregation function %s."
 msgstr ""
 
-#: src/aggregate.c:417
+#: src/aggregate.c:420
 msgid "expecting `('"
 msgstr ""
 
 msgid "expecting `('"
 msgstr ""
 
-#: src/aggregate.c:454
+#: src/aggregate.c:457
 #, c-format
 msgid "Missing argument %d to %s."
 msgstr ""
 
 #, 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 ""
 
 #, 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 ""
 
 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 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 ""
 
 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 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 ""
 
 #, 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 "
 #, 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 ""
 
 "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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, c-format
 msgid "%s - Page %d"
 msgstr ""
 
-#: src/ascii.c:1646
+#: src/ascii.c:1642
 msgid "Charts are unsupported with ascii drivers."
 msgstr ""
 
 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 ""
 
 #, 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 ""
 
 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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"
 #, c-format
 msgid ""
 "PSPP, a program for statistical analysis of sample data.\n"
@@ -351,32 +351,32 @@ msgid ""
 "\n"
 msgstr ""
 
 "\n"
 msgstr ""
 
-#: src/cmdline.c:281
+#: src/cmdline.c:285
 #, c-format
 msgid ""
 "\n"
 "Report bugs to <%s>.\n"
 msgstr ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 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 ""
 
 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 "
 #, 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 ""
 
 "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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 #, c-format
 msgid "Error removing `%s': %s."
 msgstr ""
 
-#: src/command.c:742
+#: src/command.c:746
 #, c-format
 msgid "Couldn't fork: %s."
 msgstr ""
 
 #, c-format
 msgid "Couldn't fork: %s."
 msgstr ""
 
-#: src/command.c:784
+#: src/command.c:788
 #, c-format
 msgid "Error executing command: %s."
 msgstr ""
 
 #, 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 ""
 
 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 ""
 
 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 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 ""
 
 #, 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
 msgstr ""
 
 #: src/data-in.c:61
+msgid "data-file error: "
+msgstr ""
+
+#: src/data-in.c:63
 #, c-format
 msgid "(column %d"
 msgstr ""
 
 #, c-format
 msgid "(column %d"
 msgstr ""
 
-#: src/data-in.c:63
+#: src/data-in.c:65
 #, c-format
 msgid "(columns %d-%d"
 msgstr ""
 
 #, c-format
 msgid "(columns %d-%d"
 msgstr ""
 
-#: src/data-in.c:64
+#: src/data-in.c:66
 #, c-format
 msgid ", field type %s) "
 msgstr ""
 
 #, 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 ""
 
 msgid "Field does not form a valid floating-point constant."
 msgstr ""
 
@@ -510,11 +788,11 @@ msgstr ""
 msgid "Unrecognized character in field."
 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 ""
 
 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 ""
 
 msgid "Field must contain only hex digits."
 msgstr ""
 
@@ -541,949 +819,1260 @@ msgstr ""
 msgid "Error in syntax of zoned decimal number."
 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 ""
 
 msgid "Unexpected end of field."
 msgstr ""
 
-#: src/data-in.c:672
+#: src/data-in.c:674
 msgid "Digit expected in field."
 msgstr ""
 
 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 ""
 
 #, 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 ""
 
 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 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 ""
 
 #, 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 ""
 
 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 ""
 
 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 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 ""
 
 #, 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 #, 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 #, 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 ""
 
 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 ""
 
 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 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 ""
 
 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 ""
 
 msgid "Variable"
 msgstr ""
 
-#: src/data-list.c:786 src/print.c:797
+#: src/data-list.c:789 src/print.c:800
 msgid "Record"
 msgstr ""
 
 msgid "Record"
 msgstr ""
 
-#: src/data-list.c:787 src/print.c:798
+#: src/data-list.c:790 src/print.c:801
 msgid "Columns"
 msgstr ""
 
 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 ""
 
 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] ""
 
 #, 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] ""
 
 #, 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 ""
 
 #, 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 ""
 
 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 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 ""
 
 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 msgid "Missing required specification STARTS."
 msgstr ""
 
-#: src/data-list.c:1577
+#: src/data-list.c:1584
 msgid "Missing required specification OCCURS."
 msgstr ""
 
 msgid "Missing required specification OCCURS."
 msgstr ""
 
-#: src/data-list.c:1584
+#: src/data-list.c:1591
 msgid "ID specified without CONTINUED."
 msgstr ""
 
 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 ""
 
 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 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 ""
 
 #, 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 ""
 
 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 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 ""
 
 msgid "Mean"
 msgstr ""
 
-#: src/descript.c:100
+#: src/descript.c:104
 msgid "S E Mean"
 msgstr ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 msgid "Kurtosis"
 msgstr ""
 
-#: src/descript.c:104
+#: src/descript.c:108
 msgid "S E Kurt"
 msgstr ""
 
 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 ""
 
 msgid "Skewness"
 msgstr ""
 
-#: src/descript.c:106
+#: src/descript.c:110
 msgid "S E Skew"
 msgstr ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 msgid "Maximum"
 msgstr ""
 
-#: src/descript.c:110 src/frequencies.q:125
+#: src/descript.c:114 src/frequencies.q:130
 msgid "Sum"
 msgstr ""
 
 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 ""
 
 #, 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 ""
 
 msgid "No variables specified."
 msgstr ""
 
-#: src/descript.c:435
+#: src/descript.c:439
 msgid "expecting statistic name: reverting to default"
 msgstr ""
 
 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 ""
 
 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 ""
 
 msgid "Mapping of variables to corresponding Z-scores."
 msgstr ""
 
-#: src/descript.c:543
+#: src/descript.c:547
 msgid "Source"
 msgstr ""
 
 msgid "Source"
 msgstr ""
 
-#: src/descript.c:544
+#: src/descript.c:548
 msgid "Target"
 msgstr ""
 
 msgid "Target"
 msgstr ""
 
-#: src/descript.c:663 src/descript.c:669
+#: src/descript.c:667 src/descript.c:673
 msgid "Z-score of "
 msgstr ""
 
 msgid "Z-score of "
 msgstr ""
 
-#: src/descript.c:882
+#: src/descript.c:886
 msgid "Valid N"
 msgstr ""
 
 msgid "Valid N"
 msgstr ""
 
-#: src/descript.c:883
+#: src/descript.c:887
 msgid "Missing N"
 msgstr ""
 
 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 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 ""
 
 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 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 ""
 
 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 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 ""
 
 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 ""
 
 #, 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 ""
 
 #, c-format
 msgid "Warnings (%d) exceed limit (%d)."
 msgstr ""
 
-#: src/error.c:237
+#: src/error.c:243
 msgid "fatal"
 msgstr ""
 
 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 ""
 
 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 ""
 
 msgid "warning"
 msgstr ""
 
-#: src/error.c:241 src/error.c:251
+#: src/error.c:247 src/error.c:257
 msgid "note"
 msgstr ""
 
 msgid "note"
 msgstr ""
 
-#: src/error.c:243 src/error.c:244
+#: src/error.c:249 src/error.c:250
 msgid "installation error"
 msgstr ""
 
 msgid "installation error"
 msgstr ""
 
-#: src/filename.c:221
+#: src/examine.q:471 src/examine.q:483
 #, c-format
 #, c-format
-msgid "Searching for `%s'..."
+msgid "%s and %s are mutually exclusive"
 msgstr ""
 
 msgstr ""
 
-#: src/filename.c:229 src/filename.c:261
-msgid "Search unsuccessful!"
+#: src/examine.q:913
+msgid "Case Processing Summary"
 msgstr ""
 
 msgstr ""
 
-#: src/filename.c:254
-#, c-format
-msgid "Found `%s'."
+#: src/examine.q:1119
+msgid "Extreme Values"
 msgstr ""
 
 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 ""
 
 msgstr ""
 
-#: src/file-type.c:131
-msgid "MIXED, GROUPED, or NESTED expected."
+#: src/examine.q:1220
+msgid "Highest"
 msgstr ""
 
 msgstr ""
 
-#: src/file-type.c:154
-msgid "The CASE subcommand is not valid on FILE TYPE MIXED."
+#: src/examine.q:1225
+msgid "Lowest"
 msgstr ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 #, c-format
 msgid "WARN%s expected after DUPLICATE."
 msgstr ""
 
-#: src/file-type.c:204
+#: src/file-type.c:207
 msgid ", NOWARN, or CASE"
 msgstr ""
 
 msgid ", NOWARN, or CASE"
 msgstr ""
 
-#: src/file-type.c:205
+#: src/file-type.c:208
 msgid " or NOWARN"
 msgstr ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 msgid "Column value must be positive."
 msgstr ""
 
-#: src/file-type.c:345
+#: src/file-type.c:348
 msgid "Ending column precedes beginning column."
 msgstr ""
 
 msgid "Ending column precedes beginning column."
 msgstr ""
 
-#: src/file-type.c:365
+#: src/file-type.c:368
 msgid "Bad format specifier name."
 msgstr ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 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 ""
 
 #, 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 ""
 
 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 ""
 
 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 ""
 
 #, 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 ""
 
 #, c-format
 msgid "Error rewinding FLIP file: %s."
 msgstr ""
 
-#: src/flip.c:410
+#: src/flip.c:413
 msgid "Error creating FLIP source file."
 msgstr ""
 
 msgid "Error creating FLIP source file."
 msgstr ""
 
-#: src/flip.c:419
+#: src/flip.c:422
 #, c-format
 msgid "Error reading FLIP file: %s."
 msgstr ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 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 ""
 
 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 ""
 
 #, c-format
 msgid "%.*s is not a valid data format."
 msgstr ""
 
-#: src/format.c:131
+#: src/format.c:134
 #, c-format
 #, 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 ""
 
 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 "
 #, c-format
 msgid ""
 "Output format %s is invalid because it specifies as many decimal places as "
@@ -1491,1224 +2080,1431 @@ msgid ""
 "d instead."
 msgstr ""
 
 "d instead."
 msgstr ""
 
-#: src/format.c:234
+#: src/format.c:237
 #, c-format
 msgid "%s variables are not compatible with %s format %s."
 msgstr ""
 
 #, 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 ""
 
 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 ""
 
 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 ""
 
 #, 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 ""
 
 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 ""
 
 #, 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 ""
 
 #, c-format
 msgid "Data format %s is not valid."
 msgstr ""
 
-#: src/formats.c:86
+#: src/formats.c:89
 msgid "`(' expected after variable list"
 msgstr ""
 
 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 ""
 
 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 ""
 
 msgstr ""
 
-#: src/get.c:252
-#, c-format
-msgid "Unsupported sysfile version: %d. Using version %d instead."
+#: src/frequencies.q:120
+msgid "Mode"
 msgstr ""
 
 msgstr ""
 
-#: src/get.c:408 src/print.c:179
-msgid "expecting a valid subcommand"
+#: src/frequencies.q:124
+msgid "S.E. Kurt"
 msgstr ""
 
 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 ""
 
 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 ""
 
 msgstr ""
 
-#: src/get.c:483
+#: src/frequencies.q:484
 #, c-format
 msgid ""
 #, 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 msgstr ""
 
-#: src/get.c:895
-msgid "FIRST may appear at most once."
+#: src/frequencies.q:1164
+msgid "Value Label"
 msgstr ""
 
 msgstr ""
 
-#: src/get.c:909
-msgid "LAST may appear at most once."
+#: src/frequencies.q:1265
+msgid "Freq"
 msgstr ""
 
 msgstr ""
 
-#: src/get.c:950
-msgid "BY is required when TABLE is specified."
+#: src/frequencies.q:1266 src/frequencies.q:1268
+msgid "Pct"
 msgstr ""
 
 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 ""
 
 msgstr ""
 
-#: src/get.c:983
+#: src/get.c:987
 #, c-format
 msgid "IN variable name %s duplicates an existing variable name."
 msgstr ""
 
 #, 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 ""
 
 #, 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 ""
 
 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 ""
 
 #, 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 ""
 
 #, c-format
 msgid "%s: Opening as syntax file."
 msgstr ""
 
-#: src/getline.c:335
+#: src/getl.c:338
 #, c-format
 msgid "Opening `%s': %s."
 msgstr ""
 
 #, 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 ""
 
 #, c-format
 msgid "Reading `%s': %s."
 msgstr ""
 
-#: src/getline.c:402
+#: src/getl.c:405
 #, c-format
 msgid "Closing `%s': %s."
 msgstr ""
 
 #, 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 ""
 
 #, c-format
 msgid "%s: Opening Groff font file..."
 msgstr ""
 
-#: src/groff-font.c:155
+#: src/groff-font.c:159
 msgid "Missing font name."
 msgstr ""
 
 msgid "Missing font name."
 msgstr ""
 
-#: src/groff-font.c:165
+#: src/groff-font.c:169
 msgid "Missing encoding filename."
 msgstr ""
 
 msgid "Missing encoding filename."
 msgstr ""
 
-#: src/groff-font.c:178
+#: src/groff-font.c:182
 msgid "Bad spacewidth value."
 msgstr ""
 
 msgid "Bad spacewidth value."
 msgstr ""
 
-#: src/groff-font.c:190
+#: src/groff-font.c:194
 msgid "Bad slant value."
 msgstr ""
 
 msgid "Bad slant value."
 msgstr ""
 
-#: src/groff-font.c:215
+#: src/groff-font.c:219
 #, c-format
 msgid "Unknown ligature `%s'."
 msgstr ""
 
 #, 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, c-format
 msgid "Missing code for character `%s'."
 msgstr ""
 
-#: src/groff-font.c:317
+#: src/groff-font.c:321
 msgid "Malformed kernpair."
 msgstr ""
 
 msgid "Malformed kernpair."
 msgstr ""
 
-#: src/groff-font.c:324
+#: src/groff-font.c:328
 msgid "Unexpected end of line reading kernpairs."
 msgstr ""
 
 msgid "Unexpected end of line reading kernpairs."
 msgstr ""
 
-#: src/groff-font.c:330
+#: src/groff-font.c:334
 msgid "Bad kern value."
 msgstr ""
 
 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 ""
 
 #, 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 ""
 
 msgid "Error reading font."
 msgstr ""
 
-#: src/groff-font.c:394
+#: src/groff-font.c:398
 msgid "installation error: Groff font error: "
 msgstr ""
 
 msgid "installation error: Groff font error: "
 msgstr ""
 
-#: src/groff-font.c:419
+#: src/groff-font.c:423
 #, c-format
 msgid "Bad character \\%3o."
 msgstr ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, c-format
 msgid "%s: Opening Groff description file..."
 msgstr ""
 
-#: src/groff-font.c:754
+#: src/groff-font.c:758
 msgid "Multiple `sizes' declarations."
 msgstr ""
 
 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 ""
 
 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 ""
 
 msgid "Bad argument to `sizes'."
 msgstr ""
 
-#: src/groff-font.c:795
+#: src/groff-font.c:799
 msgid "Bad range in argument to `sizes'."
 msgstr ""
 
 msgid "Bad range in argument to `sizes'."
 msgstr ""
 
-#: src/groff-font.c:824
+#: src/groff-font.c:828
 msgid "Family name expected."
 msgstr ""
 
 msgid "Family name expected."
 msgstr ""
 
-#: src/groff-font.c:829
+#: src/groff-font.c:833
 msgid "This command already specified."
 msgstr ""
 
 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 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 ""
 
 msgid "Description file read successfully."
 msgstr ""
 
-#: src/groff-font.c:943
+#: src/groff-font.c:947
 msgid "Error reading description file."
 msgstr ""
 
 msgid "Error reading description file."
 msgstr ""
 
-#: src/groff-font.c:1000
+#: src/groff-font.c:1004
 msgid "<<fallback>>"
 msgstr ""
 
 msgid "<<fallback>>"
 msgstr ""
 
-#: src/hash.c:577
+#: src/hash.c:581
 #, c-format
 msgid "hash table:"
 msgstr ""
 
 #, c-format
 msgid "hash table:"
 msgstr ""
 
-#: src/html.c:67
+#: src/html.c:72
 #, c-format
 msgid "HTML driver initializing as `%s'..."
 msgstr ""
 
 #, 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 ""
 
 #, 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 ""
 
 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 ""
 
 #, 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 ""
 
 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 ""
 
 msgid "nowhere"
 msgstr ""
 
-#: src/html.c:357
+#: src/html.c:358
 #, c-format
 msgid "%s: HTML prologue read successfully."
 msgstr ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, c-format
 msgid "Cannot open first page on HTML device %s."
 msgstr ""
 
-#: src/include.c:40
+#: src/include.c:43
 msgid "expecting filename"
 msgstr ""
 
 msgid "expecting filename"
 msgstr ""
 
-#: src/inpt-pgm.c:81
+#: src/inpt-pgm.c:84
 msgid "No matching INPUT PROGRAM command."
 msgstr ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 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 ""
 
 msgid "expecting integer"
 msgstr ""
 
-#: src/lexer.c:589
+#: src/lexer.c:593
 msgid "expecting number"
 msgstr ""
 
 msgid "expecting number"
 msgstr ""
 
-#: src/lexer.c:603
+#: src/lexer.c:607
 msgid "expecting identifier"
 msgstr ""
 
 msgid "expecting identifier"
 msgstr ""
 
-#: src/lexer.c:889
+#: src/lexer.c:893
 msgid "<ERROR>"
 msgstr ""
 
 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 ""
 
 msgid "Unexpected end of file."
 msgstr ""
 
-#: src/lexer.c:1032
+#: src/lexer.c:1036
 msgid "binary"
 msgstr ""
 
 msgid "binary"
 msgstr ""
 
-#: src/lexer.c:1032
+#: src/lexer.c:1036
 msgid "octal"
 msgstr ""
 
 msgid "octal"
 msgstr ""
 
-#: src/lexer.c:1032
+#: src/lexer.c:1036
 msgid "hex"
 msgstr ""
 
 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 ""
 
 #, 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 ""
 
 #, c-format
 msgid "`%c' is not a valid %s digit."
 msgstr ""
 
-#: src/lexer.c:1106
+#: src/lexer.c:1110
 msgid "Unterminated string constant."
 msgstr ""
 
 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 ""
 
 #, 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 msgid "BREAK not enclosed in DO IF structure."
 msgstr ""
 
-#: src/loop.c:578
+#: src/loop.c:581
 #, c-format
 msgid "%s without %s."
 msgstr ""
 
 #, c-format
 msgid "%s without %s."
 msgstr ""
 
-#: src/main.c:86
+#: src/main.c:89
 msgid "Error initializing output drivers."
 msgstr ""
 
 msgid "Error initializing output drivers."
 msgstr ""
 
-#: src/main.c:156
+#: src/main.c:159
 msgid "This command not executed."
 msgstr ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 msgid "VARNAME_ cannot be explicitly specified on VARIABLES."
 msgstr ""
 
-#: src/matrix-data.c:284
+#: src/matrix-data.c:287
 msgid "in FORMAT subcommand"
 msgstr ""
 
 msgid "in FORMAT subcommand"
 msgstr ""
 
-#: src/matrix-data.c:295
+#: src/matrix-data.c:298
 msgid "SPLIT subcommand multiply specified."
 msgstr ""
 
 msgid "SPLIT subcommand multiply specified."
 msgstr ""
 
-#: src/matrix-data.c:302
+#: src/matrix-data.c:305
 msgid "in SPLIT subcommand"
 msgstr ""
 
 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 ""
 
 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 ""
 
 #, 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 ""
 
 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 ""
 
 #, 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 ""
 
 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 ""
 
 msgid "expecting positive integer"
 msgstr ""
 
-#: src/matrix-data.c:413
+#: src/matrix-data.c:416
 msgid "N subcommand multiply specified."
 msgstr ""
 
 msgid "N subcommand multiply specified."
 msgstr ""
 
-#: src/matrix-data.c:434
+#: src/matrix-data.c:437
 msgid "CONTENTS subcommand multiply specified."
 msgstr ""
 
 msgid "CONTENTS subcommand multiply specified."
 msgstr ""
 
-#: src/matrix-data.c:454
+#: src/matrix-data.c:457
 msgid "Nested parentheses not allowed."
 msgstr ""
 
 msgid "Nested parentheses not allowed."
 msgstr ""
 
-#: src/matrix-data.c:464
+#: src/matrix-data.c:467
 msgid "Mismatched right parenthesis (`(')."
 msgstr ""
 
 msgid "Mismatched right parenthesis (`(')."
 msgstr ""
 
-#: src/matrix-data.c:469
+#: src/matrix-data.c:472
 msgid "Empty parentheses not allowed."
 msgstr ""
 
 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 ""
 
 msgid "in CONTENTS subcommand"
 msgstr ""
 
-#: src/matrix-data.c:497
+#: src/matrix-data.c:500
 #, c-format
 msgid "Content multiply specified for %s."
 msgstr ""
 
 #, c-format
 msgid "Content multiply specified for %s."
 msgstr ""
 
-#: src/matrix-data.c:514
+#: src/matrix-data.c:517
 msgid "Missing right parenthesis."
 msgstr ""
 
 msgid "Missing right parenthesis."
 msgstr ""
 
-#: src/matrix-data.c:534
+#: src/matrix-data.c:537
 msgid "Missing VARIABLES subcommand."
 msgstr ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 msgid "No continuous variables specified."
 msgstr ""
 
-#: src/matrix-data.c:854
+#: src/matrix-data.c:857
 msgid "Scope of string exceeds line."
 msgstr ""
 
 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 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 ""
 
 #, 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 ""
 
 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 ""
 
 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 ""
 
 #, 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 msgid "String expected."
 msgstr ""
 
-#: src/mkfile.c:52
+#: src/mkfile.c:54
 #, c-format
 msgid "%s: Creating temporary file: %s."
 msgstr ""
 
 #, 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 ""
 
 #, 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 #, 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 #, c-format
 msgid "Unrecognized subcommand name `%s'."
 msgstr ""
 
-#: src/modify-vars.c:300
+#: src/modify-vars.c:303
 msgid "Subcommand name expected."
 msgstr ""
 
 msgid "Subcommand name expected."
 msgstr ""
 
-#: src/modify-vars.c:308
+#: src/modify-vars.c:311
 msgid "`/' or `.' expected."
 msgstr ""
 
 msgid "`/' or `.' expected."
 msgstr ""
 
-#: src/moments.c:513
+#: src/moments.c:516
 msgid "expecting weight value"
 msgstr ""
 
 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 msgid "Attempt to iterate driver list reentrantly."
 msgstr ""
 
-#: src/output.c:163
+#: src/output.c:166
 #, c-format
 msgid "Unknown output driver `%s'."
 msgstr ""
 
 #, 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 ""
 
 #, 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 ""
 
 msgstr ""
 
-#: src/output.c:300
+#: src/output.c:303
 #, c-format
 msgid "%s: Opening device description file..."
 msgstr ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 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 ""
 
 #, c-format
 msgid "Closing %s: %s."
 msgstr ""
 
-#: src/output.c:352
+#: src/output.c:355
 msgid "No output drivers are active."
 msgstr ""
 
 msgid "No output drivers are active."
 msgstr ""
 
-#: src/output.c:355
+#: src/output.c:358
 msgid "Device definition file read successfully."
 msgstr ""
 
 msgid "Device definition file read successfully."
 msgstr ""
 
-#: src/output.c:357
+#: src/output.c:360
 msgid "Error reading device definition file."
 msgstr ""
 
 msgid "Error reading device definition file."
 msgstr ""
 
-#: src/output.c:471
+#: src/output.c:479
 #, c-format
 msgid ""
 "Driver classes:\n"
 "\t"
 msgstr ""
 
 #, c-format
 msgid ""
 "Driver classes:\n"
 "\t"
 msgstr ""
 
-#: src/output.c:600
+#: src/output.c:608
 msgid "Syntax error in string constant."
 msgstr ""
 
 msgid "Syntax error in string constant."
 msgstr ""
 
-#: src/output.c:632
+#: src/output.c:640
 msgid "Syntax error in options."
 msgstr ""
 
 msgid "Syntax error in options."
 msgstr ""
 
-#: src/output.c:642
+#: src/output.c:650
 msgid "Syntax error in options (`=' expected)."
 msgstr ""
 
 msgid "Syntax error in options (`=' expected)."
 msgstr ""
 
-#: src/output.c:649
+#: src/output.c:657
 msgid "Syntax error in options (value expected after `=')."
 msgstr ""
 
 msgid "Syntax error in options (value expected after `=')."
 msgstr ""
 
-#: src/output.c:721
+#: src/output.c:729
 msgid "Driver name expected."
 msgstr ""
 
 msgid "Driver name expected."
 msgstr ""
 
-#: src/output.c:742
+#: src/output.c:750
 msgid "Class name expected."
 msgstr ""
 
 msgid "Class name expected."
 msgstr ""
 
-#: src/output.c:751
+#: src/output.c:759
 #, c-format
 msgid "Unknown output driver class `%s'."
 msgstr ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 msgid "Paper size name must not be empty."
 msgstr ""
 
-#: src/output.c:1167
+#: src/output.c:1175
 msgid "Cannot find `papersize' configuration file."
 msgstr ""
 
 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 ""
 
 #, 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 ""
 
 msgid "Syntax error in paper size definition."
 msgstr ""
 
-#: src/output.c:1242
+#: src/output.c:1250
 msgid "Paper size definition file read successfully."
 msgstr ""
 
 msgid "Paper size definition file read successfully."
 msgstr ""
 
-#: src/output.c:1244
+#: src/output.c:1252
 msgid "Error reading paper size definition file."
 msgstr ""
 
 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 ""
 
 #, 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 ""
 
 #, c-format
 msgid "Error opening page on %s device of %s class."
 msgstr ""
 
-#: src/percentiles.c:38
+#: src/percentiles.c:42
 msgid "HAverage"
 msgstr ""
 
 msgid "HAverage"
 msgstr ""
 
-#: src/percentiles.c:39
+#: src/percentiles.c:43
 msgid "Weighted Average"
 msgstr ""
 
 msgid "Weighted Average"
 msgstr ""
 
-#: src/percentiles.c:40
+#: src/percentiles.c:44
 msgid "Rounded"
 msgstr ""
 
 msgid "Rounded"
 msgstr ""
 
-#: src/percentiles.c:41
+#: src/percentiles.c:45
 msgid "Empirical"
 msgstr ""
 
 msgid "Empirical"
 msgstr ""
 
-#: src/percentiles.c:42
+#: src/percentiles.c:46
 msgid "Empirical with averaging"
 msgstr ""
 
 msgid "Empirical with averaging"
 msgstr ""
 
-#: src/permissions.c:76
+#: src/permissions.c:77
 #, c-format
 msgid "Expecting %s or %s."
 msgstr ""
 
 #, c-format
 msgid "Expecting %s or %s."
 msgstr ""
 
-#: src/permissions.c:109
+#: src/permissions.c:110
 #, c-format
 msgid "Cannot stat %s: %s"
 msgstr ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 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 ""
 
 #, 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 ""
 
 msgid "Data record expected."
 msgstr ""
 
-#: src/pfm-read.c:296
+#: src/pfm-read.c:299
 msgid "Missing numeric terminator."
 msgstr ""
 
 msgid "Missing numeric terminator."
 msgstr ""
 
-#: src/pfm-read.c:319
+#: src/pfm-read.c:322
 msgid "Invalid integer."
 msgstr ""
 
 msgid "Invalid integer."
 msgstr ""
 
-#: src/pfm-read.c:330
+#: src/pfm-read.c:333
 #, c-format
 msgid "Bad string length %d."
 msgstr ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 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 ""
 
 #, 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 ""
 
 #, c-format
 msgid "Weight variable name (%s) truncated."
 msgstr ""
 
-#: src/pfm-read.c:513
+#: src/pfm-read.c:517
 msgid "Expected variable record."
 msgstr ""
 
 msgid "Expected variable record."
 msgstr ""
 
-#: src/pfm-read.c:517
+#: src/pfm-read.c:521
 #, c-format
 msgid "Invalid variable width %d."
 msgstr ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, c-format
 msgid "%s: Closing portable file: %s."
 msgstr ""
 
-#: src/plot-hist.c:126
+#: src/plot-hist.c:127
 msgid "HISTOGRAM"
 msgstr ""
 
 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 ""
 
 #, 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 "
 #, 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 ""
 
 "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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, c-format
 msgid "%s: PostScript encoding list file read successfully."
 msgstr ""
 
-#: src/postscript.c:1144
+#: src/postscript.c:1139
 msgid "<<default encoding>>"
 msgstr ""
 
 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 ""
 
 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 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 ""
 
 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 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 ""
 
 #, 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 ""
 
 #, 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 "
 #, c-format
 msgid ""
 "There is no string variable named %s.  (All string variables specified on "
@@ -2912,83 +3713,83 @@ msgid ""
 "variable.)"
 msgstr ""
 
 "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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 msgid "`(' expected."
 msgstr ""
 
-#: src/rename-vars.c:68
+#: src/rename-vars.c:71
 msgid "`=' expected between lists of new and old variable names."
 msgstr ""
 
 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 ""
 
 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 ""
 
 #, 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 ""
 
 #, 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 "
 #, 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 ""
 
 "s as well, but %d were specified."
 msgstr ""
 
-#: src/repeat.c:299
+#: src/repeat.c:302
 msgid "No commands in scope."
 msgstr ""
 
 msgid "No commands in scope."
 msgstr ""
 
-#: src/repeat.c:487
+#: src/repeat.c:490
 msgid "No matching DO REPEAT."
 msgstr ""
 
 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 ""
 
 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 ""
 
 #, 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 ""
 
 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 ""
 
 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 ""
 
 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
 #, c-format
-msgid "%s: Closing system file: %s."
+msgid "%s is obsolete."
 msgstr ""
 
 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 ""
 
 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 ""
 
 msgstr ""
 
-#: src/sfm-read.c:261
+#: src/set.q:248
 #, c-format
 #, c-format
-msgid ""
-"%s: Weighting variable may not be a continuation of a long string variable."
+msgid "EPOCH is %d"
 msgstr ""
 
 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 ""
 
 msgstr ""
 
-#: src/sfm-read.c:289
-#, c-format
+#: src/set.q:434
 msgid ""
 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 ""
 
 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 ""
 
 msgstr ""
 
-#: src/sfm-read.c:401
+#: src/set.q:453
 #, c-format
 #, 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 ""
 
 msgstr ""
 
-#: src/sfm-read.c:408
+#: src/set.q:475
 #, c-format
 #, 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 ""
 
 msgstr ""
 
-#: src/sfm-read.c:418
-#, c-format
-msgid "%s: Long variable mapping for nonexistent variable %s."
+#: src/set.q:528
+msgid "None"
 msgstr ""
 
 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 ""
 
 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 ""
 
 msgstr ""
 
-#: src/sfm-read.c:481
-#, c-format
-msgid "%s: Unrecognized record type %d."
+#: src/set.q:546
+msgid "Listing"
 msgstr ""
 
 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 ""
 
 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 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 ""
 
 msgid "little-endian"
 msgstr ""
 
-#: src/sfm-read.c:545
+#: src/sfm-read.c:548
 msgid "unknown"
 msgstr ""
 
 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 ""
 
 #, 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 ""
 
 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 ""
 
 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 ""
 
 #, 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 "
 #, 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 ""
 
 "%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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 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 ""
 
 #, 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 ""
 
 msgid "File:"
 msgstr ""
 
-#: src/sysfile-info.c:98
+#: src/sysfile-info.c:101
 msgid "Label:"
 msgstr ""
 
 msgid "Label:"
 msgstr ""
 
-#: src/sysfile-info.c:102
+#: src/sysfile-info.c:105
 msgid "No label."
 msgstr ""
 
 msgid "No label."
 msgstr ""
 
-#: src/sysfile-info.c:105
+#: src/sysfile-info.c:108
 msgid "Created:"
 msgstr ""
 
 msgid "Created:"
 msgstr ""
 
-#: src/sysfile-info.c:108
+#: src/sysfile-info.c:111
 msgid "Endian:"
 msgstr ""
 
 msgid "Endian:"
 msgstr ""
 
-#: src/sysfile-info.c:109
+#: src/sysfile-info.c:112
 msgid "Big."
 msgstr ""
 
 msgid "Big."
 msgstr ""
 
-#: src/sysfile-info.c:109
+#: src/sysfile-info.c:112
 msgid "Little."
 msgstr ""
 
 msgid "Little."
 msgstr ""
 
-#: src/sysfile-info.c:110
+#: src/sysfile-info.c:113
 msgid "Variables:"
 msgstr ""
 
 msgid "Variables:"
 msgstr ""
 
-#: src/sysfile-info.c:113
+#: src/sysfile-info.c:116
 msgid "Cases:"
 msgstr ""
 
 msgid "Cases:"
 msgstr ""
 
-#: src/sysfile-info.c:116
+#: src/sysfile-info.c:119
 msgid "Type:"
 msgstr ""
 
 msgid "Type:"
 msgstr ""
 
-#: src/sysfile-info.c:117
+#: src/sysfile-info.c:120
 msgid "System File."
 msgstr ""
 
 msgid "System File."
 msgstr ""
 
-#: src/sysfile-info.c:118
+#: src/sysfile-info.c:121
 msgid "Weight:"
 msgstr ""
 
 msgid "Weight:"
 msgstr ""
 
-#: src/sysfile-info.c:122
+#: src/sysfile-info.c:125
 msgid "Not weighted."
 msgstr ""
 
 msgid "Not weighted."
 msgstr ""
 
-#: src/sysfile-info.c:124
+#: src/sysfile-info.c:127
 msgid "Mode:"
 msgstr ""
 
 msgid "Mode:"
 msgstr ""
 
-#: src/sysfile-info.c:126
+#: src/sysfile-info.c:129
 #, c-format
 msgid "Compression %s."
 msgstr ""
 
 #, c-format
 msgid "Compression %s."
 msgstr ""
 
-#: src/sysfile-info.c:126
+#: src/sysfile-info.c:129
 msgid "on"
 msgstr ""
 
 msgid "on"
 msgstr ""
 
-#: src/sysfile-info.c:126
+#: src/sysfile-info.c:129
 msgid "off"
 msgstr ""
 
 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 ""
 
 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 ""
 
 msgid "Position"
 msgstr ""
 
-#: src/sysfile-info.c:195
+#: src/sysfile-info.c:198
 msgid "The active file does not have a file label."
 msgstr ""
 
 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 ""
 
 msgid "File label:"
 msgstr ""
 
-#: src/sysfile-info.c:260
+#: src/sysfile-info.c:263
 msgid "No variables to display."
 msgstr ""
 
 msgid "No variables to display."
 msgstr ""
 
-#: src/sysfile-info.c:279
+#: src/sysfile-info.c:282
 msgid "Macros not supported."
 msgstr ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 msgid "Label"
 msgstr ""
 
-#: src/sysfile-info.c:448
+#: src/sysfile-info.c:451
 #, c-format
 msgid "Format: %s"
 msgstr ""
 
 #, c-format
 msgid "Format: %s"
 msgstr ""
 
-#: src/sysfile-info.c:455
+#: src/sysfile-info.c:458
 #, c-format
 msgid "Print Format: %s"
 msgstr ""
 
 #, c-format
 msgid "Print Format: %s"
 msgstr ""
 
-#: src/sysfile-info.c:458
+#: src/sysfile-info.c:461
 #, c-format
 msgid "Write Format: %s"
 msgstr ""
 
 #, c-format
 msgid "Write Format: %s"
 msgstr ""
 
-#: src/sysfile-info.c:466
+#: src/sysfile-info.c:469
 msgid "Missing Values: "
 msgstr ""
 
 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 ""
 
 msgid "No vectors defined."
 msgstr ""
 
-#: src/sysfile-info.c:605
+#: src/sysfile-info.c:608
 msgid "Vector"
 msgstr ""
 
 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 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 ""
 
 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 ""
 
 #, c-format
 msgid "%s before: %s\n"
 msgstr ""
 
-#: src/title.c:56
+#: src/title.c:59
 msgid "<none>"
 msgstr ""
 
 msgid "<none>"
 msgstr ""
 
-#: src/title.c:68
+#: src/title.c:71
 #, c-format
 msgid "%s: `.' expected after string."
 msgstr ""
 
 #, c-format
 msgid "%s: `.' expected after string."
 msgstr ""
 
-#: src/title.c:84
+#: src/title.c:87
 #, c-format
 msgid "%s after: %s\n"
 msgstr ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 msgid "Variable suffix too large."
 msgstr ""
 
-#: src/vars-prs.c:43
+#: src/vars-prs.c:46
 msgid "expecting variable name"
 msgstr ""
 
 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 ""
 
 #, c-format
 msgid "%s is not a variable name."
 msgstr ""
 
-#: src/vars-prs.c:111
+#: src/vars-prs.c:114
 msgid "ordinary"
 msgstr ""
 
 msgid "ordinary"
 msgstr ""
 
-#: src/vars-prs.c:113
+#: src/vars-prs.c:116
 msgid "system"
 msgstr ""
 
 msgid "system"
 msgstr ""
 
-#: src/vars-prs.c:115
+#: src/vars-prs.c:118
 msgid "scratch"
 msgstr ""
 
 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 "
 #, 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 ""
 
 "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 ""
 
 msgid "incorrect use of TO convention"
 msgstr ""
 
-#: src/vars-prs.c:422
+#: src/vars-prs.c:425
 msgid "Scratch variables not allowed here."
 msgstr ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 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 ""
 
 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 ""
 
 #, 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 ""
 
 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 ""
 
 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 ""
 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)
    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
 #else
 #define ATTRIBUTE(X)
 #endif
 #define MALLOC_LIKE
 #endif
 \f
 #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. */
 /* 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
 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  \
 ## 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=
 
 
 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          \
 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  \
 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    \
 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 \
 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 \
 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 
 
 
 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       \
        expressions/libexpressions.a            \
        ../lib/gsl-extras/libgsl-extras.a       \
+       ../gl/libgl.a                           \
        @LIBINTL@
 
 nodist_pspp_SOURCES = version.c
        @LIBINTL@
 
 nodist_pspp_SOURCES = version.c
index 8fe168ecf78175581c92de4d50f4c3ba6bb0b144..2c1495f0e25762bc57b80fbdc86ab27dd26361eb 100644 (file)
@@ -40,6 +40,9 @@
 #include "vfm.h"
 #include "vfmP.h"
 
 #include "vfm.h"
 #include "vfmP.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 /* Specifies how to make an aggregate variable. */
 struct agr_var
   {
 /* Specifies how to make an aggregate variable. */
 struct agr_var
   {
index 8d1e39a633e78a967a1315b6c799e72afd33bd22..015d3397c19f28bd511bfe51307ff25a366ebfc3 100644 (file)
 #include <stdlib.h>
 #include "error.h"
 #include "str.h"
 #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)
 {
 
 /* 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. */
 #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. */
 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 "value-labels.h"
 #include "var.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 #include "debug-print.h"
 
 /* Parses and executes APPLY DICTIONARY. */
 #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 "pool.h"
 #include "version.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 /* ASCII driver options: (defaults listed first)
 
    output-file="pspp.list"
 /* 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 "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.  */
 /* 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 <config.h>
 #include "calendar.h"
 #include <assert.h>
-#include "bool.h"
+#include <stdbool.h>
 #include "settings.h"
 #include "val.h"
 
 #include "settings.h"
 #include "val.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 /* 14 Oct 1582. */
 #define EPOCH (-577734)
 
 /* 14 Oct 1582. */
 #define EPOCH (-577734)
 
index af5fc049c2ef68605328c14c1e4efcb3613c47c1..cf99e0226e4bb1883050f7d3be2b7611763cd58b 100644 (file)
@@ -21,7 +21,7 @@
 #define HEADER_CASE
 
 #include <stddef.h>
 #define HEADER_CASE
 
 #include <stddef.h>
-#include "bool.h"
+#include <stdbool.h>
 #include "val.h"
 
 /* Opaque structure that represents a case.  Use accessor
 #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 "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 "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
 #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 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. */
 
 /* 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;
 }
 
   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
 /* 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>
 #define HEADER_CASEFILE
 
 #include <stddef.h>
-#include "bool.h"
+#include <stdbool.h>
 
 struct ccase;
 struct casefile;
 
 struct ccase;
 struct casefile;
index 6d45bd68c0aeeae04bae42d47352f4a4ad070e56..50214db2717daeac333e2707509c6ea7769bae56 100644 (file)
@@ -28,7 +28,7 @@
 #include "alloc.h"
 #include "error.h"
 #include "filename.h"
 #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 "main.h"
 #include "output.h"
 #include "settings.h"
 #include "copyleft.h"
 #include "glob.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);
 
 void welcome (void);
 static void usage (void);
 
@@ -138,7 +142,7 @@ parse_command_line (int argc, char **argv)
          config_path = optarg;
          break;
        case 'f':
          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':
           putchar('\n');
          break;
        case 'h':
index de77be80e8f95596e67c291309590691b84b2377..4203ac32d0ea7f478ed1dd65a51bae61ed58f13a 100644 (file)
@@ -28,7 +28,7 @@
 #include "dictionary.h"
 #include "error.h"
 #include "glob.h"
 #include "dictionary.h"
 #include "error.h"
 #include "glob.h"
-#include "getline.h"
+#include "getl.h"
 #include "lexer.h"
 #include "main.h"
 #include "settings.h"
 #include "lexer.h"
 #include "main.h"
 #include "settings.h"
 #if HAVE_SYS_WAIT_H
 #include <sys/wait.h>
 #endif
 #if HAVE_SYS_WAIT_H
 #include <sys/wait.h>
 #endif
+
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+#define N_(msgid) msgid
 \f
 /* Global variables. */
 
 \f
 /* Global variables. */
 
index 256b6a7e3eec3be34d1590c6b88974b661c1b1e4..6e6bd96ad18992c1b361b2d191825d6c0459ff7a 100644 (file)
@@ -31,6 +31,9 @@
 #include "str.h"
 #include "var.h"
 
 #include "str.h"
 #include "var.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 struct compute_trns;
 struct lvalue;
 
 struct compute_trns;
 struct lvalue;
 
index e3220d79485a5d94ea9c39f8c24374897c46fcd0..bab59f90c7c7db3d0f432bcf61948ad860368a43 100644 (file)
@@ -29,6 +29,9 @@
 #include "str.h"
 #include "var.h"
 
 #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
 /* 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 "var.h"
 #include "vfm.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+#define N_(msgid) msgid
+
 /* (headers) */
 
 #include "debug-print.h"
 /* (headers) */
 
 #include "debug-print.h"
index ec03274b45bed23c4e247d03fe8634bb85fc260e..879ad10bd4fc3442a0be3935eb7ba5b0c70875a4 100644 (file)
@@ -26,9 +26,9 @@
 #include <stddef.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <stddef.h>
 #include <stdio.h>
 #include <stdlib.h>
-#include "bool.h"
+#include <stdbool.h>
 #include "error.h"
 #include "error.h"
-#include "getline.h"
+#include "getl.h"
 #include "calendar.h"
 #include "lexer.h"
 #include "magic.h"
 #include "calendar.h"
 #include "lexer.h"
 #include "magic.h"
 #include "settings.h"
 #include "str.h"
 #include "var.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. */
 
 \f
 /* Specialized error routine. */
 
index 382b412909a0ca93000e92c8653d252d22a15991..9499f78cb0b669994dd0aba78744d9e57f60a33e 100644 (file)
@@ -21,7 +21,7 @@
 #define data_in_h 1
 
 #include <stddef.h>
 #define data_in_h 1
 
 #include <stddef.h>
-#include "bool.h"
+#include <stdbool.h>
 #include "format.h"
 
 /* Flags. */
 #include "format.h"
 
 /* Flags. */
index bab5d215e9fe8ea0ed7f2c5560dd254350b277cd..2b088860bf71f7493995bb160852db1556828ef4 100644 (file)
@@ -41,6 +41,9 @@
 #include "tab.h"
 #include "var.h"
 #include "vfm.h"
 #include "tab.h"
 #include "var.h"
 #include "vfm.h"
+
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
 \f
 /* Utility function. */
 
 \f
 /* Utility function. */
 
index ae322bce59953ddc9ebbf69a6a1be4f813e8e8ce..2600ccb8037dfac35af8494b60b6c5b23a6eaa9f 100644 (file)
@@ -34,6 +34,9 @@
 #include "str.h"
 #include "var.h"
 
 #include "str.h"
 #include "var.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 #include "debug-print.h"
 \f
 /* Public functions. */
 #include "debug-print.h"
 \f
 /* Public functions. */
index 0339a0dd82ee95c6e9455c252d658a71d40b8d0a..f21856a76857161d875675691c96ce738abf90b1 100644 (file)
@@ -22,6 +22,9 @@
 #include "error.h"
 #include "lexer.h"
 
 #include "error.h"
 #include "lexer.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 /* Stub for USE command. */
 int
 cmd_use (void) 
 /* Stub for USE command. */
 int
 cmd_use (void) 
index ba33b263ea51e609116b13548d1bf0c3e0674257..fedba7f6938586ee098ee4c758a3e24111c271d8 100644 (file)
 #include "var.h"
 #include "vfm.h"
 
 #include "var.h"
 #include "vfm.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+#define N_(msgid) msgid
+
 /* DESCRIPTIVES private data. */
 
 struct dsc_proc;
 /* DESCRIPTIVES private data. */
 
 struct dsc_proc;
index 83576e9dcee9c640402958ef2287630c2e98f7a7..39f0550e5aba217565f5b0daeeb80b2a7e6ab32b 100644 (file)
 #include "alloc.h"
 #include "error.h"
 #include "filename.h"
 #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 "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
   {
 /* 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 "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 "lexer.h"
 #include "str.h"
 #include "vfm.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 #include "debug-print.h"
 
 /* Flags for DFM readers. */
 #include "debug-print.h"
 
 /* Flags for DFM readers. */
index e971ea1110734c98554d8144830bc562601edc0e..2bf3f15674bfafd291aef0473a11d8af32681f2d 100644 (file)
@@ -28,6 +28,9 @@
 #include "filename.h"
 #include "str.h"
 
 #include "filename.h"
 #include "str.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 /* Data file writer. */
 struct dfm_writer
   {
 /* Data file writer. */
 struct dfm_writer
   {
index 6fbd5dfa575783efe2447225682fc6cbe1c055c6..9ea9f31a2a644063d07ebf895f584607b1482745 100644 (file)
@@ -32,6 +32,9 @@
 #include "value-labels.h"
 #include "var.h"
 
 #include "value-labels.h"
 #include "var.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 /* A dictionary. */
 struct dictionary
   {
 /* A dictionary. */
 struct dictionary
   {
index fa12f6852ae7833fafab4a725f2bebd45abf22ee..1acf84936c0b8b96c1bb16501a7b8dc882b2fa0a 100644 (file)
@@ -29,6 +29,9 @@
 #include "str.h"
 #include "var.h"
 
 #include "str.h"
 #include "var.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 #include "debug-print.h"
 
 /* *INDENT-OFF* */
 #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 <stdlib.h>
 #include "alloc.h"
 #include "command.h"
-#include "getline.h"
+#include "getl.h"
 #include "glob.h"
 #include "lexer.h"
 #include "main.h"
 #include "glob.h"
 #include "lexer.h"
 #include "main.h"
 #include "var.h"
 #include "version.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;
 
 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 "moments.h"
 #include "percentiles.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+#define N_(msgid) msgid
+
 /* (headers) */
 #include "chart.h"
 
 /* (headers) */
 #include "chart.h"
 
index d5ee125ef769a76cf87f6ddf98e76d17bbb93ace..4331d030ff65285761e1a5cf1f50287eedd156ea 100644 (file)
 #include <config.h>
 #include "private.h"
 
 #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"
 #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 <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"
 #include "case.h"
 #include "data-in.h"
 #include "dictionary.h"
@@ -23,6 +23,9 @@
 #include "var.h"
 #include "vfm.h"
 
 #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;
 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";
 
 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";
 
     print "typedef enum";
     print "  {\n";
index f1c5f19b14928b2d44c458827ce5cb1c3e5084f4..6ea731ef13311ec2217ddebc37fcf9502eb450b7 100644 (file)
 #include "filename.h"
 #include "command.h"
 #include "lexer.h"
 #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 "error.h"
 #include "magic.h"
 #include "var.h"
 #include "linked-list.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 /* (headers) */
 
 /* File handle. */
 /* (headers) */
 
 /* File handle. */
index b90ae1840dbc1b7a462086ea85fcdb4ee76c5326..5751fd40a280d81f14108d6154b30166e5438a30 100644 (file)
@@ -33,6 +33,9 @@
 #include "var.h"
 #include "vfm.h"
 
 #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
   {
 /* 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 <config.h>
 #include "error.h"
 #include "filename.h"
+#include <stdio.h>
 #include <stdlib.h>
 #include <ctype.h>
 #include <errno.h>
 #include <stdlib.h>
 #include <ctype.h>
 #include <errno.h>
 #include "settings.h"
 #include "str.h"
 #include "version.h"
 #include "settings.h"
 #include "str.h"
 #include "version.h"
+#include "xreadlink.h"
+
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
 
 #include "debug-print.h"
 
 
 #include "debug-print.h"
 
@@ -38,7 +43,8 @@
 #if HAVE_UNISTD_H
 #include <unistd.h>
 #endif
 #if HAVE_UNISTD_H
 #include <unistd.h>
 #endif
-#include "stat.h"
+#include <sys/stat.h>
+#include "stat-macros.h"
 #endif
 
 #ifdef __WIN32__
 #endif
 
 #ifdef __WIN32__
@@ -619,40 +625,13 @@ fn_exists_p (const char *name)
 #endif
 }
 
 #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)
 {
 char *
 fn_readlink (const char *filename)
 {
-  return NULL;
+  return xreadlink (filename, 32);
 }
 }
-#endif /* Not UNIX. */
 \f
 /* Environment variables. */
 
 \f
 /* Environment variables. */
 
index 37b461db375cab18d2a25a9e57b2b40b6c82812b..7b33d3dbbbb67ed207e87359a614af0e026f69b3 100644 (file)
@@ -42,6 +42,9 @@
 #include <sys/types.h>
 #endif
 
 #include <sys/types.h>
 #endif
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 /* List of variable names. */
 struct varname
   {
 /* List of variable names. */
 struct varname
   {
index 217aa523d24ee5f082d77f7355314a4911b13b30..a37f71e814082bc6fadc02df4ce778f724baf162 100644 (file)
@@ -28,6 +28,9 @@
 #include "str.h"
 #include "var.h"
 
 #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},
 #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. */
 
 
 /* Display format types. */
 
-#include "bool.h"
+#include <stdbool.h>
 
 /* See the definitions of these functions and variables when modifying
    this list:
 
 /* 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 "str.h"
 #include "var.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 #include "debug-print.h"
 
 enum
 #include "debug-print.h"
 
 enum
index 983f35daa08c8bd3172312101b4867e2070c1fab..c165c21d6926bf2dbe6468f8ce55ec69c23ba4b7 100644 (file)
 #include "vfm.h"
 #include "settings.h"
 #include "chart.h"
 #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"
 /* (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 "vfm.h"
 #include "vfmP.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 #include "debug-print.h"
 
 /* Rearranging and reducing a dictionary. */
 #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 <config.h>
 #include "glob.h"
 #include "error.h"
+#include "progname.h"
 #include <stdlib.h>
 #include <stdio.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>
 #include <time.h>
-#endif
-#endif
 
 #if HAVE_LIBHISTORY
 #if HAVE_READLINE_HISTORY_H
 
 #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 "error.h"
 #include "file-handle.h"
 #include "filename.h"
-#include "getline.h"
+#include "getl.h"
 #include "hash.h"
 #include "lexer.h"
 #include "magic.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 "version.h"
 #include "vfm.h"
 
+#include "gettext.h"
+
 /* var.h */
 struct dictionary *default_dict;
 struct expression *process_if_expr;
 /* 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)
 {
 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
   /* 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 "alloc.h"
 #include "error.h"
 #include "filename.h"
+#include "getline.h"
 #include "hash.h"
 #include "pool.h"
 #include "str.h"
 #include "version.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;
 int font_number_to_index (int);
 
 int space_index;
index 1293398daebf3dbd615e2e8928ffa97a95a4c46b..019ddb1a4ae87e02aed24ed115f53fb5c48a4e3e 100644 (file)
 #include <stdlib.h>
 #include "algorithm.h"
 #include "alloc.h"
 #include <stdlib.h>
 #include "algorithm.h"
 #include "alloc.h"
-#include "bool.h"
+#include <stdbool.h>
 #include "misc.h"
 #include "str.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
 /* 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 "alloc.h"
 #include "error.h"
 #include "filename.h"
+#include "getl.h"
 #include "getline.h"
 #include "getline.h"
+#include "getlogin_r.h"
 #include "output.h"
 #include "som.h"
 #include "tab.h"
 #include "version.h"
 #include "mkfile.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 *);
 /* 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},
     };
       {"source-file", 0},
       {0, 0},
     };
-#if HAVE_UNISTD_H
-  char host[128];
-#endif
+  char login[128], host[128];
   time_t curtime;
   struct tm *loctime;
 
   time_t curtime;
   struct tm *loctime;
 
@@ -277,14 +280,13 @@ postopen (struct file_ext *f)
       *cp = 0;
   }
 
       *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)
   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"));
     }
+#else
+  strcpy (host, _("nowhere"));
+#endif
   dict[3].value = host;
   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 : "";
 
   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 "alloc.h"
 #include "command.h"
 #include "error.h"
-#include "getline.h"
+#include "getl.h"
 #include "lexer.h"
 #include "str.h"
 
 #include "lexer.h"
 #include "str.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 int
 cmd_include (void)
 {
 int
 cmd_include (void)
 {
index ef9c3646440cc889c8d0fcd2fee0e93ee927bd28..0225f3f73780452292623cfcf195f738ecca04c9 100644 (file)
@@ -36,6 +36,9 @@
 #include "var.h"
 #include "vfm.h"
 
 #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. */
 #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 "alloc.h"
 #include "command.h"
 #include "error.h"
-#include "getline.h"
+#include "getl.h"
 #include "magic.h"
 #include "settings.h"
 #include "str.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
 */
 /*
 #define DUMP_TOKENS 1
 */
index 05ce4fe60c13c6c0da8b3ec2c9b8dc90c782ce44..af3aeb0ae0f7bf54b5c5b226dd37ad3775fbbe17 100644 (file)
@@ -22,7 +22,7 @@
 
 #include "var.h"
 #include <ctype.h>
 
 #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. */
 
 /* 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 "var.h"
 #include "vfm.h"
 #include "format.h"
+
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 /* (headers) */
 
 #include "debug-print.h"
 /* (headers) */
 
 #include "debug-print.h"
index b6df5c2d6263aac1e4d81532a582448f17b6fe60..06936778ef0f990751174373f5b7499a339c4eee 100644 (file)
@@ -32,6 +32,9 @@
 #include "str.h"
 #include "var.h"
 
 #include "str.h"
 #include "var.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 #include "debug-print.h"
 
 /* LOOP strategy:
 #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 "command.h"
 #include "dictionary.h"
 #include "error.h"
-#include "getline.h"
+#include "getl.h"
 #include "glob.h"
 #include "lexer.h"
 #include "output.h"
 #include "glob.h"
 #include "lexer.h"
 #include "output.h"
@@ -33,6 +33,9 @@
 #include "var.h"
 #include <signal.h>
 
 #include "var.h"
 #include <signal.h>
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 #include <stdlib.h>
 
 #include "debug-print.h"
 #include <stdlib.h>
 
 #include "debug-print.h"
index d3cde3e68a9896076afa9b1b9b3c8c1271c0553a..e90b2ac68e8ea818ca2f4d4c9384a9c1fc44f83b 100644 (file)
@@ -38,6 +38,9 @@
 #include "var.h"
 #include "vfm.h"
 
 #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,
 #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 "error.h"
 #include "magic.h"
 #include "var.h"
+
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 /* (headers) */
 
 #include "debug-print.h"
 /* (headers) */
 
 #include "debug-print.h"
index 68d642a09c2ed3f9c355a061d168d5c4cf0d46f4..27a5134307e9572aaface102bc3739da462e5351 100644 (file)
@@ -27,6 +27,9 @@
 #include "str.h"
 #include "var.h"
 
 #include "str.h"
 #include "var.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 #include "debug-print.h"
 
 /* Variables on MIS VAL. */
 #include "debug-print.h"
 
 /* Variables on MIS VAL. */
index 8b471f0f5f0d982e32ee704333d9455132a0fe9b..b8a8aa3bb6a71bc48c134b8bd59ad69a032aa175 100644 (file)
 #include <string.h>
 #include <errno.h>
 #include <stdio.h>
 #include <string.h>
 #include <errno.h>
 #include <stdio.h>
-
 #include "mkfile.h"
 #include "error.h"
 #include "alloc.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. */
 /* 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 "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(). */
 /* 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 "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
 \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 "str.h"
 #include "var.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 #include "debug-print.h"
 
 /* Parses the NUMERIC command. */
 #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 "group_proc.h"
 #include "group.h"
 #include "levene.h"
+
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 /* (headers) */
 
 /* (specification)
 /* (headers) */
 
 /* (specification)
index b9f465dbfcb78351f2adfb35b6ced889c7ae353d..59bccb8045324f707f792d3be6be4f2feabc1ec3 100644 (file)
@@ -34,6 +34,9 @@
 #include "settings.h"
 #include "str.h"
 
 #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? */
 /* 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 "percentiles.h"
 #include "misc.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+#define N_(msgid) msgid
+
 #include <assert.h>
 
 
 #include <assert.h>
 
 
index 1c3ee1fc1c2adf61328fe00f074cd85d39315f9d..140c79ef27fe10a8f722624efb0573ef211b5f0a 100644 (file)
 #include <sys/stat.h>
 #include <unistd.h>
 #include <errno.h>
 #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 "settings.h"
 #include "command.h"
 #include "error.h"
 #include "lexer.h"
 #include "misc.h"
+#include "stat-macros.h"
 #include "str.h"
 
 #include "str.h"
 
-
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
 
 enum PER {PER_RO, PER_RW};
 
 
 enum PER {PER_RO, PER_RW};
 
index 4d95eba22ae3a05b7ff716c3d7dfb96c9fcb2025..c7a604dbf0949f2e2052dbbdc409fa48ce1381fe 100644 (file)
 #include <math.h>
 #include <setjmp.h>
 #include "alloc.h"
 #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 "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"
 #include "hash.h"
 #include "magic.h"
 #include "misc.h"
@@ -44,6 +44,9 @@
 #include "value-labels.h"
 #include "var.h"
 
 #include "value-labels.h"
 #include "var.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 #include "debug-print.h"
 
 /* Portable file reader. */
 #include "debug-print.h"
 
 /* Portable file reader. */
index 7c9b5e8871522ec99a0b547f869b4e9132dad0cb..5346f1539149db09a32b2aec385c34aab9d1a4d9 100644 (file)
@@ -22,7 +22,7 @@
 
 /* Portable file reading. */
 
 
 /* Portable file reading. */
 
-#include "bool.h"
+#include <stdbool.h>
 
 /* Portable file types. */
 enum pfm_type
 
 /* Portable file types. */
 enum pfm_type
index b900c2292f81f19801e4fe8da794aeff581bb020..30615418fd0728ccc642956c36a4da352ef1a0da 100644 (file)
@@ -40,6 +40,9 @@
 #include "var.h"
 #include "version.h"
 
 #include "var.h"
 #include "version.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 #include "debug-print.h"
 
 /* Portable file writer. */
 #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 <gsl/gsl_histogram.h>
 #include <gsl/gsl_randist.h>
 #include <assert.h>
-
 #include "hash.h"
 #include "hash.h"
-
 #include "var.h"
 #include "chart.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)
 /* 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 <errno.h>
 #include <limits.h>
 #include <stdlib.h>
+#include <time.h>
 
 #if HAVE_UNISTD_H
 #include <unistd.h>
 #endif
 
 
 #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 "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"
 #include "getline.h"
 #include "hash.h"
 #include "main.h"
@@ -57,6 +48,9 @@
 #include "som.h"
 #include "version.h"
 
 #include "som.h"
 #include "version.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 /* FIXMEs:
 
    optimize-text-size not implemented.
 /* FIXMEs:
 
    optimize-text-size not implemented.
index 9e2bd74705b9814406e5e0919fdd6840e7d485cb..ccbb8c8c2d69ef9579e48334fbcaaa8c456c935f 100644 (file)
@@ -35,6 +35,9 @@
 #include "tab.h"
 #include "var.h"
 
 #include "tab.h"
 #include "var.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 /* Describes what to do when an output field is encountered. */
 enum
   {
 /* 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, "#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"))
          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 "sort-prs.h"
 #include "var.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 /* (headers) */
 
 /* (specification)
 /* (headers) */
 
 /* (specification)
index 90792afa4197d5a204423b312847e3c2d4d51127..b25ac4567ea621609825abf39f1752ccd7adc6a3 100644 (file)
@@ -31,6 +31,9 @@
 #include "magic.h"
 #include "str.h"
 #include "var.h"
 #include "magic.h"
 #include "str.h"
 #include "var.h"
+
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
 \f
 /* Definitions. */
 
 \f
 /* Definitions. */
 
index eeb0b89dfce277e8fdc20ea9d5471b20f4f0efe8..57af1c01023fafee8e49d06323d8e9f0ad2d43d5 100644 (file)
@@ -29,6 +29,9 @@
 #include "str.h"
 #include "var.h"
 
 #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
 /* 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 "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 "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. */
 #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 "str.h"
 #include "var.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 #include "debug-print.h"
 
 /* The two different types of samples. */
 #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 "str.h"
 #include "var.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 /* SELECT IF transformation. */
 struct select_if_trns
   {
 /* 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 */
 
 #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;
 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 "file-handle.h"
 #include "filename.h"
 #include "format.h"
-#include "getline.h"
+#include "getl.h"
 #include "hash.h"
 #include "magic.h"
 #include "misc.h"
 #include "hash.h"
 #include "magic.h"
 #include "misc.h"
@@ -41,6 +41,9 @@
 #include "str.h"
 #include "var.h"
 
 #include "str.h"
 #include "var.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 #include "debug-print.h"
 
 /* System file reader. */
 #include "debug-print.h"
 
 /* System file reader. */
@@ -93,7 +96,7 @@ bswap (unsigned char *a, unsigned char *b)
   *b = t;
 }
 
   *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_)
 {
 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 "dictionary.h"
 #include "error.h"
 #include "file-handle.h"
-#include "getline.h"
+#include "getl.h"
 #include "hash.h"
 #include "magic.h"
 #include "misc.h"
 #include "hash.h"
 #include "magic.h"
 #include "misc.h"
@@ -42,6 +42,9 @@
 #include "var.h"
 #include "version.h"
 
 #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 -
 #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.  */
 
    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
   {
 
 enum som_type
   {
index 2682588efe76042c07575c8200ba50a259e881e2..2114d09318e4ca2ba5bd49c1b6db7704449a1402 100644 (file)
@@ -21,7 +21,6 @@
 #include <sys/types.h>
 #include <assert.h>
 #include <stdlib.h>
 #include <sys/types.h>
 #include <assert.h>
 #include <stdlib.h>
-
 #include "alloc.h"
 #include "error.h"
 #include "lexer.h"
 #include "alloc.h"
 #include "error.h"
 #include "lexer.h"
@@ -29,7 +28,8 @@
 #include "sort.h"
 #include "var.h"
 
 #include "sort.h"
 #include "var.h"
 
-
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
 
 static bool  is_terminator(int tok, const int *terminators);
 
 
 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>
 #define SORT_PRS_H
 
 #include <config.h>
-#include "bool.h"
+#include <stdbool.h>
 
 struct variable;
 struct dictionary;
 
 struct variable;
 struct dictionary;
index bb4220b75943a231d6bdd5395d6615bf3acef70a..80380e7d0ca41581396e94079e06d682b4d61b15 100644 (file)
@@ -26,7 +26,7 @@
 #include <errno.h>
 #include "algorithm.h"
 #include "alloc.h"
 #include <errno.h>
 #include "algorithm.h"
 #include "alloc.h"
-#include "bool.h"
+#include <stdbool.h>
 #include "case.h"
 #include "casefile.h"
 #include "command.h"
 #include "case.h"
 #include "casefile.h"
 #include "command.h"
@@ -42,6 +42,9 @@
 #include "vfm.h"
 #include "vfmP.h"
 
 #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. */
 #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>
 #define sort_h 1
 
 #include <stddef.h>
-#include "bool.h"
+#include <stdbool.h>
 
 struct casereader;
 struct dictionary;
 
 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>
 
 #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
 #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. */
 #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. */
     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. */
 
 \f
 /* Miscellaneous. */
 
index 6c5d533def45623fa765fd44b1b7cab7b0ae7f89..08d5484f70e0d285fd4b8317f7ec2379ca09bd35 100644 (file)
@@ -37,6 +37,9 @@
 #include "value-labels.h"
 #include "var.h"
 
 #include "value-labels.h"
 #include "var.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 /* Constants for DISPLAY utility. */
 enum
   {
 /* Constants for DISPLAY utility. */
 enum
   {
index 38ea420e5c10335c00a4a44656cba3c8ce02a9a0..07bcdd07f0db51c351df8b88c3e15e7bf9aa4bce 100644 (file)
 #include "group_proc.h"
 #include "casefile.h"
 #include "levene.h"
 #include "group_proc.h"
 #include "casefile.h"
 #include "levene.h"
+
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 /* (headers) */
 
 /* (specification)
 /* (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 "som.h"
 #include "var.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 #include "debug-print.h"
 \f
 struct som_table_class tab_table_class;
 #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 "value-labels.h"
 #include "var.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 int temporary;
 struct dictionary *temp_dict;
 int temp_trns;
 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 "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);
 #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 "str.h"
 #include "value-labels.h"
 #include "var.h"
+
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
 \f
 /* Declarations. */
 
 \f
 /* Declarations. */
 
index cbcf984529fe9ce3626a92f653558998e8bfe007..65da79082bbeefea8e44e7291eb13ee601fcc0ce 100644 (file)
@@ -27,6 +27,9 @@
 #include "str.h"
 #include "var.h"
 
 #include "str.h"
 #include "var.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 #include "debug-print.h"
 
 int
 #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 <stddef.h>
 #include "config.h"
-#include "bool.h"
+#include <stdbool.h>
 #include "format.h"
 #include "val.h"
 
 #include "format.h"
 #include "val.h"
 
index 70669837590a3accc7e99c65581b13d9d39b90e6..a854033a0831e5ea8dbc2bffab22835724a798da 100644 (file)
@@ -34,6 +34,9 @@
 #include "value-labels.h"
 #include "vfm.h"
 
 #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
 #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 "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. */
 /* 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 "str.h"
 #include "var.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 int
 cmd_vector (void)
 {
 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 "var.h"
 #include "value-labels.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 /*
    Virtual File Manager (vfm):
 
 /*
    Virtual File Manager (vfm):
 
index 212c77d5f4c906afb9831c8d13c03f0dffd186f0..9128bc3e90038b2f44bb33e0df94528144ea5195 100644 (file)
@@ -27,6 +27,9 @@
 #include "str.h"
 #include "var.h"
 
 #include "str.h"
 #include "var.h"
 
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
 /* WEIGHT transformation. */
 struct weight_trns
   {
 /* 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