Merge commit 'origin/stable'
authorJohn Darrington <john@darrington.wattle.id.au>
Sat, 17 Jan 2009 02:47:25 +0000 (11:47 +0900)
committerJohn Darrington <john@darrington.wattle.id.au>
Sat, 17 Jan 2009 02:47:25 +0000 (11:47 +0900)
Conflicts:

src/language/utilities/include.c
src/ui/terminal/automake.mk
tests/command/insert.sh

1  2 
Smake
configure.ac
po/en_GB.po
src/language/command.def
src/language/stats/crosstabs.q
src/language/utilities/include.c
src/libpspp/automake.mk
src/ui/gui/automake.mk
src/ui/gui/psppire.c
src/ui/terminal/automake.mk
tests/command/insert.sh

diff --combined Smake
index 7905c430fe28401c4e5f454a0e4c3218d3a8f283,a466423753fca2ef07bf4a6950fc3beca8835adf..1dba188b271422372c213d48b3b4126e7988963f
--- 1/Smake
--- 2/Smake
+++ b/Smake
@@@ -5,11 -5,11 +5,12 @@@ GNULIB = ../gnuli
  GNULIB_TOOL = $(GNULIB)/gnulib-tool
  
  GNULIB_MODULES = \
 +      argp \
        assert \
        byteswap \
        c-ctype \
        c-strtod \
+       close \
        crypto/md4 \
        dirname \
        environ \
diff --combined configure.ac
index 7a67e6002438dfb8671b25d1553c86b6ace9fcf6,3284ec818d32a5ebbfadfd5d6b5e8d39f5d04e93..345ac46bd4569a418458cea29f00066277161388
@@@ -2,7 -2,7 +2,7 @@@ dnl Process this file with autoconf to 
  
  dnl Initialize.
  AC_PREREQ(2.60)
 -AC_INIT([pspp],[0.6.1],[bug-gnu-pspp@gnu.org])
 +AC_INIT([pspp],[0.7.0],[bug-gnu-pspp@gnu.org])
  AC_CONFIG_HEADERS([config.h])
  AM_INIT_AUTOMAKE
  
@@@ -15,7 -15,6 +15,7 @@@ AC_LIBTOOL_WIN32_DL
  AC_LIBTOOL_DLOPEN
  AC_PROG_LIBTOOL
  PKG_PROG_PKG_CONFIG
 +m4_pattern_forbid([PKG_CHECK_MODULES])
  
  AC_ARG_ENABLE(
    anachronistic-dependencies, 
@@@ -41,11 -40,18 +41,15 @@@ PSPP_LC_PAPE
  AM_CONDITIONAL(WITHCHARTS, test x"$with_libplot" != x"no")
  
  
+ AC_ARG_VAR([PSPP_LDFLAGS], [linker flags to be used for linking the pspp binary only])
+ AC_ARG_VAR([PSPPIRE_LDFLAGS], [linker flags to be used for linking the psppire binary only])
  AC_ARG_WITH(
    gui, 
    [AS_HELP_STRING([--without-gui], [don't build the PSPPIRE gui])])
  
  required_gtk_version=2.12
 -if test x"$enable_anachronistic_dependencies" = x"yes"  ; then
 -  required_gtk_version=2.8.20
 -fi
  
  if test x"$with_gui" != x"no" ; then 
    PKG_CHECK_MODULES(GTK, gtk+-2.0 >= $required_gtk_version,,
@@@ -119,7 -125,7 +123,7 @@@ AM_CONDITIONAL(GNM_SUPPORT, test x"$gnm
  
  AC_ARG_WITH(
    gui_tools,
 -  [AS_HELP_STRING([--with-gui-tools], [build the gui developer tools])])
 +  [AS_HELP_STRING([--with-gui-tools], [build the gui developer tools.  For DEVELOPERS only! There is no reason why users will need this flag.])])
  if test x"$with_gui_tools" = x"yes" ; then 
        PKG_CHECK_MODULES(GLADE_UI, gladeui-1.0)
  fi
diff --combined po/en_GB.po
index 29e13a536b8414c59560308f5efefd8ebb70d7b1,2c3bc865a77dfb02f95900927fc4bba92bdd3609..ab295d01410d7fddb95a68595852ffe3513f96d7
@@@ -1,13 -1,14 +1,13 @@@
  # British translations for PSPP
 -# Copyright (C) 2007 Free Software Foundation, Inc.
 +# Copyright (C) 2007, 2008 Free Software Foundation, Inc.
  # This file is distributed under the same licence as the PSPP package.
 -# John Darrington <john@darrington.wattle.id.au>, 2007.
  #
  msgid ""
  msgstr ""
 -"Project-Id-Version: PSPP 0.4.3\n"
 +"Project-Id-Version: PSPP 0.7.0\n"
  "Report-Msgid-Bugs-To: pspp-dev@gnu.org\n"
- "POT-Creation-Date: 2008-12-14 11:19+0900\n"
 -"POT-Creation-Date: 2008-08-23 08:35+0800\n"
 -"PO-Revision-Date: 2007-09-15 08:29+0800\n"
++"POT-Creation-Date: 2009-01-17 11:37+0900\n"
 +"PO-Revision-Date: 2008-11-05 08:17+0900\n"
  "Last-Translator: John Darrington <john@darrington.wattle.id.au>\n"
  "Language-Team: John Darrington <john@darrington.wattle.id.au>\n"
  "MIME-Version: 1.0\n"
@@@ -100,7 -101,7 +100,7 @@@ msgstr "
  
  #: src/data/data-in.c:338
  msgid "Unrecognized character in field."
 -msgstr ""
 +msgstr "Unrecognised character in field."
  
  #: src/data/data-in.c:362 src/data/data-in.c:636
  msgid "Field must have even length."
@@@ -128,8 -129,6 +128,8 @@@ msgid "
  "Unrecognized month format.  Months may be specified as Arabic or Roman "
  "numerals or as at least 3 letters of their English names."
  msgstr ""
 +"Unrecognised month format.  Months may be specified as Arabic or Roman \n"
 +"numerals or as at least 3 letters of their English names."
  
  #: src/data/data-in.c:850
  #, c-format
@@@ -174,8 -173,6 +174,8 @@@ msgid "
  "Unrecognized weekday name.  At least the first two letters of an English "
  "weekday name must be specified."
  msgstr ""
 +"Unrecognised weekday name.  At least the first two letters of an English "
 +"weekday name must be specified."
  
  #: src/data/data-in.c:1138
  #, c-format
@@@ -219,13 -216,13 +219,13 @@@ msgstr "
  msgid "scratch"
  msgstr ""
  
 -#: src/data/dictionary.c:882
 +#: src/data/dictionary.c:889
  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/data/dictionary.c:1180
 +#: src/data/dictionary.c:1187
  #, c-format
  msgid "Truncating document line to %d bytes."
  msgstr ""
@@@ -322,33 -319,33 +322,33 @@@ msgstr[1] "
  msgid "%s variables are not compatible with %s format %s."
  msgstr ""
  
 -#: src/data/format.c:327 src/data/sys-file-reader.c:639
 -#: src/ui/gui/data-editor.glade:1190 src/ui/gui/psppire.glade:2176
 -#: src/ui/gui/psppire-var-store.c:605
 +#: src/data/format.c:327 src/data/sys-file-reader.c:655
- #: src/ui/gui/data-editor.glade:1197 src/ui/gui/psppire.glade:2176
++#: src/ui/gui/data-editor.glade:1197 src/ui/gui/psppire.glade:2136
 +#: src/ui/gui/psppire-var-store.c:557
  msgid "String"
  msgstr ""
  
 -#: src/data/format.c:327 src/data/sys-file-reader.c:639
 -#: src/ui/gui/data-editor.glade:1079 src/ui/gui/psppire.glade:2131
 -#: src/ui/gui/psppire-var-store.c:598
 +#: src/data/format.c:327 src/data/sys-file-reader.c:655
- #: src/ui/gui/data-editor.glade:1086 src/ui/gui/psppire.glade:2131
++#: src/ui/gui/data-editor.glade:1086 src/ui/gui/psppire.glade:2211
 +#: src/ui/gui/psppire-var-store.c:550
  msgid "Numeric"
  msgstr ""
  
 -#: src/data/format.c:328 src/data/sys-file-reader.c:1145
 -#: src/data/sys-file-reader.c:1147
 +#: src/data/format.c:328 src/data/sys-file-reader.c:1160
 +#: src/data/sys-file-reader.c:1162
  #: src/language/dictionary/apply-dictionary.c:78
  #: src/language/dictionary/apply-dictionary.c:79
 -#: src/language/xforms/recode.c:472 src/language/xforms/recode.c:473
 -#: src/language/xforms/recode.c:485 src/language/xforms/recode.c:486
 +#: src/language/xforms/recode.c:489 src/language/xforms/recode.c:490
 +#: src/language/xforms/recode.c:502 src/language/xforms/recode.c:503
  msgid "numeric"
  msgstr ""
  
 -#: src/data/format.c:328 src/data/sys-file-reader.c:1145
 -#: src/data/sys-file-reader.c:1147
 +#: src/data/format.c:328 src/data/sys-file-reader.c:1160
 +#: src/data/sys-file-reader.c:1162
  #: src/language/dictionary/apply-dictionary.c:78
  #: src/language/dictionary/apply-dictionary.c:79
 -#: src/language/xforms/recode.c:472 src/language/xforms/recode.c:473
 -#: src/language/xforms/recode.c:485 src/language/xforms/recode.c:486
 +#: src/language/xforms/recode.c:489 src/language/xforms/recode.c:490
 +#: src/language/xforms/recode.c:502 src/language/xforms/recode.c:503
  msgid "string"
  msgstr ""
  
@@@ -362,22 -359,22 +362,22 @@@ msgid "
  "Support for Gnumeric files was not compiled into this installation of PSPP"
  msgstr ""
  
--#: src/data/gnumeric-reader.c:366
++#: src/data/gnumeric-reader.c:365
  #, c-format
  msgid "Error opening \"%s\" for reading as a gnumeric file: %s."
  msgstr ""
  
--#: src/data/gnumeric-reader.c:386
++#: src/data/gnumeric-reader.c:385
  #, c-format
  msgid "Invalid cell range \"%s\""
  msgstr ""
  
--#: src/data/gnumeric-reader.c:523 src/data/psql-reader.c:184
++#: src/data/gnumeric-reader.c:522 src/data/psql-reader.c:182
  #, c-format
  msgid "Cannot create variable name from %s"
  msgstr ""
  
--#: src/data/gnumeric-reader.c:535
++#: src/data/gnumeric-reader.c:534
  #, c-format
  msgid "Selected sheet or range of spreadsheet \"%s\" is empty."
  msgstr ""
@@@ -487,7 -484,7 +487,7 @@@ msgstr "
  #: src/data/por-file-reader.c:519
  #, c-format
  msgid "Unrecognized version code `%c'."
 -msgstr ""
 +msgstr "Unrecognised version code `%c'."
  
  #: src/data/por-file-reader.c:528
  #, c-format
@@@ -596,35 -593,35 +596,35 @@@ msgid "
  "installation of PSPP"
  msgstr ""
  
--#: src/data/psql-reader.c:239
++#: src/data/psql-reader.c:237
  msgid "Memory error whilst opening psql source"
  msgstr ""
  
--#: src/data/psql-reader.c:245
++#: src/data/psql-reader.c:243
  #, c-format
  msgid "Error opening psql source: %s."
  msgstr ""
  
--#: src/data/psql-reader.c:260
++#: src/data/psql-reader.c:258
  #, c-format
  msgid ""
  "Postgres server is version %s. Reading from versions earlier than 8.0 is not "
  "supported."
  msgstr ""
  
--#: src/data/psql-reader.c:280
++#: src/data/psql-reader.c:278
  msgid ""
  "Connection is unencrypted, but unencrypted connections have not been "
  "permitted."
  msgstr ""
  
--#: src/data/psql-reader.c:307 src/data/psql-reader.c:332
--#: src/data/psql-reader.c:342
++#: src/data/psql-reader.c:305 src/data/psql-reader.c:330
++#: src/data/psql-reader.c:340
  #, c-format
  msgid "Error from psql source: %s."
  msgstr ""
  
--#: src/data/psql-reader.c:437
++#: src/data/psql-reader.c:435
  #, c-format
  msgid "Unsupported OID %d.  SYSMIS values will be inserted."
  msgstr ""
@@@ -642,7 -639,7 +642,7 @@@ msgstr "
  msgid "scratch file"
  msgstr ""
  
 -#: src/data/settings.c:685
 +#: src/data/settings.c:687
  #, c-format
  msgid ""
  "%s: Custom currency string `%s' does not contain exactly three periods or "
@@@ -655,364 -652,352 +655,364 @@@ msgstr "
  
  #. TRANSLATORS: this fragment will be interpolated into
  #. messages in fh_lock() that identify types of files.
- #: src/data/sys-file-reader.c:214 src/data/sys-file-writer.c:196
 -#: src/data/sys-file-reader.c:198 src/data/sys-file-writer.c:190
++#: src/data/sys-file-reader.c:214 src/data/sys-file-writer.c:197
  msgid "system file"
  msgstr ""
  
 -#: src/data/sys-file-reader.c:205
 +#: src/data/sys-file-reader.c:221
  #, c-format
  msgid "Error opening \"%s\" for reading as a system file: %s."
  msgstr ""
  
 -#: src/data/sys-file-reader.c:244
 +#: src/data/sys-file-reader.c:260
  msgid "Misplaced type 4 record."
  msgstr ""
  
 -#: src/data/sys-file-reader.c:255
 +#: src/data/sys-file-reader.c:271
  #, c-format
  msgid "Unrecognized record type %d."
 -msgstr ""
 +msgstr "Unrecognised record type %d."
  
 -#: src/data/sys-file-reader.c:294
 +#: src/data/sys-file-reader.c:310
  #, c-format
  msgid "File header claims %d variable positions but %d were read from file."
  msgstr ""
  
 -#: src/data/sys-file-reader.c:334
 +#: src/data/sys-file-reader.c:350
  #, c-format
  msgid "Error closing system file \"%s\": %s."
  msgstr ""
  
 -#: src/data/sys-file-reader.c:399 src/data/sys-file-reader.c:409
 +#: src/data/sys-file-reader.c:415 src/data/sys-file-reader.c:425
  msgid "This is not an SPSS system file."
  msgstr ""
  
 -#: src/data/sys-file-reader.c:428
 +#: src/data/sys-file-reader.c:444
  msgid ""
  "Compression bias is not the usual value of 100, or system file uses "
  "unrecognized floating-point format."
  msgstr ""
 +"Compression bias is not the usual value of 100, or system file uses \n"
 +"unrecognised floating-point format."
  
 -#: src/data/sys-file-reader.c:496
 +#: src/data/sys-file-reader.c:512
  #, c-format
  msgid "Invalid variable name `%s'."
  msgstr ""
  
 -#: src/data/sys-file-reader.c:500
 +#: src/data/sys-file-reader.c:516
  #, c-format
  msgid "Bad variable width %d."
  msgstr ""
  
 -#: src/data/sys-file-reader.c:504
 +#: src/data/sys-file-reader.c:520
  #, c-format
  msgid "Duplicate variable name `%s' within system file."
  msgstr ""
  
 -#: src/data/sys-file-reader.c:512
 +#: src/data/sys-file-reader.c:528
  msgid "Variable label indicator field is not 0 or 1."
  msgstr ""
  
 -#: src/data/sys-file-reader.c:520
 +#: src/data/sys-file-reader.c:536
  #, c-format
  msgid "Variable %s has label of invalid length %zu."
  msgstr ""
  
 -#: src/data/sys-file-reader.c:539
 +#: src/data/sys-file-reader.c:555
  msgid "Numeric missing value indicator field is not -3, -2, 0, 1, 2, or 3."
  msgstr ""
  
 -#: src/data/sys-file-reader.c:554
 +#: src/data/sys-file-reader.c:570
  msgid "String missing value indicator field is not 0, 1, 2, or 3."
  msgstr ""
  
 -#: src/data/sys-file-reader.c:557
 +#: src/data/sys-file-reader.c:573
  #, c-format
  msgid ""
  "Ignoring missing values on long string variable %s, which PSPP does not yet "
  "support."
  msgstr ""
  
 -#: src/data/sys-file-reader.c:586
 +#: src/data/sys-file-reader.c:602
  msgid "Missing string continuation record."
  msgstr ""
  
 -#: src/data/sys-file-reader.c:620
 +#: src/data/sys-file-reader.c:636
  #, c-format
  msgid "Unknown variable format %<PRIu8>."
  msgstr ""
  
 -#: src/data/sys-file-reader.c:638
 +#: src/data/sys-file-reader.c:654
  #, c-format
  msgid "%s variable %s has invalid %s format %s."
  msgstr ""
  
 -#: src/data/sys-file-reader.c:641
 +#: src/data/sys-file-reader.c:657
  msgid "print"
  msgstr ""
  
 -#: src/data/sys-file-reader.c:641
 +#: src/data/sys-file-reader.c:657
  msgid "write"
  msgstr ""
  
 -#: src/data/sys-file-reader.c:645
 +#: src/data/sys-file-reader.c:661
  msgid "Suppressing further invalid format warnings."
  msgstr ""
  
 -#: src/data/sys-file-reader.c:663
 +#: src/data/sys-file-reader.c:679
  msgid "Weighting variable must be numeric."
  msgstr ""
  
 -#: src/data/sys-file-reader.c:677
 +#: src/data/sys-file-reader.c:693
  msgid "Multiple type 6 (document) records."
  msgstr ""
  
 -#: src/data/sys-file-reader.c:681
 +#: src/data/sys-file-reader.c:697
  #, c-format
  msgid "Number of document lines (%d) must be greater than 0."
  msgstr ""
  
 -#: src/data/sys-file-reader.c:689
 +#: src/data/sys-file-reader.c:705
  msgid "Document line contains null byte."
  msgstr ""
  
 -#: src/data/sys-file-reader.c:763
 +#: src/data/sys-file-reader.c:782
  msgid ""
  "Ignoring value labels for long string variables, which PSPP does not yet "
  "support."
  msgstr ""
  
 -#: src/data/sys-file-reader.c:768
 +#: src/data/sys-file-reader.c:787
  #, c-format
  msgid "Unrecognized record type 7, subtype %d."
 -msgstr ""
 +msgstr "Unrecognised record type 7, subtype %d."
  
 -#: src/data/sys-file-reader.c:793
 +#: src/data/sys-file-reader.c:812
  #, c-format
  msgid "Bad size (%zu) or count (%zu) field on record type 7, subtype 3."
  msgstr ""
  
 -#: src/data/sys-file-reader.c:813
 +#: src/data/sys-file-reader.c:832
  #, c-format
  msgid ""
  "Floating-point representation indicated by system file (%d) differs from "
  "expected (%d)."
  msgstr ""
  
 -#: src/data/sys-file-reader.c:826
 +#: src/data/sys-file-reader.c:845
  msgid "little-endian"
  msgstr ""
  
 -#: src/data/sys-file-reader.c:826
 +#: src/data/sys-file-reader.c:845
  msgid "big-endian"
  msgstr ""
  
 -#: src/data/sys-file-reader.c:827
 +#: src/data/sys-file-reader.c:846
  #, c-format
  msgid ""
  "Integer format indicated by system file (%s) differs from expected (%s)."
  msgstr ""
  
 -#: src/data/sys-file-reader.c:843
 +#: src/data/sys-file-reader.c:862
  #, c-format
  msgid "Bad size (%zu) or count (%zu) on extension 4."
  msgstr ""
  
 -#: src/data/sys-file-reader.c:847
 +#: src/data/sys-file-reader.c:866
  #, c-format
  msgid "File specifies unexpected value %g as SYSMIS."
  msgstr ""
  
 -#: src/data/sys-file-reader.c:849
 +#: src/data/sys-file-reader.c:868
  #, c-format
  msgid "File specifies unexpected value %g as HIGHEST."
  msgstr ""
  
 -#: src/data/sys-file-reader.c:851
 +#: src/data/sys-file-reader.c:870
  #, c-format
  msgid "File specifies unexpected value %g as LOWEST."
  msgstr ""
  
 -#: src/data/sys-file-reader.c:867
 +#: src/data/sys-file-reader.c:886
  #, c-format
  msgid "Bad size %zu on extension 11."
  msgstr ""
  
 -#: src/data/sys-file-reader.c:879
 +#: src/data/sys-file-reader.c:898
  #, c-format
  msgid "Extension 11 has bad count %zu (for %zu variables)."
  msgstr ""
  
 -#: src/data/sys-file-reader.c:900
 +#: src/data/sys-file-reader.c:919
  #, c-format
  msgid ""
  "Invalid variable display parameters for variable %zu (%s).  Default "
  "parameters substituted."
  msgstr ""
  
 -#: src/data/sys-file-reader.c:946
 +#: src/data/sys-file-reader.c:963
  #, c-format
  msgid "Long variable mapping from %s to invalid variable name `%s'."
  msgstr ""
  
 -#: src/data/sys-file-reader.c:956
 +#: src/data/sys-file-reader.c:973
  #, c-format
  msgid "Duplicate long variable name `%s' within system file."
  msgstr ""
  
 -#: src/data/sys-file-reader.c:1011
 +#: src/data/sys-file-reader.c:1026
  #, c-format
  msgid "%s listed as string of invalid length %s in very length string record."
  msgstr ""
  
 -#: src/data/sys-file-reader.c:1021
 +#: src/data/sys-file-reader.c:1036
  #, c-format
  msgid ""
  "%s listed in very long string record with width %s, which requires only one "
  "segment."
  msgstr ""
  
 -#: src/data/sys-file-reader.c:1027
 +#: src/data/sys-file-reader.c:1042
  #, c-format
  msgid "Very long string %s overflows dictionary."
  msgstr ""
  
 -#: src/data/sys-file-reader.c:1041
 +#: src/data/sys-file-reader.c:1056
  #, c-format
  msgid ""
  "Very long string with width %ld has segment %d of width %d (expected %d)"
  msgstr ""
  
 -#: src/data/sys-file-reader.c:1086
 +#: src/data/sys-file-reader.c:1101
  #, c-format
  msgid "Invalid number of labels: %d.  Ignoring labels."
  msgstr ""
  
 -#: src/data/sys-file-reader.c:1117
 +#: src/data/sys-file-reader.c:1132
  msgid ""
  "Variable index record (type 4) does not immediately follow value label "
  "record (type 3) as it should."
  msgstr ""
  
 -#: src/data/sys-file-reader.c:1124
 +#: src/data/sys-file-reader.c:1139
  #, c-format
  msgid ""
  "Number of variables associated with a value label (%d) is not between 1 and "
  "the number of variables (%zu)."
  msgstr ""
  
 -#: src/data/sys-file-reader.c:1134
 +#: src/data/sys-file-reader.c:1149
  #, c-format
  msgid "Value labels are not allowed on long string variables (%s)."
  msgstr ""
  
 -#: src/data/sys-file-reader.c:1141
 +#: src/data/sys-file-reader.c:1156
  #, c-format
  msgid ""
  "Variables associated with value label are not all of identical type.  "
  "Variable %s is %s, but variable %s is %s."
  msgstr ""
  
 -#: src/data/sys-file-reader.c:1174
 +#: src/data/sys-file-reader.c:1189
  #, c-format
  msgid "Duplicate value label for %g on %s."
  msgstr ""
  
 -#: src/data/sys-file-reader.c:1177
 +#: src/data/sys-file-reader.c:1192
  #, c-format
  msgid "Duplicate value label for \"%.*s\" on %s."
  msgstr ""
  
 -#: src/data/sys-file-reader.c:1255
 +#: src/data/sys-file-reader.c:1230
 +#, c-format
 +msgid "Error parsing attribute value %s[%d]"
 +msgstr ""
 +
 +#: src/data/sys-file-reader.c:1244
 +#, c-format
 +msgid "Attribute value %s[%d] is not quoted: %s"
 +msgstr ""
 +
 +#: src/data/sys-file-reader.c:1360
  msgid "File ends in partial case."
  msgstr ""
  
 -#: src/data/sys-file-reader.c:1263
 +#: src/data/sys-file-reader.c:1368
  #, c-format
  msgid "Error reading case from file %s."
  msgstr ""
  
 -#: src/data/sys-file-reader.c:1360 src/data/sys-file-reader.c:1396
 +#: src/data/sys-file-reader.c:1465 src/data/sys-file-reader.c:1501
  msgid "Compressed data is corrupt."
  msgstr ""
  
 -#: src/data/sys-file-reader.c:1483
 +#: src/data/sys-file-reader.c:1588
  #, c-format
  msgid "Variable index %d not in valid range 1...%d."
  msgstr ""
  
 -#: src/data/sys-file-reader.c:1488
 +#: src/data/sys-file-reader.c:1593
  #, c-format
  msgid "Variable index %d refers to long string continuation."
  msgstr ""
  
 -#: src/data/sys-file-reader.c:1574
 +#: src/data/sys-file-reader.c:1661
  #, c-format
 -msgid "Suppressed %d additional variable map warnings."
 +msgid "Suppressed %d additional related warnings."
  msgstr ""
  
 -#: src/data/sys-file-reader.c:1587
 +#: src/data/sys-file-reader.c:1702
  #, c-format
  msgid "Variable map refers to unknown variable %s."
  msgstr ""
  
 -#: src/data/sys-file-reader.c:1663
 +#: src/data/sys-file-reader.c:1810
  #, c-format
  msgid "System error: %s."
  msgstr ""
  
 -#: src/data/sys-file-reader.c:1665
 +#: src/data/sys-file-reader.c:1812
  msgid "Unexpected end of file."
  msgstr ""
  
- #: src/data/sys-file-writer.c:169
 -#: src/data/sys-file-writer.c:163
++#: src/data/sys-file-writer.c:170
  #, c-format
  msgid "Unknown system file version %d. Treating as version %d."
  msgstr ""
  
- #: src/data/sys-file-writer.c:208
 -#: src/data/sys-file-writer.c:202
++#: src/data/sys-file-writer.c:209
  #, c-format
  msgid "Error opening \"%s\" for writing as a system file: %s."
  msgstr ""
  
- #: src/data/sys-file-writer.c:813
 -#: src/data/sys-file-writer.c:737
++#: src/data/sys-file-writer.c:814
  #, c-format
  msgid "An I/O error occurred writing system file \"%s\"."
  msgstr ""
  
- #: src/data/variable.c:236
 -#: src/data/variable.c:209
++#: src/data/variable.c:240
  #, c-format
  msgid ""
  "Character `%c' (in %s) may not appear as the first character in a variable "
  "name."
  msgstr ""
  
- #: src/data/variable.c:248
 -#: src/data/variable.c:221
++#: src/data/variable.c:252
  #, c-format
  msgid "Character `%c' (in %s) may not appear in a variable name."
  msgstr ""
  
- #: src/data/variable.c:276
 -#: src/data/variable.c:249
++#: src/data/variable.c:280
  msgid "Variable name cannot be empty string."
  msgstr ""
  
- #: src/data/variable.c:282
 -#: src/data/variable.c:255
++#: src/data/variable.c:286
  #, c-format
  msgid "Variable name %s exceeds %d-character limit."
  msgstr ""
  
- #: src/data/variable.c:290
 -#: src/data/variable.c:263
++#: src/data/variable.c:294
  #, c-format
  msgid "`%s' may not be used as a variable name because it is a reserved word."
  msgstr ""
@@@ -1217,81 -1202,6 +1217,81 @@@ msgid "
  "commands."
  msgstr ""
  
- #: src/language/data-io/combine-files.c:738
 +#: src/language/data-io/combine-files.c:210
 +msgid "Cannot specify the active file since no active file has been defined."
 +msgstr ""
 +
 +#: src/language/data-io/combine-files.c:216
 +msgid ""
 +"This command may not be used after TEMPORARY when the active file is an "
 +"input source.  Temporary transformations will be made permanent."
 +msgstr ""
 +
 +#: src/language/data-io/combine-files.c:250
 +msgid "Multiple IN subcommands for a single FILE or TABLE."
 +msgstr ""
 +
 +#: src/language/data-io/combine-files.c:302
 +#, c-format
 +msgid "File %s lacks BY variable %s."
 +msgstr ""
 +
 +#: src/language/data-io/combine-files.c:305
 +#, c-format
 +msgid "Active file lacks BY variable %s."
 +msgstr ""
 +
 +#: src/language/data-io/combine-files.c:376
 +msgid "The BY subcommand is required."
 +msgstr ""
 +
 +#: src/language/data-io/combine-files.c:381
 +msgid "BY is required when TABLE is specified."
 +msgstr ""
 +
 +#: src/language/data-io/combine-files.c:386
 +msgid "BY is required when SORT is specified."
 +msgstr ""
 +
 +#: src/language/data-io/combine-files.c:525
 +#, c-format
 +msgid ""
 +"Variable %s in file %s has different type or width from the same variable in "
 +"earlier file."
 +msgstr ""
 +
 +#: src/language/data-io/combine-files.c:531
 +#, c-format
 +msgid "In file %s, %s is numeric."
 +msgstr ""
 +
 +#: src/language/data-io/combine-files.c:534
 +#, c-format
 +msgid "In file %s, %s is a string variable with width %d."
 +msgstr ""
 +
 +#: src/language/data-io/combine-files.c:539
 +#, c-format
 +msgid "In an earlier file, %s was numeric."
 +msgstr ""
 +
 +#: src/language/data-io/combine-files.c:542
 +#, c-format
 +msgid "In an earlier file, %s was a string variable with width %d."
 +msgstr ""
 +
 +#: src/language/data-io/combine-files.c:581
 +#, c-format
 +msgid ""
 +"Variable name %s specified on %s subcommand duplicates an existing variable "
 +"name."
 +msgstr ""
 +
++#: src/language/data-io/combine-files.c:737
 +#, c-format
 +msgid "Encountered %zu sets of duplicate cases in the master file."
 +msgstr ""
 +
  #: src/language/data-io/data-list.c:128
  msgid "The END subcommand may only be used within INPUT PROGRAM."
  msgstr ""
@@@ -1312,86 -1222,85 +1312,86 @@@ msgstr "
  msgid "At least one variable must be specified."
  msgstr ""
  
 -#: src/language/data-io/data-list.c:348 src/language/data-io/data-list.c:437
 +#: src/language/data-io/data-list.c:349 src/language/data-io/data-list.c:438
  #: src/language/data-io/get-data.c:528
  #, c-format
  msgid "%s is a duplicate variable name."
  msgstr ""
  
 -#: src/language/data-io/data-list.c:355
 +#: src/language/data-io/data-list.c:356
  #, c-format
  msgid "There is already a variable %s of a different type."
  msgstr ""
  
 -#: src/language/data-io/data-list.c:362
 +#: src/language/data-io/data-list.c:363
  #, c-format
  msgid "There is already a string variable %s of a different width."
  msgstr ""
  
 -#: src/language/data-io/data-list.c:370
 +#: src/language/data-io/data-list.c:371
  #, c-format
  msgid "Cannot place variable %s on record %d when RECORDS=%d is specified."
  msgstr ""
  
--#: src/language/data-io/data-parser.c:455
--#: src/language/data-io/data-parser.c:464
++#: src/language/data-io/data-parser.c:458
++#: src/language/data-io/data-parser.c:467
  msgid "Quoted string extends beyond end of line."
  msgstr ""
  
--#: src/language/data-io/data-parser.c:519
++#: src/language/data-io/data-parser.c:522
  #, c-format
  msgid "Partial case of %d of %d records discarded."
  msgstr ""
  
--#: src/language/data-io/data-parser.c:565
++#: src/language/data-io/data-parser.c:568
  #, c-format
  msgid "Partial case discarded.  The first variable missing was %s."
  msgstr ""
  
--#: src/language/data-io/data-parser.c:602
++#: src/language/data-io/data-parser.c:605
  #, 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/language/data-io/data-parser.c:621
++#: src/language/data-io/data-parser.c:624
  msgid "Record ends in data not part of any field."
  msgstr ""
  
--#: src/language/data-io/data-parser.c:641
--#: src/language/data-io/data-parser.c:682 src/language/data-io/print.c:403
++#: src/language/data-io/data-parser.c:644
++#: src/language/data-io/data-parser.c:685 src/language/data-io/print.c:403
  #: src/language/dictionary/split-file.c:84
 -#: src/language/dictionary/sys-file-info.c:161
 -#: src/language/dictionary/sys-file-info.c:390
 -#: src/language/dictionary/sys-file-info.c:634
 -#: src/language/stats/descriptives.c:883 src/ui/gui/dict-display.c:245
 +#: src/language/dictionary/sys-file-info.c:162
 +#: src/language/dictionary/sys-file-info.c:386
 +#: src/language/dictionary/sys-file-info.c:709
- #: src/language/stats/descriptives.c:883 src/ui/gui/dict-display.c:245
++#: src/language/stats/descriptives.c:885 src/ui/gui/dict-display.c:245
  msgid "Variable"
  msgstr ""
  
--#: src/language/data-io/data-parser.c:642 src/language/data-io/print.c:404
++#: src/language/data-io/data-parser.c:645 src/language/data-io/print.c:404
  msgid "Record"
  msgstr ""
  
--#: src/language/data-io/data-parser.c:643 src/language/data-io/print.c:405
 -#: src/ui/gui/crosstabs.glade:92 src/ui/gui/psppire-var-sheet.c:107
++#: src/language/data-io/data-parser.c:646 src/language/data-io/print.c:405
 +#: src/ui/gui/crosstabs.glade:92 src/ui/gui/psppire-var-sheet.c:517
 +#: src/ui/gui/psppire-var-store.c:770
  msgid "Columns"
  msgstr ""
  
--#: src/language/data-io/data-parser.c:644
--#: src/language/data-io/data-parser.c:683 src/language/data-io/print.c:406
++#: src/language/data-io/data-parser.c:647
++#: src/language/data-io/data-parser.c:686 src/language/data-io/print.c:406
  msgid "Format"
  msgstr ""
  
--#: src/language/data-io/data-parser.c:663
++#: src/language/data-io/data-parser.c:666
  #, c-format
  msgid "Reading %d record from %s."
  msgid_plural "Reading %d records from %s."
  msgstr[0] ""
  msgstr[1] ""
  
--#: src/language/data-io/data-parser.c:699
++#: src/language/data-io/data-parser.c:702
  #, c-format
  msgid "Reading free-form data from %s."
  msgstr ""
@@@ -1408,57 -1317,57 +1408,57 @@@ msgstr "
  msgid "Could not open \"%s\" for reading as a data file: %s."
  msgstr ""
  
 -#: src/language/data-io/data-reader.c:190
 +#: src/language/data-io/data-reader.c:191
  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/language/data-io/data-reader.c:215
 +#: src/language/data-io/data-reader.c:216
  #, c-format
  msgid "Error reading file %s: %s."
  msgstr ""
  
 -#: src/language/data-io/data-reader.c:218
 +#: src/language/data-io/data-reader.c:219
  #, c-format
  msgid "Unexpected end of file reading %s."
  msgstr ""
  
 -#: src/language/data-io/data-reader.c:227
 +#: src/language/data-io/data-reader.c:228
  #, c-format
  msgid "Unexpected end of file in partial record reading %s."
  msgstr ""
  
 -#: src/language/data-io/data-reader.c:287
 +#: src/language/data-io/data-reader.c:288
  #, c-format
  msgid "Corrupt block descriptor word at offset 0x%lx in %s."
  msgstr ""
  
 -#: src/language/data-io/data-reader.c:288
 +#: src/language/data-io/data-reader.c:289
  #, c-format
  msgid "Corrupt record descriptor word at offset 0x%lx in %s."
  msgstr ""
  
 -#: src/language/data-io/data-reader.c:301
 +#: src/language/data-io/data-reader.c:302
  #, c-format
  msgid "Corrupt record size at offset 0x%lx in %s."
  msgstr ""
  
 -#: src/language/data-io/data-reader.c:443
 +#: src/language/data-io/data-reader.c:444
  msgid "Record exceeds remaining block length."
  msgstr ""
  
 -#: src/language/data-io/data-reader.c:517
 +#: src/language/data-io/data-reader.c:518
  #, c-format
  msgid "Attempt to read beyond end-of-file on file %s."
  msgstr ""
  
 -#: src/language/data-io/data-reader.c:520
 +#: src/language/data-io/data-reader.c:521
  msgid "Attempt to read beyond END DATA."
  msgstr ""
  
 -#: src/language/data-io/data-reader.c:706
 +#: src/language/data-io/data-reader.c:707
  msgid ""
  "This command is not valid here since the current input program does not "
  "access the inline file."
@@@ -1518,6 -1427,91 +1518,6 @@@ msgstr "
  msgid "expecting COMM or TAPE"
  msgstr ""
  
 -#: src/language/data-io/get.c:272 src/language/data-io/get.c:286
 -#: src/language/data-io/get.c:311
 -#, c-format
 -msgid "expecting %s or %s"
 -msgstr ""
 -
 -#: src/language/data-io/get.c:506 src/language/data-io/print.c:178
 -msgid "expecting a valid subcommand"
 -msgstr ""
 -
 -#: src/language/data-io/get.c:539
 -#, 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/language/data-io/get.c:565
 -msgid "`=' expected after variable list."
 -msgstr ""
 -
 -#: src/language/data-io/get.c:572
 -#, c-format
 -msgid ""
 -"Number of variables on left side of `=' (%zu) does not match number of "
 -"variables on right side (%zu), in parenthesized group %d of RENAME "
 -"subcommand."
 -msgstr ""
 -
 -#: src/language/data-io/get.c:585
 -#, c-format
 -msgid "Requested renaming duplicates variable name %s."
 -msgstr ""
 -
 -#: src/language/data-io/get.c:615
 -msgid "Cannot DROP all variables from dictionary."
 -msgstr ""
 -
 -#: src/language/data-io/get.c:788
 -msgid "Cannot specify the active file since no active file has been defined."
 -msgstr ""
 -
 -#: src/language/data-io/get.c:795
 -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/language/data-io/get.c:829
 -msgid "Multiple IN subcommands for a single FILE or TABLE."
 -msgstr ""
 -
 -#: src/language/data-io/get.c:873
 -#, c-format
 -msgid "File %s lacks BY variable %s."
 -msgstr ""
 -
 -#: src/language/data-io/get.c:876
 -#, c-format
 -msgid "Active file lacks BY variable %s."
 -msgstr ""
 -
 -#: src/language/data-io/get.c:946
 -msgid "BY is required when TABLE is specified."
 -msgstr ""
 -
 -#: src/language/data-io/get.c:951
 -msgid "BY is required when IN is specified."
 -msgstr ""
 -
 -#: src/language/data-io/get.c:1056
 -#, c-format
 -msgid ""
 -"Variable name %s specified on %s subcommand duplicates an existing variable "
 -"name."
 -msgstr ""
 -
 -#: src/language/data-io/get.c:1303
 -#, c-format
 -msgid ""
 -"Variable %s in file %s (%s) has different type or width from the same "
 -"variable in earlier file (%s)."
 -msgstr ""
 -
  #: src/language/data-io/get-data.c:62
  #, c-format
  msgid "Unsupported TYPE %s"
@@@ -1587,11 -1581,11 +1587,11 @@@ msgstr "
  msgid "Input program did not create any variables."
  msgstr ""
  
--#: src/language/data-io/inpt-pgm.c:287
++#: src/language/data-io/inpt-pgm.c:286
  msgid "COLUMN subcommand multiply specified."
  msgstr ""
  
--#: src/language/data-io/inpt-pgm.c:337
++#: src/language/data-io/inpt-pgm.c:336
  msgid ""
  "REREAD: Column numbers must be positive finite numbers.  Column set to 1."
  msgstr ""
@@@ -1628,7 -1622,7 +1628,7 @@@ msgstr "
  msgid "`/FORMAT WEIGHT' specified, but weighting is not on."
  msgstr ""
  
--#: src/language/data-io/list.q:467
++#: src/language/data-io/list.q:468
  msgid "Line"
  msgstr ""
  
@@@ -1668,10 -1662,6 +1668,10 @@@ msgstr "
  msgid "The ending column for a field must be greater than the starting column."
  msgstr ""
  
 +#: src/language/data-io/print.c:178 src/language/data-io/trim.c:54
 +msgid "expecting a valid subcommand"
 +msgstr ""
 +
  #: src/language/data-io/print.c:266
  #, c-format
  msgid "Output calls for %d records but %zu specified on RECORDS subcommand."
@@@ -1691,7 -1681,7 +1691,7 @@@ msgid_plural "Writing %d records.
  msgstr[0] ""
  msgstr[1] ""
  
 -#: src/language/data-io/print-space.c:73 src/language/lexer/lexer.c:476
 +#: src/language/data-io/print-space.c:73 src/language/lexer/lexer.c:477
  #: src/language/stats/autorecode.c:154 src/language/xforms/select-if.c:60
  msgid "expecting end of command"
  msgstr ""
@@@ -1705,44 -1695,6 +1705,44 @@@ msgstr "
  msgid "The expression on PRINT SPACE evaluated to %g."
  msgstr ""
  
 +#: src/language/data-io/save.c:223 src/language/data-io/save.c:238
 +#: src/language/data-io/save.c:266
 +#, c-format
 +msgid "expecting %s or %s"
 +msgstr ""
 +
 +#: src/language/data-io/trim.c:88
 +#, 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/language/data-io/trim.c:114
 +msgid "`=' expected after variable list."
 +msgstr ""
 +
 +#: src/language/data-io/trim.c:121
 +#, c-format
 +msgid ""
 +"Number of variables on left side of `=' (%zu) does not match number of "
 +"variables on right side (%zu), in parenthesized group %d of RENAME "
 +"subcommand."
 +msgstr ""
 +"Number of variables on left side of `=' (%zu) does not match number of \n"
 +"variables on right side (%zu), in parenthesised group %d of RENAME \n"
 +"subcommand."
 +
 +#: src/language/data-io/trim.c:134
 +#, c-format
 +msgid "Requested renaming duplicates variable name %s."
 +msgstr ""
 +
 +#: src/language/data-io/trim.c:165
 +msgid "Cannot DROP all variables from dictionary."
 +msgstr ""
 +
  #: src/language/dictionary/apply-dictionary.c:75
  #, c-format
  msgid "Variable %s is %s in target file, but %s in source file."
@@@ -1759,18 -1711,10 +1759,18 @@@ msgid "
  "Cannot apply missing values from source file to long string variable %s."
  msgstr ""
  
 -#: src/language/dictionary/apply-dictionary.c:126
 +#: src/language/dictionary/apply-dictionary.c:129
  msgid "No matching variables found between the source and target files."
  msgstr ""
  
 +#: src/language/dictionary/attributes.c:108
 +msgid "Attribute array index must be between 1 and 65535."
 +msgstr ""
 +
 +#: src/language/dictionary/attributes.c:189
 +msgid "expecting ATTRIBUTE= or DELETE="
 +msgstr ""
 +
  #: src/language/dictionary/delete-variables.c:40
  msgid ""
  "DELETE VARIABLES may not be used after TEMPORARY.  Temporary transformations "
@@@ -1792,7 -1736,7 +1792,7 @@@ msgid "`)' expected after output format
  msgstr ""
  
  #: src/language/dictionary/missing-values.c:56
- #: src/language/stats/aggregate.c:459
 -#: src/language/stats/aggregate.c:451
++#: src/language/stats/aggregate.c:458
  msgid "expecting `('"
  msgstr ""
  
@@@ -1876,7 -1820,7 +1876,7 @@@ msgstr "
  #: src/language/dictionary/modify-variables.c:302
  #, c-format
  msgid "Unrecognized subcommand name `%s'."
 -msgstr ""
 +msgstr "Unrecognised subcommand name `%s'."
  
  #: src/language/dictionary/modify-variables.c:304
  msgid "Subcommand name expected."
@@@ -1925,240 -1869,233 +1925,240 @@@ msgid "Renaming would duplicate variabl
  msgstr ""
  
  #: src/language/dictionary/split-file.c:85
 -#: src/language/dictionary/sys-file-info.c:563
 -#: src/language/stats/crosstabs.q:1155 src/language/stats/crosstabs.q:1182
 -#: src/language/stats/crosstabs.q:1202 src/language/stats/crosstabs.q:1224
 -#: src/language/stats/examine.q:1198 src/language/stats/frequencies.q:1060
 -#: src/language/stats/frequencies.q:1184
 +#: src/language/dictionary/sys-file-info.c:480
 +#: src/language/dictionary/sys-file-info.c:629
- #: src/language/stats/crosstabs.q:1155 src/language/stats/crosstabs.q:1182
- #: src/language/stats/crosstabs.q:1202 src/language/stats/crosstabs.q:1224
- #: src/language/stats/examine.q:1939 src/language/stats/frequencies.q:1055
- #: src/language/stats/frequencies.q:1179 src/language/stats/reliability.q:572
++#: src/language/stats/crosstabs.q:1156 src/language/stats/crosstabs.q:1183
++#: src/language/stats/crosstabs.q:1203 src/language/stats/crosstabs.q:1225
++#: src/language/stats/examine.q:1941 src/language/stats/frequencies.q:1056
++#: src/language/stats/frequencies.q:1180 src/language/stats/reliability.q:572
 +#: src/language/stats/reliability.q:583
  msgid "Value"
  msgstr ""
  
  #: src/language/dictionary/split-file.c:86
 -#: src/language/dictionary/sys-file-info.c:397
 -#: src/language/dictionary/sys-file-info.c:564 src/ui/gui/crosstabs.glade:275
 -#: src/ui/gui/psppire.glade:2099 src/ui/gui/psppire-var-sheet.c:104
 +#: src/language/dictionary/sys-file-info.c:390
 +#: src/language/dictionary/sys-file-info.c:630 src/ui/gui/crosstabs.glade:275
- #: src/ui/gui/psppire.glade:2099 src/ui/gui/psppire-var-sheet.c:514
++#: src/ui/gui/psppire.glade:2101 src/ui/gui/psppire-var-sheet.c:514
 +#: src/ui/gui/psppire-var-store.c:767
  msgid "Label"
  msgstr ""
  
 -#: src/language/dictionary/sys-file-info.c:110
 +#: src/language/dictionary/sys-file-info.c:113
  msgid "File:"
  msgstr ""
  
- #: src/language/dictionary/sys-file-info.c:115 src/ui/gui/psppire.glade:2052
 -#: src/language/dictionary/sys-file-info.c:112 src/ui/gui/psppire.glade:2052
++#: src/language/dictionary/sys-file-info.c:115 src/ui/gui/psppire.glade:2040
  #: src/ui/gui/recode.glade:841
  msgid "Label:"
  msgstr ""
  
 -#: src/language/dictionary/sys-file-info.c:116
 +#: src/language/dictionary/sys-file-info.c:119
  msgid "No label."
  msgstr ""
  
 -#: src/language/dictionary/sys-file-info.c:119
 +#: src/language/dictionary/sys-file-info.c:122
  msgid "Created:"
  msgstr ""
  
 -#: src/language/dictionary/sys-file-info.c:122
 +#: src/language/dictionary/sys-file-info.c:125
  msgid "Integer Format:"
  msgstr ""
  
 -#: src/language/dictionary/sys-file-info.c:124
 +#: src/language/dictionary/sys-file-info.c:127
  msgid "Big Endian."
  msgstr ""
  
 -#: src/language/dictionary/sys-file-info.c:125
 +#: src/language/dictionary/sys-file-info.c:128
  msgid "Little Endian."
  msgstr ""
  
 -#: src/language/dictionary/sys-file-info.c:126
 -#: src/language/dictionary/sys-file-info.c:134
 +#: src/language/dictionary/sys-file-info.c:129
 +#: src/language/dictionary/sys-file-info.c:137
  msgid "Unknown."
  msgstr ""
  
 -#: src/language/dictionary/sys-file-info.c:127
 +#: src/language/dictionary/sys-file-info.c:130
  msgid "Real Format:"
  msgstr ""
  
 -#: src/language/dictionary/sys-file-info.c:129
 +#: src/language/dictionary/sys-file-info.c:132
  msgid "IEEE 754 LE."
  msgstr ""
  
 -#: src/language/dictionary/sys-file-info.c:130
 +#: src/language/dictionary/sys-file-info.c:133
  msgid "IEEE 754 BE."
  msgstr ""
  
 -#: src/language/dictionary/sys-file-info.c:131
 +#: src/language/dictionary/sys-file-info.c:134
  msgid "VAX D."
  msgstr ""
  
 -#: src/language/dictionary/sys-file-info.c:132
 +#: src/language/dictionary/sys-file-info.c:135
  msgid "VAX G."
  msgstr ""
  
 -#: src/language/dictionary/sys-file-info.c:133
 +#: src/language/dictionary/sys-file-info.c:136
  msgid "IBM 390 Hex Long."
  msgstr ""
  
 -#: src/language/dictionary/sys-file-info.c:135
 +#: src/language/dictionary/sys-file-info.c:138
  #: src/ui/gui/descriptives-dialog.glade:79 src/ui/gui/recode.glade:940
  msgid "Variables:"
  msgstr ""
  
 -#: src/language/dictionary/sys-file-info.c:137
 +#: src/language/dictionary/sys-file-info.c:140
  msgid "Cases:"
  msgstr ""
  
 -#: src/language/dictionary/sys-file-info.c:139
 +#: src/language/dictionary/sys-file-info.c:142
  msgid "Unknown"
  msgstr ""
  
 -#: src/language/dictionary/sys-file-info.c:141
 +#: src/language/dictionary/sys-file-info.c:144
  msgid "Type:"
  msgstr ""
  
 -#: src/language/dictionary/sys-file-info.c:142
 +#: src/language/dictionary/sys-file-info.c:145
  msgid "System File."
  msgstr ""
  
 -#: src/language/dictionary/sys-file-info.c:143
 +#: src/language/dictionary/sys-file-info.c:146
  msgid "Weight:"
  msgstr ""
  
 -#: src/language/dictionary/sys-file-info.c:148
 +#: src/language/dictionary/sys-file-info.c:151
  msgid "Not weighted."
  msgstr ""
  
 -#: src/language/dictionary/sys-file-info.c:150
 +#: src/language/dictionary/sys-file-info.c:153
  msgid "Mode:"
  msgstr ""
  
 -#: src/language/dictionary/sys-file-info.c:152
 +#: src/language/dictionary/sys-file-info.c:155
  #, c-format
  msgid "Compression %s."
  msgstr ""
  
 -#: src/language/dictionary/sys-file-info.c:152
 +#: src/language/dictionary/sys-file-info.c:155
  msgid "on"
  msgstr ""
  
 -#: src/language/dictionary/sys-file-info.c:152
 +#: src/language/dictionary/sys-file-info.c:155
  msgid "off"
  msgstr ""
  
 -#: src/language/dictionary/sys-file-info.c:162
 -#: src/language/dictionary/sys-file-info.c:395
 +#: src/language/dictionary/sys-file-info.c:163
 +#: src/language/dictionary/sys-file-info.c:390
  msgid "Description"
  msgstr ""
  
 -#: src/language/dictionary/sys-file-info.c:163
 -#: src/language/dictionary/sys-file-info.c:393
 -#: src/language/dictionary/sys-file-info.c:633
 +#: src/language/dictionary/sys-file-info.c:164
 +#: src/language/dictionary/sys-file-info.c:392
 +#: src/language/dictionary/sys-file-info.c:708
  msgid "Position"
  msgstr ""
  
 -#: src/language/dictionary/sys-file-info.c:222
 +#: src/language/dictionary/sys-file-info.c:213
  msgid "The active file does not have a file label."
  msgstr ""
  
 -#: src/language/dictionary/sys-file-info.c:225
 +#: src/language/dictionary/sys-file-info.c:216
  msgid "File label:"
  msgstr ""
  
 -#: src/language/dictionary/sys-file-info.c:288
 +#: src/language/dictionary/sys-file-info.c:291
  msgid "No variables to display."
  msgstr ""
  
 -#: src/language/dictionary/sys-file-info.c:307
 +#: src/language/dictionary/sys-file-info.c:306
  msgid "Macros not supported."
  msgstr ""
  
 -#: src/language/dictionary/sys-file-info.c:317
 +#: src/language/dictionary/sys-file-info.c:316
  msgid "The active file dictionary does not contain any documents."
  msgstr ""
  
 -#: src/language/dictionary/sys-file-info.c:325
 +#: src/language/dictionary/sys-file-info.c:324
  msgid "Documents in the active file:"
  msgstr ""
  
 -#: src/language/dictionary/sys-file-info.c:477
 +#: src/language/dictionary/sys-file-info.c:479
 +msgid "Attribute"
 +msgstr ""
 +
 +#: src/language/dictionary/sys-file-info.c:537
  #, c-format
  msgid "Format: %s"
  msgstr ""
  
 -#: src/language/dictionary/sys-file-info.c:485
 +#: src/language/dictionary/sys-file-info.c:544
  #, c-format
  msgid "Print Format: %s"
  msgstr ""
  
 -#: src/language/dictionary/sys-file-info.c:488
 +#: src/language/dictionary/sys-file-info.c:547
  #, c-format
  msgid "Write Format: %s"
  msgstr ""
  
 -#: src/language/dictionary/sys-file-info.c:494
 +#: src/language/dictionary/sys-file-info.c:559
  #, c-format
  msgid "Measure: %s"
  msgstr ""
  
 -#: src/language/dictionary/sys-file-info.c:495
 -#: src/ui/gui/psppire-var-sheet.c:123
 +#: src/language/dictionary/sys-file-info.c:560
 +#: src/ui/gui/psppire-var-sheet.c:109
  msgid "Nominal"
  msgstr ""
  
 -#: src/language/dictionary/sys-file-info.c:496
 -#: src/ui/gui/psppire-var-sheet.c:124
 +#: src/language/dictionary/sys-file-info.c:561
 +#: src/ui/gui/psppire-var-sheet.c:110
  msgid "Ordinal"
  msgstr ""
  
 -#: src/language/dictionary/sys-file-info.c:497
 -#: src/ui/gui/psppire-var-sheet.c:125
 +#: src/language/dictionary/sys-file-info.c:562
 +#: src/ui/gui/psppire-var-sheet.c:111
  msgid "Scale"
  msgstr ""
  
 -#: src/language/dictionary/sys-file-info.c:500
 +#: src/language/dictionary/sys-file-info.c:565
  #, c-format
  msgid "Display Alignment: %s"
  msgstr ""
  
 -#: src/language/dictionary/sys-file-info.c:501
 -#: src/ui/gui/psppire-var-sheet.c:116
 +#: src/language/dictionary/sys-file-info.c:566
 +#: src/ui/gui/psppire-var-sheet.c:102
  msgid "Left"
  msgstr ""
  
 -#: src/language/dictionary/sys-file-info.c:502
 -#: src/ui/gui/psppire-var-sheet.c:118
 +#: src/language/dictionary/sys-file-info.c:567
 +#: src/ui/gui/psppire-var-sheet.c:104
  msgid "Center"
  msgstr "Centre"
  
 -#: src/language/dictionary/sys-file-info.c:503
 -#: src/ui/gui/psppire-var-sheet.c:117
 +#: src/language/dictionary/sys-file-info.c:568
 +#: src/ui/gui/psppire-var-sheet.c:103
  msgid "Right"
  msgstr ""
  
 -#: src/language/dictionary/sys-file-info.c:506
 +#: src/language/dictionary/sys-file-info.c:571
  #, c-format
  msgid "Display Width: %d"
  msgstr ""
  
 -#: src/language/dictionary/sys-file-info.c:517
 +#: src/language/dictionary/sys-file-info.c:583
  msgid "Missing Values: "
  msgstr ""
  
 -#: src/language/dictionary/sys-file-info.c:611
 +#: src/language/dictionary/sys-file-info.c:686
  msgid "No vectors defined."
  msgstr ""
  
 -#: src/language/dictionary/sys-file-info.c:632
 +#: src/language/dictionary/sys-file-info.c:707
  msgid "Vector"
  msgstr ""
  
 -#: src/language/dictionary/sys-file-info.c:635
 +#: src/language/dictionary/sys-file-info.c:710
  msgid "Print Format"
  msgstr ""
  
@@@ -2169,15 -2106,20 +2169,15 @@@ msgid "
  "s."
  msgstr ""
  
 -#: src/language/dictionary/value-labels.c:157 src/language/lexer/lexer.c:629
 +#: src/language/dictionary/value-labels.c:157 src/language/lexer/lexer.c:630
  msgid "expecting string"
  msgstr ""
  
 -#: src/language/dictionary/value-labels.c:166 src/language/lexer/lexer.c:643
 -msgid "expecting integer"
 -msgstr ""
 -
 -#: src/language/dictionary/value-labels.c:170
 -#, c-format
 -msgid "Value label `%g' is not integer."
 +#: src/language/dictionary/value-labels.c:166 src/language/lexer/lexer.c:657
 +msgid "expecting number"
  msgstr ""
  
 -#: src/language/dictionary/value-labels.c:184
 +#: src/language/dictionary/value-labels.c:182
  msgid "Truncating value label to 60 characters."
  msgstr ""
  
@@@ -2284,10 -2226,6 +2284,10 @@@ msgid "
  "Unrecognized date unit \"%.*s\".  Valid date units are \"years\", \"quarters"
  "\", \"months\", \"weeks\", \"days\", \"hours\", \"minutes\", and \"seconds\"."
  msgstr ""
 +"Unrecognised date unit \"%.*s\".  Valid date units are \"years\", \"quarters"
 +"\"\n"
 +"\"\", \"months\", \"weeks\", \"days\", \"hours\", \"minutes\", and \"seconds"
 +"\"."
  
  #: src/language/expressions/helpers.c:332
  msgid ""
@@@ -2336,7 -2274,7 +2336,7 @@@ msgstr "
  msgid "Unknown identifier %s."
  msgstr ""
  
- #: src/language/expressions/parse.c:885 src/language/stats/aggregate.c:517
 -#: src/language/expressions/parse.c:885 src/language/stats/aggregate.c:509
++#: src/language/expressions/parse.c:885 src/language/stats/aggregate.c:516
  msgid "expecting `)'"
  msgstr ""
  
@@@ -2404,7 -2342,8 +2404,7 @@@ msgstr "
  msgid "%s is a PSPP extension."
  msgstr ""
  
 -#: src/language/expressions/parse.c:1267 src/ui/terminal/command-line.c:127
 -#: src/ui/terminal/command-line.c:146 src/ui/terminal/command-line.c:158
 +#: src/language/expressions/parse.c:1267
  #, c-format
  msgid "%s is not yet implemented."
  msgstr ""
@@@ -2427,84 -2366,84 +2427,84 @@@ msgstr "
  msgid "%s does not form a valid number."
  msgstr ""
  
 -#: src/language/lexer/lexer.c:386
 +#: src/language/lexer/lexer.c:387
  #, c-format
  msgid "Bad character in input: `%c'."
  msgstr ""
  
 -#: src/language/lexer/lexer.c:388
 +#: src/language/lexer/lexer.c:389
  #, c-format
  msgid "Bad character in input: `\\%o'."
  msgstr ""
  
 -#: src/language/lexer/lexer.c:424
 +#: src/language/lexer/lexer.c:425
  #, c-format
  msgid "Subcommand %s may only be specified once."
  msgstr ""
  
 -#: src/language/lexer/lexer.c:432
 +#: src/language/lexer/lexer.c:433
  #, c-format
  msgid "missing required subcommand %s"
  msgstr ""
  
 -#: src/language/lexer/lexer.c:461
 +#: src/language/lexer/lexer.c:462
  #, c-format
  msgid "Syntax error %s at %s."
  msgstr ""
  
 -#: src/language/lexer/lexer.c:464
 +#: src/language/lexer/lexer.c:465
  #, c-format
  msgid "Syntax error at %s."
  msgstr ""
  
 -#: src/language/lexer/lexer.c:598 src/language/lexer/lexer.c:615
 +#: src/language/lexer/lexer.c:599 src/language/lexer/lexer.c:616
  #, c-format
  msgid "expecting `%s'"
  msgstr ""
  
 -#: src/language/lexer/lexer.c:656
 -msgid "expecting number"
 +#: src/language/lexer/lexer.c:644
 +msgid "expecting integer"
  msgstr ""
  
 -#: src/language/lexer/lexer.c:668
 +#: src/language/lexer/lexer.c:669
  msgid "expecting identifier"
  msgstr ""
  
 -#: src/language/lexer/lexer.c:1062
 +#: src/language/lexer/lexer.c:1063
  msgid "binary"
  msgstr ""
  
 -#: src/language/lexer/lexer.c:1067
 +#: src/language/lexer/lexer.c:1068
  msgid "octal"
  msgstr ""
  
 -#: src/language/lexer/lexer.c:1072
 +#: src/language/lexer/lexer.c:1073
  msgid "hex"
  msgstr ""
  
 -#: src/language/lexer/lexer.c:1082
 +#: src/language/lexer/lexer.c:1083
  #, c-format
  msgid "String of %s digits has %zu characters, which is not a multiple of %d."
  msgstr ""
  
 -#: src/language/lexer/lexer.c:1111
 +#: src/language/lexer/lexer.c:1112
  #, c-format
  msgid "`%c' is not a valid %s digit."
  msgstr ""
  
 -#: src/language/lexer/lexer.c:1145
 +#: src/language/lexer/lexer.c:1146
  msgid "Unterminated string constant."
  msgstr ""
  
 -#: src/language/lexer/lexer.c:1199
 +#: src/language/lexer/lexer.c:1200
  msgid "Unexpected end of file in string concatenation."
  msgstr ""
  
 -#: src/language/lexer/lexer.c:1207
 +#: src/language/lexer/lexer.c:1208
  msgid "String expected following `+'."
  msgstr ""
  
 -#: src/language/lexer/lexer.c:1220
 +#: src/language/lexer/lexer.c:1221
  #, c-format
  msgid "String exceeds 255 characters in length (%zu characters)."
  msgstr ""
@@@ -2607,54 -2546,54 +2607,54 @@@ msgstr "
  msgid "Bad bounds in use of TO convention."
  msgstr ""
  
 -#: src/language/stats/aggregate.c:209
 +#: src/language/stats/aggregate.c:219
  msgid "while expecting COLUMNWISE"
  msgstr ""
  
 -#: src/language/stats/aggregate.c:240
 +#: src/language/stats/aggregate.c:247
  msgid "expecting BREAK"
  msgstr ""
  
 -#: src/language/stats/aggregate.c:245
 +#: src/language/stats/aggregate.c:252
  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/language/stats/aggregate.c:424
 -#: src/language/stats/aggregate.c:416
++#: src/language/stats/aggregate.c:423
  msgid "expecting aggregation function"
  msgstr ""
  
- #: src/language/stats/aggregate.c:442
 -#: src/language/stats/aggregate.c:434
++#: src/language/stats/aggregate.c:441
  #, c-format
  msgid "Unknown aggregation function %s."
  msgstr ""
  
- #: src/language/stats/aggregate.c:498
 -#: src/language/stats/aggregate.c:490
++#: src/language/stats/aggregate.c:497
  #, c-format
  msgid "Missing argument %zu to %s."
  msgstr ""
  
- #: src/language/stats/aggregate.c:507
 -#: src/language/stats/aggregate.c:499
++#: src/language/stats/aggregate.c:506
  #, c-format
  msgid "Arguments to %s must be of same type as source variables."
  msgstr ""
  
- #: src/language/stats/aggregate.c:529
 -#: src/language/stats/aggregate.c:521
++#: src/language/stats/aggregate.c:528
  #, c-format
  msgid ""
  "Number of source variables (%zu) does not match number of target variables (%"
  "zu)."
  msgstr ""
  
- #: src/language/stats/aggregate.c:545
 -#: src/language/stats/aggregate.c:537
++#: src/language/stats/aggregate.c:544
  #, 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/language/stats/aggregate.c:615
 -#: src/language/stats/aggregate.c:607
++#: src/language/stats/aggregate.c:614
  #, c-format
  msgid ""
  "Variable name %s is not unique within the aggregate file dictionary, which "
@@@ -2681,51 -2620,49 +2681,51 @@@ msgstr "
  msgid "Variable %s is not dichotomous"
  msgstr ""
  
 -#: src/language/stats/binomial.c:177
 +#: src/language/stats/binomial.c:179
  msgid "Binomial Test"
  msgstr ""
  
 -#: src/language/stats/binomial.c:201
 +#: src/language/stats/binomial.c:203
  msgid "Group1"
  msgstr ""
  
 -#: src/language/stats/binomial.c:202
 +#: src/language/stats/binomial.c:204
  msgid "Group2"
  msgstr ""
  
 -#: src/language/stats/binomial.c:203 src/language/stats/chisquare.c:223
 -#: src/language/stats/chisquare.c:283 src/language/stats/crosstabs.q:862
 -#: src/language/stats/crosstabs.q:1062 src/language/stats/crosstabs.q:1785
 -#: src/language/stats/examine.q:918 src/language/stats/frequencies.q:1137
 -#: src/language/stats/oneway.q:306 src/language/stats/oneway.q:476
 -#: src/language/stats/regression.q:309 src/ui/gui/crosstabs-dialog.c:59
 +#: src/language/stats/binomial.c:205 src/language/stats/chisquare.c:223
- #: src/language/stats/chisquare.c:283 src/language/stats/crosstabs.q:862
- #: src/language/stats/crosstabs.q:1062 src/language/stats/crosstabs.q:1785
- #: src/language/stats/examine.q:1198 src/language/stats/frequencies.q:1132
++#: src/language/stats/chisquare.c:283 src/language/stats/crosstabs.q:863
++#: src/language/stats/crosstabs.q:1063 src/language/stats/crosstabs.q:1786
++#: src/language/stats/examine.q:1200 src/language/stats/frequencies.q:1133
 +#: src/language/stats/oneway.q:304 src/language/stats/oneway.q:470
 +#: src/language/stats/regression.q:309 src/language/stats/reliability.q:705
- #: src/language/stats/wilcoxon.c:246 src/ui/gui/crosstabs-dialog.c:59
++#: src/language/stats/wilcoxon.c:240 src/ui/gui/crosstabs-dialog.c:59
  msgid "Total"
  msgstr ""
  
 -#: src/language/stats/binomial.c:235 src/language/stats/chisquare.c:246
 -#: src/language/stats/crosstabs.q:1180 src/language/stats/crosstabs.q:1221
 +#: src/language/stats/binomial.c:237 src/language/stats/chisquare.c:246
- #: src/language/stats/crosstabs.q:1180 src/language/stats/crosstabs.q:1221
++#: src/language/stats/crosstabs.q:1181 src/language/stats/crosstabs.q:1222
  msgid "Category"
  msgstr ""
  
- #: src/language/stats/binomial.c:238 src/language/stats/crosstabs.q:872
- #: src/language/stats/examine.q:1271 src/language/stats/frequencies.q:1400
 -#: src/language/stats/binomial.c:236 src/language/stats/crosstabs.q:872
 -#: src/language/stats/examine.q:993 src/language/stats/frequencies.q:1405
 -#: src/language/stats/npar-summary.c:122 src/language/stats/oneway.q:391
 -#: src/language/stats/t-test.q:693 src/language/stats/t-test.q:716
 -#: src/language/stats/t-test.q:850 src/language/stats/t-test.q:1387
++#: src/language/stats/binomial.c:238 src/language/stats/crosstabs.q:873
++#: src/language/stats/examine.q:1273 src/language/stats/frequencies.q:1401
 +#: src/language/stats/npar-summary.c:122 src/language/stats/oneway.q:386
 +#: src/language/stats/reliability.q:708 src/language/stats/t-test.q:693
 +#: src/language/stats/t-test.q:716 src/language/stats/t-test.q:850
- #: src/language/stats/t-test.q:1387 src/language/stats/wilcoxon.c:229
++#: src/language/stats/t-test.q:1387 src/language/stats/wilcoxon.c:223
  msgid "N"
  msgstr ""
  
 -#: src/language/stats/binomial.c:237
 +#: src/language/stats/binomial.c:239
  msgid "Observed Prop."
  msgstr ""
  
 -#: src/language/stats/binomial.c:238
 +#: src/language/stats/binomial.c:240
  msgid "Test Prop."
  msgstr ""
  
 -#: src/language/stats/binomial.c:241
 +#: src/language/stats/binomial.c:243
  #, c-format
  msgid "Exact Sig. (%d-tailed)"
  msgstr ""
@@@ -2754,7 -2691,7 +2754,7 @@@ msgstr "
  msgid "Frequencies"
  msgstr ""
  
- #: src/language/stats/chisquare.c:297 src/language/stats/wilcoxon.c:297
 -#: src/language/stats/chisquare.c:297
++#: src/language/stats/chisquare.c:297 src/language/stats/wilcoxon.c:291
  msgid "Test Statistics"
  msgstr ""
  
  msgid "Chi-Square"
  msgstr ""
  
--#: src/language/stats/chisquare.c:312 src/language/stats/crosstabs.q:1156
 -#: src/language/stats/oneway.q:279 src/language/stats/oneway.q:694
++#: src/language/stats/chisquare.c:312 src/language/stats/crosstabs.q:1157
 +#: src/language/stats/oneway.q:277 src/language/stats/oneway.q:683
  #: src/language/stats/regression.q:302 src/language/stats/t-test.q:1001
  #: src/language/stats/t-test.q:1193 src/language/stats/t-test.q:1286
  msgid "df"
@@@ -2799,264 -2736,262 +2799,264 @@@ msgstr "
  msgid "Maximum value (%ld) less than minimum value (%ld)."
  msgstr ""
  
--#: src/language/stats/crosstabs.q:857
++#: src/language/stats/crosstabs.q:858
  msgid "Summary."
  msgstr ""
  
- #: src/language/stats/crosstabs.q:859 src/language/stats/examine.q:1259
 -#: src/language/stats/crosstabs.q:859 src/language/stats/examine.q:981
++#: src/language/stats/crosstabs.q:860 src/language/stats/examine.q:1261
 +#: src/language/stats/reliability.q:696
  msgid "Cases"
  msgstr ""
  
- #: src/language/stats/crosstabs.q:860 src/language/stats/examine.q:1196
- #: src/language/stats/frequencies.q:1053 src/language/stats/frequencies.q:1401
 -#: src/language/stats/crosstabs.q:860 src/language/stats/examine.q:916
 -#: src/language/stats/frequencies.q:1058 src/language/stats/frequencies.q:1406
++#: src/language/stats/crosstabs.q:861 src/language/stats/examine.q:1198
++#: src/language/stats/frequencies.q:1054 src/language/stats/frequencies.q:1402
 +#: src/language/stats/reliability.q:699
  msgid "Valid"
  msgstr ""
  
- #: src/language/stats/crosstabs.q:861 src/language/stats/examine.q:1197
- #: src/language/stats/frequencies.q:1123 src/language/stats/frequencies.q:1402
 -#: src/language/stats/crosstabs.q:861 src/language/stats/examine.q:917
 -#: src/language/stats/frequencies.q:1128 src/language/stats/frequencies.q:1407
 -#: src/ui/gui/psppire-var-sheet.c:106
++#: src/language/stats/crosstabs.q:862 src/language/stats/examine.q:1199
++#: src/language/stats/frequencies.q:1124 src/language/stats/frequencies.q:1403
 +#: src/ui/gui/psppire-var-sheet.c:516 src/ui/gui/psppire-var-store.c:769
  msgid "Missing"
  msgstr ""
  
- #: src/language/stats/crosstabs.q:873 src/language/stats/examine.q:1274
- #: src/language/stats/frequencies.q:1057 src/language/stats/frequencies.q:1058
- #: src/language/stats/frequencies.q:1059
 -#: src/language/stats/crosstabs.q:873 src/language/stats/examine.q:996
 -#: src/language/stats/frequencies.q:1062 src/language/stats/frequencies.q:1063
 -#: src/language/stats/frequencies.q:1064
++#: src/language/stats/crosstabs.q:874 src/language/stats/examine.q:1276
++#: src/language/stats/frequencies.q:1058 src/language/stats/frequencies.q:1059
++#: src/language/stats/frequencies.q:1060
  msgid "Percent"
  msgstr ""
  
--#: src/language/stats/crosstabs.q:1114
++#: src/language/stats/crosstabs.q:1115
  msgid "count"
  msgstr ""
  
--#: src/language/stats/crosstabs.q:1115
++#: src/language/stats/crosstabs.q:1116
  msgid "row %"
  msgstr ""
  
--#: src/language/stats/crosstabs.q:1116
++#: src/language/stats/crosstabs.q:1117
  msgid "column %"
  msgstr ""
  
--#: src/language/stats/crosstabs.q:1117
++#: src/language/stats/crosstabs.q:1118
  msgid "total %"
  msgstr ""
  
--#: src/language/stats/crosstabs.q:1118
++#: src/language/stats/crosstabs.q:1119
  msgid "expected"
  msgstr ""
  
--#: src/language/stats/crosstabs.q:1119
++#: src/language/stats/crosstabs.q:1120
  msgid "residual"
  msgstr ""
  
--#: src/language/stats/crosstabs.q:1120
++#: src/language/stats/crosstabs.q:1121
  msgid "std. resid."
  msgstr ""
  
--#: src/language/stats/crosstabs.q:1121
++#: src/language/stats/crosstabs.q:1122
  msgid "adj. resid."
  msgstr ""
  
--#: src/language/stats/crosstabs.q:1151
++#: src/language/stats/crosstabs.q:1152
  msgid "Chi-square tests."
  msgstr ""
  
--#: src/language/stats/crosstabs.q:1154 src/language/stats/crosstabs.q:1181
--#: src/language/stats/crosstabs.q:1201 src/language/stats/crosstabs.q:1222
- #: src/language/stats/examine.q:1736 src/ui/gui/checkbox-treeview.c:94
 -#: src/language/stats/examine.q:1442 src/ui/gui/checkbox-treeview.c:94
++#: src/language/stats/crosstabs.q:1155 src/language/stats/crosstabs.q:1182
++#: src/language/stats/crosstabs.q:1202 src/language/stats/crosstabs.q:1223
++#: src/language/stats/examine.q:1738 src/ui/gui/checkbox-treeview.c:94
  msgid "Statistic"
  msgstr ""
  
--#: src/language/stats/crosstabs.q:1158
++#: src/language/stats/crosstabs.q:1159
  msgid "Asymp. Sig. (2-sided)"
  msgstr ""
  
--#: src/language/stats/crosstabs.q:1160
++#: src/language/stats/crosstabs.q:1161
  msgid "Exact. Sig. (2-sided)"
  msgstr ""
  
--#: src/language/stats/crosstabs.q:1162
++#: src/language/stats/crosstabs.q:1163
  msgid "Exact. Sig. (1-sided)"
  msgstr ""
  
--#: src/language/stats/crosstabs.q:1177
++#: src/language/stats/crosstabs.q:1178
  msgid "Symmetric measures."
  msgstr ""
  
--#: src/language/stats/crosstabs.q:1183 src/language/stats/crosstabs.q:1225
++#: src/language/stats/crosstabs.q:1184 src/language/stats/crosstabs.q:1226
  msgid "Asymp. Std. Error"
  msgstr ""
  
--#: src/language/stats/crosstabs.q:1184 src/language/stats/crosstabs.q:1226
++#: src/language/stats/crosstabs.q:1185 src/language/stats/crosstabs.q:1227
  msgid "Approx. T"
  msgstr ""
  
--#: src/language/stats/crosstabs.q:1185 src/language/stats/crosstabs.q:1227
++#: src/language/stats/crosstabs.q:1186 src/language/stats/crosstabs.q:1228
  msgid "Approx. Sig."
  msgstr ""
  
--#: src/language/stats/crosstabs.q:1196
++#: src/language/stats/crosstabs.q:1197
  msgid "Risk estimate."
  msgstr ""
  
--#: src/language/stats/crosstabs.q:1200
++#: src/language/stats/crosstabs.q:1201
  #, c-format
  msgid "95%% Confidence Interval"
  msgstr ""
  
--#: src/language/stats/crosstabs.q:1203 src/language/stats/t-test.q:1005
++#: src/language/stats/crosstabs.q:1204 src/language/stats/t-test.q:1005
  #: src/language/stats/t-test.q:1190 src/language/stats/t-test.q:1289
  msgid "Lower"
  msgstr ""
  
--#: src/language/stats/crosstabs.q:1204 src/language/stats/t-test.q:1006
++#: src/language/stats/crosstabs.q:1205 src/language/stats/t-test.q:1006
  #: src/language/stats/t-test.q:1191 src/language/stats/t-test.q:1290
  msgid "Upper"
  msgstr ""
  
--#: src/language/stats/crosstabs.q:1218
++#: src/language/stats/crosstabs.q:1219
  msgid "Directional measures."
  msgstr ""
  
--#: src/language/stats/crosstabs.q:1223 src/ui/gui/psppire.glade:2223
 -#: src/ui/gui/psppire-var-sheet.c:101
++#: src/language/stats/crosstabs.q:1224 src/ui/gui/psppire.glade:2226
 +#: src/ui/gui/psppire-var-sheet.c:511 src/ui/gui/psppire-var-store.c:764
  msgid "Type"
  msgstr ""
  
- #: src/language/stats/crosstabs.q:1976
+ #: src/language/stats/crosstabs.q:1977
  msgid "Pearson Chi-Square"
  msgstr ""
  
- #: src/language/stats/crosstabs.q:1977
+ #: src/language/stats/crosstabs.q:1978
  msgid "Likelihood Ratio"
  msgstr ""
  
- #: src/language/stats/crosstabs.q:1978
+ #: src/language/stats/crosstabs.q:1979
  msgid "Fisher's Exact Test"
  msgstr ""
  
- #: src/language/stats/crosstabs.q:1979
+ #: src/language/stats/crosstabs.q:1980
  msgid "Continuity Correction"
  msgstr ""
  
- #: src/language/stats/crosstabs.q:1980
+ #: src/language/stats/crosstabs.q:1981
  msgid "Linear-by-Linear Association"
  msgstr ""
  
- #: src/language/stats/crosstabs.q:2017 src/language/stats/crosstabs.q:2087
- #: src/language/stats/crosstabs.q:2146
+ #: src/language/stats/crosstabs.q:2018 src/language/stats/crosstabs.q:2088
+ #: src/language/stats/crosstabs.q:2147
  msgid "N of Valid Cases"
  msgstr ""
  
- #: src/language/stats/crosstabs.q:2033 src/language/stats/crosstabs.q:2162
+ #: src/language/stats/crosstabs.q:2034 src/language/stats/crosstabs.q:2163
  msgid "Nominal by Nominal"
  msgstr ""
  
- #: src/language/stats/crosstabs.q:2034 src/language/stats/crosstabs.q:2163
+ #: src/language/stats/crosstabs.q:2035 src/language/stats/crosstabs.q:2164
  msgid "Ordinal by Ordinal"
  msgstr ""
  
- #: src/language/stats/crosstabs.q:2035
+ #: src/language/stats/crosstabs.q:2036
  msgid "Interval by Interval"
  msgstr ""
  
- #: src/language/stats/crosstabs.q:2036
+ #: src/language/stats/crosstabs.q:2037
  msgid "Measure of Agreement"
  msgstr ""
  
- #: src/language/stats/crosstabs.q:2041 src/ui/gui/crosstabs-dialog.c:41
+ #: src/language/stats/crosstabs.q:2042 src/ui/gui/crosstabs-dialog.c:41
  msgid "Phi"
  msgstr ""
  
- #: src/language/stats/crosstabs.q:2042
+ #: src/language/stats/crosstabs.q:2043
  msgid "Cramer's V"
  msgstr ""
  
- #: src/language/stats/crosstabs.q:2043
+ #: src/language/stats/crosstabs.q:2044
  msgid "Contingency Coefficient"
  msgstr ""
  
- #: src/language/stats/crosstabs.q:2044
+ #: src/language/stats/crosstabs.q:2045
  msgid "Kendall's tau-b"
  msgstr ""
  
- #: src/language/stats/crosstabs.q:2045
+ #: src/language/stats/crosstabs.q:2046
  msgid "Kendall's tau-c"
  msgstr ""
  
- #: src/language/stats/crosstabs.q:2046 src/ui/gui/crosstabs-dialog.c:48
+ #: src/language/stats/crosstabs.q:2047 src/ui/gui/crosstabs-dialog.c:48
  msgid "Gamma"
  msgstr ""
  
- #: src/language/stats/crosstabs.q:2047
+ #: src/language/stats/crosstabs.q:2048
  msgid "Spearman Correlation"
  msgstr ""
  
- #: src/language/stats/crosstabs.q:2048
+ #: src/language/stats/crosstabs.q:2049
  msgid "Pearson's R"
  msgstr ""
  
- #: src/language/stats/crosstabs.q:2049 src/ui/gui/crosstabs-dialog.c:50
+ #: src/language/stats/crosstabs.q:2050 src/ui/gui/crosstabs-dialog.c:50
  msgid "Kappa"
  msgstr ""
  
- #: src/language/stats/crosstabs.q:2119
+ #: src/language/stats/crosstabs.q:2120
  #, c-format
  msgid "Odds Ratio for %s (%g / %g)"
  msgstr ""
  
- #: src/language/stats/crosstabs.q:2122
+ #: src/language/stats/crosstabs.q:2123
  #, c-format
  msgid "Odds Ratio for %s (%.*s / %.*s)"
  msgstr ""
  
- #: src/language/stats/crosstabs.q:2130
+ #: src/language/stats/crosstabs.q:2131
  #, c-format
  msgid "For cohort %s = %g"
  msgstr ""
  
- #: src/language/stats/crosstabs.q:2133
+ #: src/language/stats/crosstabs.q:2134
  #, c-format
  msgid "For cohort %s = %.*s"
  msgstr ""
  
- #: src/language/stats/crosstabs.q:2164
+ #: src/language/stats/crosstabs.q:2165
  msgid "Nominal by Interval"
  msgstr ""
  
- #: src/language/stats/crosstabs.q:2169 src/ui/gui/crosstabs-dialog.c:43
+ #: src/language/stats/crosstabs.q:2170 src/ui/gui/crosstabs-dialog.c:43
  msgid "Lambda"
  msgstr ""
  
- #: src/language/stats/crosstabs.q:2170
+ #: src/language/stats/crosstabs.q:2171
  msgid "Goodman and Kruskal tau"
  msgstr ""
  
- #: src/language/stats/crosstabs.q:2171
+ #: src/language/stats/crosstabs.q:2172
  msgid "Uncertainty Coefficient"
  msgstr ""
  
- #: src/language/stats/crosstabs.q:2172
+ #: src/language/stats/crosstabs.q:2173
  msgid "Somers' d"
  msgstr ""
  
- #: src/language/stats/crosstabs.q:2173 src/ui/gui/crosstabs-dialog.c:51
+ #: src/language/stats/crosstabs.q:2174 src/ui/gui/crosstabs-dialog.c:51
  msgid "Eta"
  msgstr ""
  
- #: src/language/stats/crosstabs.q:2178
+ #: src/language/stats/crosstabs.q:2179
  msgid "Symmetric"
  msgstr ""
  
- #: src/language/stats/crosstabs.q:2179 src/language/stats/crosstabs.q:2180
+ #: src/language/stats/crosstabs.q:2180 src/language/stats/crosstabs.q:2181
  #, c-format
  msgid "%s Dependent"
  msgstr ""
  
- #: src/language/stats/descriptives.c:102 src/language/stats/examine.q:1541
 -#: src/language/stats/descriptives.c:102 src/language/stats/examine.q:1556
++#: src/language/stats/descriptives.c:102 src/language/stats/examine.q:1543
  #: src/language/stats/frequencies.q:123 src/language/stats/npar-summary.c:125
 -#: src/language/stats/oneway.q:392 src/language/stats/t-test.q:694
 +#: src/language/stats/oneway.q:387 src/language/stats/t-test.q:694
  #: src/language/stats/t-test.q:717 src/language/stats/t-test.q:849
  #: src/language/stats/t-test.q:1187 src/ui/gui/descriptives-dialog.c:39
  #: src/ui/gui/frequencies-dialog.c:40
@@@ -3071,13 -3006,13 +3071,13 @@@ msgstr "
  msgid "Std Dev"
  msgstr ""
  
- #: src/language/stats/descriptives.c:105 src/language/stats/examine.q:1572
 -#: src/language/stats/descriptives.c:105 src/language/stats/examine.q:1636
++#: src/language/stats/descriptives.c:105 src/language/stats/examine.q:1574
  #: src/language/stats/frequencies.q:128 src/ui/gui/descriptives-dialog.c:46
  #: src/ui/gui/frequencies-dialog.c:45
  msgid "Variance"
  msgstr ""
  
- #: src/language/stats/descriptives.c:106 src/language/stats/examine.q:1608
 -#: src/language/stats/descriptives.c:106 src/language/stats/examine.q:1743
++#: src/language/stats/descriptives.c:106 src/language/stats/examine.q:1610
  #: src/language/stats/frequencies.q:129 src/ui/gui/descriptives-dialog.c:47
  #: src/ui/gui/frequencies-dialog.c:50
  msgid "Kurtosis"
@@@ -3087,7 -3022,7 +3087,7 @@@ msgstr "
  msgid "S E Kurt"
  msgstr ""
  
- #: src/language/stats/descriptives.c:108 src/language/stats/examine.q:1603
 -#: src/language/stats/descriptives.c:108 src/language/stats/examine.q:1723
++#: src/language/stats/descriptives.c:108 src/language/stats/examine.q:1605
  #: src/language/stats/frequencies.q:131 src/ui/gui/descriptives-dialog.c:48
  #: src/ui/gui/frequencies-dialog.c:46
  msgid "Skewness"
@@@ -3097,22 -3032,22 +3097,22 @@@ msgstr "
  msgid "S E Skew"
  msgstr ""
  
- #: src/language/stats/descriptives.c:110 src/language/stats/examine.q:1592
 -#: src/language/stats/descriptives.c:110 src/language/stats/examine.q:1684
++#: src/language/stats/descriptives.c:110 src/language/stats/examine.q:1594
  #: src/language/stats/frequencies.q:133 src/ui/gui/descriptives-dialog.c:43
  #: src/ui/gui/frequencies-dialog.c:48
  msgid "Range"
  msgstr ""
  
- #: src/language/stats/descriptives.c:111 src/language/stats/examine.q:1582
 -#: src/language/stats/descriptives.c:111 src/language/stats/examine.q:1661
++#: src/language/stats/descriptives.c:111 src/language/stats/examine.q:1584
  #: src/language/stats/frequencies.q:134 src/language/stats/npar-summary.c:131
 -#: src/language/stats/oneway.q:404 src/ui/gui/descriptives-dialog.c:41
 +#: src/language/stats/oneway.q:400 src/ui/gui/descriptives-dialog.c:41
  #: src/ui/gui/frequencies-dialog.c:42
  msgid "Minimum"
  msgstr ""
  
- #: src/language/stats/descriptives.c:112 src/language/stats/examine.q:1587
 -#: src/language/stats/descriptives.c:112 src/language/stats/examine.q:1672
++#: src/language/stats/descriptives.c:112 src/language/stats/examine.q:1589
  #: src/language/stats/frequencies.q:135 src/language/stats/npar-summary.c:134
 -#: src/language/stats/oneway.q:405 src/ui/gui/descriptives-dialog.c:42
 +#: src/language/stats/oneway.q:401 src/ui/gui/descriptives-dialog.c:42
  #: src/ui/gui/frequencies-dialog.c:43
  msgid "Maximum"
  msgstr ""
@@@ -3149,151 -3084,137 +3149,151 @@@ msgstr "
  msgid "Target"
  msgstr ""
  
--#: src/language/stats/descriptives.c:672
++#: src/language/stats/descriptives.c:673
  #, c-format
  msgid "Z-score of %s"
  msgstr ""
  
--#: src/language/stats/descriptives.c:886
++#: src/language/stats/descriptives.c:888
  msgid "Valid N"
  msgstr ""
  
--#: src/language/stats/descriptives.c:887
++#: src/language/stats/descriptives.c:889
  msgid "Missing N"
  msgstr ""
  
--#: src/language/stats/descriptives.c:914
++#: src/language/stats/descriptives.c:916
  #, c-format
  msgid "Valid cases = %g; cases with missing value(s) = %g."
  msgstr ""
  
 -#: src/language/stats/examine.q:288 src/language/stats/examine.q:291
 -#, c-format
 -msgid "%s is not currently supported."
 +#: src/language/stats/examine.q:337 src/language/stats/examine.q:490
- #: src/language/stats/examine.q:1047
++#: src/language/stats/examine.q:1048
 +msgid "Not creating plot because data set is empty."
  msgstr ""
  
 -#: src/language/stats/examine.q:501 src/language/stats/examine.q:514
 +#: src/language/stats/examine.q:347
  #, c-format
 -msgid "%s and %s are mutually exclusive"
 +msgid "Normal Q-Q Plot of %s"
  msgstr ""
  
 -#: src/language/stats/examine.q:976
 -msgid "Case Processing Summary"
 +#: src/language/stats/examine.q:348 src/language/stats/examine.q:353
 +msgid "Observed Value"
  msgstr ""
  
 -#: src/language/stats/examine.q:1183
 -msgid "Extreme Values"
 +#: src/language/stats/examine.q:349
 +msgid "Expected Normal"
  msgstr ""
  
 -#: src/language/stats/examine.q:1199
 -msgid "Case Number"
 +#: src/language/stats/examine.q:351
 +#, c-format
 +msgid "Detrended Normal Q-Q Plot of %s"
  msgstr ""
  
 -#: src/language/stats/examine.q:1297
 -msgid "Highest"
 +#: src/language/stats/examine.q:354
 +msgid "Dev from Normal"
  msgstr ""
  
 -#: src/language/stats/examine.q:1302
 -msgid "Lowest"
 +#: src/language/stats/examine.q:507
 +#, c-format
 +msgid "Boxplot of %s vs. %s"
  msgstr ""
  
 -#: src/language/stats/examine.q:1443 src/language/stats/oneway.q:394
 -#: src/language/stats/oneway.q:692 src/language/stats/regression.q:203
 -msgid "Std. Error"
 +#: src/language/stats/examine.q:511
 +#, c-format
 +msgid "Boxplot of %s"
  msgstr ""
  
 -#: src/language/stats/examine.q:1445 src/language/stats/oneway.q:408
 -#: src/ui/gui/examine.glade:307
 -msgid "Descriptives"
 +#: src/language/stats/examine.q:747 src/language/stats/examine.q:760
 +#, c-format
 +msgid "%s and %s are mutually exclusive"
 +msgstr ""
 +
- #: src/language/stats/examine.q:1254 src/language/stats/reliability.q:673
++#: src/language/stats/examine.q:1256 src/language/stats/reliability.q:673
 +msgid "Case Processing Summary"
  msgstr ""
  
- #: src/language/stats/examine.q:1546 src/language/stats/oneway.q:395
 -#: src/language/stats/examine.q:1574 src/language/stats/oneway.q:399
++#: src/language/stats/examine.q:1548 src/language/stats/oneway.q:395
  #, c-format
  msgid "%g%% Confidence Interval for Mean"
  msgstr ""
  
- #: src/language/stats/examine.q:1552 src/language/stats/oneway.q:397
 -#: src/language/stats/examine.q:1580 src/language/stats/oneway.q:401
++#: src/language/stats/examine.q:1554 src/language/stats/oneway.q:397
  msgid "Lower Bound"
  msgstr ""
  
- #: src/language/stats/examine.q:1557 src/language/stats/oneway.q:398
 -#: src/language/stats/examine.q:1591 src/language/stats/oneway.q:402
++#: src/language/stats/examine.q:1559 src/language/stats/oneway.q:398
  msgid "Upper Bound"
  msgstr ""
  
- #: src/language/stats/examine.q:1562
 -#: src/language/stats/examine.q:1603
++#: src/language/stats/examine.q:1564
  #, c-format
  msgid "5%% Trimmed Mean"
  msgstr ""
  
- #: src/language/stats/examine.q:1567 src/language/stats/frequencies.q:125
 -#: src/language/stats/examine.q:1614 src/language/stats/frequencies.q:125
++#: src/language/stats/examine.q:1569 src/language/stats/frequencies.q:125
  #: src/ui/gui/frequencies-dialog.c:52
  msgid "Median"
  msgstr ""
  
- #: src/language/stats/examine.q:1577 src/language/stats/npar-summary.c:128
 -#: src/language/stats/examine.q:1648 src/language/stats/npar-summary.c:128
 -#: src/language/stats/oneway.q:393 src/language/stats/t-test.q:695
++#: src/language/stats/examine.q:1579 src/language/stats/npar-summary.c:128
 +#: src/language/stats/oneway.q:388 src/language/stats/t-test.q:695
  #: src/language/stats/t-test.q:718 src/language/stats/t-test.q:851
  #: src/language/stats/t-test.q:1188
  msgid "Std. Deviation"
  msgstr ""
  
- #: src/language/stats/examine.q:1597
 -#: src/language/stats/examine.q:1696
++#: src/language/stats/examine.q:1599
  msgid "Interquartile Range"
  msgstr ""
  
- #: src/language/stats/examine.q:1733 src/language/stats/oneway.q:404
- #: src/ui/gui/examine.glade:307
 -#: src/language/stats/examine.q:1850
 -#, c-format
 -msgid "Boxplot of %s vs. %s"
++#: src/language/stats/examine.q:1735 src/language/stats/oneway.q:404
++#: src/ui/gui/examine.glade:310
 +msgid "Descriptives"
  msgstr ""
  
- #: src/language/stats/examine.q:1739 src/language/stats/oneway.q:389
 -#: src/language/stats/examine.q:1877
 -msgid "Boxplot"
++#: src/language/stats/examine.q:1741 src/language/stats/oneway.q:389
 +#: src/language/stats/oneway.q:681 src/language/stats/regression.q:203
 +msgid "Std. Error"
  msgstr ""
  
- #: src/language/stats/examine.q:1836 src/language/stats/examine.q:1841
 -#: src/language/stats/examine.q:1919
++#: src/language/stats/examine.q:1838 src/language/stats/examine.q:1843
 +#: src/ui/gui/psppire-data-store.c:749 src/ui/gui/psppire-var-store.c:627
 +#: src/ui/gui/psppire-var-store.c:637 src/ui/gui/psppire-var-store.c:647
 +#: src/ui/gui/psppire-var-store.c:756
  #, c-format
 -msgid "Normal Q-Q Plot of %s"
 +msgid "%d"
  msgstr ""
  
- #: src/language/stats/examine.q:1919
 -#: src/language/stats/examine.q:1920 src/language/stats/examine.q:1926
 -msgid "Observed Value"
++#: src/language/stats/examine.q:1921
 +msgid "Highest"
  msgstr ""
  
- #: src/language/stats/examine.q:1924
 -#: src/language/stats/examine.q:1921
 -msgid "Expected Normal"
++#: src/language/stats/examine.q:1926
 +msgid "Lowest"
  msgstr ""
  
- #: src/language/stats/examine.q:1931
 -#: src/language/stats/examine.q:1924
 -#, c-format
 -msgid "Detrended Normal Q-Q Plot of %s"
++#: src/language/stats/examine.q:1933
 +msgid "Extreme Values"
  msgstr ""
  
- #: src/language/stats/examine.q:1935
 -#: src/language/stats/examine.q:1927
 -msgid "Dev from Normal"
++#: src/language/stats/examine.q:1937
 +msgid "Case Number"
  msgstr ""
  
- #: src/language/stats/examine.q:2057
 -#: src/language/stats/examine.q:2046 src/language/stats/examine.q:2068
 -#: src/language/stats/frequencies.q:1417 src/language/stats/npar-summary.c:141
 -#: src/ui/gui/examine.glade:328
++#: src/language/stats/examine.q:2059
 +msgid "Tukey's Hinges"
 +msgstr ""
 +
- #: src/language/stats/examine.q:2097 src/language/stats/examine.q:2115
- #: src/language/stats/frequencies.q:1412 src/language/stats/npar-summary.c:141
- #: src/ui/gui/examine.glade:328
++#: src/language/stats/examine.q:2099 src/language/stats/examine.q:2117
++#: src/language/stats/frequencies.q:1413 src/language/stats/npar-summary.c:141
++#: src/ui/gui/examine.glade:333
  msgid "Percentiles"
  msgstr ""
  
- #: src/language/stats/examine.q:2104
 -#: src/language/stats/examine.q:2204
 -msgid "Tukey's Hinges"
++#: src/language/stats/examine.q:2106
 +#, c-format
 +msgid "%g"
  msgstr ""
  
  #: src/language/stats/flip.c:96
@@@ -3357,12 -3278,12 +3357,12 @@@ msgstr "
  msgid "Error rewinding FLIP source file: %s."
  msgstr ""
  
--#: src/language/stats/flip.c:488
++#: src/language/stats/flip.c:487
  #, c-format
  msgid "Error reading FLIP temporary file: %s."
  msgstr ""
  
--#: src/language/stats/flip.c:491
++#: src/language/stats/flip.c:490
  msgid "Unexpected end of file reading FLIP temporary file."
  msgstr ""
  
@@@ -3396,60 -3317,60 +3396,60 @@@ msgid "
  "MIN was specified as %g and MAX as %g.  MIN and MAX will be ignored."
  msgstr ""
  
- #: src/language/stats/frequencies.q:754
 -#: src/language/stats/frequencies.q:759
++#: src/language/stats/frequencies.q:755
  #, c-format
  msgid "Variable %s specified multiple times on VARIABLES subcommand."
  msgstr ""
  
- #: src/language/stats/frequencies.q:817
 -#: src/language/stats/frequencies.q:822
++#: src/language/stats/frequencies.q:818
  msgid "`)' expected after GROUPED interval list."
  msgstr ""
  
- #: src/language/stats/frequencies.q:829
 -#: src/language/stats/frequencies.q:834
++#: src/language/stats/frequencies.q:830
  #, c-format
  msgid "Variables %s specified on GROUPED but not on VARIABLES."
  msgstr ""
  
- #: src/language/stats/frequencies.q:836
 -#: src/language/stats/frequencies.q:841
++#: src/language/stats/frequencies.q:837
  #, c-format
  msgid "Variables %s specified multiple times on GROUPED subcommand."
  msgstr ""
  
- #: src/language/stats/frequencies.q:1054 src/language/stats/frequencies.q:1147
- #: src/language/stats/frequencies.q:1148 src/language/stats/frequencies.q:1182
 -#: src/language/stats/frequencies.q:1059 src/language/stats/frequencies.q:1152
 -#: src/language/stats/frequencies.q:1153 src/language/stats/frequencies.q:1187
++#: src/language/stats/frequencies.q:1055 src/language/stats/frequencies.q:1148
++#: src/language/stats/frequencies.q:1149 src/language/stats/frequencies.q:1183
  msgid "Cum"
  msgstr ""
  
- #: src/language/stats/frequencies.q:1056 src/output/charts/plot-hist.c:140
 -#: src/language/stats/frequencies.q:1061 src/output/charts/plot-hist.c:126
++#: src/language/stats/frequencies.q:1057 src/output/charts/plot-hist.c:140
  msgid "Frequency"
  msgstr ""
  
- #: src/language/stats/frequencies.q:1077
 -#: src/language/stats/frequencies.q:1082
++#: src/language/stats/frequencies.q:1078
  msgid "Value Label"
  msgstr ""
  
- #: src/language/stats/frequencies.q:1180
 -#: src/language/stats/frequencies.q:1185
++#: src/language/stats/frequencies.q:1181
  msgid "Freq"
  msgstr ""
  
- #: src/language/stats/frequencies.q:1181 src/language/stats/frequencies.q:1183
 -#: src/language/stats/frequencies.q:1186 src/language/stats/frequencies.q:1188
++#: src/language/stats/frequencies.q:1182 src/language/stats/frequencies.q:1184
  msgid "Pct"
  msgstr ""
  
- #: src/language/stats/frequencies.q:1374
 -#: src/language/stats/frequencies.q:1379
++#: src/language/stats/frequencies.q:1375
  #, c-format
  msgid "No valid data for variable %s; statistics not displayed."
  msgstr ""
  
- #: src/language/stats/frequencies.q:1416
 -#: src/language/stats/frequencies.q:1421
++#: src/language/stats/frequencies.q:1417
  msgid "50 (Median)"
  msgstr ""
  
 -#: src/language/stats/glm.q:148
 +#: src/language/stats/glm.q:143
  msgid "Multivariate GLM not yet supported"
  msgstr ""
  
- #: src/language/stats/glm.q:261 src/language/stats/regression.q:994
 -#: src/language/stats/glm.q:356 src/language/stats/regression.q:1026
++#: src/language/stats/glm.q:262 src/language/stats/regression.q:996
  msgid "No valid data found. This command was skipped."
  msgstr ""
  
@@@ -3461,24 -3382,24 +3461,24 @@@ msgstr "
  msgid "TABLES subcommand may not appear more than once."
  msgstr ""
  
 -#: src/language/stats/npar.q:98
 +#: src/language/stats/npar.q:108
  msgid "NPAR subcommand not currently implemented."
  msgstr ""
  
 -#: src/language/stats/npar.q:236
 +#: src/language/stats/npar.q:251
  #, c-format
  msgid ""
  "The specified value of HI (%d) is lower than the specified value of LO (%d)"
  msgstr ""
  
 -#: src/language/stats/npar.q:291
 +#: src/language/stats/npar.q:306
  #, c-format
  msgid ""
  "%d expected values were given, but the specified range (%d-%d) requires "
  "exactly %d values."
  msgstr ""
  
 -#: src/language/stats/npar.q:425 src/language/stats/t-test.q:496
 +#: src/language/stats/npar.q:443 src/language/stats/t-test.q:496
  #, c-format
  msgid ""
  "PAIRED was specified but the number of variables preceding WITH (%zu) did "
@@@ -3501,98 -3422,98 +3501,98 @@@ msgstr "
  msgid "75th"
  msgstr ""
  
 -#: src/language/stats/oneway.q:169
 +#: src/language/stats/oneway.q:170
  msgid "Number of contrast coefficients must equal the number of groups"
  msgstr ""
  
 -#: src/language/stats/oneway.q:178
 +#: src/language/stats/oneway.q:179
  #, c-format
  msgid "Coefficients for contrast %zu do not total zero"
  msgstr ""
  
 -#: src/language/stats/oneway.q:244
 +#: src/language/stats/oneway.q:242
  #, c-format
  msgid "`%s' is not a variable name"
  msgstr ""
  
 -#: src/language/stats/oneway.q:278 src/language/stats/regression.q:301
 +#: src/language/stats/oneway.q:276 src/language/stats/regression.q:301
  msgid "Sum of Squares"
  msgstr ""
  
 -#: src/language/stats/oneway.q:280 src/language/stats/regression.q:303
 +#: src/language/stats/oneway.q:278 src/language/stats/regression.q:303
  msgid "Mean Square"
  msgstr ""
  
 -#: src/language/stats/oneway.q:281 src/language/stats/regression.q:304
 +#: src/language/stats/oneway.q:279 src/language/stats/regression.q:304
  #: src/language/stats/t-test.q:998
  msgid "F"
  msgstr ""
  
 -#: src/language/stats/oneway.q:282 src/language/stats/oneway.q:542
 +#: src/language/stats/oneway.q:280 src/language/stats/oneway.q:532
  #: src/language/stats/regression.q:206 src/language/stats/regression.q:305
  msgid "Significance"
  msgstr ""
  
 -#: src/language/stats/oneway.q:304
 +#: src/language/stats/oneway.q:302
  msgid "Between Groups"
  msgstr ""
  
 -#: src/language/stats/oneway.q:305
 +#: src/language/stats/oneway.q:303
  msgid "Within Groups"
  msgstr ""
  
 -#: src/language/stats/oneway.q:352 src/language/stats/regression.q:330
 +#: src/language/stats/oneway.q:347 src/language/stats/regression.q:330
  msgid "ANOVA"
  msgstr ""
  
 -#: src/language/stats/oneway.q:539
 +#: src/language/stats/oneway.q:529
  msgid "Levene Statistic"
  msgstr ""
  
 -#: src/language/stats/oneway.q:540
 +#: src/language/stats/oneway.q:530
  msgid "df1"
  msgstr ""
  
 -#: src/language/stats/oneway.q:541
 +#: src/language/stats/oneway.q:531
  msgid "df2"
  msgstr ""
  
 -#: src/language/stats/oneway.q:545
 +#: src/language/stats/oneway.q:534
  msgid "Test of Homogeneity of Variances"
  msgstr ""
  
 -#: src/language/stats/oneway.q:613
 +#: src/language/stats/oneway.q:602
  msgid "Contrast Coefficients"
  msgstr ""
  
 -#: src/language/stats/oneway.q:615 src/language/stats/oneway.q:690
 +#: src/language/stats/oneway.q:604 src/language/stats/oneway.q:679
  msgid "Contrast"
  msgstr ""
  
 -#: src/language/stats/oneway.q:688
 +#: src/language/stats/oneway.q:677
  msgid "Contrast Tests"
  msgstr ""
  
 -#: src/language/stats/oneway.q:691
 +#: src/language/stats/oneway.q:680
  msgid "Value of Contrast"
  msgstr ""
  
 -#: src/language/stats/oneway.q:693 src/language/stats/regression.q:205
 +#: src/language/stats/oneway.q:682 src/language/stats/regression.q:205
  #: src/language/stats/t-test.q:1000 src/language/stats/t-test.q:1192
  #: src/language/stats/t-test.q:1285
  msgid "t"
  msgstr ""
  
 -#: src/language/stats/oneway.q:695 src/language/stats/t-test.q:1002
 +#: src/language/stats/oneway.q:684 src/language/stats/t-test.q:1002
  #: src/language/stats/t-test.q:1194 src/language/stats/t-test.q:1287
  msgid "Sig. (2-tailed)"
  msgstr ""
  
 -#: src/language/stats/oneway.q:739
 +#: src/language/stats/oneway.q:728
  msgid "Assume equal variances"
  msgstr ""
  
 -#: src/language/stats/oneway.q:743
 +#: src/language/stats/oneway.q:732
  msgid "Does not assume equal"
  msgstr ""
  
@@@ -3606,46 -3527,46 +3606,46 @@@ msgstr "
  msgid "%s of %s"
  msgstr ""
  
- #: src/language/stats/rank.q:599
 -#: src/language/stats/rank.q:602
++#: src/language/stats/rank.q:601
  msgid "Cannot create new rank variable.  All candidates in use."
  msgstr ""
  
- #: src/language/stats/rank.q:692
 -#: src/language/stats/rank.q:695
++#: src/language/stats/rank.q:694
  msgid "Variables Created By RANK"
  msgstr ""
  
- #: src/language/stats/rank.q:716
 -#: src/language/stats/rank.q:719
++#: src/language/stats/rank.q:718
  #, c-format
  msgid "%s into %s(%s of %s using %s BY %s)"
  msgstr ""
  
- #: src/language/stats/rank.q:727
 -#: src/language/stats/rank.q:730
++#: src/language/stats/rank.q:729
  #, c-format
  msgid "%s into %s(%s of %s BY %s)"
  msgstr ""
  
- #: src/language/stats/rank.q:741
 -#: src/language/stats/rank.q:744
++#: src/language/stats/rank.q:743
  #, c-format
  msgid "%s into %s(%s of %s using %s)"
  msgstr ""
  
- #: src/language/stats/rank.q:751
 -#: src/language/stats/rank.q:754
++#: src/language/stats/rank.q:753
  #, c-format
  msgid "%s into %s(%s of %s)"
  msgstr ""
  
- #: src/language/stats/rank.q:764
 -#: src/language/stats/rank.q:767
++#: src/language/stats/rank.q:766
  msgid ""
  "FRACTION has been specified, but NORMAL and PROPORTION rank functions have "
  "not been requested.  The FRACTION subcommand will be ignored."
  msgstr ""
  
- #: src/language/stats/rank.q:855
 -#: src/language/stats/rank.q:860
++#: src/language/stats/rank.q:857
  #, c-format
  msgid "Variable %s already exists."
  msgstr ""
  
- #: src/language/stats/rank.q:860
 -#: src/language/stats/rank.q:865
++#: src/language/stats/rank.q:862
  msgid "Too many variables in INTO clause."
  msgstr ""
  
@@@ -3701,107 -3622,30 +3701,107 @@@ msgstr "
  msgid "Coefficient Correlations"
  msgstr ""
  
--#: src/language/stats/regression.q:807
++#: src/language/stats/regression.q:808
  msgid ""
  "The dependent variable is equal to the independent variable.The least "
  "squares line is therefore Y=X.Standard errors and related statistics may be "
  "meaningless."
  msgstr ""
  
- #: src/language/stats/regression.q:898
 -#: src/language/stats/regression.q:931
++#: src/language/stats/regression.q:900
  msgid "Dependent variable must be numeric."
  msgstr ""
  
 +#: src/language/stats/reliability.q:429
 +msgid "Reliability Statistics"
 +msgstr ""
 +
 +#: src/language/stats/reliability.q:472
 +msgid "Item-Total Statistics"
 +msgstr ""
 +
 +#: src/language/stats/reliability.q:494
 +msgid "Scale Mean if Item Deleted"
 +msgstr ""
 +
 +#: src/language/stats/reliability.q:497
 +msgid "Scale Variance if Item Deleted"
 +msgstr ""
 +
 +#: src/language/stats/reliability.q:500
 +msgid "Corrected Item-Total Correlation"
 +msgstr ""
 +
 +#: src/language/stats/reliability.q:503
 +msgid "Cronbach's Alpha if Item Deleted"
 +msgstr ""
 +
 +#: src/language/stats/reliability.q:550 src/language/stats/reliability.q:566
 +msgid "Cronbach's Alpha"
 +msgstr ""
 +
 +#: src/language/stats/reliability.q:553
 +msgid "N of items"
 +msgstr ""
 +
 +#: src/language/stats/reliability.q:569
 +msgid "Part 1"
 +msgstr ""
 +
 +#: src/language/stats/reliability.q:575 src/language/stats/reliability.q:586
 +msgid "N of Items"
 +msgstr ""
 +
 +#: src/language/stats/reliability.q:580
 +msgid "Part 2"
 +msgstr ""
 +
 +#: src/language/stats/reliability.q:591
 +msgid "Total N of Items"
 +msgstr ""
 +
 +#: src/language/stats/reliability.q:594
 +msgid "Correlation Between Forms"
 +msgstr ""
 +
 +#: src/language/stats/reliability.q:598
 +msgid "Spearman-Brown Coefficient"
 +msgstr ""
 +
 +#: src/language/stats/reliability.q:601
 +msgid "Equal Length"
 +msgstr ""
 +
 +#: src/language/stats/reliability.q:604
 +msgid "Unequal Length"
 +msgstr ""
 +
 +#: src/language/stats/reliability.q:608
 +msgid "Guttman Split-Half Coefficient"
 +msgstr ""
 +
 +#: src/language/stats/reliability.q:702
 +msgid "Excluded"
 +msgstr ""
 +
 +#: src/language/stats/reliability.q:711
 +#, c-format
 +msgid "%%"
 +msgstr ""
 +
  #: src/language/stats/sort-cases.c:64
  msgid "Buffer limit must be at least 2."
  msgstr ""
  
 -#: src/language/stats/sort-criteria.c:69
 +#: src/language/stats/sort-criteria.c:74
  msgid "`A' or `D' expected inside parentheses."
  msgstr ""
  
 -#: src/language/stats/sort-criteria.c:74
 +#: src/language/stats/sort-criteria.c:79
  msgid "`)' expected."
  msgstr ""
  
 -#: src/language/stats/sort-criteria.c:85
 +#: src/language/stats/sort-criteria.c:92
  #, c-format
  msgid "Variable %s specified twice in sort criteria."
  msgstr ""
@@@ -3927,56 -3771,6 +3927,56 @@@ msgstr "
  msgid "%s & %s"
  msgstr ""
  
- #: src/language/stats/wilcoxon.c:216
++#: src/language/stats/wilcoxon.c:210
 +msgid "Ranks"
 +msgstr ""
 +
- #: src/language/stats/wilcoxon.c:230
++#: src/language/stats/wilcoxon.c:224
 +msgid "Mean Rank"
 +msgstr ""
 +
- #: src/language/stats/wilcoxon.c:231
++#: src/language/stats/wilcoxon.c:225
 +msgid "Sum of Ranks"
 +msgstr ""
 +
- #: src/language/stats/wilcoxon.c:243
++#: src/language/stats/wilcoxon.c:237
 +msgid "Negative Ranks"
 +msgstr ""
 +
- #: src/language/stats/wilcoxon.c:244
++#: src/language/stats/wilcoxon.c:238
 +msgid "Positive Ranks"
 +msgstr ""
 +
- #: src/language/stats/wilcoxon.c:245
++#: src/language/stats/wilcoxon.c:239
 +msgid "Ties"
 +msgstr ""
 +
- #: src/language/stats/wilcoxon.c:310
++#: src/language/stats/wilcoxon.c:304
 +msgid "Z"
 +msgstr ""
 +
- #: src/language/stats/wilcoxon.c:311
++#: src/language/stats/wilcoxon.c:305
 +msgid "Asymp. Sig (2-tailed)"
 +msgstr ""
 +
- #: src/language/stats/wilcoxon.c:315
++#: src/language/stats/wilcoxon.c:309
 +msgid "Exact Sig (2-tailed)"
 +msgstr ""
 +
- #: src/language/stats/wilcoxon.c:316
++#: src/language/stats/wilcoxon.c:310
 +msgid "Exact Sig (1-tailed)"
 +msgstr ""
 +
- #: src/language/stats/wilcoxon.c:319
++#: src/language/stats/wilcoxon.c:313
 +msgid "Point Probability"
 +msgstr ""
 +
- #: src/language/stats/wilcoxon.c:358
++#: src/language/stats/wilcoxon.c:352
 +#, c-format
 +msgid ""
 +"Exact significance was not calculated after %.2f minutes. Skipping test."
 +msgstr ""
 +
  #: src/language/syntax-file.c:88
  #, c-format
  msgid "opening \"%s\" as syntax file"
@@@ -4048,32 -3842,32 +4048,37 @@@ msgstr "
  msgid "Only USE ALL is currently implemented."
  msgstr ""
  
- #: src/language/utilities/include.c:90
 -#: src/language/utilities/include.c:91
++#: src/language/utilities/include.c:92
  msgid "Expecting BATCH or INTERACTIVE after SYNTAX."
  msgstr ""
  
- #: src/language/utilities/include.c:107
 -#: src/language/utilities/include.c:108
++#: src/language/utilities/include.c:109
  msgid "Expecting YES or NO after CD."
  msgstr ""
  
- #: src/language/utilities/include.c:124
 -#: src/language/utilities/include.c:125
++#: src/language/utilities/include.c:126
  msgid "Expecting CONTINUE or STOP after ERROR."
  msgstr ""
  
- #: src/language/utilities/include.c:131
 -#: src/language/utilities/include.c:132
++#: src/language/utilities/include.c:133
  #, c-format
  msgid "Unexpected token: `%s'."
  msgstr ""
  
- #: src/language/utilities/include.c:176
 -#: src/language/utilities/include.c:177
++#: src/language/utilities/include.c:178
  msgid "expecting file name"
  msgstr ""
  
- #: src/language/utilities/include.c:188
 -#: src/language/utilities/include.c:189
++#: src/language/utilities/include.c:190
  #, c-format
  msgid "Can't find `%s' in include file search path."
  msgstr ""
  
++#: src/language/utilities/include.c:198
++#, c-format
++msgid "Unable to open `%s': %s."
++msgstr ""
++
  #: src/language/utilities/permissions.c:73
  #, c-format
  msgid "Expecting %s or %s."
@@@ -4233,20 -4027,20 +4238,20 @@@ msgstr "
  msgid "   (Entered %s)"
  msgstr ""
  
--#: src/language/xforms/compute.c:146 src/language/xforms/compute.c:194
++#: src/language/xforms/compute.c:149 src/language/xforms/compute.c:203
  #, c-format
  msgid ""
  "When executing COMPUTE: SYSMIS is not a valid value as an index into vector %"
  "s."
  msgstr ""
  
--#: src/language/xforms/compute.c:150 src/language/xforms/compute.c:201
++#: src/language/xforms/compute.c:153 src/language/xforms/compute.c:210
  #, c-format
  msgid ""
  "When executing COMPUTE: %g is not a valid value as an index into vector %s."
  msgstr ""
  
--#: src/language/xforms/compute.c:344
++#: src/language/xforms/compute.c:354
  #, c-format
  msgid "There is no vector named %s."
  msgstr ""
  msgid "Destination cannot be a string variable."
  msgstr ""
  
 -#: src/language/xforms/recode.c:246
 +#: src/language/xforms/recode.c:251
  msgid ""
  "Inconsistent target variable types.  Target variables must be all numeric or "
  "all string."
  msgstr ""
  
 -#: src/language/xforms/recode.c:267
 +#: src/language/xforms/recode.c:272
  msgid "CONVERT requires string input values and numeric output values."
  msgstr ""
  
 -#: src/language/xforms/recode.c:317
 +#: src/language/xforms/recode.c:329
  msgid "THRU is not allowed with string variables."
  msgstr ""
  
 -#: src/language/xforms/recode.c:391
 +#: src/language/xforms/recode.c:407
  msgid "expecting output value"
  msgstr ""
  
 -#: src/language/xforms/recode.c:440
 +#: src/language/xforms/recode.c:456
  #, c-format
  msgid ""
  "%zu variable(s) cannot be recoded into %zu variable(s).  Specify the same "
  "number of variables as source and target variables."
  msgstr ""
  
 -#: src/language/xforms/recode.c:455
 +#: src/language/xforms/recode.c:471
  #, c-format
  msgid ""
  "There is no variable named %s.  (All string variables specified on INTO must "
  "already exist.  Use the STRING command to create a string variable.)"
  msgstr ""
  
 -#: src/language/xforms/recode.c:470
 +#: src/language/xforms/recode.c:487
  #, c-format
  msgid "INTO is required with %s input values and %s output values."
  msgstr ""
  
 -#: src/language/xforms/recode.c:483
 +#: src/language/xforms/recode.c:500
  #, c-format
  msgid "Type mismatch.  Cannot store %s data in %s variable %s."
  msgstr ""
@@@ -4318,28 -4112,28 +4323,28 @@@ msgstr "
  msgid "The filter variable may not be scratch."
  msgstr ""
  
 -#: src/libpspp/hash.c:614
 +#: src/libpspp/hash.c:545
  #, c-format
  msgid "hash table:"
  msgstr ""
  
 -#: src/math/percentiles.c:41
 +#: src/math/percentiles.c:35
  msgid "HAverage"
  msgstr ""
  
 -#: src/math/percentiles.c:42
 +#: src/math/percentiles.c:36
  msgid "Weighted Average"
  msgstr ""
  
 -#: src/math/percentiles.c:43
 +#: src/math/percentiles.c:37
  msgid "Rounded"
  msgstr ""
  
 -#: src/math/percentiles.c:44
 +#: src/math/percentiles.c:38
  msgid "Empirical"
  msgstr ""
  
 -#: src/math/percentiles.c:45
 +#: src/math/percentiles.c:39
  msgid "Empirical with averaging"
  msgstr ""
  
@@@ -4489,7 -4283,7 +4494,7 @@@ msgstr "
  msgid "creating \"%s\""
  msgstr ""
  
 -#: src/output/charts/plot-hist.c:124
 +#: src/output/charts/plot-hist.c:138
  msgid "HISTOGRAM"
  msgstr ""
  
@@@ -4507,12 -4301,12 +4512,12 @@@ msgstr "
  msgid "unknown configuration parameter `%s' for HTML device driver"
  msgstr ""
  
--#: src/output/journal.c:68
++#: src/output/journal.c:69
  #, c-format
  msgid "error writing \"%s\""
  msgstr ""
  
--#: src/output/journal.c:90
++#: src/output/journal.c:94
  #, c-format
  msgid "error creating \"%s\""
  msgstr ""
@@@ -4547,7 -4341,7 +4552,7 @@@ msgstr "
  msgid "reading \"%s\""
  msgstr ""
  
- #: src/output/output.c:332 src/ui/gui/message-dialog.c:96
 -#: src/output/output.c:332 src/ui/gui/message-dialog.c:97
++#: src/output/output.c:332 src/ui/gui/message-dialog.c:95
  #, c-format
  msgid "syntax error"
  msgstr ""
@@@ -4608,7 -4402,7 +4613,7 @@@ msgstr "
  #: src/output/output.c:719
  #, c-format
  msgid "cannot initialize output driver `%s' of class `%s'"
 -msgstr ""
 +msgstr "cannot initialise output driver `%s' of class `%s'"
  
  #: src/output/output.c:765
  #, c-format
@@@ -4745,7 -4539,7 +4750,7 @@@ msgid "
  "bad box: (%d+%d=%d,%d+%d=%d)-(%d+%d=%d,%d+%d=%d) in table size (%d,%d)\n"
  msgstr ""
  
--#: src/ui/gui/comments-dialog.c:58
++#: src/ui/gui/comments-dialog.c:57
  #, c-format
  msgid "Column Number: %d"
  msgstr ""
@@@ -4784,7 -4578,7 +4789,7 @@@ msgstr "
  
  #: src/ui/gui/crosstabs-dialog.c:53 src/ui/gui/crosstabs-dialog.c:64
  #: src/ui/gui/crosstabs-dialog.c:99 src/ui/gui/crosstabs-dialog.c:107
 -#: src/ui/gui/psppire-var-store.c:591 src/ui/gui/var-display.c:14
 +#: src/ui/gui/psppire-var-store.c:543 src/ui/gui/var-display.c:14
  msgid "None"
  msgstr ""
  
@@@ -4820,7 -4614,7 +4825,7 @@@ msgstr "
  msgid "Format..."
  msgstr ""
  
--#: src/ui/gui/crosstabs.glade:138 src/ui/gui/examine.glade:246
++#: src/ui/gui/crosstabs.glade:138 src/ui/gui/examine.glade:247
  #: src/ui/gui/regression.glade:31
  msgid "Statistics..."
  msgstr ""
@@@ -4837,7 -4631,7 +4842,7 @@@ msgstr "
  msgid "Pivot"
  msgstr ""
  
--#: src/ui/gui/crosstabs.glade:253 src/ui/gui/psppire.glade:778
++#: src/ui/gui/crosstabs.glade:253 src/ui/gui/psppire.glade:781
  msgid "Ascending"
  msgstr ""
  
@@@ -4866,338 -4660,329 +4871,338 @@@ msgstr "
  msgid "Style of bevel around the custom entry button"
  msgstr ""
  
 -#: src/ui/gui/data-editor.c:150
 +#: src/ui/gui/data-editor.c:155
  msgid "Transformations Pending"
  msgstr ""
  
 -#: src/ui/gui/data-editor.c:323
 +#: src/ui/gui/data-editor.c:328
  msgid "_Labels"
  msgstr ""
  
 -#: src/ui/gui/data-editor.c:324
 +#: src/ui/gui/data-editor.c:329
  msgid "Show/hide value labels"
  msgstr ""
  
 -#: src/ui/gui/data-editor.c:342 src/ui/gui/data-editor.c:361
 -#: src/ui/gui/data-editor.c:1507 src/ui/gui/data-editor.c:1561
 +#: src/ui/gui/data-editor.c:347 src/ui/gui/data-editor.c:366
 +#: src/ui/gui/data-editor.c:1555 src/ui/gui/data-editor.c:1609
 +#: src/ui/gui/data-editor.c:1645
  msgid "Clear"
  msgstr ""
  
 -#: src/ui/gui/data-editor.c:343
 +#: src/ui/gui/data-editor.c:348
  msgid "Delete the cases at the selected position(s)"
  msgstr ""
  
 -#: src/ui/gui/data-editor.c:362
 +#: src/ui/gui/data-editor.c:367
  msgid "Delete the variables at the selected position(s)"
  msgstr ""
  
 -#: src/ui/gui/data-editor.c:377
 +#: src/ui/gui/data-editor.c:382
  msgid "Insert _Variable"
  msgstr ""
  
 -#: src/ui/gui/data-editor.c:378
 +#: src/ui/gui/data-editor.c:383
  msgid "Create a new variable at the current position"
  msgstr ""
  
 -#: src/ui/gui/data-editor.c:396
 +#: src/ui/gui/data-editor.c:401
  msgid "Insert Ca_se"
  msgstr ""
  
 -#: src/ui/gui/data-editor.c:397
 +#: src/ui/gui/data-editor.c:402
  msgid "Create a new case at the current position"
  msgstr ""
  
 -#: src/ui/gui/data-editor.c:417
 +#: src/ui/gui/data-editor.c:422
  msgid "_Goto Case"
  msgstr ""
  
 -#: src/ui/gui/data-editor.c:418
 +#: src/ui/gui/data-editor.c:423
  msgid "Jump to a Case in the Data Sheet"
  msgstr ""
  
 -#: src/ui/gui/data-editor.c:437
 +#: src/ui/gui/data-editor.c:442
  msgid "_Weights"
  msgstr ""
  
 -#: src/ui/gui/data-editor.c:438
 +#: src/ui/gui/data-editor.c:443
  msgid "Weight cases by variable"
  msgstr ""
  
 -#: src/ui/gui/data-editor.c:447 src/ui/gui/data-editor.glade:319
 +#: src/ui/gui/data-editor.c:452 src/ui/gui/data-editor.glade:319
  msgid "_Transpose"
  msgstr ""
  
 -#: src/ui/gui/data-editor.c:448
 +#: src/ui/gui/data-editor.c:453
  msgid "Transpose the cases with the variables"
  msgstr ""
  
 -#: src/ui/gui/data-editor.c:459
 +#: src/ui/gui/data-editor.c:464
  msgid "S_plit"
  msgstr ""
  
 -#: src/ui/gui/data-editor.c:460
 +#: src/ui/gui/data-editor.c:465
  msgid "Split the active file"
  msgstr ""
  
 -#: src/ui/gui/data-editor.c:470
 +#: src/ui/gui/data-editor.c:475
  msgid "_Sort"
  msgstr ""
  
 -#: src/ui/gui/data-editor.c:471
 +#: src/ui/gui/data-editor.c:476
  msgid "Sort cases in the active file"
  msgstr ""
  
 -#: src/ui/gui/data-editor.c:479 src/ui/gui/data-editor.glade:340
 +#: src/ui/gui/data-editor.c:484 src/ui/gui/data-editor.glade:340
  msgid "Select _Cases"
  msgstr ""
  
 -#: src/ui/gui/data-editor.c:480
 +#: src/ui/gui/data-editor.c:485
  msgid "Select cases from the active file"
  msgstr ""
  
 -#: src/ui/gui/data-editor.c:489 src/ui/gui/data-editor.glade:369
 +#: src/ui/gui/data-editor.c:494 src/ui/gui/data-editor.glade:369
  msgid "_Compute"
  msgstr ""
  
 -#: src/ui/gui/data-editor.c:490
 +#: src/ui/gui/data-editor.c:495
  msgid "Compute new values for a variable"
  msgstr ""
  
 -#: src/ui/gui/data-editor.c:498
 +#: src/ui/gui/data-editor.c:503
  msgid "Oneway _ANOVA"
  msgstr ""
  
 -#: src/ui/gui/data-editor.c:499
 +#: src/ui/gui/data-editor.c:504
  msgid "Perform one way analysis of variance"
  msgstr ""
  
 -#: src/ui/gui/data-editor.c:507 src/ui/gui/data-editor.glade:496
 +#: src/ui/gui/data-editor.c:512 src/ui/gui/data-editor.glade:496
  msgid "_Independent Samples T Test"
  msgstr ""
  
 -#: src/ui/gui/data-editor.c:508
 +#: src/ui/gui/data-editor.c:513
  msgid "Calculate T Test for samples from independent groups"
  msgstr ""
  
 -#: src/ui/gui/data-editor.c:517 src/ui/gui/data-editor.glade:504
 +#: src/ui/gui/data-editor.c:522 src/ui/gui/data-editor.glade:504
  msgid "_Paired Samples T Test"
  msgstr ""
  
 -#: src/ui/gui/data-editor.c:518
 +#: src/ui/gui/data-editor.c:523
  msgid "Calculate T Test for paired samples"
  msgstr ""
  
 -#: src/ui/gui/data-editor.c:527
 +#: src/ui/gui/data-editor.c:532
  msgid "One _Sample T Test"
  msgstr ""
  
 -#: src/ui/gui/data-editor.c:528
 +#: src/ui/gui/data-editor.c:533
  msgid "Calculate T Test for sample from a single distribution"
  msgstr ""
  
 -#: src/ui/gui/data-editor.c:537 src/ui/gui/data-editor.glade:593
 +#: src/ui/gui/data-editor.c:542 src/ui/gui/data-editor.glade:593
  msgid "Data File _Comments"
  msgstr ""
  
 -#: src/ui/gui/data-editor.c:538
 +#: src/ui/gui/data-editor.c:543
  msgid "Commentary text for the data file"
  msgstr ""
  
 -#: src/ui/gui/data-editor.c:546 src/ui/gui/data-editor.glade:228
 +#: src/ui/gui/data-editor.c:551 src/ui/gui/data-editor.glade:228
  msgid "_Find"
  msgstr ""
  
 -#: src/ui/gui/data-editor.c:547
 +#: src/ui/gui/data-editor.c:552
  msgid "Find Case"
  msgstr ""
  
 -#: src/ui/gui/data-editor.c:556 src/ui/gui/data-editor.glade:377
 +#: src/ui/gui/data-editor.c:561 src/ui/gui/data-editor.glade:377
  msgid "Ran_k Cases"
  msgstr ""
  
 -#: src/ui/gui/data-editor.c:557
 +#: src/ui/gui/data-editor.c:562
  msgid "Rank Cases"
  msgstr ""
  
 -#: src/ui/gui/data-editor.c:566 src/ui/gui/data-editor.glade:389
 +#: src/ui/gui/data-editor.c:571 src/ui/gui/data-editor.glade:389
  msgid "Recode into _Same Variables"
  msgstr ""
  
 -#: src/ui/gui/data-editor.c:567
 +#: src/ui/gui/data-editor.c:572
  msgid "Recode values into the same Variables"
  msgstr ""
  
 -#: src/ui/gui/data-editor.c:576 src/ui/gui/data-editor.glade:396
 +#: src/ui/gui/data-editor.c:581 src/ui/gui/data-editor.glade:396
  msgid "Recode into _Different Variables"
  msgstr ""
  
 -#: src/ui/gui/data-editor.c:577
 +#: src/ui/gui/data-editor.c:582
  msgid "Recode values into different Variables"
  msgstr ""
  
 -#: src/ui/gui/data-editor.c:586 src/ui/gui/data-editor.glade:293
 +#: src/ui/gui/data-editor.c:591 src/ui/gui/data-editor.glade:293
  #: src/ui/gui/data-editor.glade:584
  msgid "_Variables"
  msgstr ""
  
 -#: src/ui/gui/data-editor.c:587
 +#: src/ui/gui/data-editor.c:592
  msgid "Jump to Variable"
  msgstr ""
  
 -#: src/ui/gui/data-editor.c:595 src/ui/gui/data-editor.glade:450
 +#: src/ui/gui/data-editor.c:600 src/ui/gui/data-editor.glade:450
  #: src/ui/gui/oneway.glade:179
  msgid "_Descriptives"
  msgstr ""
  
 -#: src/ui/gui/data-editor.c:596
 +#: src/ui/gui/data-editor.c:601
  msgid "Calculate descriptive statistics (mean, variance, ...)"
  msgstr ""
  
 -#: src/ui/gui/data-editor.c:605 src/ui/gui/data-editor.glade:442
 +#: src/ui/gui/data-editor.c:610 src/ui/gui/data-editor.glade:442
  msgid "_Frequencies"
  msgstr ""
  
 -#: src/ui/gui/data-editor.c:606
 +#: src/ui/gui/data-editor.c:611
  msgid "Generate frequency statistics"
  msgstr ""
  
 -#: src/ui/gui/data-editor.c:614 src/ui/gui/data-editor.glade:466
 +#: src/ui/gui/data-editor.c:619 src/ui/gui/data-editor.glade:466
  msgid "_Crosstabs"
  msgstr ""
  
 -#: src/ui/gui/data-editor.c:615
 +#: src/ui/gui/data-editor.c:620
  msgid "Generate crosstabulations"
  msgstr ""
  
 -#: src/ui/gui/data-editor.c:624 src/ui/gui/data-editor.glade:458
 +#: src/ui/gui/data-editor.c:629 src/ui/gui/data-editor.glade:458
  msgid "_Explore"
  msgstr ""
  
 -#: src/ui/gui/data-editor.c:625
 +#: src/ui/gui/data-editor.c:630
  msgid "Examine Data by Factors"
  msgstr ""
  
 -#: src/ui/gui/data-editor.c:634 src/ui/gui/data-editor.glade:532
 +#: src/ui/gui/data-editor.c:639 src/ui/gui/data-editor.glade:532
  msgid "Linear _Regression"
  msgstr ""
  
 -#: src/ui/gui/data-editor.c:635
 +#: src/ui/gui/data-editor.c:640
  msgid "Estimate parameters of the linear model"
  msgstr ""
  
 -#: src/ui/gui/data-editor.c:1027
 +#: src/ui/gui/data-editor.c:924
 +msgid "_Split Window"
 +msgstr ""
 +
 +#: src/ui/gui/data-editor.c:925
 +msgid "Split the window vertically and horizontally"
 +msgstr ""
 +
 +#: src/ui/gui/data-editor.c:1050
  msgid "Font Selection"
  msgstr ""
  
 -#: src/ui/gui/data-editor.c:1099
 +#: src/ui/gui/data-editor.c:1142
  msgid "No Split"
  msgstr ""
  
 -#: src/ui/gui/data-editor.c:1108
 +#: src/ui/gui/data-editor.c:1151
  msgid "Split by "
  msgstr ""
  
 -#: src/ui/gui/data-editor.c:1133
 +#: src/ui/gui/data-editor.c:1176
  msgid "Filter off"
  msgstr ""
  
 -#: src/ui/gui/data-editor.c:1145
 +#: src/ui/gui/data-editor.c:1188
  #, c-format
  msgid "Filter by %s"
  msgstr ""
  
 -#: src/ui/gui/data-editor.c:1163
 +#: src/ui/gui/data-editor.c:1206
  msgid "Weights off"
  msgstr ""
  
 -#: src/ui/gui/data-editor.c:1175
 +#: src/ui/gui/data-editor.c:1218
  #, c-format
  msgid "Weight by %s"
  msgstr ""
  
 -#: src/ui/gui/data-editor.c:1198 src/ui/gui/data-editor.c:1440
 -#: src/ui/gui/data-editor.glade:660
 +#: src/ui/gui/data-editor.c:1241 src/ui/gui/data-editor.c:1488
 +#: src/ui/gui/data-editor.glade:667
  msgid "Open"
  msgstr ""
  
 -#: src/ui/gui/data-editor.c:1199
 +#: src/ui/gui/data-editor.c:1242
  msgid "Open a data file"
  msgstr ""
  
 -#: src/ui/gui/data-editor.c:1207 src/ui/gui/data-editor.c:1323
 -#: src/ui/gui/data-editor.glade:670
 +#: src/ui/gui/data-editor.c:1250 src/ui/gui/data-editor.c:1366
 +#: src/ui/gui/data-editor.glade:677
  msgid "Save"
  msgstr ""
  
 -#: src/ui/gui/data-editor.c:1208 src/ui/gui/data-editor.c:1218
 +#: src/ui/gui/data-editor.c:1251 src/ui/gui/data-editor.c:1261
  msgid "Save data to file"
  msgstr ""
  
 -#: src/ui/gui/data-editor.c:1217
 +#: src/ui/gui/data-editor.c:1260
  msgid "Save As"
  msgstr ""
  
- #: src/ui/gui/data-editor.c:1269 src/ui/gui/recode-dialog.c:928
 -#: src/ui/gui/data-editor.c:1226 src/ui/gui/recode-dialog.c:928
--#: src/ui/gui/recode-dialog.c:1023
++#: src/ui/gui/data-editor.c:1269 src/ui/gui/recode-dialog.c:927
++#: src/ui/gui/recode-dialog.c:1022
  msgid "New"
  msgstr ""
  
 -#: src/ui/gui/data-editor.c:1227
 +#: src/ui/gui/data-editor.c:1270
  msgid "New data file"
  msgstr ""
  
 -#: src/ui/gui/data-editor.c:1235
 +#: src/ui/gui/data-editor.c:1278
  msgid "_Import Text Data"
  msgstr ""
  
 -#: src/ui/gui/data-editor.c:1236
 +#: src/ui/gui/data-editor.c:1279
  msgid "Import text data file"
  msgstr ""
  
 -#: src/ui/gui/data-editor.c:1331 src/ui/gui/data-editor.c:1448
 +#: src/ui/gui/data-editor.c:1374 src/ui/gui/data-editor.c:1496
  msgid "System Files (*.sav)"
  msgstr ""
  
 -#: src/ui/gui/data-editor.c:1337 src/ui/gui/data-editor.c:1454
 +#: src/ui/gui/data-editor.c:1380 src/ui/gui/data-editor.c:1502
  msgid "Portable Files (*.por) "
  msgstr ""
  
 -#: src/ui/gui/data-editor.c:1343 src/ui/gui/data-editor.c:1460
 +#: src/ui/gui/data-editor.c:1386 src/ui/gui/data-editor.c:1508
  #: src/ui/gui/syntax-editor.c:138 src/ui/gui/syntax-editor.c:522
  msgid "All Files"
  msgstr ""
  
 -#: src/ui/gui/data-editor.c:1351
 +#: src/ui/gui/data-editor.c:1394
  msgid "System File"
  msgstr ""
  
 -#: src/ui/gui/data-editor.c:1356
 +#: src/ui/gui/data-editor.c:1399
  msgid "Portable File"
  msgstr ""
  
 -#: src/ui/gui/data-editor.c:1498
 +#: src/ui/gui/data-editor.c:1546
  msgid "Sort Ascending"
  msgstr ""
  
 -#: src/ui/gui/data-editor.c:1501
 +#: src/ui/gui/data-editor.c:1549
  msgid "Sort Descending"
  msgstr ""
  
 -#: src/ui/gui/data-editor.c:1504 src/ui/gui/data-editor.glade:150
 -#: src/ui/gui/data-editor.glade:801
 +#: src/ui/gui/data-editor.c:1552 src/ui/gui/data-editor.c:1642
 +#: src/ui/gui/data-editor.glade:150 src/ui/gui/data-editor.glade:808
  msgid "Insert Variable"
  msgstr ""
  
 -#: src/ui/gui/data-editor.c:1558 src/ui/gui/data-editor.glade:789
 +#: src/ui/gui/data-editor.c:1606 src/ui/gui/data-editor.glade:796
  msgid "Insert Case"
  msgstr ""
  
@@@ -5238,7 -5023,7 +5243,7 @@@ msgstr "
  msgid "Insert Cases"
  msgstr ""
  
 -#: src/ui/gui/data-editor.glade:166 src/ui/gui/data-editor.glade:738
 +#: src/ui/gui/data-editor.glade:166 src/ui/gui/data-editor.glade:745
  msgid "Go To Case"
  msgstr ""
  
@@@ -5292,7 -5077,7 +5297,7 @@@ msgstr "
  
  #: src/ui/gui/data-editor.glade:422
  msgid "_Analyze"
 -msgstr ""
 +msgstr "_Analyse"
  
  #: src/ui/gui/data-editor.glade:432
  msgid "_Descriptive Statistics"
@@@ -5338,179 -5123,175 +5343,179 @@@ msgstr "
  #: src/ui/gui/data-editor.glade:611 src/ui/gui/output-viewer.glade:88
  #: src/ui/gui/syntax-editor.glade:243
  msgid "_Minimize All Windows"
 +msgstr "_Minimise All Windows"
 +
 +#: src/ui/gui/data-editor.glade:618
 +msgid "_Split"
  msgstr ""
  
 -#: src/ui/gui/data-editor.glade:622 src/ui/gui/output-viewer.glade:99
 +#: src/ui/gui/data-editor.glade:629 src/ui/gui/output-viewer.glade:99
  #: src/ui/gui/syntax-editor.glade:254
  msgid "_Help"
  msgstr ""
  
 -#: src/ui/gui/data-editor.glade:629 src/ui/gui/output-viewer.glade:106
 +#: src/ui/gui/data-editor.glade:636 src/ui/gui/output-viewer.glade:106
  #: src/ui/gui/syntax-editor.glade:262
  msgid "_Reference Manual"
  msgstr ""
  
 -#: src/ui/gui/data-editor.glade:636 src/ui/gui/output-viewer.glade:113
 +#: src/ui/gui/data-editor.glade:643 src/ui/gui/output-viewer.glade:113
  #: src/ui/gui/syntax-editor.glade:269
  msgid "_About"
  msgstr ""
  
 -#: src/ui/gui/data-editor.glade:680
 +#: src/ui/gui/data-editor.glade:687
  msgid "Print"
  msgstr ""
  
 -#: src/ui/gui/data-editor.glade:690
 +#: src/ui/gui/data-editor.glade:697
  msgid "Recall"
  msgstr ""
  
 -#: src/ui/gui/data-editor.glade:708
 +#: src/ui/gui/data-editor.glade:715
  msgid "Undo"
  msgstr ""
  
 -#: src/ui/gui/data-editor.glade:718
 +#: src/ui/gui/data-editor.glade:725
  msgid "Redo"
  msgstr ""
  
 -#: src/ui/gui/data-editor.glade:748
 +#: src/ui/gui/data-editor.glade:755
  msgid "Variables"
  msgstr ""
  
 -#: src/ui/gui/data-editor.glade:769
 +#: src/ui/gui/data-editor.glade:776
  msgid "Find"
  msgstr ""
  
 -#: src/ui/gui/data-editor.glade:821
 +#: src/ui/gui/data-editor.glade:828
  msgid "Split File"
  msgstr ""
  
 -#: src/ui/gui/data-editor.glade:832
 +#: src/ui/gui/data-editor.glade:839
  msgid "Weight Cases"
  msgstr ""
  
 -#: src/ui/gui/data-editor.glade:844
 +#: src/ui/gui/data-editor.glade:851
  msgid "Select Cases"
  msgstr ""
  
 -#: src/ui/gui/data-editor.glade:864 src/ui/gui/data-editor.glade:1452
 -#: src/ui/gui/data-editor.glade:1633
 +#: src/ui/gui/data-editor.glade:871 src/ui/gui/data-editor.glade:1459
 +#: src/ui/gui/data-editor.glade:1640
  msgid "Value Labels"
  msgstr ""
  
 -#: src/ui/gui/data-editor.glade:875
 +#: src/ui/gui/data-editor.glade:882
  msgid "Use Sets"
  msgstr ""
  
 -#: src/ui/gui/data-editor.glade:907
 +#: src/ui/gui/data-editor.glade:914
  msgid "Information Area"
  msgstr ""
  
 -#: src/ui/gui/data-editor.glade:926
 +#: src/ui/gui/data-editor.glade:933
  msgid "Processor Area"
  msgstr ""
  
 -#: src/ui/gui/data-editor.glade:951
 +#: src/ui/gui/data-editor.glade:958
  msgid "Case Counter Area"
  msgstr ""
  
 -#: src/ui/gui/data-editor.glade:976
 +#: src/ui/gui/data-editor.glade:983
  msgid "Filter Use Status Area"
  msgstr ""
  
 -#: src/ui/gui/data-editor.glade:1002
 +#: src/ui/gui/data-editor.glade:1009
  msgid "Weight Status Area"
  msgstr ""
  
 -#: src/ui/gui/data-editor.glade:1028
 +#: src/ui/gui/data-editor.glade:1035
  msgid "Split File Status Area"
  msgstr ""
  
 -#: src/ui/gui/data-editor.glade:1058
 +#: src/ui/gui/data-editor.glade:1065
  msgid "Variable Type"
  msgstr ""
  
 -#: src/ui/gui/data-editor.glade:1094 src/ui/gui/psppire-var-store.c:599
 +#: src/ui/gui/data-editor.glade:1101 src/ui/gui/psppire-var-store.c:551
  msgid "Comma"
  msgstr ""
  
 -#: src/ui/gui/data-editor.glade:1110 src/ui/gui/psppire-var-store.c:600
 +#: src/ui/gui/data-editor.glade:1117 src/ui/gui/psppire-var-store.c:552
  msgid "Dot"
  msgstr ""
  
 -#: src/ui/gui/data-editor.glade:1126
 +#: src/ui/gui/data-editor.glade:1133
  msgid "Scientific notation"
  msgstr ""
  
 -#: src/ui/gui/data-editor.glade:1142 src/ui/gui/psppire-var-store.c:602
 +#: src/ui/gui/data-editor.glade:1149 src/ui/gui/psppire-var-store.c:554
  msgid "Date"
  msgstr ""
  
 -#: src/ui/gui/data-editor.glade:1158 src/ui/gui/psppire-var-store.c:603
 +#: src/ui/gui/data-editor.glade:1165 src/ui/gui/psppire-var-store.c:555
  msgid "Dollar"
  msgstr ""
  
 -#: src/ui/gui/data-editor.glade:1174
 +#: src/ui/gui/data-editor.glade:1181
  msgid "Custom currency"
  msgstr ""
  
 -#: src/ui/gui/data-editor.glade:1268
 +#: src/ui/gui/data-editor.glade:1275
  msgid "positive"
  msgstr ""
  
 -#: src/ui/gui/data-editor.glade:1274
 +#: src/ui/gui/data-editor.glade:1281
  msgid "negative"
  msgstr ""
  
 -#: src/ui/gui/data-editor.glade:1287
 +#: src/ui/gui/data-editor.glade:1294
  msgid "Sample"
  msgstr ""
  
 -#: src/ui/gui/data-editor.glade:1337
 +#: src/ui/gui/data-editor.glade:1344
  msgid "Width:"
  msgstr ""
  
 -#: src/ui/gui/data-editor.glade:1381
 +#: src/ui/gui/data-editor.glade:1388
  msgid "Decimal Places:"
  msgstr ""
  
 -#: src/ui/gui/data-editor.glade:1550
 +#: src/ui/gui/data-editor.glade:1557
  msgid "Value Label:"
  msgstr ""
  
- #: src/ui/gui/data-editor.glade:1570 src/ui/gui/psppire.glade:2544
 -#: src/ui/gui/data-editor.glade:1563 src/ui/gui/psppire.glade:2544
++#: src/ui/gui/data-editor.glade:1570 src/ui/gui/psppire.glade:2548
  #: src/ui/gui/recode.glade:185
  msgid "Value:"
  msgstr ""
  
- #: src/ui/gui/data-editor.glade:1707 src/ui/gui/examine.glade:423
 -#: src/ui/gui/data-editor.glade:1700 src/ui/gui/examine.glade:423
++#: src/ui/gui/data-editor.glade:1707 src/ui/gui/examine.glade:432
  #: src/ui/gui/t-test.glade:460
  msgid "Missing Values"
  msgstr ""
  
 -#: src/ui/gui/data-editor.glade:1718
 +#: src/ui/gui/data-editor.glade:1725
  msgid "_Range plus one optional discrete missing value"
  msgstr ""
  
 -#: src/ui/gui/data-editor.glade:1743
 +#: src/ui/gui/data-editor.glade:1750
  msgid "_Low:"
  msgstr ""
  
 -#: src/ui/gui/data-editor.glade:1772
 +#: src/ui/gui/data-editor.glade:1779
  msgid "_High:"
  msgstr ""
  
 -#: src/ui/gui/data-editor.glade:1813
 +#: src/ui/gui/data-editor.glade:1820
  msgid "Di_screte value:"
  msgstr ""
  
 -#: src/ui/gui/data-editor.glade:1860
 +#: src/ui/gui/data-editor.glade:1867
  msgid "_No missing values"
  msgstr ""
  
 -#: src/ui/gui/data-editor.glade:1878
 +#: src/ui/gui/data-editor.glade:1885
  msgid "_Discrete missing values"
  msgstr ""
  
@@@ -5542,40 -5323,40 +5547,40 @@@ msgstr "
  msgid "Options:"
  msgstr ""
  
--#: src/ui/gui/examine.glade:132
--msgid "Dependent List:"
++#: src/ui/gui/examine.glade:49
++msgid "Label Cases by:"
  msgstr ""
  
--#: src/ui/gui/examine.glade:180
++#: src/ui/gui/examine.glade:100
  msgid "Factor List:"
  msgstr ""
  
--#: src/ui/gui/examine.glade:218
--msgid "Label Cases by:"
++#: src/ui/gui/examine.glade:150
++msgid "Dependent List:"
  msgstr ""
  
--#: src/ui/gui/examine.glade:255 src/ui/gui/t-test.glade:69
++#: src/ui/gui/examine.glade:257 src/ui/gui/t-test.glade:69
  #: src/ui/gui/t-test.glade:629 src/ui/gui/t-test.glade:780
  msgid "Options..."
  msgstr ""
  
--#: src/ui/gui/examine.glade:316
++#: src/ui/gui/examine.glade:320
  msgid "Extremes"
  msgstr ""
  
--#: src/ui/gui/examine.glade:382
++#: src/ui/gui/examine.glade:388
  msgid "Exclude cases listwise"
  msgstr ""
  
--#: src/ui/gui/examine.glade:392
++#: src/ui/gui/examine.glade:399
  msgid "Exclude cases pairwise"
  msgstr ""
  
--#: src/ui/gui/examine.glade:406
++#: src/ui/gui/examine.glade:414
  msgid "Repeat values"
  msgstr ""
  
--#: src/ui/gui/find-dialog.c:659
++#: src/ui/gui/find-dialog.c:658
  #, c-format
  msgid "Bad regular expression: %s"
  msgstr ""
@@@ -5592,8 -5373,8 +5597,8 @@@ msgstr "
  msgid "Standard error of the kurtosis"
  msgstr ""
  
--#: src/ui/gui/frequencies.glade:98 src/ui/gui/psppire.glade:265
--#: src/ui/gui/rank.glade:67
++#: src/ui/gui/frequencies.glade:98 src/ui/gui/psppire.glade:277
++#: src/ui/gui/rank.glade:103
  msgid "Variable(s):"
  msgstr ""
  
@@@ -5629,77 -5410,61 +5634,77 @@@ msgstr "
  msgid "Maximum no of categories"
  msgstr ""
  
--#: src/ui/gui/helper.c:139
++#: src/ui/gui/helper.c:161
  msgid "Sorry. The help system hasn't yet been implemented."
  msgstr ""
  
--#: src/ui/gui/helper.c:165
++#: src/ui/gui/helper.c:187
  #, c-format
  msgid "Cannot open reference manual: %s"
  msgstr ""
  
 -#: src/ui/gui/message-dialog.c:101
 +#: src/ui/gui/main.c:42
 +msgid "Don't show the splash screen"
 +msgstr ""
 +
 +#: src/ui/gui/main.c:158
 +msgid "PSPPIRE --- A user interface for PSPP"
 +msgstr ""
 +
 +#: src/ui/gui/main.c:160
 +msgid "Miscellaneous options:"
 +msgstr ""
 +
 +#: src/ui/gui/main.c:162 src/ui/terminal/main.c:126
 +msgid "Options affecting syntax and behavior:"
 +msgstr "Options affecting syntax and behaviour:"
 +
- #: src/ui/gui/message-dialog.c:100
++#: src/ui/gui/message-dialog.c:99
  msgid "data file error"
  msgstr ""
  
- #: src/ui/gui/message-dialog.c:105
 -#: src/ui/gui/message-dialog.c:106
++#: src/ui/gui/message-dialog.c:104
  msgid "PSPP error"
  msgstr ""
  
- #: src/ui/gui/message-dialog.c:113
 -#: src/ui/gui/message-dialog.c:114
++#: src/ui/gui/message-dialog.c:112
  msgid "syntax warning"
  msgstr ""
  
- #: src/ui/gui/message-dialog.c:117
 -#: src/ui/gui/message-dialog.c:118
++#: src/ui/gui/message-dialog.c:116
  msgid "data file warning"
  msgstr ""
  
- #: src/ui/gui/message-dialog.c:122
 -#: src/ui/gui/message-dialog.c:123
++#: src/ui/gui/message-dialog.c:121
  msgid "PSPP warning"
  msgstr ""
  
- #: src/ui/gui/message-dialog.c:131
 -#: src/ui/gui/message-dialog.c:132
++#: src/ui/gui/message-dialog.c:130
  msgid "syntax information"
  msgstr ""
  
- #: src/ui/gui/message-dialog.c:135
 -#: src/ui/gui/message-dialog.c:136
++#: src/ui/gui/message-dialog.c:134
  msgid "data file information"
  msgstr ""
  
- #: src/ui/gui/message-dialog.c:140
 -#: src/ui/gui/message-dialog.c:141
++#: src/ui/gui/message-dialog.c:139
  msgid "PSPP information"
  msgstr ""
  
- #: src/ui/gui/message-dialog.c:216
 -#: src/ui/gui/message-dialog.c:209
++#: src/ui/gui/message-dialog.c:215
  msgid "The PSPP processing engine reported the following message:"
  msgid_plural "The PSPP processing engine reported the following messages:"
  msgstr[0] ""
  msgstr[1] ""
  
- #: src/ui/gui/message-dialog.c:223
 -#: src/ui/gui/message-dialog.c:216
++#: src/ui/gui/message-dialog.c:222
  #, c-format
  msgid "The PSPP processing engine reported %d message."
  msgid_plural "The PSPP processing engine reported %d messages."
  msgstr[0] ""
  msgstr[1] ""
  
- #: src/ui/gui/message-dialog.c:230
 -#: src/ui/gui/message-dialog.c:223
++#: src/ui/gui/message-dialog.c:229
  #, c-format
  msgid "%d of these messages are displayed below."
  msgid_plural "%d of these messages are displayed below."
@@@ -5817,43 -5582,38 +5822,43 @@@ msgstr "
  msgid "Paste"
  msgstr ""
  
- #: src/ui/gui/psppire.c:214
 -#: src/ui/gui/psppire.c:194
++#: src/ui/gui/psppire.c:226
  msgid "_Reset"
  msgstr ""
  
- #: src/ui/gui/psppire.c:215
 -#: src/ui/gui/psppire.c:195
++#: src/ui/gui/psppire.c:227
  msgid "_Select"
  msgstr ""
  
- #: src/ui/gui/psppire.c:251
 -#: src/ui/gui/psppire-data-editor.c:604
++#: src/ui/gui/psppire.c:263
 +#, c-format
 +msgid "Cannot open %s: %s.\n"
 +msgstr ""
 +
- #: src/ui/gui/psppire.c:268
++#: src/ui/gui/psppire.c:280
 +#, c-format
 +msgid "%s is neither a system nor portable file"
 +msgstr ""
 +
 +#: src/ui/gui/psppire-data-editor.c:946
  msgid "Data View"
  msgstr ""
  
 -#: src/ui/gui/psppire-data-editor.c:607
 +#: src/ui/gui/psppire-data-editor.c:949
  msgid "Variable View"
  msgstr ""
  
 -#: src/ui/gui/psppire-data-store.c:828
 +#: src/ui/gui/psppire-data-store.c:740
  msgid "var"
  msgstr ""
  
 -#: src/ui/gui/psppire-data-store.c:949 src/ui/gui/psppire-var-store.c:840
 -#, c-format
 -msgid "%ld"
 -msgstr ""
 -
--#: src/ui/gui/psppire.glade:11
++#: src/ui/gui/psppire.glade:10
  msgid ""
  "This is beta status software.  Please report bugs to bug-gnu-pspp@gnu.org"
  msgstr ""
  
--#: src/ui/gui/psppire.glade:73 src/ui/gui/psppire.glade:154
--#: src/ui/gui/weight-cases-dialog.c:80
++#: src/ui/gui/psppire.glade:72 src/ui/gui/psppire.glade:155
++#: src/ui/gui/weight-cases-dialog.c:79
  msgid "Do not weight cases"
  msgstr ""
  
  msgid "Weight cases by"
  msgstr ""
  
--#: src/ui/gui/psppire.glade:107
++#: src/ui/gui/psppire.glade:108
  msgid "Frequency Variable"
  msgstr ""
  
--#: src/ui/gui/psppire.glade:147
++#: src/ui/gui/psppire.glade:148
  msgid "Current Status: "
  msgstr ""
  
--#: src/ui/gui/psppire.glade:314
++#: src/ui/gui/psppire.glade:244
  msgid "Name Variable:"
  msgstr ""
  
  msgid "Analyze all cases.  Do not create groups."
  msgstr "Analyse all cases.  Do not create groups."
  
--#: src/ui/gui/psppire.glade:439
++#: src/ui/gui/psppire.glade:440
  msgid "Compare groups."
  msgstr ""
  
--#: src/ui/gui/psppire.glade:452
++#: src/ui/gui/psppire.glade:454
  msgid "Organize output by groups."
 -msgstr ""
 +msgstr "Organise output by groups."
  
--#: src/ui/gui/psppire.glade:499
++#: src/ui/gui/psppire.glade:502
  msgid "Groups based on:"
  msgstr ""
  
--#: src/ui/gui/psppire.glade:563
++#: src/ui/gui/psppire.glade:565
  msgid "Sort the file by grouping variables."
  msgstr ""
  
--#: src/ui/gui/psppire.glade:574
++#: src/ui/gui/psppire.glade:577
  msgid "File is already sorted."
  msgstr ""
  
--#: src/ui/gui/psppire.glade:618
++#: src/ui/gui/psppire.glade:622
  msgid "Current Status : "
  msgstr ""
  
--#: src/ui/gui/psppire.glade:626
++#: src/ui/gui/psppire.glade:630
  msgid "Analysis by groups is off"
  msgstr ""
  
--#: src/ui/gui/psppire.glade:725
++#: src/ui/gui/psppire.glade:729
  msgid "Sort by:"
  msgstr ""
  
--#: src/ui/gui/psppire.glade:788
++#: src/ui/gui/psppire.glade:792
  msgid "Descending"
  msgstr ""
  
--#: src/ui/gui/psppire.glade:804
++#: src/ui/gui/psppire.glade:809
  msgid "Sort Order"
  msgstr ""
  
--#: src/ui/gui/psppire.glade:873
++#: src/ui/gui/psppire.glade:878
  msgid "Target Variable:"
  msgstr ""
  
--#: src/ui/gui/psppire.glade:904
++#: src/ui/gui/psppire.glade:909
  msgid "Type & Label"
  msgstr ""
  
--#: src/ui/gui/psppire.glade:943
++#: src/ui/gui/psppire.glade:949
  msgid "="
  msgstr ""
  
--#: src/ui/gui/psppire.glade:989
++#: src/ui/gui/psppire.glade:995
  msgid "Numeric Expressions:"
  msgstr ""
  
--#: src/ui/gui/psppire.glade:1043
++#: src/ui/gui/psppire.glade:1049
  msgid "Functions:"
  msgstr ""
  
--#: src/ui/gui/psppire.glade:1107 src/ui/gui/psppire.glade:1253
++#: src/ui/gui/psppire.glade:1112 src/ui/gui/psppire.glade:1516
  #: src/ui/gui/recode.glade:731
  msgid "If..."
  msgstr ""
  
--#: src/ui/gui/psppire.glade:1223
--msgid "All Cases"
++#: src/ui/gui/psppire.glade:1345
++msgid "Use filter variable"
  msgstr ""
  
--#: src/ui/gui/psppire.glade:1239
--msgid "If condition is satisfied"
++#: src/ui/gui/psppire.glade:1398
++msgid "Based on time or case range"
  msgstr ""
  
--#: src/ui/gui/psppire.glade:1291
--msgid "Random sample of cases"
++#: src/ui/gui/psppire.glade:1411
++msgid "Range..."
  msgstr ""
  
--#: src/ui/gui/psppire.glade:1305
--msgid "Sample..."
++#: src/ui/gui/psppire.glade:1450
++msgid "Random sample of cases"
  msgstr ""
  
--#: src/ui/gui/psppire.glade:1343
--msgid "Based on time or case range"
++#: src/ui/gui/psppire.glade:1464
++msgid "Sample..."
  msgstr ""
  
--#: src/ui/gui/psppire.glade:1356
--msgid "Range..."
++#: src/ui/gui/psppire.glade:1502
++msgid "If condition is satisfied"
  msgstr ""
  
--#: src/ui/gui/psppire.glade:1394
--msgid "Use filter variable"
++#: src/ui/gui/psppire.glade:1551
++msgid "All Cases"
  msgstr ""
  
--#: src/ui/gui/psppire.glade:1556
++#: src/ui/gui/psppire.glade:1566
  msgid "Select"
  msgstr ""
  
--#: src/ui/gui/psppire.glade:1586
++#: src/ui/gui/psppire.glade:1595
  msgid "Filtered"
  msgstr ""
  
--#: src/ui/gui/psppire.glade:1596
++#: src/ui/gui/psppire.glade:1606
  msgid "Deleted"
  msgstr ""
  
--#: src/ui/gui/psppire.glade:1613
++#: src/ui/gui/psppire.glade:1624
  msgid "Unselected Cases Are"
  msgstr ""
  
--#: src/ui/gui/psppire.glade:1678
++#: src/ui/gui/psppire.glade:1689
  msgid "Comments:"
  msgstr ""
  
--#: src/ui/gui/psppire.glade:1720
++#: src/ui/gui/psppire.glade:1731
  msgid "Display comments in output"
  msgstr ""
  
--#: src/ui/gui/psppire.glade:1734
++#: src/ui/gui/psppire.glade:1746
  msgid "Column Number: 0"
  msgstr ""
  
--#: src/ui/gui/psppire.glade:1810
++#: src/ui/gui/psppire.glade:1822
  msgid "Variable Information:"
  msgstr ""
  
--#: src/ui/gui/psppire.glade:1836
--msgid ""
--"\n"
--"\n"
--"\n"
--"\n"
--"\n"
--"\n"
--"\n"
--"\n"
--"\n"
--"\n"
--msgstr ""
--
--#: src/ui/gui/psppire.glade:1900
--msgid "Observation"
++#: src/ui/gui/psppire.glade:1931
++msgid "First case"
  msgstr ""
  
--#: src/ui/gui/psppire.glade:1910
++#: src/ui/gui/psppire.glade:1944
  msgid "Last case"
  msgstr ""
  
--#: src/ui/gui/psppire.glade:1923
--msgid "First case"
++#: src/ui/gui/psppire.glade:1957
++msgid "Observation"
  msgstr ""
  
--#: src/ui/gui/psppire.glade:2081
++#: src/ui/gui/psppire.glade:2021
  msgid "Use expression as label"
  msgstr ""
  
- #: src/ui/gui/psppire.glade:2187 src/ui/gui/psppire-var-sheet.c:512
 -#: src/ui/gui/psppire.glade:2187 src/ui/gui/psppire-var-sheet.c:102
++#: src/ui/gui/psppire.glade:2147 src/ui/gui/psppire-var-sheet.c:512
 +#: src/ui/gui/psppire-var-store.c:765
  msgid "Width"
  msgstr ""
  
--#: src/ui/gui/psppire.glade:2274
++#: src/ui/gui/psppire.glade:2277
  msgid "Goto Case Number:"
  msgstr ""
  
--#: src/ui/gui/psppire.glade:2410
++#: src/ui/gui/psppire.glade:2414
  msgid "Sample Size"
  msgstr ""
  
--#: src/ui/gui/psppire.glade:2513
++#: src/ui/gui/psppire.glade:2517
  msgid "Variable:"
  msgstr ""
  
--#: src/ui/gui/psppire.glade:2570
++#: src/ui/gui/psppire.glade:2574
  msgid "Search value labels"
  msgstr ""
  
--#: src/ui/gui/psppire.glade:2593
++#: src/ui/gui/psppire.glade:2598
  msgid "Regular expression Match"
  msgstr ""
  
--#: src/ui/gui/psppire.glade:2603
++#: src/ui/gui/psppire.glade:2609
  msgid "Search substrings"
  msgstr ""
  
--#: src/ui/gui/psppire.glade:2615
++#: src/ui/gui/psppire.glade:2622
  msgid "Wrap around"
  msgstr ""
  
--#: src/ui/gui/psppire.glade:2627
++#: src/ui/gui/psppire.glade:2635
  msgid "Search backward"
  msgstr ""
  
 -#: src/ui/gui/psppire-var-sheet.c:100
 +#: src/ui/gui/psppire-var-sheet.c:510 src/ui/gui/psppire-var-store.c:763
  msgid "Name"
  msgstr ""
  
 -#: src/ui/gui/psppire-var-sheet.c:103
 +#: src/ui/gui/psppire-var-sheet.c:513 src/ui/gui/psppire-var-store.c:766
  msgid "Decimals"
  msgstr ""
  
 -#: src/ui/gui/psppire-var-sheet.c:105
 +#: src/ui/gui/psppire-var-sheet.c:515 src/ui/gui/psppire-var-store.c:768
  msgid "Values"
  msgstr ""
  
 -#: src/ui/gui/psppire-var-sheet.c:108
 +#: src/ui/gui/psppire-var-sheet.c:518 src/ui/gui/psppire-var-store.c:771
  msgid "Align"
  msgstr ""
  
 -#: src/ui/gui/psppire-var-sheet.c:109
 +#: src/ui/gui/psppire-var-sheet.c:519 src/ui/gui/psppire-var-store.c:772
  msgid "Measure"
  msgstr ""
  
 -#: src/ui/gui/psppire-var-store.c:601
 +#: src/ui/gui/psppire-var-store.c:553
  msgid "Scientific"
  msgstr ""
  
 -#: src/ui/gui/psppire-var-store.c:604
 +#: src/ui/gui/psppire-var-store.c:556
  msgid "Custom"
  msgstr ""
  
 -#: src/ui/gui/psppire-var-store.c:675 src/ui/gui/psppire-var-store.c:685
 -#: src/ui/gui/psppire-var-store.c:695
 -#, c-format
 -msgid "%d"
 -msgstr ""
 -
--#: src/ui/gui/rank.glade:111
++#: src/ui/gui/rank.glade:57
  msgid "By:"
  msgstr ""
  
--#: src/ui/gui/rank.glade:197
++#: src/ui/gui/rank.glade:196
  msgid "_Smallest Value"
  msgstr ""
  
--#: src/ui/gui/rank.glade:209
++#: src/ui/gui/rank.glade:208
  msgid "_Largest Value"
  msgstr ""
  
--#: src/ui/gui/rank.glade:228
++#: src/ui/gui/rank.glade:227
  msgid "Assign rank 1 to:"
  msgstr ""
  
--#: src/ui/gui/rank.glade:246
++#: src/ui/gui/rank.glade:245
  msgid "_Display summary tables"
  msgstr ""
  
--#: src/ui/gui/rank.glade:262
++#: src/ui/gui/rank.glade:261
  msgid "Rank T_ypes"
  msgstr ""
  
--#: src/ui/gui/rank.glade:273
++#: src/ui/gui/rank.glade:272
  msgid "_Ties..."
  msgstr ""
  
--#: src/ui/gui/rank.glade:343
--msgid "Ntiles"
++#: src/ui/gui/rank.glade:339
++msgid "Sum of case weights"
  msgstr ""
  
--#: src/ui/gui/rank.glade:376
--msgid "Rank"
++#: src/ui/gui/rank.glade:355
++msgid "Fractional rank as %"
  msgstr ""
  
--#: src/ui/gui/rank.glade:386
--msgid "Savage score"
++#: src/ui/gui/rank.glade:369
++msgid "Fractional rank"
  msgstr ""
  
--#: src/ui/gui/rank.glade:400
--msgid "Fractional rank"
++#: src/ui/gui/rank.glade:383
++msgid "Savage score"
  msgstr ""
  
--#: src/ui/gui/rank.glade:414
--msgid "Fractional rank as %"
++#: src/ui/gui/rank.glade:397
++msgid "Rank"
  msgstr ""
  
--#: src/ui/gui/rank.glade:428
--msgid "Sum of case weights"
++#: src/ui/gui/rank.glade:411
++msgid "Ntiles"
  msgstr ""
  
  #: src/ui/gui/rank.glade:450
@@@ -6157,63 -5922,63 +6148,63 @@@ msgstr "
  msgid "Normal Scores"
  msgstr ""
  
--#: src/ui/gui/rank.glade:495
++#: src/ui/gui/rank.glade:494
  msgid "Blom"
  msgstr ""
  
--#: src/ui/gui/rank.glade:506
++#: src/ui/gui/rank.glade:505
  msgid "Tukey"
  msgstr ""
  
--#: src/ui/gui/rank.glade:520
++#: src/ui/gui/rank.glade:519
  msgid "Rankit"
  msgstr ""
  
--#: src/ui/gui/rank.glade:534
++#: src/ui/gui/rank.glade:533
  msgid "Van der Wärden"
  msgstr ""
  
--#: src/ui/gui/rank.glade:551
++#: src/ui/gui/rank.glade:550
  msgid "Proportion Estimation Formula"
  msgstr ""
  
--#: src/ui/gui/rank.glade:614
++#: src/ui/gui/rank.glade:612
  msgid "_Mean"
  msgstr ""
  
--#: src/ui/gui/rank.glade:626
++#: src/ui/gui/rank.glade:624
  msgid "_Low"
  msgstr ""
  
--#: src/ui/gui/rank.glade:642
++#: src/ui/gui/rank.glade:640
  msgid "_High"
  msgstr ""
  
--#: src/ui/gui/rank.glade:660
++#: src/ui/gui/rank.glade:658
  msgid "_Sequential ranks to unique values"
  msgstr ""
  
--#: src/ui/gui/rank.glade:680
++#: src/ui/gui/rank.glade:678
  msgid "Rank Assigned to Ties"
  msgstr ""
  
--#: src/ui/gui/recode-dialog.c:879
++#: src/ui/gui/recode-dialog.c:878
  msgid "Recode into Different Variables"
  msgstr ""
  
--#: src/ui/gui/recode-dialog.c:882
++#: src/ui/gui/recode-dialog.c:881
  msgid "Recode into Same Variables"
  msgstr ""
  
--#: src/ui/gui/recode-dialog.c:913 src/ui/gui/recode-dialog.c:1015
++#: src/ui/gui/recode-dialog.c:912 src/ui/gui/recode-dialog.c:1014
  msgid "Old"
  msgstr ""
  
--#: src/ui/gui/recode-dialog.c:1274
++#: src/ui/gui/recode-dialog.c:1273
  msgid "Recode into Different Variables: Old and New Values "
  msgstr ""
  
--#: src/ui/gui/recode-dialog.c:1275
++#: src/ui/gui/recode-dialog.c:1274
  msgid "Recode into Same Variables: Old and New Values"
  msgstr ""
  
@@@ -6329,17 -6094,17 +6320,17 @@@ msgstr "
  msgid "Residuals"
  msgstr ""
  
--#: src/ui/gui/select-cases-dialog.c:81
++#: src/ui/gui/select-cases-dialog.c:80
  #, c-format
  msgid "Approximately %3d%% of all cases."
  msgstr ""
  
--#: src/ui/gui/select-cases-dialog.c:82
++#: src/ui/gui/select-cases-dialog.c:81
  #, c-format
  msgid "Exactly %3d cases from the first %3d cases."
  msgstr ""
  
--#: src/ui/gui/select-cases-dialog.c:222
++#: src/ui/gui/select-cases-dialog.c:221
  #, c-format
  msgid "%d thru %d"
  msgstr ""
@@@ -6459,11 -6224,11 +6450,11 @@@ msgid "You may choose below how much o
  msgstr ""
  
  #: src/ui/gui/text-data-import-dialog.c:1515
 -#: src/ui/gui/text-data-import-dialog.c:1759
 +#: src/ui/gui/text-data-import-dialog.c:1757
  msgid "This input line has too few separators to fill in this field."
  msgstr ""
  
 -#: src/ui/gui/text-data-import-dialog.c:1750
 +#: src/ui/gui/text-data-import-dialog.c:1748
  #, c-format
  msgid "Field content \"%.*s\" cannot be parsed in format %s."
  msgstr ""
@@@ -6646,44 -6411,44 +6637,44 @@@ msgstr "
  msgid "Confidence Interval: %2d %%"
  msgstr ""
  
--#: src/ui/gui/t-test-paired-samples.c:228
++#: src/ui/gui/t-test-paired-samples.c:227
  msgid "Var 1"
  msgstr ""
  
--#: src/ui/gui/t-test-paired-samples.c:229
++#: src/ui/gui/t-test-paired-samples.c:228
  msgid "Var 2"
  msgstr ""
  
--#: src/ui/gui/variable-info-dialog.c:89
++#: src/ui/gui/variable-info-dialog.c:88
  #, c-format
  msgid "Label: %s\n"
  msgstr ""
  
--#: src/ui/gui/variable-info-dialog.c:98
++#: src/ui/gui/variable-info-dialog.c:97
  #, c-format
  msgid "Type: %s\n"
  msgstr ""
  
--#: src/ui/gui/variable-info-dialog.c:102
++#: src/ui/gui/variable-info-dialog.c:101
  #, c-format
  msgid "Missing Values: %s\n"
  msgstr ""
  
--#: src/ui/gui/variable-info-dialog.c:107
++#: src/ui/gui/variable-info-dialog.c:106
  #, c-format
  msgid "Measurement Level: %s\n"
  msgstr ""
  
--#: src/ui/gui/variable-info-dialog.c:121
++#: src/ui/gui/variable-info-dialog.c:120
  msgid "Value Labels:\n"
  msgstr ""
  
--#: src/ui/gui/variable-info-dialog.c:133
++#: src/ui/gui/variable-info-dialog.c:132
  #, c-format
  msgid "%s %s\n"
  msgstr ""
  
--#: src/ui/gui/weight-cases-dialog.c:86
++#: src/ui/gui/weight-cases-dialog.c:85
  #, c-format
  msgid "Weight cases by %s"
  msgstr ""
@@@ -6718,62 -6483,60 +6709,62 @@@ msgstr "
  msgid "%s --- PSPP Output"
  msgstr ""
  
 -#: src/ui/terminal/command-line.c:230
 -#, c-format
 +#: src/ui/source-init-opts.c:42
  msgid ""
 -"PSPP, a program for statistical analysis of sample data.\n"
 -"\n"
 -"Usage: %s [OPTION]... FILE...\n"
 -"\n"
 -"If a long option shows an argument as mandatory, then it is mandatory\n"
 -"for the equivalent short option also.  Similarly for optional arguments.\n"
 -"\n"
 -"Configuration:\n"
 -"  -a, --algorithm={compatible|enhanced}\n"
 -"                            set to `compatible' if you want output\n"
 -"                            calculated from broken algorithms\n"
 -"  -B, --config-dir=DIR      set configuration directory to DIR\n"
 -"  -o, --device=DEVICE       select output driver DEVICE and disable "
 -"defaults\n"
 -"\n"
 -"Input and output:\n"
 -"  -e, --error-file=FILE     send error messages to FILE (appended)\n"
 -"  -f, --out-file=FILE       send output to FILE (overwritten)\n"
 -"  -p, --pipe                read syntax from stdin, send output to stdout\n"
 -"  -I-, --no-include         clear include path\n"
 -"  -I, --include=DIR         append DIR to include path\n"
 -"\n"
 -"Language modifiers:\n"
 -"  -i, --interactive         interpret syntax in interactive mode\n"
 -"  -n, --edit                just check syntax; don't actually run the code\n"
 -"  -r, --no-statrc           disable execution of .pspp/rc at startup\n"
 -"  -s, --safer               don't allow some unsafe operations\n"
 -"  -x, --syntax={compatible|enhanced}\n"
 -"                            set to `compatible' if you want only to accept\n"
 -"                            spss compatible syntax\n"
 -"\n"
 -"Informative output:\n"
 -"  -h, --help                print this help, then exit\n"
 -"  -l, --list                print a list of known driver classes, then exit\n"
 -"  -V, --version             show PSPP version, then exit\n"
 -"  -v, --verbose             increments verbosity level\n"
 -"\n"
 -"Non-option arguments:\n"
 -" FILE                       syntax file to execute\n"
 -" KEY=VALUE                  overrides macros in output initialization file\n"
 -"\n"
 +"set to `compatible' if you want output calculated from broken algorithms"
 +msgstr ""
 +
 +#: src/ui/source-init-opts.c:43
 +msgid "Append DIR to include path"
 +msgstr ""
 +
 +#: src/ui/source-init-opts.c:44
 +msgid "Clear include path"
 +msgstr ""
 +
 +#: src/ui/source-init-opts.c:45
 +msgid "Disable execution of .pspp/rc at startup"
 +msgstr ""
 +
 +#: src/ui/source-init-opts.c:46
 +msgid "Set configuration directory to DIR"
  msgstr ""
  
 -#: src/ui/terminal/command-line.c:265
 +#: src/ui/source-init-opts.c:47
 +msgid "Don't allow some unsafe operations"
 +msgstr ""
 +
 +#: src/ui/source-init-opts.c:48
 +msgid "Set to `compatible' if you want only to accept SPSS compatible syntax"
 +msgstr ""
 +
 +#: src/ui/source-init-opts.c:83
  #, c-format
 -msgid ""
 -"\n"
 -"Report bugs to <%s>.\n"
 +msgid "Algorithm must be either \"compatible\" or \"enhanced\"."
 +msgstr ""
 +
 +#: src/ui/source-init-opts.c:124
 +#, c-format
 +msgid "Syntax must be either \"compatible\" or \"enhanced\"."
 +msgstr ""
 +
 +#: src/ui/terminal/main.c:116
 +msgid "PSPP --- A program for statistical analysis"
 +msgstr ""
 +
 +#: src/ui/terminal/main.c:117
 +msgid "FILE1, FILE2 ... FILEn"
 +msgstr ""
 +
 +#: src/ui/terminal/main.c:120 src/ui/terminal/terminal-opts.c:177
 +msgid "Options affecting input and output locations:"
  msgstr ""
  
 -#: src/ui/terminal/main.c:130
 +#: src/ui/terminal/main.c:123
 +msgid "Diagnositic options:"
 +msgstr ""
 +
 +#: src/ui/terminal/main.c:157
  msgid ""
  "Stopping syntax file processing here to avoid a cascade of dependent command "
  "failures."
@@@ -6811,30 -6574,6 +6802,30 @@@ msgstr "
  msgid "could not access definition for terminal `%s'"
  msgstr ""
  
 +#: src/ui/terminal/terminal-opts.c:41
 +msgid "Increase diagnostic verbosity level"
 +msgstr ""
 +
 +#: src/ui/terminal/terminal-opts.c:68
 +msgid "Send error messages to FILE (appended)"
 +msgstr ""
 +
 +#: src/ui/terminal/terminal-opts.c:71
 +msgid "Select output driver DEVICE and disable defaults"
 +msgstr ""
 +
 +#: src/ui/terminal/terminal-opts.c:74
 +msgid "Print a list of known driver classes, then exit"
 +msgstr ""
 +
 +#: src/ui/terminal/terminal-opts.c:76
 +msgid "Start an interactive session"
 +msgstr ""
 +
 +#: src/ui/terminal/terminal-opts.c:178
 +msgid "Diagnostic options:"
 +msgstr ""
 +
  #~ msgid ""
  #~ "   This program is free software: you can redistribute it and/or modify\n"
  #~ "   it under the terms of the GNU General Public License as published by\n"
diff --combined src/language/command.def
index e06261f94cdf89ac17e8c04c6bacff26b885f792,ccf4c5560c1450a3109f66ec51083c335a2454ec..f87747d892e8d9566da798936f243ad0fdd46ec1
@@@ -40,14 -40,11 +40,14 @@@ DEF_CMD (S_ANY, 0, "SYSFILE INFO", cmd_
  DEF_CMD (S_ANY, F_KEEP_FINAL_TOKEN, "TITLE", cmd_title)
  
  /* Commands that define (or replace) the active file. */
 +DEF_CMD (S_INITIAL | S_DATA, 0, "ADD FILES", cmd_add_files)
  DEF_CMD (S_INITIAL | S_DATA | S_INPUT_PROGRAM | S_FILE_TYPE, 0, "DATA LIST", cmd_data_list)
  DEF_CMD (S_INITIAL | S_DATA, 0, "GET", cmd_get)
  DEF_CMD (S_INITIAL | S_DATA, 0, "GET DATA", cmd_get_data)
  DEF_CMD (S_INITIAL | S_DATA, 0, "IMPORT", cmd_import)
  DEF_CMD (S_INITIAL | S_DATA, 0, "INPUT PROGRAM", cmd_input_program)
 +DEF_CMD (S_INITIAL | S_DATA, 0, "MATCH FILES", cmd_match_files)
 +DEF_CMD (S_INITIAL | S_DATA, 0, "UPDATE", cmd_update)
  
  /* Transformations and utilities that may appear after active
     file definition or within INPUT PROGRAM. */
@@@ -56,7 -53,6 +56,7 @@@ DEF_CMD (S_DATA | S_INPUT_PROGRAM, 0, "
  DEF_CMD (S_DATA | S_INPUT_PROGRAM, 0, "APPLY DICTIONARY", cmd_apply_dictionary)
  DEF_CMD (S_DATA | S_INPUT_PROGRAM, 0, "BREAK", cmd_break)
  DEF_CMD (S_DATA | S_INPUT_PROGRAM, 0, "COMPUTE", cmd_compute)
 +DEF_CMD (S_DATA | S_INPUT_PROGRAM, 0, "DATAFILE ATTRIBUTE", cmd_datafile_attribute)
  DEF_CMD (S_DATA | S_INPUT_PROGRAM, 0, "DISPLAY", cmd_display)
  DEF_CMD (S_DATA | S_INPUT_PROGRAM, F_KEEP_FINAL_TOKEN, "DOCUMENT", cmd_document)
  DEF_CMD (S_DATA | S_INPUT_PROGRAM, 0, "DO IF", cmd_do_if)
@@@ -83,7 -79,6 +83,7 @@@ DEF_CMD (S_DATA | S_INPUT_PROGRAM, 0, "
  DEF_CMD (S_DATA | S_INPUT_PROGRAM, 0, "STRING", cmd_string)
  DEF_CMD (S_DATA | S_INPUT_PROGRAM, 0, "VALUE LABELS", cmd_value_labels)
  DEF_CMD (S_DATA | S_INPUT_PROGRAM, 0, "VARIABLE ALIGNMENT", cmd_variable_alignment)
 +DEF_CMD (S_DATA | S_INPUT_PROGRAM, 0, "VARIABLE ATTRIBUTE", cmd_variable_attribute)
  DEF_CMD (S_DATA | S_INPUT_PROGRAM, 0, "VARIABLE LABELS", cmd_variable_labels)
  DEF_CMD (S_DATA | S_INPUT_PROGRAM, 0, "VARIABLE LEVEL", cmd_variable_level)
  DEF_CMD (S_DATA | S_INPUT_PROGRAM, 0, "VARIABLE WIDTH", cmd_variable_width)
@@@ -98,7 -93,6 +98,6 @@@ DEF_CMD (S_DATA | S_INPUT_PROGRAM, 0, "
  DEF_CMD (S_DATA, 0, "AGGREGATE", cmd_aggregate)
  DEF_CMD (S_DATA, 0, "AUTORECODE", cmd_autorecode)
  DEF_CMD (S_DATA, F_KEEP_FINAL_TOKEN, "BEGIN DATA", cmd_begin_data)
- DEF_CMD (S_DATA, 0, "CORRELATIONS", cmd_correlations)
  DEF_CMD (S_DATA, 0, "COUNT", cmd_count)
  DEF_CMD (S_DATA, 0, "CROSSTABS", cmd_crosstabs)
  DEF_CMD (S_DATA, 0, "DELETE VARIABLES", cmd_delete_variables)
@@@ -110,14 -104,13 +109,13 @@@ DEF_CMD (S_DATA, 0, "FILTER", cmd_filte
  DEF_CMD (S_DATA, 0, "FLIP", cmd_flip)
  DEF_CMD (S_DATA, 0, "FREQUENCIES", cmd_frequencies)
  DEF_CMD (S_DATA, 0, "LIST", cmd_list)
 -DEF_CMD (S_DATA, 0, "MATCH FILES", cmd_match_files)
  DEF_CMD (S_DATA, 0, "MEANS", cmd_means)
  DEF_CMD (S_DATA, 0, "MODIFY VARS", cmd_modify_vars)
  DEF_CMD (S_DATA, 0, "NPAR TESTS", cmd_npar_tests)
  DEF_CMD (S_DATA, 0, "ONEWAY", cmd_oneway)
- DEF_CMD (S_DATA, 0, "PEARSON CORRELATIONS", cmd_correlations)
  DEF_CMD (S_DATA, 0, "RANK", cmd_rank)
  DEF_CMD (S_DATA, 0, "REGRESSION", cmd_regression)
 +DEF_CMD (S_DATA, 0, "RELIABILITY", cmd_reliability)
  DEF_CMD (S_DATA, 0, "RENAME VARIABLES", cmd_rename_variables)
  DEF_CMD (S_DATA, 0, "SAMPLE", cmd_sample)
  DEF_CMD (S_DATA, 0, "SAVE", cmd_save)
@@@ -146,6 -139,7 +144,6 @@@ DEF_CMD (S_ANY, F_TESTING, "DEBUG XFOR
  /* Unimplemented commands. */
  UNIMPL_CMD ("2SLS", "Two stage least squares regression")
  UNIMPL_CMD ("ACF", "Autocorrelation function")
 -UNIMPL_CMD ("ADD FILES", "Add files to dictionary")
  UNIMPL_CMD ("ALSCAL", "Multidimensional scaling")
  UNIMPL_CMD ("ANACOR", "Correspondence analysis")
  UNIMPL_CMD ("ANOVA", "Factorial analysis of variance")
@@@ -157,6 -151,7 +155,7 @@@ UNIMPL_CMD ("CCF", "Time series cross c
  UNIMPL_CMD ("CLEAR TRANSFORMATIONS", "Clears transformations from active file")
  UNIMPL_CMD ("CLUSTER", "Hierachial clustering")
  UNIMPL_CMD ("CONJOINT", "Analyse full concept data")
+ UNIMPL_CMD ("CORRELATIONS", "Correlation coefficients")
  UNIMPL_CMD ("CORRESPONDENCE", "Show correspondence")
  UNIMPL_CMD ("COXREG", "Cox proportional hazards regression")
  UNIMPL_CMD ("CREATE", "Create time series data")
@@@ -168,6 -163,7 +167,6 @@@ UNIMPL_CMD ("CSSELECT", "Select comple
  UNIMPL_CMD ("CSTABULATE", "Tabulate complex samples")
  UNIMPL_CMD ("CTABLES", "Display complex samples")
  UNIMPL_CMD ("CURVEFIT", "Fit curve to line plot")
 -UNIMPL_CMD ("DATAFILE ATTRIBUTE", "User defined datafile attributes")
  UNIMPL_CMD ("DATASET", "Alternate data set")
  UNIMPL_CMD ("DATE", "Create time series data")
  UNIMPL_CMD ("DEFINE", "Syntax macros")
@@@ -217,6 -213,7 +216,7 @@@ UNIMPL_CMD ("ORTHOPLAN", "Orthogonal ef
  UNIMPL_CMD ("OVERALS", "Nonlinear canonical correlation")
  UNIMPL_CMD ("PACF", "Partial autocorrelation")
  UNIMPL_CMD ("PARTIAL CORR", "Partial correlation")
+ UNIMPL_CMD ("PEARSON CORRELATIONS", "Correlation coefficients")
  UNIMPL_CMD ("PLANCARDS", "Conjoint analysis planning")
  UNIMPL_CMD ("PLUM", "Estimate ordinal regression models")
  UNIMPL_CMD ("POINT", "Marker in keyed file")
@@@ -234,6 -231,7 +234,6 @@@ UNIMPL_CMD ("RATIO STATISTICS", "Descri
  UNIMPL_CMD ("READ MODEL", "Read new model")
  UNIMPL_CMD ("RECORD TYPE", "Defines a type of record within FILE TYPE")
  UNIMPL_CMD ("REFORMAT", "Read obsolete files")
 -UNIMPL_CMD ("RELIABILITY", "Reliability estimates")
  UNIMPL_CMD ("REPEATING DATA", "Specify multiple cases per input record")
  UNIMPL_CMD ("REPORT", "Pretty print working file")
  UNIMPL_CMD ("RESTORE", "Restore settings")
@@@ -257,6 -255,7 +257,6 @@@ UNIMPL_CMD ("TSPLOT", "Plot time sequen
  UNIMPL_CMD ("TWOSTEP CLUSTER", "Cluster observations")
  UNIMPL_CMD ("UNIANOVA", "Univariate analysis")
  UNIMPL_CMD ("UNNUMBERED", "obsolete")
 -UNIMPL_CMD ("UPDATE", "Update working file")
  UNIMPL_CMD ("VALIDATEDATA", "Identify suspicious cases")
  UNIMPL_CMD ("VARCOMP", "Estimate variance")
  UNIMPL_CMD ("VARSTOCASES", "Restructure complex data")
index 60d2faee8b7348c2ffa26f2b911ea705b78b5866,e16c8dc2a04b30553df92d27998bf5f8bcac4938..68d11e307e0ff41584d1ffae0ef4abd6d8c9ff74
@@@ -1,5 -1,5 +1,5 @@@
  /* PSPP - a program for statistical analysis.
 -   Copyright (C) 1997-9, 2000, 2006 Free Software Foundation, Inc.
 +   Copyright (C) 1997-9, 2000, 2006, 2009 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
@@@ -177,8 -177,8 +177,8 @@@ static struct pool *pl_col;        /* For colu
  
  static int internal_cmd_crosstabs (struct lexer *lexer, struct dataset *ds);
  static void precalc (struct casereader *, const struct dataset *);
 -static void calc_general (struct ccase *, const struct dataset *);
 -static void calc_integer (struct ccase *, const struct dataset *);
 +static void calc_general (const struct ccase *, const struct dataset *);
 +static void calc_integer (const struct ccase *, const struct dataset *);
  static void postcalc (void);
  static void submit (struct tab_table *);
  
@@@ -305,16 -305,16 +305,16 @@@ internal_cmd_crosstabs (struct lexer *l
    grouper = casegrouper_create_splits (input, dataset_dict (ds));
    while (casegrouper_get_next_group (grouper, &group))
      {
 -      struct ccase c;
 +      struct ccase *c;
  
        precalc (group, ds);
  
 -      for (; casereader_read (group, &c); case_destroy (&c))
 +      for (; (c = casereader_read (group)) != NULL; case_unref (c))
          {
            if (mode == GENERAL)
 -            calc_general (&c, ds);
 +            calc_general (c, ds);
            else
 -            calc_integer (&c, ds);
 +            calc_integer (c, ds);
          }
        casereader_destroy (group);
  
@@@ -518,13 -518,12 +518,13 @@@ static unsigned hash_table_entry (cons
  static void
  precalc (struct casereader *input, const struct dataset *ds)
  {
 -  struct ccase c;
 +  struct ccase *c;
  
 -  if (casereader_peek (input, 0, &c))
 +  c = casereader_peek (input, 0);
 +  if (c != NULL)
      {
 -      output_split_file_values (ds, &c);
 -      case_destroy (&c);
 +      output_split_file_values (ds, c);
 +      case_unref (c);
      }
  
    if (mode == GENERAL)
  
  /* Form crosstabulations for general mode. */
  static void
 -calc_general (struct ccase *c, const struct dataset *ds)
 +calc_general (const struct ccase *c, const struct dataset *ds)
  {
    /* Missing values to exclude. */
    enum mv_class exclude = (cmd.miss == CRS_TABLE ? MV_ANY
  }
  
  static void
 -calc_integer (struct ccase *c, const struct dataset *ds)
 +calc_integer (const struct ccase *c, const struct dataset *ds)
  {
    bool bad_warn = true;
  
@@@ -1675,7 -1674,7 +1675,7 @@@ enum_var_values (struct table_entry **e
  
    if (mode == GENERAL)
      {
-       int width = var_get_width (v);
+       int width = MIN (var_get_width (v), MAX_SHORT_STRING);
        int i;
  
        *values = xnmalloc (entry_cnt, sizeof **values);
@@@ -2456,7 -2455,7 +2456,7 @@@ calc_r (double *X, double *Y, double *r
    for (sum_Xr = sum_X2r = 0., i = 0; i < n_rows; i++)
      {
        sum_Xr += X[i] * row_tot[i];
 -      sum_X2r += X[i] * X[i] * row_tot[i];
 +      sum_X2r += pow2 (X[i]) * row_tot[i];
      }
    Xbar = sum_Xr / W;
  
    Ybar = sum_Yc / W;
  
    S = sum_XYf - sum_Xr * sum_Yc / W;
 -  SX = sum_X2r - sum_Xr * sum_Xr / W;
 -  SY = sum_Y2c - sum_Yc * sum_Yc / W;
 +  SX = sum_X2r - pow2 (sum_Xr) / W;
 +  SY = sum_Y2c - pow2 (sum_Yc) / W;
    T = sqrt (SX * SY);
    *r = S / T;
 -  *ase_0 = sqrt ((sum_X2Y2f - (sum_XYf * sum_XYf) / W) / (sum_X2r * sum_Y2c));
 +  *ase_0 = sqrt ((sum_X2Y2f - pow2 (sum_XYf) / W) / (sum_X2r * sum_Y2c));
  
    {
      double s, c, y, t;
@@@ -2562,9 -2561,9 +2562,9 @@@ calc_symmetric (double v[N_SYMMETRIC], 
  
        Dr = Dc = W * W;
        for (r = 0; r < n_rows; r++)
 -        Dr -= row_tot[r] * row_tot[r];
 +        Dr -= pow2 (row_tot[r]);
        for (c = 0; c < n_cols; c++)
 -        Dc -= col_tot[c] * col_tot[c];
 +        Dc -= pow2 (col_tot[c]);
        }
  
        {
@@@ -3073,10 -3072,10 +3073,10 @@@ calc_directional (double v[N_DIRECTIONA
            }
  
        for (sum_ri2 = 0., i = 0; i < n_rows; i++)
 -        sum_ri2 += row_tot[i] * row_tot[i];
 +        sum_ri2 += pow2 (row_tot[i]);
  
        for (sum_cj2 = 0., j = 0; j < n_cols; j++)
 -        sum_cj2 += col_tot[j] * col_tot[j];
 +        sum_cj2 += pow2 (col_tot[j]);
  
        v[3] = (W * sum_fij2_ci - sum_ri2) / (W * W - sum_ri2);
        v[4] = (W * sum_fij2_ri - sum_cj2) / (W * W - sum_cj2);
        for (sum_Xr = sum_X2r = 0., i = 0; i < n_rows; i++)
          {
            sum_Xr += rows[i].f * row_tot[i];
 -          sum_X2r += rows[i].f * rows[i].f * row_tot[i];
 +          sum_X2r += pow2 (rows[i].f) * row_tot[i];
          }
 -      SX = sum_X2r - sum_Xr * sum_Xr / W;
 +      SX = sum_X2r - pow2 (sum_Xr) / W;
  
        for (SXW = 0., j = 0; j < n_cols; j++)
          {
  
            for (cum = 0., i = 0; i < n_rows; i++)
              {
 -              SXW += rows[i].f * rows[i].f * mat[j + i * n_cols];
 +              SXW += pow2 (rows[i].f) * mat[j + i * n_cols];
                cum += rows[i].f * mat[j + i * n_cols];
              }
  
        for (sum_Yc = sum_Y2c = 0., i = 0; i < n_cols; i++)
          {
            sum_Yc += cols[i].f * col_tot[i];
 -          sum_Y2c += cols[i].f * cols[i].f * col_tot[i];
 +          sum_Y2c += pow2 (cols[i].f) * col_tot[i];
          }
        SY = sum_Y2c - sum_Yc * sum_Yc / W;
  
  
            for (cum = 0., j = 0; j < n_cols; j++)
              {
 -              SYW += cols[j].f * cols[j].f * mat[j + i * n_cols];
 +              SYW += pow2 (cols[j].f) * mat[j + i * n_cols];
                cum += cols[j].f * mat[j + i * n_cols];
              }
  
index 8e69dab50c6260f63795d569c910ab48cd743c47,f3c87779787188ad986e2be99cdb16d335c9354f..fe98aeb87f3347b82b61853adc70360cee87f132
@@@ -16,7 -16,9 +16,9 @@@
  
  #include <config.h>
  #include <ctype.h>
+ #include <errno.h>
  #include <stdlib.h>
+ #include <string.h>
  #include <language/command.h>
  #include <libpspp/message.h>
  #include <libpspp/getl.h>
@@@ -26,6 -28,7 +28,6 @@@
  #include <data/file-name.h>
  
  #include "dirname.h"
 -#include "canonicalize.h"
  #include "xalloc.h"
  
  #include "gettext.h"
@@@ -190,7 -193,15 +192,14 @@@ parse_insert (struct lexer *lexer, cha
        return CMD_FAILURE;
      }
  
 -  *filename = canonicalize_file_name (relative_filename);
 +  *filename = relative_filename;
+   if (*filename == NULL) 
+     {
+       msg (SE, _("Unable to open `%s': %s."),
+            relative_filename, strerror (errno));
+       free (relative_filename);
+       return CMD_FAILURE;
+     }
 -  free (relative_filename);
  
    return CMD_SUCCESS;
  }
diff --combined src/libpspp/automake.mk
index 0c20643bbc71908cd818b1d1de81d9430ba40539,b4fa926edd8cf3969c48070b93a1e95488102f42..292068ec7dbad12612104bf1fae106b2bebcbfd4
@@@ -1,9 -1,9 +1,9 @@@
  ## Process this file with automake to produce Makefile.in  -*- makefile -*-
  
  
 -noinst_LIBRARIES += src/libpspp/libpspp.a
 +noinst_LTLIBRARIES += src/libpspp/libpspp.la
  
 -src_libpspp_libpspp_a_SOURCES = \
 +src_libpspp_libpspp_la_SOURCES = \
        src/libpspp/abt.c \
        src/libpspp/abt.h \
        src/libpspp/array.c \
        src/libpspp/freaderror.h \
        src/libpspp/getl.c \
        src/libpspp/getl.h \
 +      src/libpspp/hash-functions.c \
 +      src/libpspp/hash-functions.h \
        src/libpspp/hash.c \
        src/libpspp/hash.h \
        src/libpspp/heap.c \
        src/libpspp/heap.h \
 +      src/libpspp/hmap.c \
 +      src/libpspp/hmap.h \
 +      src/libpspp/hmapx.c \
 +      src/libpspp/hmapx.h \
        src/libpspp/i18n.c \
        src/libpspp/i18n.h \
        src/libpspp/integer-format.c \
@@@ -47,6 -41,8 +47,6 @@@
        src/libpspp/message.h \
        src/libpspp/misc.c \
        src/libpspp/misc.h \
 -      src/libpspp/model-checker.c \
 -      src/libpspp/model-checker.h \
        src/libpspp/msg-locator.c \
        src/libpspp/msg-locator.h \
        src/libpspp/pool.c \
  
  DISTCLEANFILES+=src/libpspp/version.c
  
 -src_libpspp_libpspp_a_CPPFLAGS = -I $(top_srcdir)/src/libpspp $(AM_CPPFLAGS)
 +src_libpspp_libpspp_la_CPPFLAGS = -I $(top_srcdir)/src/libpspp $(AM_CPPFLAGS)
  
 -nodist_src_libpspp_libpspp_a_SOURCES = src/libpspp/version.c
 +nodist_src_libpspp_libpspp_la_SOURCES = src/libpspp/version.c
  
- src/libpspp/version.c: $(top_srcdir)/AUTHORS
+ src/libpspp/version.c: $(top_srcdir)/AUTHORS Makefile
        @$(MKDIR_P) src/libpspp
        echo "/*        -*- mode: c; buffer-read-only: t -*-" > $@
        echo "   Generated by src/libpspp/automake.mk --- Do not edit. */">> $@
diff --combined src/ui/gui/automake.mk
index af880fc3052ec6f72d11472fbe26c0dfdf17652a,8dabffbf695e643da35d7e63c5dfcf390ea1b2ab..2183e4e8af619cb69eeaeaf4749f0efab242adc9
@@@ -1,17 -1,17 +1,18 @@@
  ## Process this file with automake to produce Makefile.in  -*- makefile -*-
  
 +include $(top_srcdir)/src/ui/gui/sheet/automake.mk
 +
  bin_PROGRAMS += src/ui/gui/psppire 
  
  src_ui_gui_psppire_CFLAGS = $(GTK_CFLAGS) $(GLADE_CFLAGS) -Wall \
 -      -DINSTALLDIR=\"$(bindir)\"
 +      -DINSTALLDIR=\"$(bindir)\" -DGDK_MULTIHEAD_SAFE=1
  
  
  src_ui_gui_psppire_LDFLAGS = \
+       $(PSPPIRE_LDFLAGS) \
        $(PG_LDFLAGS)
  
  
 -
  if RELOCATABLE_VIA_LD
  src_ui_gui_psppire_LDFLAGS += `$(RELOCATABLE_LDFLAGS) $(bindir)`
  else
@@@ -53,47 -53,39 +54,47 @@@ src_ui_gui_libpsppire_la_SOURCES = 
  src_ui_gui_psppire_LDADD = \
        -dlopen src/ui/gui/libpsppire.la \
        src/ui/gui/libpsppwidgets.la \
 -      lib/gtksheet/libgtksheet.a \
 -      src/language/liblanguage.a \
 -      src/ui/libuicommon.a \
 -      src/output/charts/libcharts.a \
 -      src/output/liboutput.a \
 -      src/math/libpspp_math.a  \
 -      lib/linreg/liblinreg.a  \
 -      src/data/libdata.a \
 -      src/libpspp/libpspp.a \
 +        src/ui/gui/sheet/libsheet.la \
 +      lib/gtk-contrib/libgtksheet.a \
 +      src/ui/libuicommon.la \
 +      src/libpspp.la \
 +      src/libpspp-core.la \
        $(GTK_LIBS) \
        $(GLADE_LIBS) \
 -      $(PG_LIBS) \
 -      gl/libgl.la \
 -      @LIBINTL@ @LIBREADLINE@
 +      @LIBINTL@
  
  src_ui_gui_psppiredir = $(pkgdatadir)
  
 -dist_src_ui_gui_psppire_DATA = \
 -      $(top_srcdir)/src/ui/gui/data-editor.glade \
 -      $(top_srcdir)/src/ui/gui/descriptives-dialog.glade \
 -      $(top_srcdir)/src/ui/gui/examine.glade \
 +nodist_src_ui_gui_psppire_DATA = \
 +      $(top_builddir)/src/ui/gui/crosstabs.ui \
 +      $(top_builddir)/src/ui/gui/examine.ui \
 +      $(top_builddir)/src/ui/gui/frequencies.ui \
 +      $(top_builddir)/src/ui/gui/message-dialog.ui \
 +      $(top_builddir)/src/ui/gui/psppire.ui \
 +      $(top_builddir)/src/ui/gui/oneway.ui \
 +      $(top_builddir)/src/ui/gui/rank.ui \
 +      $(top_builddir)/src/ui/gui/recode.ui \
 +      $(top_builddir)/src/ui/gui/regression.ui \
 +      $(top_builddir)/src/ui/gui/t-test.ui
 +
 +EXTRA_DIST += \
        $(top_srcdir)/src/ui/gui/crosstabs.glade \
 +      $(top_srcdir)/src/ui/gui/examine.glade \
        $(top_srcdir)/src/ui/gui/frequencies.glade \
        $(top_srcdir)/src/ui/gui/message-dialog.glade \
 -      $(top_srcdir)/src/ui/gui/oneway.glade \
 -      $(top_srcdir)/src/ui/gui/output-viewer.glade \
        $(top_srcdir)/src/ui/gui/psppire.glade \
 +      $(top_srcdir)/src/ui/gui/oneway.glade \
        $(top_srcdir)/src/ui/gui/rank.glade \
        $(top_srcdir)/src/ui/gui/recode.glade \
        $(top_srcdir)/src/ui/gui/regression.glade \
 +      $(top_srcdir)/src/ui/gui/t-test.glade
 +
 +dist_src_ui_gui_psppire_DATA = \
 +      $(top_srcdir)/src/ui/gui/data-editor.glade \
 +      $(top_srcdir)/src/ui/gui/descriptives-dialog.glade \
 +      $(top_srcdir)/src/ui/gui/output-viewer.glade \
        $(top_srcdir)/src/ui/gui/syntax-editor.glade \
        $(top_srcdir)/src/ui/gui/text-data-import.glade \
 -      $(top_srcdir)/src/ui/gui/t-test.glade \
        $(top_srcdir)/src/ui/gui/psppicon.png \
        $(top_srcdir)/src/ui/gui/pspplogo.png \
        $(top_srcdir)/src/ui/gui/icons/value-labels.png \
@@@ -158,6 -150,8 +159,6 @@@ src_ui_gui_psppire_SOURCES = 
        src/ui/gui/psppire-buttonbox.h \
        src/ui/gui/psppire-hbuttonbox.h \
        src/ui/gui/psppire-vbuttonbox.h \
 -      src/ui/gui/psppire-case-file.c \
 -      src/ui/gui/psppire-case-file.h \
        src/ui/gui/psppire-data-editor.c \
        src/ui/gui/psppire-data-editor.h \
        src/ui/gui/psppire-data-store.c \
        src/ui/gui/window-manager.c \
        src/ui/gui/window-manager.h
  
 +nodist_src_ui_gui_psppire_SOURCES = \
 +      src/ui/gui/psppire-marshal.c \
 +      src/ui/gui/psppire-marshal.h
 +
 +
  yelp-check:
        @if ! yelp --version > /dev/null 2>&1 ; then \
                echo    ; \
        fi
  PHONY += yelp-check
  
 -EXTRA_DIST += src/ui/gui/OChangeLog
 +AM_CPPFLAGS += -Isrc
 +
 +src/ui/gui/psppire-marshal.c: src/ui/gui/marshaller-list
 +      glib-genmarshal --body --prefix=psppire_marshal $< > $@
 +
 +src/ui/gui/psppire-marshal.h: src/ui/gui/marshaller-list
 +      glib-genmarshal --header --prefix=psppire_marshal $< > $@
 +
 +.glade.ui:
 +      gtk-builder-convert $< $@
 +
 +EXTRA_DIST += src/ui/gui/OChangeLog\
 +      src/ui/gui/marshaller-list
 +
 +BUILT_SOURCES += src/ui/gui/psppire-marshal.c src/ui/gui/psppire-marshal.h
 +CLEANFILES += src/ui/gui/psppire-marshal.c src/ui/gui/psppire-marshal.h \
 +      $(nodist_src_ui_gui_psppire_DATA)
diff --combined src/ui/gui/psppire.c
index 02415d68bc3df8a6250d0a115f622c52de6c787f,974d18b7e0d70f9cff244fbff3d5ee600ab126ba..2918238c419b2c23173edfad68b2a5d28aa75847
  #include <assert.h>
  #include <libintl.h>
  #include <gsl/gsl_errno.h>
 +#include <signal.h>
  
 +#include <argp.h>
 +#include <ui/command-line.h>
  #include "relocatable.h"
  
  #include "data-editor.h"
  #include "psppire.h"
  
 +#include <libpspp/getl.h>
  #include <unistd.h>
  #include <data/casereader.h>
  #include <data/datasheet.h>
@@@ -42,7 -38,6 +42,7 @@@
  #include <libpspp/version.h>
  #include <output/output.h>
  #include <output/journal.h>
 +#include <language/syntax-string-source.h>
  
  #include <gtk/gtk.h>
  #include <glade/glade.h>
  #include "psppire-data-store.h"
  #include "helper.h"
  #include "message-dialog.h"
 +#include <ui/syntax-gen.h>
  
  #include "output-viewer.h"
  
 +#include <data/sys-file-reader.h>
 +#include <data/por-file-reader.h>
 +
 +#include <ui/source-init-opts.h>
 +
  PsppireDataStore *the_data_store = 0;
  PsppireVarStore *the_var_store = 0;
  
@@@ -72,14 -61,17 +72,14 @@@ struct dataset * the_dataset = NULL
  static void
  replace_casereader (struct casereader *s)
  {
 -  PsppireCaseFile *pcf = psppire_case_file_new (s);
 -
 -  psppire_data_store_set_case_file (the_data_store, pcf);
 +  psppire_data_store_set_reader (the_data_store, s);
  }
  
  #define _(msgid) gettext (msgid)
  #define N_(msgid) msgid
  
 -
  void
 -initialize (void)
 +initialize (struct command_line_processor *clp, int argc, char **argv)
  {
    PsppireDict *dictionary = 0;
  
    the_data_store = psppire_data_store_new (dictionary);
    replace_casereader (NULL);
  
 +
 +
    create_icon_factory ();
  
-   outp_configure_driver_line (
-     ss_cstr ("gui:ascii:screen:squeeze=on headers=off top-margin=0 "
-              "bottom-margin=0 paginate=off length=auto width=auto "
-            "emphasis=none "
-              "output-file=\"" OUTPUT_FILE_NAME "\" append=yes"));
+   {
+     const char *filename = output_file_name ();
  
-   unlink (OUTPUT_FILE_NAME);
+     struct string config_string;
+     ds_init_empty (&config_string);
+     ds_put_format (&config_string,
+                  "gui:ascii:screen:squeeze=on headers=off top-margin=0 "
+                  "bottom-margin=0 paginate=off length=auto width=auto "
+                  "emphasis=none "
+                  "output-file=\"%s\" append=yes", filename);
+     outp_configure_driver_line (ds_ss (&config_string));
+     unlink (filename);
+     ds_destroy (&config_string);
+   }
  
    journal_enable ();
    textdomain (PACKAGE);
  
 +  /* Ignore alarm clock signals */
 +  signal (SIGALRM, SIG_IGN);
 +
 +  command_line_processor_replace_aux (clp, &post_init_argp, the_source_stream);
 +  command_line_processor_replace_aux (clp, &non_option_argp, the_source_stream);
 +
 +  command_line_processor_parse (clp, argc, argv);
 +
    new_data_window (NULL, NULL);
 +
 +  execute_syntax (create_syntax_string_source (""));
  }
  
  
@@@ -217,11 -209,11 +229,11 @@@ create_icon_factory (void
  
  
      gtk_stock_add (items, 2);
 -    gtk_icon_factory_add (factory, "pspp-stock-reset", 
 +    gtk_icon_factory_add (factory, "pspp-stock-reset",
                          gtk_icon_factory_lookup_default (GTK_STOCK_REFRESH)
                          );
  
 -    gtk_icon_factory_add (factory, "pspp-stock-select", 
 +    gtk_icon_factory_add (factory, "pspp-stock-select",
                          gtk_icon_factory_lookup_default (GTK_STOCK_INDEX)
                          );
    }
    gtk_icon_factory_add_default (factory);
  }
  
 +\f
 +
 +static error_t
 +parse_non_options (int key, char *arg, struct argp_state *state)
 +{
 +  struct source_stream *ss = state->input;
 +
 +  if ( NULL == ss )
 +    return 0;
 +
 +  switch (key)
 +    {
 +    case ARGP_KEY_ARG:
 +      {
 +      struct string syntax;
 +      FILE *fp = fopen (arg, "r");
 +      if (NULL == fp)
 +        {
 +          const int errnum = errno;
 +          fprintf (state->err_stream, _("Cannot open %s: %s.\n"),
 +                   arg, strerror (errnum));
 +          return 0;
 +        }
 +      if ( sfm_detect (fp))
 +        {
 +          ds_init_cstr (&syntax, "GET FILE=");
 +          goto close;
 +        }
 +      rewind (fp);
 +      if (pfm_detect (fp))
 +        {
 +          ds_init_cstr (&syntax, "IMPORT FILE=");
 +          goto close;
 +        }
 +
 +      fclose (fp);
 +      msg (ME, _("%s is neither a system nor portable file"), arg);
 +      break;
 +
 +      close:
 +      fclose (fp);
 +
 +      syntax_gen_string (&syntax, ss_cstr (arg));
 +      ds_put_cstr (&syntax, ".");
 +
 +      getl_append_source (ss,
 +                          create_syntax_string_source (ds_cstr (&syntax)),
 +                          GETL_BATCH,
 +                          ERRMODE_CONTINUE);
 +
 +      ds_destroy (&syntax);
 +      break;
 +      }
 +    default:
 +      return ARGP_ERR_UNKNOWN;
 +    }
 +  return 0;
 +}
 +
 +
 +const struct argp non_option_argp = {NULL, parse_non_options, 0, 0, 0, 0, 0};
index 598cdddd8eefaeea38196d188be9e33baeda36f0,80c6599ab9704c061c6e181bfc13b2b9ee92230f..5ab098577a57f015040543faf7387960ab46a8cd
@@@ -1,36 -1,46 +1,36 @@@
  ## Process this file with automake to produce Makefile.in  -*- makefile -*-
  
 -noinst_LIBRARIES += src/ui/terminal/libui.a
 +noinst_LTLIBRARIES += src/ui/terminal/libui.la
  
 -src_ui_terminal_libui_a_SOURCES = \
 -      src/ui/terminal/command-line.c \
 -      src/ui/terminal/command-line.h \
 +src_ui_terminal_libui_la_SOURCES = \
        src/ui/terminal/read-line.c \
        src/ui/terminal/read-line.h \
        src/ui/terminal/main.c \
        src/ui/terminal/msg-ui.c \
        src/ui/terminal/msg-ui.h \
        src/ui/terminal/terminal.c \
 -      src/ui/terminal/terminal.h      
 +      src/ui/terminal/terminal.h \
 +      src/ui/terminal/terminal-opts.c \
 +      src/ui/terminal/terminal-opts.h 
  
 -src_ui_terminal_libui_a_CFLAGS = -DINSTALLDIR=\"$(bindir)\" $(NCURSES_CFLAGS)
  
 -bin_PROGRAMS += src/ui/terminal/pspp
 +src_ui_terminal_libui_la_CFLAGS = -DINSTALLDIR=\"$(bindir)\" $(NCURSES_CFLAGS)
  
 +bin_PROGRAMS += src/ui/terminal/pspp
  
  src_ui_terminal_pspp_SOURCES =
  
  src_ui_terminal_pspp_LDADD = \
 -      src/ui/terminal/libui.a \
 -      src/language/liblanguage.a \
 -      src/output/charts/libcharts.a \
 -      src/output/liboutput.a \
 -      src/math/libpspp_math.a  \
 -      src/ui/libuicommon.a \
 -      lib/linreg/liblinreg.a  \
 -      src/data/libdata.a \
 -      src/libpspp/libpspp.a \
 -      $(LIBXML2_LIBS) \
 -      $(PG_LIBS) \
 +      src/ui/terminal/libui.la \
 +      src/ui/libuicommon.la \
 +      src/libpspp.la \
 +      src/libpspp-core.la \
        $(NCURSES_LIBS) \
        $(LIBICONV) \
 -      gl/libgl.la \
        @LIBINTL@ @LIBREADLINE@
  
  
- src_ui_terminal_pspp_LDFLAGS = $(PG_LDFLAGS)
 -
 -
+ src_ui_terminal_pspp_LDFLAGS = $(PSPP_LDFLAGS) $(PG_LDFLAGS)
  
  if RELOCATABLE_VIA_LD
  src_ui_terminal_pspp_LDFLAGS += `$(RELOCATABLE_LDFLAGS) $(bindir)`
diff --combined tests/command/insert.sh
index be7f9e08c565c52677a4e0704f92acd86b84a948,d08c7a71edabdc0a24cf7906606cb44df3520f9b..f80dc5fc4a0df3f1c4250ef32e0bf3bb45e7a524
@@@ -2,8 -2,7 +2,8 @@@
  
  # This program tests the INSERT command
  
 -TEMPDIR=/tmp/pspp-tst-$$
 +BASETEMPDIR=/tmp/pspp-tst-$$
 +TEMPDIR=$BASETEMPDIR/link
  TESTFILE=$TEMPDIR/`basename $0`.sps
  
  # ensure that top_srcdir and top_builddir  are absolute
@@@ -24,11 -23,11 +24,11 @@@ export LAN
  cleanup()
  {
       if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then 
 -      echo "NOT cleaning $TEMPDIR"
 +      echo "NOT cleaning $BASETEMPDIR"
        return ; 
       fi
       cd /
 -     rm -rf $TEMPDIR
 +     rm -rf $BASETEMPDIR
  }
  
  
@@@ -55,9 -54,7 +55,9 @@@ pass(
      exit 0;
  }
  
 -mkdir -p $TEMPDIR
 +mkdir -p $BASETEMPDIR/target
 +
 +ln -s $BASETEMPDIR/target $TEMPDIR
  
  cd $TEMPDIR
  
@@@ -252,4 -249,24 +252,23 @@@ $TEMPDIR/foo.sps:10: error: DISPLAY: AK
  EOF
  if [ $? -ne 0 ] ; then fail ; fi
  
 -
+ # Test for regression against bug #24569 in which PSPP crashed
+ # upon attempt to insert a nonexistent file.
+ activity="create wrapper 9"
+ cat <<EOF > $TESTFILE
+ INSERT 
+   FILE='$TEMPDIR/nonexistent'
+   ERROR=CONTINUE.
+   .
+ LIST.
+ EOF
+ if [ $? -ne 0 ] ; then no_result ; fi
+ #This command should fail
+ activity="run program 7"
+ $SUPERVISOR $PSPP --testing-mode -o raw-ascii $TESTFILE > /dev/null
+ if [ $? -eq 0 ] ; then no_result ; fi
  pass;