Fixed the calculation of percentiles and added --syntax and --algorithm options
authorJohn Darrington <john@darrington.wattle.id.au>
Sat, 3 Apr 2004 07:10:55 +0000 (07:10 +0000)
committerJohn Darrington <john@darrington.wattle.id.au>
Sat, 3 Apr 2004 07:10:55 +0000 (07:10 +0000)
27 files changed:
configure.ac
doc/pspp.texi
lib/dcdflib/.cvsignore [deleted file]
po/en_GB.po
po/pspp.pot
pref.h.orig
src/ChangeLog
src/Makefile.am
src/cmdline.c
src/command.c
src/command.h
src/error.h
src/filename.c
src/frequencies.q
src/lexer.h
src/main.c
src/q2c.c
src/set.q
src/settings.h
src/var.h
tests/ChangeLog
tests/Makefile.am
tests/bugs/get.sh [new file with mode: 0755]
tests/command/percentiles.sh [deleted file]
tests/command/weight.sh
tests/stats/percentiles-compatible.sh [new file with mode: 0755]
tests/stats/percentiles-enhanced.sh [new file with mode: 0755]

index 4fc3384739d04424f9ebff09c4051cc86850a7f9..ffe69d86e50bc1ee1eabe2bf0cdc499589b08fd9 100644 (file)
@@ -13,6 +13,7 @@ AC_PROG_CC
 AM_CONDITIONAL(cc_is_gcc, test x"$GCC" = x"yes" )
 
 
+
 dnl Internationalization macros.
 AM_GNU_GETTEXT
 AM_GNU_GETTEXT_VERSION dnl Prevents autoreconf complaint.
@@ -95,9 +96,12 @@ AC_CHECK_FUNCS([gethostname strstr strtod __setfpucw isinf isnan finite \
 AC_PROG_LN_S
 
 
-
 AH_BOTTOM([#include <pref.h>])
 
+
+AM_CONDITIONAL(unix, test x"$host_os" != x"msdos" )
+AM_CONDITIONAL(msdos, test x"$host_os" == x"msdos" )
+
 dnl This is needed otherwise --with-included-gettext fails
 AH_BOTTOM([#include <locale.h>])
 
index 30a514cbf6088081affb30a5dc7edf7f6c488203..a39c7dc0d14a287d626755374ee7c99e9beac3a7 100644 (file)
@@ -2160,6 +2160,17 @@ Configuration options are used to change PSPP's configuration for the
 current run.  The configuration options are:
 
 @table @code
+@item -a @{compatible|enhanced@}
+@itemx --algorithm=@{compatible|enhanced@}
+
+If you chose @code{compatible}, then PSPP will use the same  algorithms 
+as used by some proprietary statistical analysis packages.
+This is not recommended, as  these algorithms are inferior and in some cases 
+compeletely broken.
+The default setting is @code{enhanced}.
+Certain commands have subcommands which allow you to override this setting on 
+a per command basis.
+
 @item -B @var{dir}
 @itemx --config-dir=@var{dir}
 
@@ -2290,6 +2301,15 @@ device driver classes, then terminates.
 
 Lists the available device driver classes, then terminates.
 
+@item -x @{compatible|enhanced@}
+@itemx --syntax=@{compatible|enhanced@}
+
+If you chose @code{compatible}, then PSPP will only accept command syntax that 
+is compatible with the proprietary program SPSS.
+If you choose @code{enhanced} then additional syntax will be available.
+The default is @code{enhanced}.
+
+
 @item -V
 @item --version
 
@@ -7644,9 +7664,13 @@ value, and MODE, the mode.  (If there are multiple modes, the smallest
 value is reported.)  By default, the mean, standard deviation of the
 mean, minimum, and maximum are reported for each variable.
 
-NTILES causes the specified quartiles to be reported.  For instance,
-@code{/NTILES=4} would cause quartiles to be reported.  In addition,
-particular percentiles can be requested with the PERCENTILES subcommand.
+PERCENTILES causes the specified percentiles to be reported.
+The percentiles should  be presented at a list of numbers between 0
+and 100 inclusive.  
+The NTILES subcommand causes the percentiles to be reported at the
+boundaries of the data set divided into the specified number of ranges.
+For instance, @code{/NTILES=4} would cause quartiles to be reported.
+
 
 @node CROSSTABS, T-TEST, FREQUENCIES, Statistics
 @section CROSSTABS
diff --git a/lib/dcdflib/.cvsignore b/lib/dcdflib/.cvsignore
deleted file mode 100644 (file)
index 282522d..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-Makefile
-Makefile.in
index fb025f4e780b6c57d82a14a3fb0665ec726a9a03..bd7290a84586a4edd3db1b84a1b83b7985667b5f 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PSPP 0.3.1\n"
 "Report-Msgid-Bugs-To: pspp-dev@gnu.org\n"
-"POT-Creation-Date: 2004-03-21 10:15+0800\n"
+"POT-Creation-Date: 2004-04-03 14:42+0800\n"
 "PO-Revision-Date: 2004-01-23 13:04+0800\n"
 "Last-Translator: John Darrington <john@darrington.wattle.id.au>\n"
 "Language-Team: John Darrington <john@darrington.wattle.id.au>\n"
@@ -16,49 +16,49 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n!=1);\n"
 
-#: src/aggregate.c:183 src/aggregate.c:216 src/data-list.c:1363
-#: src/data-list.c:1398 src/data-list.c:1411 src/data-list.c:1424
-#: src/data-list.c:1457
+#: src/aggregate.c:182 src/aggregate.c:215 src/data-list.c:1359
+#: src/data-list.c:1394 src/data-list.c:1407 src/data-list.c:1420
+#: src/data-list.c:1453
 #, c-format
 msgid "%s subcommand given multiple times."
 msgstr ""
 
-#: src/aggregate.c:203
+#: src/aggregate.c:202
 msgid "while expecting COLUMNWISE"
 msgstr ""
 
-#: src/aggregate.c:244
+#: src/aggregate.c:243
 msgid "BREAK subcommand not specified."
 msgstr ""
 
-#: src/aggregate.c:400
+#: src/aggregate.c:399
 msgid "expecting aggregation function"
 msgstr ""
 
-#: src/aggregate.c:416
+#: src/aggregate.c:415
 #, c-format
 msgid "Unknown aggregation function %s."
 msgstr ""
 
-#: src/aggregate.c:431
+#: src/aggregate.c:430
 msgid "expecting `('"
 msgstr ""
 
-#: src/aggregate.c:466
+#: src/aggregate.c:465
 #, c-format
 msgid "Missing argument %d to %s."
 msgstr ""
 
-#: src/aggregate.c:474
+#: src/aggregate.c:473
 #, c-format
 msgid "Arguments to %s must be of same type as source variables."
 msgstr ""
 
-#: src/aggregate.c:484 src/expr-prs.c:665
+#: src/aggregate.c:483 src/expr-prs.c:630
 msgid "expecting `)'"
 msgstr ""
 
-#: src/aggregate.c:496
+#: src/aggregate.c:495
 #, c-format
 msgid ""
 "Number of source variables (%d) does not match number of target variables (%"
@@ -72,37 +72,35 @@ msgid ""
 "contains the aggregate variables and the break variables."
 msgstr ""
 
-#: src/apply-dict.c:68
+#: src/apply-dict.c:65
 #, c-format
 msgid "Variable %s is %s in target file, but %s in source file."
 msgstr ""
 
-#: src/apply-dict.c:71 src/apply-dict.c:72 src/expr-prs.c:1128
-#: src/expr-prs.c:1473 src/expr-prs.c:1489 src/formats.c:103
-#: src/pfm-read.c:634 src/print.c:698 src/sfm-read.c:914 src/sfm-read.c:1040
-#: src/sfm-read.c:1041
+#: src/apply-dict.c:68 src/apply-dict.c:69 src/expr-prs.c:1292
+#: src/expr-prs.c:1308 src/formats.c:100 src/pfm-read.c:638 src/print.c:688
+#: src/sfm-read.c:933 src/sfm-read.c:1063 src/sfm-read.c:1064
 msgid "string"
 msgstr ""
 
-#: src/apply-dict.c:71 src/apply-dict.c:72 src/expr-prs.c:1128
-#: src/expr-prs.c:1470 src/expr-prs.c:1487 src/formats.c:103
-#: src/pfm-read.c:634 src/print.c:698 src/sfm-read.c:914 src/sfm-read.c:1040
-#: src/sfm-read.c:1041
+#: src/apply-dict.c:68 src/apply-dict.c:69 src/expr-prs.c:1289
+#: src/expr-prs.c:1306 src/formats.c:100 src/pfm-read.c:638 src/print.c:688
+#: src/sfm-read.c:933 src/sfm-read.c:1063 src/sfm-read.c:1064
 msgid "numeric"
 msgstr ""
 
-#: src/apply-dict.c:84
+#: src/apply-dict.c:81
 #, c-format
 msgid "Cannot add value labels from source file to long string variable %s."
 msgstr ""
 
-#: src/apply-dict.c:130
+#: src/apply-dict.c:127
 #, c-format
 msgid ""
 "Cannot apply missing values from source file to long string variable %s."
 msgstr ""
 
-#: src/apply-dict.c:163
+#: src/apply-dict.c:160
 msgid "No matching variables found between the source and target files."
 msgstr ""
 
@@ -171,7 +169,7 @@ msgid ""
 "and `bs'."
 msgstr ""
 
-#: src/ascii.c:522 src/postscript.c:680
+#: src/ascii.c:522 src/postscript.c:681
 #, c-format
 msgid "Positive integer required as value for `%s'."
 msgstr ""
@@ -181,76 +179,111 @@ msgstr ""
 msgid "Zero or positive integer required as value for `%s'."
 msgstr ""
 
-#: src/ascii.c:623 src/postscript.c:639
+#: src/ascii.c:624 src/postscript.c:639
 #, c-format
 msgid "Boolean value expected for %s."
 msgstr ""
 
-#: src/ascii.c:655 src/ascii.c:670 src/ascii.c:687
+#: src/ascii.c:656 src/ascii.c:671 src/ascii.c:688
 #, c-format
 msgid "ASCII output driver: %s: %s"
 msgstr ""
 
-#: src/ascii.c:756
+#: src/ascii.c:757
 #, c-format
 msgid "ascii_line_horz: bad hline (%d,%d),%d out of (%d,%d)\n"
 msgstr ""
 
-#: src/ascii.c:790
+#: src/ascii.c:791
 #, c-format
 msgid "ascii_line_vert: bad vline %d,(%d,%d) out of (%d,%d)\n"
 msgstr ""
 
-#: src/ascii.c:820
+#: src/ascii.c:821
 #, c-format
 msgid "ascii_line_intersection: bad intsct (%d,%d) out of (%d,%d)\n"
 msgstr ""
 
-#: src/ascii.c:968
+#: src/ascii.c:969
 #, c-format
 msgid "%s: horiz=%d, vert=%d\n"
 msgstr ""
 
-#: src/ascii.c:1140
+#: src/ascii.c:1141
 #, c-format
 msgid "Writing `%s': %s"
 msgstr ""
 
-#: src/ascii.c:1543 src/postscript.c:2093
+#: src/ascii.c:1550 src/postscript.c:2095
 #, c-format
 msgid "%s - Page %d"
 msgstr ""
 
-#: src/autorecode.c:121
+#: src/autorecode.c:120
 #, c-format
 msgid "Source variable count (%d) does not match target variable count (%d)."
 msgstr ""
 
-#: src/autorecode.c:138 src/command.c:690 src/compute.c:293
-#: src/data-list.c:380 src/data-list.c:878 src/data-list.c:1690
-#: src/do-if.c:263 src/get.c:381 src/lexer.c:387 src/loop.c:241
-#: src/matrix-data.c:510 src/print.c:338 src/print.c:1060 src/recode.c:405
-#: src/sel-if.c:56 src/sel-if.c:138 src/vector.c:194 src/file-handle.q:88
+#: src/autorecode.c:137 src/command.c:738 src/compute.c:290
+#: src/data-list.c:380 src/data-list.c:877 src/data-list.c:1686
+#: src/do-if.c:257 src/get.c:378 src/lexer.c:412 src/loop.c:239
+#: src/matrix-data.c:507 src/print.c:328 src/print.c:1038 src/recode.c:403
+#: src/sel-if.c:53 src/sel-if.c:130 src/vector.c:192 src/file-handle.q:140
 msgid "expecting end of command"
 msgstr ""
 
-#: src/autorecode.c:148
+#: src/autorecode.c:147
 #, c-format
 msgid "Target variable %s duplicates existing variable %s."
 msgstr ""
 
-#: src/autorecode.c:155
+#: src/autorecode.c:154
 #, c-format
 msgid "Duplicate variable name %s among target variables."
 msgstr ""
 
-#: src/cmdline.c:114 src/cmdline.c:133 src/cmdline.c:145 src/command.c:196
-#: src/set.q:416 src/set.q:418 src/set.q:958
+#: src/casefile.c:154
+#, c-format
+msgid "%s: Removing temporary file: %s."
+msgstr ""
+
+#: src/casefile.c:247
+#, c-format
+msgid "Error writing temporary file: %s."
+msgstr ""
+
+#: src/casefile.c:274
+#, c-format
+msgid "%s: Creating temporary file: %s."
+msgstr ""
+
+#: src/casefile.c:471
+#, c-format
+msgid "%s: Opening temporary file: %s."
+msgstr ""
+
+#: src/casefile.c:500
+#, c-format
+msgid "%s: Seeking temporary file: %s."
+msgstr ""
+
+#: src/casefile.c:513
+#, c-format
+msgid "%s: Reading temporary file: %s."
+msgstr ""
+
+#: src/casefile.c:516
+#, c-format
+msgid "%s: Temporary file ended unexpectedly."
+msgstr ""
+
+#: src/cmdline.c:141 src/cmdline.c:160 src/cmdline.c:172 src/command.c:160
+#: src/set.q:414 src/set.q:416 src/set.q:956
 #, c-format
 msgid "%s is not yet implemented."
 msgstr ""
 
-#: src/cmdline.c:159
+#: src/cmdline.c:186
 msgid ""
 "\n"
 "Copyright (C) 1997-9, 2000 Free Software Foundation, Inc.\n"
@@ -260,7 +293,7 @@ msgid ""
 "Written by Ben Pfaff <blp@gnu.org>."
 msgstr ""
 
-#: src/cmdline.c:221
+#: src/cmdline.c:248
 #, c-format
 msgid ""
 "PSPP, a program for statistical analysis of sample data.\n"
@@ -271,6 +304,9 @@ msgid ""
 "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"
@@ -289,6 +325,9 @@ msgid ""
 "  -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"
@@ -304,32 +343,32 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/cmdline.c:253
+#: src/cmdline.c:286
 #, c-format
 msgid ""
 "\n"
 "Report bugs to <%s>.\n"
 msgstr ""
 
-#: src/command.c:134
+#: src/command.c:98
 #, c-format
 msgid "%s not allowed inside FILE TYPE/END FILE TYPE."
 msgstr ""
 
-#: src/command.c:138
+#: src/command.c:102
 #, c-format
 msgid "%s not allowed inside FILE TYPE GROUPED/END FILE TYPE."
 msgstr ""
 
-#: src/command.c:141
+#: src/command.c:105
 msgid "RECORD TYPE must be the first command inside a FILE TYPE structure."
 msgstr ""
 
-#: src/command.c:186
-msgid "This line does not begin with a valid command name."
+#: src/command.c:150
+msgid "expecting command name"
 msgstr ""
 
-#: src/command.c:215
+#: src/command.c:179
 #, c-format
 msgid ""
 "%s is not allowed (1) before a command to specify the input program, such as "
@@ -337,106 +376,83 @@ msgid ""
 "PROGRAM and END INPUT PROGRAM."
 msgstr ""
 
-#: src/command.c:219
+#: src/command.c:183
 #, c-format
 msgid "%s is not allowed within an input program."
 msgstr ""
 
-#: src/command.c:220 src/command.c:221
+#: src/command.c:184 src/command.c:185
 #, c-format
 msgid "%s is only allowed within an input program."
 msgstr ""
 
-#: src/command.c:230
+#: src/command.c:464
 #, c-format
-msgid "%s command beginning\n"
-msgstr ""
-
-#: src/command.c:266
-#, c-format
-msgid ""
-"%s command completed\n"
-"\n"
-msgstr ""
-
-#: src/command.c:281
-msgid "The identifier(s) specified do not form a valid command name:"
-msgstr ""
-
-#: src/command.c:284
-msgid "The identifier(s) specified do not form a complete command name:"
+msgid "Unknown command %s."
 msgstr ""
 
-#: src/command.c:408
+#: src/command.c:564
 msgid ""
 "This command is not accepted in a syntax file.  Instead, use FINISH to "
 "terminate a syntax file."
 msgstr ""
 
-#: src/command.c:426
+#: src/command.c:582
 msgid ""
 "This command is not executed in interactive mode.  Instead, PSPP drops down "
 "to the command prompt.  Use EXIT if you really want to quit."
 msgstr ""
 
-#: src/command.c:517
-msgid "The sentinel may not be the empty string."
-msgstr ""
-
-#: src/command.c:576 src/command.c:708
+#: src/command.c:625 src/command.c:756
 msgid "This command not allowed when the SAFER option is set."
 msgstr ""
 
-#: src/command.c:590
+#: src/command.c:637
 #, c-format
 msgid "Error removing `%s': %s."
 msgstr ""
 
-#: src/command.c:640
+#: src/command.c:687
 #, c-format
 msgid "Couldn't fork: %s."
 msgstr ""
 
-#: src/command.c:681
+#: src/command.c:729
 #, c-format
 msgid "Error executing command: %s."
 msgstr ""
 
-#: src/command.c:731
+#: src/command.c:777
 msgid "No operating system support for this command."
 msgstr ""
 
-#: src/command.c:760
+#: src/command.c:800
 msgid "This command is not valid in a syntax file."
 msgstr ""
 
-#: src/compute.c:145 src/compute.c:209
+#: src/compute.c:143 src/compute.c:207
 #, c-format
 msgid ""
 "When executing COMPUTE: SYSMIS is not a valid value as an index into vector %"
 "s."
 msgstr ""
 
-#: src/compute.c:148 src/compute.c:213
+#: src/compute.c:146 src/compute.c:211
 #, c-format
 msgid ""
 "When executing COMPUTE: %g is not a valid value as an index into vector %s."
 msgstr ""
 
-#: src/compute.c:355
+#: src/compute.c:352
 #, c-format
 msgid "There is no vector named %s."
 msgstr ""
 
-#: src/compute.c:461
-msgid "Extra characters after expression."
-msgstr ""
-
-#: src/count.c:156
+#: src/count.c:154
 msgid "Destination cannot be a string variable."
 msgstr ""
 
-#: src/count.c:263
+#: src/count.c:261
 #, c-format
 msgid ""
 "%g THRU %g is not a valid range.  The number following THRU must be at least "
@@ -624,28 +640,28 @@ msgstr ""
 msgid "Field too long (%d characters).  Truncated after character %d."
 msgstr ""
 
-#: src/data-list.c:139
+#: src/data-list.c:136
 msgid ""
 "DATA LIST may not use a different file from that specified on its "
 "surrounding FILE TYPE."
 msgstr ""
 
-#: src/data-list.c:158
+#: src/data-list.c:155
 msgid "The END subcommand may only be specified once."
 msgstr ""
 
-#: src/data-list.c:194
+#: src/data-list.c:191
 msgid "Only one of FIXED, FREE, or LIST may be specified."
 msgstr ""
 
-#: src/data-list.c:327 src/print.c:299
+#: src/data-list.c:327 src/print.c:289
 #, c-format
 msgid ""
 "The record number specified, %ld, is before the previous record, %d.  Data "
 "fields must be listed in order of increasing record number."
 msgstr ""
 
-#: src/data-list.c:356 src/data-list.c:1679
+#: src/data-list.c:356 src/data-list.c:1675
 msgid ""
 "SPSS-like or FORTRAN-like format specification expected after variable names."
 msgstr ""
@@ -654,13 +670,13 @@ msgstr ""
 msgid "At least one variable must be specified."
 msgstr ""
 
-#: src/data-list.c:372 src/print.c:331
+#: src/data-list.c:372 src/print.c:321
 msgid ""
 "Variables are specified on records that should not exist according to "
 "RECORDS subcommand."
 msgstr ""
 
-#: src/data-list.c:410 src/data-list.c:424 src/print.c:508 src/print.c:521
+#: src/data-list.c:410 src/data-list.c:424 src/print.c:498 src/print.c:511
 msgid "Column positions for fields must be positive."
 msgstr ""
 
@@ -668,25 +684,25 @@ msgstr ""
 msgid "The ending column for a field must be greater than the starting column."
 msgstr ""
 
-#: src/data-list.c:443 src/print.c:598
+#: src/data-list.c:443 src/print.c:588
 #, c-format
 msgid "The %d columns %d-%d can't be evenly divided into %d fields."
 msgstr ""
 
-#: src/data-list.c:463 src/print.c:549
+#: src/data-list.c:463 src/print.c:539
 msgid "A format specifier on this line has extra characters on the end."
 msgstr ""
 
-#: src/data-list.c:478 src/print.c:565
+#: src/data-list.c:478 src/print.c:555
 msgid "The value for number of decimal places must be at least 1."
 msgstr ""
 
-#: src/data-list.c:492 src/print.c:578
+#: src/data-list.c:492 src/print.c:568
 #, c-format
 msgid "Input format %s doesn't accept decimal places."
 msgstr ""
 
-#: src/data-list.c:539 src/data-list.c:635 src/data-list.c:857
+#: src/data-list.c:539 src/data-list.c:635 src/data-list.c:856
 #, c-format
 msgid "%s is a duplicate variable name."
 msgstr ""
@@ -707,27 +723,26 @@ msgid ""
 "names."
 msgstr ""
 
-#: src/data-list.c:739 src/print.c:771
+#: src/data-list.c:739 src/print.c:761
 msgid ""
 "There aren't enough format specifications to match the number of variable "
 "names given."
 msgstr ""
 
-#: src/data-list.c:768 src/data-list.c:899 src/print.c:803
-#: src/sysfile-info.c:135 src/sysfile-info.c:370 src/vfm.c:1011
-#: src/descript.q:791
+#: src/data-list.c:768 src/data-list.c:898 src/descript.c:826 src/print.c:792
+#: src/sysfile-info.c:132 src/sysfile-info.c:365 src/vfm.c:833
 msgid "Variable"
 msgstr ""
 
-#: src/data-list.c:769 src/print.c:804
+#: src/data-list.c:769 src/print.c:793
 msgid "Record"
 msgstr ""
 
-#: src/data-list.c:770 src/print.c:805
+#: src/data-list.c:770 src/print.c:794
 msgid "Columns"
 msgstr ""
 
-#: src/data-list.c:771 src/data-list.c:900 src/print.c:806
+#: src/data-list.c:771 src/data-list.c:899 src/print.c:795
 msgid "Format"
 msgstr ""
 
@@ -745,198 +760,305 @@ msgid_plural "Reading %d records from the command file."
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/data-list.c:923
+#: src/data-list.c:922
 #, c-format
 msgid "Reading free-form data from file %s."
 msgstr ""
 
-#: src/data-list.c:924
+#: src/data-list.c:923
 msgid "Reading free-form data from the command file."
 msgstr ""
 
-#: src/data-list.c:971 src/matrix-data.c:923
+#: src/data-list.c:969 src/matrix-data.c:923
 msgid "Scope of string exceeds line."
 msgstr ""
 
-#: src/data-list.c:1039
+#: src/data-list.c:1038
 #, c-format
 msgid "Partial case of %d of %d records discarded."
 msgstr ""
 
-#: src/data-list.c:1090
+#: src/data-list.c:1089
 #, c-format
 msgid "Partial case discarded.  The first variable missing was %s."
 msgstr ""
 
-#: src/data-list.c:1133
+#: src/data-list.c:1132
 #, c-format
 msgid ""
 "Missing value(s) for all variables from %s onward.  These will be filled "
 "with the system-missing value or blanks, as appropriate."
 msgstr ""
 
-#: src/data-list.c:1210
+#: src/data-list.c:1209
 msgid "Attempt to read past end of file."
 msgstr ""
 
-#: src/data-list.c:1353
+#: src/data-list.c:1349
 msgid ""
 "REPEATING DATA must use the same file as its corresponding DATA LIST or FILE "
 "TYPE."
 msgstr ""
 
-#: src/data-list.c:1387
+#: src/data-list.c:1383
 #, c-format
 msgid "STARTS beginning column (%d) exceeds STARTS ending column (%d)."
 msgstr ""
 
-#: src/data-list.c:1443
+#: src/data-list.c:1439
 #, c-format
 msgid "CONTINUED beginning column (%d) exceeds CONTINUED ending column (%d)."
 msgstr ""
 
-#: src/data-list.c:1466
+#: src/data-list.c:1462
 #, c-format
 msgid "ID beginning column (%ld) must be positive."
 msgstr ""
 
-#: src/data-list.c:1481
+#: src/data-list.c:1477
 #, c-format
 msgid "ID ending column (%ld) must be positive."
 msgstr ""
 
-#: src/data-list.c:1487
+#: src/data-list.c:1483
 #, c-format
 msgid "ID ending column (%ld) cannot be less than ID beginning column (%d)."
 msgstr ""
 
-#: src/data-list.c:1527
+#: src/data-list.c:1523
 msgid "Missing required specification STARTS."
 msgstr ""
 
-#: src/data-list.c:1529
+#: src/data-list.c:1525
 msgid "Missing required specification OCCURS."
 msgstr ""
 
-#: src/data-list.c:1536
+#: src/data-list.c:1532
 msgid "ID specified without CONTINUED."
 msgstr ""
 
-#: src/data-list.c:1628
+#: src/data-list.c:1624
 msgid "String variable not allowed here."
 msgstr ""
 
-#: src/data-list.c:1638
+#: src/data-list.c:1634
 #, c-format
 msgid "%s (%d) must be at least 1."
 msgstr ""
 
-#: src/data-list.c:1644
+#: src/data-list.c:1640
 #, c-format
 msgid "Variable or integer expected for %s."
 msgstr ""
 
-#: src/data-list.c:1782
+#: src/data-list.c:1778
 #, c-format
 msgid "Encountered mismatched record ID \"%s\" expecting \"%s\"."
 msgstr ""
 
-#: src/data-list.c:1814
+#: src/data-list.c:1810
 #, c-format
 msgid ""
 "Variable %s starting in column %d extends beyond physical record length of %"
 "d."
 msgstr ""
 
-#: src/data-list.c:1882
+#: src/data-list.c:1878
 #, c-format
 msgid "Invalid value %d for OCCURS."
 msgstr ""
 
-#: src/data-list.c:1888
+#: src/data-list.c:1884
 #, c-format
 msgid "Beginning column for STARTS (%d) must be at least 1."
 msgstr ""
 
-#: src/data-list.c:1896
+#: src/data-list.c:1892
 #, c-format
 msgid "Ending column for STARTS (%d) is less than beginning column (%d)."
 msgstr ""
 
-#: src/data-list.c:1904
+#: src/data-list.c:1900
 #, c-format
 msgid "Invalid value %d for LENGTH."
 msgstr ""
 
-#: src/data-list.c:1911
+#: src/data-list.c:1907
 #, c-format
 msgid "Beginning column for CONTINUED (%d) must be at least 1."
 msgstr ""
 
-#: src/data-list.c:1919
+#: src/data-list.c:1915
 #, c-format
 msgid "Ending column for CONTINUED (%d) is less than beginning column (%d)."
 msgstr ""
 
-#: src/data-list.c:1951
+#: src/data-list.c:1947
 #, c-format
 msgid ""
 "Number of repetitions specified on OCCURS (%d) exceed number of repetitions "
 "available in space on STARTS (%d), and CONTINUED not specified."
 msgstr ""
 
-#: src/data-list.c:1970
+#: src/data-list.c:1966
 #, c-format
 msgid "Unexpected end of file with %d repetitions remaining out of %d."
 msgstr ""
 
-#: src/data-out.c:231 src/sfm-read.c:470 src/sysfile-info.c:116
+#: src/data-out.c:235 src/sfm-read.c:472 src/sysfile-info.c:113
 msgid "Unknown"
 msgstr ""
 
-#: src/data-out.c:339
+#: src/data-out.c:343
 msgid ""
 "The N output format cannot be used to output a negative number or the system-"
 "missing value."
 msgstr ""
 
-#: src/data-out.c:450
+#: src/data-out.c:454
 #, c-format
 msgid ""
 "Quality of zoned decimal (Z) output format code is suspect.  Check your "
 "results. Report bugs to %s."
 msgstr ""
 
-#: src/data-out.c:458
+#: src/data-out.c:462
 msgid "The system-missing value cannot be output as a zoned decimal number."
 msgstr ""
 
-#: src/data-out.c:471
+#: src/data-out.c:475
 #, c-format
 msgid "Number %g too big to fit in field with format Z%d.%d."
 msgstr ""
 
-#: src/data-out.c:863
+#: src/data-out.c:867
 #, c-format
 msgid "Time value %g too large in magnitude to convert to alphanumeric time."
 msgstr ""
 
-#: src/data-out.c:914
+#: src/data-out.c:918
 #, c-format
 msgid "Weekday index %f does not lie between 1 and 7."
 msgstr ""
 
-#: src/data-out.c:934
+#: src/data-out.c:938
 #, c-format
 msgid "Month index %f does not lie between 1 and 12."
 msgstr ""
 
-#: src/data-out.c:1047
+#: src/data-out.c:1051
 #, c-format
 msgid ""
 "Year %d cannot be represented in four digits for output formatting purposes."
 msgstr ""
 
+#: src/date.c:32
+msgid "Only USE ALL is currently implemented."
+msgstr ""
+
+#: src/descript.c:83 src/frequencies.q:95 src/t-test.q:632 src/t-test.q:655
+#: src/t-test.q:744 src/t-test.q:1059
+msgid "Mean"
+msgstr ""
+
+#: src/descript.c:84
+msgid "S E Mean"
+msgstr ""
+
+#: src/descript.c:85 src/frequencies.q:99
+msgid "Std Dev"
+msgstr ""
+
+#: src/descript.c:86 src/frequencies.q:100
+msgid "Variance"
+msgstr ""
+
+#: src/descript.c:87 src/frequencies.q:101
+msgid "Kurtosis"
+msgstr ""
+
+#: src/descript.c:88
+msgid "S E Kurt"
+msgstr ""
+
+#: src/descript.c:89 src/frequencies.q:103
+msgid "Skewness"
+msgstr ""
+
+#: src/descript.c:90
+msgid "S E Skew"
+msgstr ""
+
+#: src/descript.c:91 src/frequencies.q:105
+msgid "Range"
+msgstr ""
+
+#: src/descript.c:92 src/frequencies.q:106
+msgid "Minimum"
+msgstr ""
+
+#: src/descript.c:93 src/frequencies.q:107
+msgid "Maximum"
+msgstr ""
+
+#: src/descript.c:94 src/frequencies.q:108
+msgid "Sum"
+msgstr ""
+
+#: src/descript.c:320
+#, c-format
+msgid "Z-score variable name %s would bea duplicate variable name."
+msgstr ""
+
+#: src/descript.c:337 src/list.q:143
+msgid "No variables specified."
+msgstr ""
+
+#: src/descript.c:390
+msgid ""
+"At least one case in the data file had a weight value that was system-"
+"missing, zero, or negative.  These case(s) were ignored."
+msgstr ""
+
+#: src/descript.c:427
+msgid "expecting statistic name"
+msgstr ""
+
+#: src/descript.c:498
+msgid ""
+"Ran out of generic names for Z-score variables.  There are only 126 generic "
+"names: ZSC001-ZSC0999, STDZ01-STDZ09, ZZZZ01-ZZZZ09, ZQZQ01-ZQZQ09."
+msgstr ""
+
+#: src/descript.c:529
+msgid "Mapping of variables to corresponding Z-scores."
+msgstr ""
+
+#: src/descript.c:534
+msgid "Source"
+msgstr ""
+
+#: src/descript.c:535
+msgid "Target"
+msgstr ""
+
+#: src/descript.c:612 src/descript.c:618
+msgid "Z-score of "
+msgstr ""
+
+#: src/descript.c:829
+msgid "Valid N"
+msgstr ""
+
+#: src/descript.c:830
+msgid "Missing N"
+msgstr ""
+
+#: src/descript.c:856
+#, c-format
+msgid "Valid cases = %g; cases with missing value(s) = %g."
+msgstr ""
+
 #: src/devind.c:136
 #, c-format
 msgid "DEVIND driver initializing as `%s'..."
@@ -957,99 +1079,95 @@ msgstr ""
 msgid "Cannot open first page on DEVIND device %s."
 msgstr ""
 
-#: src/dfm.c:74
+#: src/dfm.c:77
 #, c-format
 msgid "%s: Closing data-file handle %s."
 msgstr ""
 
-#: src/dfm.c:96
-msgid "<<Bug in dfm.c>>"
+#: src/dfm.c:103
+#, c-format
+msgid "Cannot read from file %s already opened for %s."
 msgstr ""
 
-#: src/dfm.c:118
+#: src/dfm.c:120
 #, c-format
 msgid "%s: Opening data-file handle %s for reading."
 msgstr ""
 
-#: src/dfm.c:135 src/dfm.c:152
-msgid "BEGIN DATA expected."
+#: src/dfm.c:135
+#, c-format
+msgid "Could not open \"%s\" for reading as a data file: %s."
 msgstr ""
 
-#: src/dfm.c:172
+#: src/dfm.c:164
 #, c-format
-msgid "An error occurred while opening \"%s\" for reading as a data file: %s."
+msgid "Cannot write to file %s already opened for %s."
 msgstr ""
 
-#: src/dfm.c:201
+#: src/dfm.c:181
 #, c-format
 msgid "%s: Opening data-file handle %s for writing."
 msgstr ""
 
-#: src/dfm.c:207
+#: src/dfm.c:187
 msgid "Cannot open the inline file for writing."
 msgstr ""
 
-#: src/dfm.c:222
+#: src/dfm.c:201
 #, c-format
 msgid "An error occurred while opening \"%s\" for writing as a data file: %s."
 msgstr ""
 
-#: src/dfm.c:367
+#: src/dfm.c:361 src/dfm.c:378
+msgid "BEGIN DATA expected."
+msgstr ""
+
+#: src/dfm.c:387
 msgid ""
 "Unexpected end-of-file while reading data in BEGIN DATA.  This probably "
 "indicates a missing or misformatted END DATA command.  END DATA must appear "
 "by itself on a single line with exactly one space between words."
 msgstr ""
 
-#: src/dfm.c:400 src/dfm.c:421
+#: src/dfm.c:420 src/dfm.c:442
 #, c-format
 msgid "Error reading file %s: %s."
 msgstr ""
 
-#: src/dfm.c:424
+#: src/dfm.c:445
 #, c-format
 msgid "%s: Partial record at end of file."
 msgstr ""
 
-#: src/dfm.c:482
-#, c-format
-msgid "Cannot read from file %s already opened for %s."
-msgstr ""
-
-#: src/dfm.c:496
+#: src/dfm.c:506
 #, c-format
 msgid "Attempt to read beyond end-of-file on file %s."
 msgstr ""
 
-#: src/dfm.c:590
-#, c-format
-msgid "Cannot write to file %s already opened for %s."
-msgstr ""
-
-#: src/dfm.c:614
+#: src/dfm.c:604
 #, c-format
 msgid "Error writing file %s: %s."
 msgstr ""
 
-#: src/dfm.c:656
+#: src/dfm.c:654
 msgid ""
 "This command is not valid here since the current input program does not "
 "access the inline file."
 msgstr ""
 
-#: src/dfm.c:663
+#: src/dfm.c:661
 msgid "inline file: Opening for reading."
 msgstr ""
 
-#: src/dfm.c:677
+#: src/dfm.c:674
 msgid "Skipping remaining inline data."
 msgstr ""
 
-#: src/dfm.c:689
+#: src/dfm.c:686
 msgid "reading as a data file"
 msgstr ""
 
-#: src/dfm.c:696
+#: src/dfm.c:693
 msgid "writing as a data file"
 msgstr ""
 
@@ -1065,131 +1183,128 @@ msgstr ""
 msgid "End of command expected."
 msgstr ""
 
-#: src/do-if.c:163
+#: src/do-if.c:161
 msgid "There is no DO IF to match with this ELSE."
 msgstr ""
 
-#: src/do-if.c:169
+#: src/do-if.c:167
 msgid ""
 "There may be at most one ELSE clause in each DO IF structure.  It must be "
 "the last clause."
 msgstr ""
 
-#: src/do-if.c:206
+#: src/do-if.c:202
 msgid "There is no DO IF to match with this END IF."
 msgstr ""
 
-#: src/do-if.c:294
+#: src/do-if.c:288
 #, c-format
 msgid "DO IF %d: true\n"
 msgstr ""
 
-#: src/do-if.c:299
+#: src/do-if.c:293
 #, c-format
 msgid "DO IF %d: false\n"
 msgstr ""
 
-#: src/do-if.c:304
+#: src/do-if.c:298
 #, c-format
 msgid "DO IF %d: missing\n"
 msgstr ""
 
-#: src/error.c:115
+#: src/error.c:117
 msgid "Terminating NOW due to a fatal error!"
 msgstr ""
 
-#: src/error.c:192
+#: src/error.c:194
 msgid "Terminating execution of syntax file due to error."
 msgstr ""
 
-#: src/error.c:194
+#: src/error.c:196
 #, c-format
 msgid "Errors (%d) exceeds limit (%d)."
 msgstr ""
 
-#: src/error.c:197
+#: src/error.c:199
 #, c-format
 msgid "Warnings (%d) exceed limit (%d)."
 msgstr ""
 
-#: src/error.c:255
+#: src/error.c:257
 msgid "fatal"
 msgstr ""
 
-#: src/error.c:257 src/error.c:264 src/error.c:267 src/expr-prs.c:1464
+#: src/error.c:259 src/error.c:266 src/error.c:269 src/expr-prs.c:1283
 msgid "error"
 msgstr ""
 
-#: src/error.c:258 src/error.c:265 src/error.c:268
+#: src/error.c:260 src/error.c:267 src/error.c:270
 msgid "warning"
 msgstr ""
 
-#: src/error.c:259 src/error.c:269
+#: src/error.c:261 src/error.c:271
 msgid "note"
 msgstr ""
 
-#: src/error.c:261 src/error.c:262
+#: src/error.c:263 src/error.c:264
 msgid "installation error"
 msgstr ""
 
-#: src/expr-evl.c:1116
+#: src/expr-evl.c:632
+msgid "TIME.HMS cannot mix positive and negative in its arguments."
+msgstr ""
+
+#: src/expr-evl.c:696
+#, fuzzy
+msgid "Week argument to WKYR must be in range 0 to 53."
+msgstr "Text colour must be in range 0-15."
+
+#: src/expr-evl.c:847 src/expr-evl.c:903
+msgid "Argument 3 of RINDEX may not be system-missing."
+msgstr ""
+
+#: src/expr-evl.c:857 src/expr-evl.c:913
+msgid ""
+"Argument 3 of RINDEX must be between 1 and the length of argument 2, and it "
+"must evenly divide the length of argument 2."
+msgstr ""
+
+#: src/expr-evl.c:1099
 msgid ""
 "A number being treated as a Boolean in an expression was found to have a "
 "value other than 0 (false), 1 (true), or the system-missing value.  The "
 "result was forced to 0."
 msgstr ""
 
-#: src/expr-evl.c:1160
+#: src/expr-evl.c:1140
 #, c-format
 msgid ""
 "SYSMIS is not a valid index value for vector %s.  The result will be set to "
 "SYSMIS."
 msgstr ""
 
-#: src/expr-evl.c:1164
+#: src/expr-evl.c:1144
 #, c-format
 msgid ""
 "%g is not a valid index value for vector %s.  The result will be set to "
 "SYSMIS."
 msgstr ""
 
-#: src/expr-evl.c:1182
+#: src/expr-evl.c:1163
 #, c-format
 msgid ""
 "SYSMIS is not a valid index value for vector %s.  The result will be set to "
 "the empty string."
 msgstr ""
 
-#: src/expr-evl.c:1187
+#: src/expr-evl.c:1168
 #, c-format
 msgid ""
 "%g is not a valid index value for vector %s.  The result will be set to the "
 "empty string."
 msgstr ""
 
-#: src/expr-opt.c:662
-msgid ""
-"While optimizing a constant expression, there was a bad value for the third "
-"argument to INDEX."
-msgstr ""
-
-#: src/expr-opt.c:687
-msgid ""
-"While optimizing a constant expression, there was a bad value for the third "
-"argument to RINDEX."
-msgstr ""
-
-#: src/expr-opt.c:746
-#, c-format
-msgid "Third argument to %cPAD() must be at least one character in length."
-msgstr ""
-
-#: src/expr-opt.c:779
-#, c-format
-msgid "Second argument to %cTRIM() must be at least one character in length."
-msgstr ""
-
-#: src/expr-opt.c:880
+#: src/expr-opt.c:679
 msgid ""
 "When optimizing a constant expression, an integer that was being used as an "
 "Boolean value was found to have a constant value other than 0, 1, or SYSMIS."
@@ -1197,188 +1312,164 @@ msgstr ""
 
 #: src/expr-prs.c:141
 msgid ""
-"A string expression was supplied in a place where a Boolean expression was "
-"expected."
+"Type mismatch: expression has string type, but a numeric value is required "
+"here."
 msgstr ""
 
 #: src/expr-prs.c:152
 msgid ""
-"A numeric expression was expected in a place where one was not supplied."
+"Type mismatch: expression has numeric type, but a string value is required "
+"here."
 msgstr ""
 
-#: src/expr-prs.c:160
-msgid "A string expression was expected in a place where one was not supplied."
-msgstr ""
-
-#: src/expr-prs.c:174
-msgid "The OR operator cannot take string operands."
-msgstr ""
-
-#: src/expr-prs.c:222
-msgid "The AND operator cannot take string operands."
+#: src/expr-prs.c:211
+#, c-format
+msgid "Type mismatch: operands of %s operator must be strings."
 msgstr ""
 
-#: src/expr-prs.c:271
-msgid "The NOT operator cannot take a string operand."
+#: src/expr-prs.c:214
+#, c-format
+msgid "Type mismatch: operands of %s operator must be numeric."
 msgstr ""
 
-#: src/expr-prs.c:298
+#: src/expr-prs.c:395
 msgid ""
-"Strings cannot be compared with numeric or Boolean values with the "
-"relational operators = >= > <= < <>."
+"Chaining relational operators (e.g. \"a < b < c\") will not produce the "
+"mathematically expected result.  Use the AND logical operator to fix the "
+"problem (e.g. \"a < b AND b < c\").  If chaining is really intended, "
+"parentheses will disable this warning (e.g. \"(a < b) < c\".)"
 msgstr ""
 
-#: src/expr-prs.c:355
-msgid "The `+' and `-' operators may only be used with numeric operands."
-msgstr ""
-
-#: src/expr-prs.c:407
-msgid "The `*' and `/' operators may only be used with numeric operands."
-msgstr ""
-
-#: src/expr-prs.c:458
-msgid "The unary minus (-) operator can only take a numeric operand."
-msgstr ""
-
-#: src/expr-prs.c:488
-msgid "Both operands to the ** operator must be numeric."
-msgstr ""
-
-#: src/expr-prs.c:582
-msgid "Use of $LENGTH is obsolete, returning default of 66."
-msgstr ""
-
-#: src/expr-prs.c:587
-msgid "Use of $WIDTH is obsolete, returning default of 131."
+#: src/expr-prs.c:475
+msgid ""
+"The exponentiation operator (\"**\") is left-associative, even though right-"
+"associative semantics are more useful.  That is, \"a**b**c\" equals \"(a**b)"
+"**c\", not as \"a**(b**c)\".  To disable this warning, insert parentheses."
 msgstr ""
 
-#: src/expr-prs.c:592
+#: src/expr-prs.c:556
 #, c-format
 msgid "Unknown system variable %s."
 msgstr ""
 
-#: src/expr-prs.c:631
+#: src/expr-prs.c:595
 msgid "expecting variable name"
 msgstr ""
 
-#: src/expr-prs.c:673
+#: src/expr-prs.c:638
 msgid "in expression"
 msgstr ""
 
-#: src/expr-prs.c:854
+#: src/expr-prs.c:734
 msgid "Argument 2 to LAG must be a small positive integer constant."
 msgstr ""
 
-#: src/expr-prs.c:927 src/expr-prs.c:966
+#: src/expr-prs.c:815 src/expr-prs.c:854
 #, c-format
 msgid ""
 "Type mismatch in argument %d of %s, which was expected to be of %s type.  It "
 "was actually of %s type. "
 msgstr ""
 
-#: src/expr-prs.c:953
+#: src/expr-prs.c:841
 #, c-format
 msgid "%s cannot take Boolean operands."
 msgstr ""
 
-#: src/expr-prs.c:985
+#: src/expr-prs.c:873
 msgid "in function call"
 msgstr ""
 
-#: src/expr-prs.c:999
+#: src/expr-prs.c:887
 msgid "RANGE requires an odd number of arguments, but at least three."
 msgstr ""
 
-#: src/expr-prs.c:1009
+#: src/expr-prs.c:897
 #, c-format
 msgid "%s requires at least two arguments."
 msgstr ""
 
-#: src/expr-prs.c:1024
+#: src/expr-prs.c:912
 #, c-format
 msgid "%s.%d requires at least %d arguments."
 msgstr ""
 
-#: src/expr-prs.c:1066
+#: src/expr-prs.c:977
 #, c-format
 msgid ""
 "Argument %d to CONCAT is type %s.  All arguments to CONCAT must be strings."
 msgstr ""
 
-#: src/expr-prs.c:1125
+#: src/expr-prs.c:1074
 #, c-format
 msgid ""
 "Argument %d to %s was expected to be of %s type.  It was actually of type %s."
 msgstr ""
 
-#: src/expr-prs.c:1144
+#: src/expr-prs.c:1091
 #, c-format
 msgid "%s is not a numeric format."
 msgstr ""
 
-#: src/expr-prs.c:1170
+#: src/expr-prs.c:1129
 #, c-format
 msgid "Too few arguments to function %s."
 msgstr ""
 
-#: src/expr-prs.c:1202
+#: src/expr-prs.c:1162
 #, c-format
 msgid ""
-"Type mismatch in argument %d of %s, which was expected to be numeric.  It "
-"was actually type %s."
+"Type mismatch in argument %d of %s.  A string expression was supplied where "
+"only a numeric expression is allowed."
 msgstr ""
 
-#: src/expr-prs.c:1211
+#: src/expr-prs.c:1172
 #, c-format
 msgid "Missing comma following argument %d of %s."
 msgstr ""
 
-#: src/expr-prs.c:1249
+#: src/expr-prs.c:1210
 msgid "The index value after a vector name must be numeric."
 msgstr ""
 
-#: src/expr-prs.c:1256
+#: src/expr-prs.c:1217
 msgid "`)' expected after a vector index value."
 msgstr ""
 
-#: src/expr-prs.c:1289
+#: src/expr-prs.c:1250
 #, c-format
 msgid "There is no function named %s."
 msgstr ""
 
-#: src/expr-prs.c:1294
+#: src/expr-prs.c:1255
 #, c-format
 msgid "Function %s may not be given a minimum number of arguments."
 msgstr ""
 
-#: src/expr-prs.c:1303
+#: src/expr-prs.c:1264
 #, c-format
 msgid "expecting `)' after %s function"
 msgstr ""
 
-#: src/expr-prs.c:1467
+#: src/expr-prs.c:1286
 msgid "Boolean"
 msgstr ""
 
-#: src/expr-prs.c:1696
+#: src/expr-prs.c:1563
 #, c-format
 msgid "!!TERMINAL!!"
 msgstr ""
 
-#: src/expr-prs.c:1722
+#: src/expr-prs.c:1589
 #, c-format
 msgid "!!SENTINEL!!"
 msgstr ""
 
-#: src/expr-prs.c:1725
+#: src/expr-prs.c:1592
 #, c-format
 msgid "!!ERROR%d!!"
 msgstr ""
 
-#: src/expr-prs.c:1743
-msgid "postfix:"
-msgstr ""
-
 #: src/filename.c:221
 #, c-format
 msgid "Searching for `%s'..."
@@ -1393,145 +1484,145 @@ msgstr ""
 msgid "Found `%s'."
 msgstr ""
 
-#: src/filename.c:669
+#: src/filename.c:686
 #, c-format
 msgid "Not opening pipe file `%s' because SAFER option set."
 msgstr ""
 
-#: src/file-type.c:127
+#: src/file-type.c:126
 msgid "MIXED, GROUPED, or NESTED expected."
 msgstr ""
 
-#: src/file-type.c:150
+#: src/file-type.c:149
 msgid "The CASE subcommand is not valid on FILE TYPE MIXED."
 msgstr ""
 
-#: src/file-type.c:168
+#: src/file-type.c:167
 msgid "WARN or NOWARN expected after WILD."
 msgstr ""
 
-#: src/file-type.c:176
+#: src/file-type.c:175
 msgid "The DUPLICATE subcommand is not valid on FILE TYPE MIXED."
 msgstr ""
 
-#: src/file-type.c:190
+#: src/file-type.c:189
 msgid "DUPLICATE=CASE is only valid on FILE TYPE NESTED."
 msgstr ""
 
-#: src/file-type.c:199
+#: src/file-type.c:198
 #, c-format
 msgid "WARN%s expected after DUPLICATE."
 msgstr ""
 
-#: src/file-type.c:200
+#: src/file-type.c:199
 msgid ", NOWARN, or CASE"
 msgstr ""
 
-#: src/file-type.c:201
+#: src/file-type.c:200
 msgid " or NOWARN"
 msgstr ""
 
-#: src/file-type.c:209
+#: src/file-type.c:208
 msgid "The MISSING subcommand is not valid on FILE TYPE MIXED."
 msgstr ""
 
-#: src/file-type.c:221
+#: src/file-type.c:220
 msgid "WARN or NOWARN after MISSING."
 msgstr ""
 
-#: src/file-type.c:229
+#: src/file-type.c:228
 msgid "ORDERED is only valid on FILE TYPE GROUPED."
 msgstr ""
 
-#: src/file-type.c:240
+#: src/file-type.c:239
 msgid "YES or NO expected after ORDERED."
 msgstr ""
 
-#: src/file-type.c:246 src/file-type.c:541 src/get.c:365
+#: src/file-type.c:245 src/file-type.c:539 src/get.c:362
 msgid "while expecting a valid subcommand"
 msgstr ""
 
-#: src/file-type.c:253
+#: src/file-type.c:252
 msgid "The required RECORD subcommand was not present."
 msgstr ""
 
-#: src/file-type.c:261
+#: src/file-type.c:260
 msgid "The required CASE subcommand was not present."
 msgstr ""
 
-#: src/file-type.c:267
+#: src/file-type.c:266
 msgid "CASE and RECORD must specify different variable names."
 msgstr ""
 
-#: src/file-type.c:322
+#: src/file-type.c:323
 msgid "Column value must be positive."
 msgstr ""
 
-#: src/file-type.c:338
+#: src/file-type.c:339
 msgid "Ending column precedes beginning column."
 msgstr ""
 
-#: src/file-type.c:358
+#: src/file-type.c:359
 msgid "Bad format specifier name."
 msgstr ""
 
-#: src/file-type.c:387 src/file-type.c:578
+#: src/file-type.c:388 src/file-type.c:576
 msgid ""
 "This command may only appear within a FILE TYPE/END FILE TYPE structure."
 msgstr ""
 
-#: src/file-type.c:410
+#: src/file-type.c:411
 msgid "OTHER may appear only on the last RECORD TYPE command."
 msgstr ""
 
-#: src/file-type.c:420
+#: src/file-type.c:421
 msgid "No input commands (DATA LIST, REPEATING DATA) for above RECORD TYPE."
 msgstr ""
 
-#: src/file-type.c:474
+#: src/file-type.c:472
 msgid ""
 "The CASE subcommand is not allowed on the RECORD TYPE command for FILE TYPE "
 "MIXED."
 msgstr ""
 
-#: src/file-type.c:484
+#: src/file-type.c:482
 msgid ""
 "No variable name may be specified for the CASE subcommand on RECORD TYPE."
 msgstr ""
 
-#: src/file-type.c:492
+#: src/file-type.c:490
 msgid ""
 "The CASE column specification on RECORD TYPE must give a format specifier "
 "that is the same type as that of the CASE column specification given on FILE "
 "TYPE."
 msgstr ""
 
-#: src/file-type.c:508
+#: src/file-type.c:506
 msgid "WARN or NOWARN expected on DUPLICATE subcommand."
 msgstr ""
 
-#: src/file-type.c:522
+#: src/file-type.c:520
 msgid "WARN or NOWARN expected on MISSING subcommand."
 msgstr ""
 
-#: src/file-type.c:535
+#: src/file-type.c:533
 msgid "YES or NO expected on SPREAD subcommand."
 msgstr ""
 
-#: src/file-type.c:593
+#: src/file-type.c:589
 msgid "No input commands (DATA LIST, REPEATING DATA) on above RECORD TYPE."
 msgstr ""
 
-#: src/file-type.c:600
+#: src/file-type.c:596
 msgid "No commands between FILE TYPE and END FILE TYPE."
 msgstr ""
 
-#: src/file-type.c:669
+#: src/file-type.c:665
 #, c-format
 msgid "Unknown record type \"%.*s\"."
 msgstr ""
 
-#: src/file-type.c:693
+#: src/file-type.c:689
 #, c-format
 msgid "Unknown record type %g."
 msgstr ""
@@ -1541,59 +1632,59 @@ msgid ""
 "FLIP ignores TEMPORARY.  Temporary transformations will be made permanent."
 msgstr ""
 
-#: src/flip.c:217
+#: src/flip.c:216
 #, c-format
 msgid "Could not create acceptable variant for variable %s."
 msgstr ""
 
-#: src/flip.c:233
+#: src/flip.c:232
 msgid "Cannot create more than 99999 variable names."
 msgstr ""
 
-#: src/flip.c:277
+#: src/flip.c:276
 msgid "Could not create temporary file for FLIP."
 msgstr ""
 
-#: src/flip.c:284 src/flip.c:347
+#: src/flip.c:283 src/flip.c:346
 #, c-format
 msgid "Error writing FLIP file: %s."
 msgstr ""
 
-#: src/flip.c:389
+#: src/flip.c:388
 #, c-format
 msgid "Error rewinding FLIP file: %s."
 msgstr ""
 
-#: src/flip.c:393
+#: src/flip.c:392
 msgid "Error creating FLIP source file."
 msgstr ""
 
-#: src/flip.c:402
+#: src/flip.c:401
 #, c-format
 msgid "Error reading FLIP file: %s."
 msgstr ""
 
-#: src/flip.c:414
+#: src/flip.c:413
 #, c-format
 msgid "Error seeking FLIP source file: %s."
 msgstr ""
 
-#: src/flip.c:419
+#: src/flip.c:418
 #, c-format
 msgid "Error writing FLIP source file: %s."
 msgstr ""
 
-#: src/flip.c:430
+#: src/flip.c:429
 #, c-format
 msgid "Error rewind FLIP source file: %s."
 msgstr ""
 
-#: src/flip.c:478
+#: src/flip.c:477
 #, c-format
 msgid "Error reading FLIP temporary file: %s."
 msgstr ""
 
-#: src/flip.c:481
+#: src/flip.c:480
 msgid "Unexpected end of file reading FLIP temporary file."
 msgstr ""
 
@@ -1679,44 +1770,44 @@ msgstr ""
 msgid "Data format %s is not valid."
 msgstr ""
 
-#: src/formats.c:93
+#: src/formats.c:90
 msgid "`(' expected after variable list"
 msgstr ""
 
-#: src/formats.c:102
+#: src/formats.c:99
 #, c-format
 msgid "Format %s may not be assigned to a %s variable."
 msgstr ""
 
-#: src/formats.c:123 src/numeric.c:65 src/numeric.c:137
+#: src/formats.c:120 src/numeric.c:64 src/numeric.c:135
 msgid "`)' expected after output format."
 msgstr ""
 
-#: src/formats.c:153
+#: src/formats.c:150
 #, c-format
 msgid "Formats:\n"
 msgstr ""
 
-#: src/formats.c:154
+#: src/formats.c:151
 #, c-format
 msgid "  Name      Print         Write\n"
 msgstr ""
 
-#: src/get.c:112
+#: src/get.c:111
 #, c-format
 msgid "GET translation table from file to memory:\n"
 msgstr ""
 
-#: src/get.c:117 src/get.c:1429
+#: src/get.c:116 src/get.c:1424
 #, c-format
 msgid "  %8s from %3d,%3d to %3d,%3d\n"
 msgstr ""
 
-#: src/get.c:371
+#: src/get.c:368
 msgid "All variables deleted from system file dictionary."
 msgstr ""
 
-#: src/get.c:418
+#: src/get.c:415
 #, c-format
 msgid ""
 "Cannot rename %s as %s because there already exists a variable named %s.  To "
@@ -1724,89 +1815,89 @@ msgid ""
 "as \"/RENAME (A=B)(B=C)(C=A)\", or equivalently, \"/RENAME (A B C=B C A)\"."
 msgstr ""
 
-#: src/get.c:443
+#: src/get.c:440
 msgid "`=' expected after variable list."
 msgstr ""
 
-#: src/get.c:450
+#: src/get.c:447
 #, c-format
 msgid ""
 "Number of variables on left side of `=' (%d) does not match number of "
 "variables on right side (%d), in parenthesized group %d of RENAME subcommand."
 msgstr ""
 
-#: src/get.c:463
+#: src/get.c:460
 #, c-format
 msgid "Requested renaming duplicates variable name %s."
 msgstr ""
 
-#: src/get.c:483
+#: src/get.c:480
 #, c-format
 msgid ""
 "\n"
 "Variables in dictionary:\n"
 msgstr ""
 
-#: src/get.c:610
+#: src/get.c:604
 msgid "The BY subcommand may be given once at most."
 msgstr ""
 
-#: src/get.c:677
+#: src/get.c:671
 msgid "The active file may not be specified more than once."
 msgstr ""
 
-#: src/get.c:686
+#: src/get.c:680
 msgid "Cannot specify the active file since no active file has been defined."
 msgstr ""
 
-#: src/get.c:694
+#: src/get.c:688
 msgid ""
 "MATCH FILES may not be used after TEMPORARY when the active file is an input "
 "source.  Temporary transformations will be made permanent."
 msgstr ""
 
-#: src/get.c:727
+#: src/get.c:721
 msgid ""
 "IN, FIRST, and LAST subcommands may not occur before the first FILE or TABLE."
 msgstr ""
 
-#: src/get.c:759
+#: src/get.c:756
 #, c-format
 msgid "Multiple %s subcommands for a single FILE or TABLE."
 msgstr ""
 
-#: src/get.c:769
+#: src/get.c:766
 #, c-format
 msgid "Duplicate variable name %s while creating %s variable."
 msgstr ""
 
-#: src/get.c:783
+#: src/get.c:780
 msgid ""
 "RENAME, KEEP, and DROP subcommands may not occur before the first FILE or "
 "TABLE."
 msgstr ""
 
-#: src/get.c:807
+#: src/get.c:804
 msgid "The BY subcommand is required when a TABLE subcommand is given."
 msgstr ""
 
-#: src/get.c:828
+#: src/get.c:825
 #, c-format
 msgid "File %s lacks BY variable %s."
 msgstr ""
 
-#: src/get.c:1341
+#: src/get.c:1338
 #, c-format
 msgid ""
 "Variable %s in file %s (%s) has different type or width from the same "
 "variable in earlier file (%s)."
 msgstr ""
 
-#: src/get.c:1391
+#: src/get.c:1386
 msgid "expecting COMM or TAPE"
 msgstr ""
 
-#: src/get.c:1424
+#: src/get.c:1419
 #, c-format
 msgid "IMPORT translation table from file to memory:\n"
 msgstr ""
@@ -1826,7 +1917,7 @@ msgstr ""
 msgid "Opening `%s': %s."
 msgstr ""
 
-#: src/getline.c:332 src/html.c:330 src/postscript.c:1461
+#: src/getline.c:332 src/html.c:331 src/postscript.c:1463
 #, c-format
 msgid "Reading `%s': %s."
 msgstr ""
@@ -1994,330 +2085,330 @@ msgstr ""
 msgid "Unknown configuration parameter `%s' for HTML device driver."
 msgstr ""
 
-#: src/html.c:236
+#: src/html.c:237
 msgid ""
 "Cannot find HTML prologue.  The use of `-vv' on the command line is "
 "suggested as a debugging aid."
 msgstr ""
 
-#: src/html.c:241
+#: src/html.c:242
 #, c-format
 msgid "%s: %s: Opening HTML prologue..."
 msgstr ""
 
-#: src/html.c:268 src/html.c:279 src/postscript.c:1353 src/postscript.c:1364
+#: src/html.c:269 src/html.c:280 src/postscript.c:1355 src/postscript.c:1366
 msgid "nobody"
 msgstr ""
 
-#: src/html.c:275 src/html.c:280 src/postscript.c:1360 src/postscript.c:1365
+#: src/html.c:276 src/html.c:281 src/postscript.c:1362 src/postscript.c:1367
 msgid "nowhere"
 msgstr ""
 
-#: src/html.c:339
+#: src/html.c:340
 #, c-format
 msgid "%s: HTML prologue read successfully."
 msgstr ""
 
-#: src/html.c:343
+#: src/html.c:344
 #, c-format
 msgid "%s: Error reading HTML prologue."
 msgstr ""
 
-#: src/html.c:371
+#: src/html.c:372
 #, c-format
 msgid "HTML output driver: %s: %s"
 msgstr ""
 
-#: src/html.c:402 src/list.q:259
+#: src/html.c:403 src/list.q:258
 #, c-format
 msgid "Cannot open first page on HTML device %s."
 msgstr ""
 
-#: src/include.c:51
-msgid "Unrecognized filename format."
+#: src/include.c:40
+msgid "expecting filename"
 msgstr ""
 
-#: src/inpt-pgm.c:86
+#: src/inpt-pgm.c:80
 msgid "No matching INPUT PROGRAM command."
 msgstr ""
 
-#: src/inpt-pgm.c:91
+#: src/inpt-pgm.c:85
 msgid ""
 "No data-input or transformation commands specified between INPUT PROGRAM and "
 "END INPUT PROGRAM."
 msgstr ""
 
-#: src/inpt-pgm.c:295 src/inpt-pgm.c:438
+#: src/inpt-pgm.c:286 src/inpt-pgm.c:419
 msgid ""
 "This command may only be executed between INPUT PROGRAM and END INPUT "
 "PROGRAM."
 msgstr ""
 
-#: src/inpt-pgm.c:351
+#: src/inpt-pgm.c:341
 msgid "COLUMN subcommand multiply specified."
 msgstr ""
 
-#: src/inpt-pgm.c:365
-msgid "expecting file handle name"
-msgstr ""
-
-#: src/inpt-pgm.c:410
+#: src/inpt-pgm.c:394
 msgid ""
 "REREAD: Column numbers must be positive finite numbers.  Column set to 1."
 msgstr ""
 
-#: src/lexer.c:219
+#: src/lexer.c:244
 #, c-format
 msgid "%s does not form a valid number."
 msgstr ""
 
-#: src/lexer.c:337
+#: src/lexer.c:362
 #, c-format
 msgid "Bad character in input: `%c'."
 msgstr ""
 
-#: src/lexer.c:339
+#: src/lexer.c:364
 #, c-format
 msgid "Bad character in input: `\\%o'."
 msgstr ""
 
-#: src/lexer.c:360
+#: src/lexer.c:385
 msgid "Syntax error at end of file."
 msgstr ""
 
-#: src/lexer.c:370
+#: src/lexer.c:395
 #, c-format
 msgid "Syntax error %s at `%s'."
 msgstr ""
 
-#: src/lexer.c:373
+#: src/lexer.c:398
 #, c-format
 msgid "Syntax error at `%s'."
 msgstr ""
 
-#: src/lexer.c:493
+#: src/lexer.c:518
 #, c-format
 msgid "expecting `%s'"
 msgstr ""
 
-#: src/lexer.c:510
+#: src/lexer.c:535
 #, c-format
 msgid "expecting %s"
 msgstr ""
 
-#: src/lexer.c:524 src/val-labs.c:155
+#: src/lexer.c:549 src/val-labs.c:151
 msgid "expecting string"
 msgstr ""
 
-#: src/lexer.c:538 src/val-labs.c:164
+#: src/lexer.c:563 src/val-labs.c:160
 msgid "expecting integer"
 msgstr ""
 
-#: src/lexer.c:552
+#: src/lexer.c:577
 msgid "expecting number"
 msgstr ""
 
-#: src/lexer.c:566
+#: src/lexer.c:591
 msgid "expecting identifier"
 msgstr ""
 
-#: src/lexer.c:702
-msgid "The rest of this command has been discarded."
-msgstr ""
-
-#: src/lexer.c:842 src/print.c:1154
-#, c-format
+#: src/lexer.c:860
 msgid "<ERROR>"
 msgstr ""
 
-#: src/lexer.c:968 src/pfm-read.c:132 src/repeat.c:225
+#: src/lexer.c:987 src/pfm-read.c:135 src/repeat.c:222
 msgid "Unexpected end of file."
 msgstr ""
 
-#: src/lexer.c:994
+#: src/lexer.c:1013
 msgid "binary"
 msgstr ""
 
-#: src/lexer.c:994
+#: src/lexer.c:1013
 msgid "octal"
 msgstr ""
 
-#: src/lexer.c:994
+#: src/lexer.c:1013
 msgid "hex"
 msgstr ""
 
-#: src/lexer.c:1008
+#: src/lexer.c:1027
 #, c-format
 msgid "String of %s digits has %d characters, which is not a multiple of %d."
 msgstr ""
 
-#: src/lexer.c:1037
+#: src/lexer.c:1056
 #, c-format
 msgid "`%c' is not a valid %s digit."
 msgstr ""
 
-#: src/lexer.c:1068
+#: src/lexer.c:1087
 msgid "Unterminated string constant."
 msgstr ""
 
-#: src/lexer.c:1140
+#: src/lexer.c:1159
 #, c-format
 msgid "String exceeds 255 characters in length (%d characters)."
 msgstr ""
 
-#: src/lexer.c:1155
+#: src/lexer.c:1174
 msgid ""
 "Sorry, literal strings may not contain null characters.  Replacing with "
 "spaces."
 msgstr ""
 
-#: src/loop.c:194
+#: src/loop.c:192
 msgid "The index variable may not be a string variable."
 msgstr ""
 
-#: src/loop.c:309
+#: src/loop.c:307
 msgid "There is no LOOP command that corresponds to this END LOOP."
 msgstr ""
 
-#: src/loop.c:512
+#: src/loop.c:508
 msgid ""
 "This command may only appear enclosed in a LOOP/END LOOP control structure."
 msgstr ""
 
-#: src/loop.c:518
+#: src/loop.c:514
 msgid "BREAK not enclosed in DO IF structure."
 msgstr ""
 
-#: src/loop.c:596
+#: src/loop.c:592
 #, c-format
 msgid "%s without %s."
 msgstr ""
 
-#: src/main.c:71
+#: src/main.c:64
+#, c-format
+msgid "gsl error at %s:%d; reason: \"%s\""
+msgstr ""
+
+#: src/main.c:81
 msgid "Error initializing output drivers."
 msgstr ""
 
-#: src/main.c:132
+#: src/main.c:147
 msgid "This command not executed."
 msgstr ""
 
-#: src/main.c:136
+#: src/main.c:151
 msgid ""
 "Skipping the rest of this command.  Part of this command may have been "
 "executed."
 msgstr ""
 
-#: src/main.c:141
+#: src/main.c:156
 msgid ""
 "Skipping the rest of this command.  This command was fully executed up to "
 "this point."
 msgstr ""
 
-#: src/main.c:146
+#: src/main.c:161
 msgid ""
 "Trailing garbage was encountered following this command.  The command was "
 "fully executed to this point."
 msgstr ""
 
-#: src/matrix-data.c:191
+#: src/main.c:178
+msgid "The rest of this command has been discarded."
+msgstr ""
+
+#: src/matrix-data.c:188
 msgid "VARIABLES subcommand multiply specified."
 msgstr ""
 
-#: src/matrix-data.c:206
+#: src/matrix-data.c:203
 msgid "VARNAME_ cannot be explicitly specified on VARIABLES."
 msgstr ""
 
-#: src/matrix-data.c:271
+#: src/matrix-data.c:268
 msgid "in FORMAT subcommand"
 msgstr ""
 
-#: src/matrix-data.c:282
+#: src/matrix-data.c:279
 msgid "SPLIT subcommand multiply specified."
 msgstr ""
 
-#: src/matrix-data.c:289
+#: src/matrix-data.c:286
 msgid "in SPLIT subcommand"
 msgstr ""
 
-#: src/matrix-data.c:298
+#: src/matrix-data.c:295
 msgid "Split variable may not be named ROWTYPE_ or VARNAME_."
 msgstr ""
 
-#: src/matrix-data.c:331
+#: src/matrix-data.c:328
 #, c-format
 msgid "Split variable %s is already another type."
 msgstr ""
 
-#: src/matrix-data.c:346
+#: src/matrix-data.c:343
 msgid "FACTORS subcommand multiply specified."
 msgstr ""
 
-#: src/matrix-data.c:361
+#: src/matrix-data.c:358
 #, c-format
 msgid "Factor variable %s is already another type."
 msgstr ""
 
-#: src/matrix-data.c:376
+#: src/matrix-data.c:373
 msgid "CELLS subcommand multiply specified."
 msgstr ""
 
-#: src/matrix-data.c:382 src/matrix-data.c:401
+#: src/matrix-data.c:379 src/matrix-data.c:398
 msgid "expecting positive integer"
 msgstr ""
 
-#: src/matrix-data.c:395
+#: src/matrix-data.c:392
 msgid "N subcommand multiply specified."
 msgstr ""
 
-#: src/matrix-data.c:416
+#: src/matrix-data.c:413
 msgid "CONTENTS subcommand multiply specified."
 msgstr ""
 
-#: src/matrix-data.c:436
+#: src/matrix-data.c:433
 msgid "Nested parentheses not allowed."
 msgstr ""
 
-#: src/matrix-data.c:446
+#: src/matrix-data.c:443
 msgid "Mismatched right parenthesis (`(')."
 msgstr ""
 
-#: src/matrix-data.c:451
+#: src/matrix-data.c:448
 msgid "Empty parentheses not allowed."
 msgstr ""
 
-#: src/matrix-data.c:464 src/matrix-data.c:472
+#: src/matrix-data.c:461 src/matrix-data.c:469
 msgid "in CONTENTS subcommand"
 msgstr ""
 
-#: src/matrix-data.c:479
+#: src/matrix-data.c:476
 #, c-format
 msgid "Content multiply specified for %s."
 msgstr ""
 
-#: src/matrix-data.c:496
+#: src/matrix-data.c:493
 msgid "Missing right parenthesis."
 msgstr ""
 
-#: src/matrix-data.c:516
+#: src/matrix-data.c:513
 msgid "Missing VARIABLES subcommand."
 msgstr ""
 
-#: src/matrix-data.c:522
+#: src/matrix-data.c:519
 msgid ""
 "CONTENTS subcommand not specified: assuming file contains only CORR matrix."
 msgstr ""
 
-#: src/matrix-data.c:532
+#: src/matrix-data.c:529
 msgid ""
 "Missing CELLS subcommand.  CELLS is required when ROWTYPE_ is not given in "
 "the data and factors are present."
 msgstr ""
 
-#: src/matrix-data.c:540
+#: src/matrix-data.c:537
 msgid "Split file values must be present in the data when ROWTYPE_ is present."
 msgstr ""
 
-#: src/matrix-data.c:595
+#: src/matrix-data.c:592
 msgid "No continuous variables specified."
 msgstr ""
 
@@ -2326,129 +2417,129 @@ msgstr ""
 msgid "End of line expected %s while reading %s."
 msgstr ""
 
-#: src/matrix-data.c:1174
+#: src/matrix-data.c:1176
 #, c-format
 msgid "expecting value for %s %s"
 msgstr ""
 
-#: src/matrix-data.c:1336
+#: src/matrix-data.c:1338
 #, c-format
 msgid "Syntax error expecting SPLIT FILE value %s."
 msgstr ""
 
-#: src/matrix-data.c:1345
+#: src/matrix-data.c:1347
 #, c-format
 msgid "Expecting value %g for %s."
 msgstr ""
 
-#: src/matrix-data.c:1386 src/matrix-data.c:1854
+#: src/matrix-data.c:1388 src/matrix-data.c:1856
 #, c-format
 msgid "Syntax error expecting factor value %s."
 msgstr ""
 
-#: src/matrix-data.c:1395
+#: src/matrix-data.c:1397
 #, c-format
 msgid "Syntax error expecting value %g for %s %s."
 msgstr ""
 
-#: src/matrix-data.c:1631
+#: src/matrix-data.c:1633
 #, c-format
 msgid "Syntax error %s expecting SPLIT FILE value."
 msgstr ""
 
-#: src/matrix-data.c:1761
+#: src/matrix-data.c:1763
 #, c-format
 msgid ""
 "Expected %d lines of data for %s content; actually saw %d lines.  No data "
 "will be output for this content."
 msgstr ""
 
-#: src/matrix-data.c:1796
+#: src/matrix-data.c:1798
 #, c-format
 msgid "Multiply specified ROWTYPE_ %s."
 msgstr ""
 
-#: src/matrix-data.c:1801
+#: src/matrix-data.c:1803
 #, c-format
 msgid "Syntax error %s expecting ROWTYPE_ string."
 msgstr ""
 
-#: src/matrix-data.c:1821
+#: src/matrix-data.c:1823
 #, c-format
 msgid "Syntax error %s."
 msgstr ""
 
-#: src/matrix-data.c:1971
+#: src/matrix-data.c:1973
 #, c-format
 msgid "Duplicate specification for %s."
 msgstr ""
 
-#: src/matrix-data.c:1983
+#: src/matrix-data.c:1985
 #, c-format
 msgid "Too many rows of matrix data for %s."
 msgstr ""
 
-#: src/matrix-data.c:2029
+#: src/matrix-data.c:2033
 #, c-format
 msgid "Syntax error expecting value for %s %s."
 msgstr ""
 
-#: src/mis-val.c:77
+#: src/mis-val.c:75
 msgid "`)' expected after value specification."
 msgstr ""
 
-#: src/mis-val.c:111
+#: src/mis-val.c:109
 #, c-format
 msgid "`(' expected after variable name%s."
 msgstr ""
 
-#: src/mis-val.c:123
+#: src/mis-val.c:121
 msgid "Long string value specified."
 msgstr ""
 
-#: src/mis-val.c:128
+#: src/mis-val.c:126
 msgid "Short strings must be of equal width."
 msgstr ""
 
-#: src/mis-val.c:185
+#: src/mis-val.c:183
 #, c-format
 msgid "Range %g THRU %g is not valid because %g is greater than %g."
 msgstr ""
 
-#: src/mis-val.c:216
+#: src/mis-val.c:214
 msgid "Number or range expected."
 msgstr ""
 
-#: src/mis-val.c:249
+#: src/mis-val.c:247
 msgid "At most one range can exist in the missing values for any one variable."
 msgstr ""
 
-#: src/mis-val.c:255
+#: src/mis-val.c:253
 msgid "At most one individual value can be missing along with one range."
 msgstr ""
 
-#: src/mis-val.c:317
+#: src/mis-val.c:315
 msgid "String is not of proper length."
 msgstr ""
 
-#: src/mis-val.c:326 src/repeat.c:476
+#: src/mis-val.c:324 src/repeat.c:473
 msgid "String expected."
 msgstr ""
 
-#: src/mis-val.c:366
+#: src/mis-val.c:364
 msgid "Missing value:"
 msgstr ""
 
-#: src/mis-val.c:371
+#: src/mis-val.c:369
 msgid "(long string variable)"
 msgstr ""
 
-#: src/mis-val.c:376
+#: src/mis-val.c:374
 #, c-format
 msgid "(no missing values)\n"
 msgstr ""
 
-#: src/mis-val.c:399
+#: src/mis-val.c:397
 #, c-format
 msgid "(!!!INTERNAL ERROR--%d!!!)\n"
 msgstr ""
@@ -2459,83 +2550,87 @@ msgid ""
 "be made permanent."
 msgstr ""
 
-#: src/modify-vars.c:115
+#: src/modify-vars.c:112
 msgid "REORDER subcommand may be given at most once."
 msgstr ""
 
-#: src/modify-vars.c:138
+#: src/modify-vars.c:135
 msgid "Cannot specify ALL after specifying a set of variables."
 msgstr ""
 
-#: src/modify-vars.c:148
+#: src/modify-vars.c:145
 msgid "`(' expected on REORDER subcommand."
 msgstr ""
 
-#: src/modify-vars.c:160
+#: src/modify-vars.c:157
 msgid "`)' expected following variable names on REORDER subcommand."
 msgstr ""
 
-#: src/modify-vars.c:178
+#: src/modify-vars.c:175
 msgid "RENAME subcommand may be given at most once."
 msgstr ""
 
-#: src/modify-vars.c:191
+#: src/modify-vars.c:188
 msgid "`(' expected on RENAME subcommand."
 msgstr ""
 
-#: src/modify-vars.c:199
+#: src/modify-vars.c:196
 msgid ""
 "`=' expected between lists of new and old variable names on RENAME "
 "subcommand."
 msgstr ""
 
-#: src/modify-vars.c:207 src/rename-vars.c:77
+#: src/modify-vars.c:204 src/rename-vars.c:74
 #, c-format
 msgid ""
 "Differing number of variables in old name list (%d) and in new name list (%"
 "d)."
 msgstr ""
 
-#: src/modify-vars.c:218
+#: src/modify-vars.c:215
 msgid "`)' expected after variable lists on RENAME subcommand."
 msgstr ""
 
-#: src/modify-vars.c:232
+#: src/modify-vars.c:229
 msgid ""
 "KEEP subcommand may be given at most once.  It may notbe given in "
 "conjunction with the DROP subcommand."
 msgstr ""
 
-#: src/modify-vars.c:274
+#: src/modify-vars.c:271
 msgid ""
 "DROP subcommand may be given at most once.  It may not be given in "
 "conjunction with the KEEP subcommand."
 msgstr ""
 
-#: src/modify-vars.c:300
+#: src/modify-vars.c:297
 #, c-format
 msgid "Unrecognized subcommand name `%s'."
 msgstr ""
 
-#: src/modify-vars.c:302
+#: src/modify-vars.c:299
 msgid "Subcommand name expected."
 msgstr ""
 
-#: src/modify-vars.c:310
+#: src/modify-vars.c:307
 msgid "`/' or `.' expected."
 msgstr ""
 
-#: src/numeric.c:58
+#: src/moments.c:350
+msgid "expecting weight value"
+msgstr ""
+
+#: src/numeric.c:57
 #, c-format
 msgid "Format type %s may not be used with a numeric variable."
 msgstr ""
 
-#: src/numeric.c:77 src/numeric.c:159 src/vector.c:157
+#: src/numeric.c:76 src/numeric.c:158 src/vector.c:155
 #, c-format
 msgid "There is already a variable named %s."
 msgstr ""
 
-#: src/numeric.c:130
+#: src/numeric.c:128
 #, c-format
 msgid "Format type %s may not be used with a string variable."
 msgstr ""
@@ -2563,12 +2658,12 @@ msgstr ""
 msgid "%s: Opening device description file..."
 msgstr ""
 
-#: src/output.c:304 src/output.c:1165 src/postscript.c:1097
+#: src/output.c:304 src/output.c:1165 src/postscript.c:1099
 #, c-format
 msgid "Opening %s: %s."
 msgstr ""
 
-#: src/output.c:315 src/output.c:1176 src/postscript.c:1112
+#: src/output.c:315 src/output.c:1176 src/postscript.c:1114
 #, c-format
 msgid "Reading %s: %s."
 msgstr ""
@@ -2577,7 +2672,7 @@ msgstr ""
 msgid "Syntax error."
 msgstr ""
 
-#: src/output.c:347 src/postscript.c:1123
+#: src/output.c:347 src/postscript.c:1125
 #, c-format
 msgid "Closing %s: %s."
 msgstr ""
@@ -2715,192 +2810,192 @@ msgstr ""
 msgid "Error opening page on %s device of %s class."
 msgstr ""
 
-#: src/pfm-read.c:89
+#: src/pfm-read.c:91
 #, c-format
 msgid "portable file %s corrupt at offset %ld: "
 msgstr ""
 
-#: src/pfm-read.c:108 src/pfm-write.c:502
+#: src/pfm-read.c:110 src/pfm-write.c:504
 #, c-format
 msgid "%s: Closing portable file: %s."
 msgstr ""
 
-#: src/pfm-read.c:140
+#: src/pfm-read.c:143
 msgid "Bad line end."
 msgstr ""
 
-#: src/pfm-read.c:221
+#: src/pfm-read.c:224
 #, c-format
 msgid "Cannot read file %s as portable file: already opened for %s."
 msgstr ""
 
-#: src/pfm-read.c:227
+#: src/pfm-read.c:230
 #, c-format
 msgid "%s: Opening portable-file handle %s for reading."
 msgstr ""
 
-#: src/pfm-read.c:235
+#: src/pfm-read.c:238
 #, c-format
 msgid ""
 "An error occurred while opening \"%s\" for reading as a portable file: %s."
 msgstr ""
 
-#: src/pfm-read.c:269
+#: src/pfm-read.c:273
 msgid "Data record expected."
 msgstr ""
 
-#: src/pfm-read.c:271
+#: src/pfm-read.c:275
 msgid "Read portable-file dictionary successfully."
 msgstr ""
 
-#: src/pfm-read.c:280
+#: src/pfm-read.c:284
 msgid "Error reading portable-file dictionary."
 msgstr ""
 
-#: src/pfm-read.c:378
+#: src/pfm-read.c:382
 msgid "Missing numeric terminator."
 msgstr ""
 
-#: src/pfm-read.c:415
+#: src/pfm-read.c:419
 msgid "Bad integer format."
 msgstr ""
 
-#: src/pfm-read.c:445
+#: src/pfm-read.c:449
 #, c-format
 msgid "Bad string length %d."
 msgstr ""
 
-#: src/pfm-read.c:544
+#: src/pfm-read.c:548
 #, c-format
 msgid "Bad date string length %d."
 msgstr ""
 
-#: src/pfm-read.c:548
+#: src/pfm-read.c:552
 msgid "Bad character in date."
 msgstr ""
 
-#: src/pfm-read.c:568
+#: src/pfm-read.c:572
 #, c-format
 msgid "Bad time string length %d."
 msgstr ""
 
-#: src/pfm-read.c:572
+#: src/pfm-read.c:576
 msgid "Bad character in time."
 msgstr ""
 
-#: src/pfm-read.c:622 src/pfm-read.c:629 src/sfm-read.c:900 src/sfm-read.c:908
+#: src/pfm-read.c:626 src/pfm-read.c:633 src/sfm-read.c:918 src/sfm-read.c:926
 #, c-format
 msgid "%s: Bad format specifier byte (%d)."
 msgstr ""
 
-#: src/pfm-read.c:631
+#: src/pfm-read.c:635
 #, c-format
 msgid "%s variable %s has %s format specifier %s."
 msgstr ""
 
-#: src/pfm-read.c:632 src/print.c:610 src/sfm-read.c:912
+#: src/pfm-read.c:636 src/print.c:600 src/sfm-read.c:931
 msgid "String"
 msgstr ""
 
-#: src/pfm-read.c:632 src/print.c:610 src/sfm-read.c:912
+#: src/pfm-read.c:636 src/print.c:600 src/sfm-read.c:931
 msgid "Numeric"
 msgstr ""
 
-#: src/pfm-read.c:671
+#: src/pfm-read.c:675
 msgid "Expected variable count record."
 msgstr ""
 
-#: src/pfm-read.c:675
+#: src/pfm-read.c:679
 #, c-format
 msgid "Invalid number of variables %d."
 msgstr ""
 
-#: src/pfm-read.c:685
+#: src/pfm-read.c:689
 #, c-format
 msgid "Unexpected flag value %d."
 msgstr ""
 
-#: src/pfm-read.c:699
+#: src/pfm-read.c:703
 #, c-format
 msgid "Weight variable name (%s) truncated."
 msgstr ""
 
-#: src/pfm-read.c:714
+#: src/pfm-read.c:718
 msgid "Expected variable record."
 msgstr ""
 
-#: src/pfm-read.c:720
+#: src/pfm-read.c:724
 #, c-format
 msgid "Invalid variable width %d."
 msgstr ""
 
-#: src/pfm-read.c:738
+#: src/pfm-read.c:742
 #, c-format
 msgid "position %d: Variable name has %u characters."
 msgstr ""
 
-#: src/pfm-read.c:742
+#: src/pfm-read.c:746
 #, c-format
 msgid "position %d: Variable name begins with invalid character."
 msgstr ""
 
-#: src/pfm-read.c:746
+#: src/pfm-read.c:750
 #, c-format
 msgid "position %d: Variable name begins with lowercase letter %c."
 msgstr ""
 
-#: src/pfm-read.c:759
+#: src/pfm-read.c:763
 #, c-format
 msgid "position %d: Variable name character %d is lowercase letter %c."
 msgstr ""
 
-#: src/pfm-read.c:769
+#: src/pfm-read.c:773
 #, c-format
 msgid "position %d: character `\\%03o' is not valid in a variable name."
 msgstr ""
 
-#: src/pfm-read.c:780
+#: src/pfm-read.c:784
 #, c-format
 msgid "Duplicate variable name %s."
 msgstr ""
 
-#: src/pfm-read.c:824
+#: src/pfm-read.c:828
 #, c-format
 msgid "Bad missing values for %s."
 msgstr ""
 
-#: src/pfm-read.c:847
+#: src/pfm-read.c:851
 #, c-format
 msgid "Weighting variable %s not present in dictionary."
 msgstr ""
 
-#: src/pfm-read.c:920
+#: src/pfm-read.c:924
 #, c-format
 msgid "Unknown variable %s while parsing value labels."
 msgstr ""
 
-#: src/pfm-read.c:923
+#: src/pfm-read.c:927
 #, c-format
 msgid ""
 "Cannot assign value labels to %s and %s, which have different variable types "
 "or widths."
 msgstr ""
 
-#: src/pfm-read.c:956
+#: src/pfm-read.c:960
 #, c-format
 msgid "Duplicate label for value %g for variable %s."
 msgstr ""
 
-#: src/pfm-read.c:959
+#: src/pfm-read.c:963
 #, c-format
 msgid "Duplicate label for value `%.*s' for variable %s."
 msgstr ""
 
-#: src/pfm-read.c:1029
+#: src/pfm-read.c:1033
 msgid "End of file midway through case."
 msgstr ""
 
-#: src/pfm-read.c:1039
+#: src/pfm-read.c:1043
 msgid "reading as a portable file"
 msgstr ""
 
@@ -2920,20 +3015,20 @@ msgid ""
 "An error occurred while opening \"%s\" for writing as a portable file: %s."
 msgstr ""
 
-#: src/pfm-write.c:123
+#: src/pfm-write.c:124
 msgid "Wrote portable-file header successfully."
 msgstr ""
 
-#: src/pfm-write.c:128
+#: src/pfm-write.c:129
 msgid "Error writing portable-file header."
 msgstr ""
 
-#: src/pfm-write.c:169
+#: src/pfm-write.c:170
 #, c-format
 msgid "%s: Writing portable file: %s."
 msgstr ""
 
-#: src/pfm-write.c:511
+#: src/pfm-write.c:514
 msgid "writing as a portable file"
 msgstr ""
 
@@ -2975,177 +3070,173 @@ msgstr ""
 msgid "Unknown value for `line-style'.  Valid values are `thick' and `double'."
 msgstr ""
 
-#: src/postscript.c:685
+#: src/postscript.c:686
 #, c-format
 msgid ""
 "Default font size must be at least 1 point (value of 1000 for key `%s')."
 msgstr ""
 
-#: src/postscript.c:717
+#: src/postscript.c:718
 #, c-format
 msgid "Value for `%s' must be a dimension of positive length (i.e., `1in')."
 msgstr ""
 
-#: src/postscript.c:780
+#: src/postscript.c:782
 #, c-format
 msgid "Nonnegative integer required as value for `%s'."
 msgstr ""
 
-#: src/postscript.c:906
+#: src/postscript.c:908
 #, c-format
 msgid "%s: %s: Opening PostScript font encoding..."
 msgstr ""
 
-#: src/postscript.c:912
+#: src/postscript.c:914
 #, c-format
 msgid ""
 "PostScript driver: Cannot open encoding file `%s': %s.  Substituting "
 "ISOLatin1Encoding for missing encoding."
 msgstr ""
 
-#: src/postscript.c:954
+#: src/postscript.c:956
 msgid "PostScript driver: Invalid numeric format."
 msgstr ""
 
-#: src/postscript.c:959
+#: src/postscript.c:961
 #, c-format
 msgid ""
 "PostScript driver: Codes must be between 0 and 255.  (%d is not allowed.)"
 msgstr ""
 
-#: src/postscript.c:995
+#: src/postscript.c:997
 #, c-format
 msgid "PostScript driver: Error closing encoding file `%s'."
 msgstr ""
 
-#: src/postscript.c:998
+#: src/postscript.c:1000
 #, c-format
 msgid "%s: PostScript font encoding read successfully."
 msgstr ""
 
-#: src/postscript.c:1092
+#: src/postscript.c:1094
 #, c-format
 msgid "%s: %s: Opening PostScript encoding list file."
 msgstr ""
 
-#: src/postscript.c:1125
+#: src/postscript.c:1127
 #, c-format
 msgid "%s: PostScript encoding list file read successfully."
 msgstr ""
 
-#: src/postscript.c:1139
+#: src/postscript.c:1141
 msgid "<<default encoding>>"
 msgstr ""
 
-#: src/postscript.c:1297
+#: src/postscript.c:1299
 msgid ""
 "Cannot find PostScript prologue.  The use of `-vv' on the command line is "
 "suggested as a debugging aid."
 msgstr ""
 
-#: src/postscript.c:1302
+#: src/postscript.c:1304
 #, c-format
 msgid "%s: %s: Opening PostScript prologue..."
 msgstr ""
 
-#: src/postscript.c:1474
+#: src/postscript.c:1476
 #, c-format
 msgid "%s: PostScript prologue read successfully."
 msgstr ""
 
-#: src/postscript.c:1478
+#: src/postscript.c:1480
 #, c-format
 msgid "%s: Error reading PostScript prologue."
 msgstr ""
 
-#: src/postscript.c:1648
+#: src/postscript.c:1650
 #, c-format
 msgid "PostScript output driver: %s: %s"
 msgstr ""
 
-#: src/postscript.c:2332
+#: src/postscript.c:2334
 #, c-format
 msgid "PostScript driver: Cannot find encoding `%s' for PostScript font `%s'."
 msgstr ""
 
-#: src/print.c:188
+#: src/print.c:179
 msgid "expecting a valid subcommand"
 msgstr ""
 
-#: src/print.c:368 src/print.c:385
+#: src/print.c:358 src/print.c:375
 #, c-format
 msgid "%g is not a valid column location."
 msgstr ""
 
-#: src/print.c:379
+#: src/print.c:369
 #, c-format
 msgid "Column location expected following `%d-'."
 msgstr ""
 
-#: src/print.c:390
+#: src/print.c:380
 #, c-format
 msgid ""
 "%d-%ld is not a valid column range.  The second column must be greater than "
 "or equal to the first."
 msgstr ""
 
-#: src/print.c:496
+#: src/print.c:486
 #, c-format
 msgid ""
 "%s is not of the same type as %s.  To specify variables of different types "
 "in the same variable list, use a FORTRAN-like format specifier."
 msgstr ""
 
-#: src/print.c:526
+#: src/print.c:516
 msgid ""
 "The ending column for a field must not be less than the starting column."
 msgstr ""
 
-#: src/print.c:609
+#: src/print.c:599
 #, c-format
 msgid "%s variables cannot be displayed with format %s."
 msgstr ""
 
-#: src/print.c:687
+#: src/print.c:677
 msgid ""
 "The number of format specifications exceeds the number of variable names "
 "given."
 msgstr ""
 
-#: src/print.c:696
+#: src/print.c:686
 #, c-format
 msgid "Display format %s may not be used with a %s variable."
 msgstr ""
 
-#: src/print.c:846
+#: src/print.c:834
 #, c-format
-msgid "Writing %3d records to file %s."
+msgid "Writing %d record(s) to file %s."
 msgstr ""
 
-#: src/print.c:847
+#: src/print.c:837
 #, c-format
-msgid "Writing %3d records to the listing file."
-msgstr ""
-
-#: src/print.c:1042
-msgid "A file name or handle was expected in the OUTFILE subcommand."
+msgid "Writing %d record(s) to the listing file."
 msgstr ""
 
-#: src/print.c:1095
+#: src/print.c:1079
 #, c-format
 msgid ""
 "The expression on PRINT SPACE evaluated to %d.  It's not possible to PRINT "
 "SPACE a negative number of lines."
 msgstr ""
 
-#: src/recode.c:283
+#: src/recode.c:281
 #, c-format
 msgid ""
 "%d variable(s) cannot be recoded into %d variable(s).  Specify the same "
 "number of variables as input and output variables."
 msgstr ""
 
-#: src/recode.c:297
+#: src/recode.c:295
 #, c-format
 msgid ""
 "There is no string variable named %s.  (All string variables specified on "
@@ -3153,49 +3244,49 @@ msgid ""
 "variable.)"
 msgstr ""
 
-#: src/recode.c:306
+#: src/recode.c:304
 #, c-format
 msgid ""
 "Type mismatch between input and output variables.  Output variable %s is not "
 "a string variable, but all the input variables are string variables."
 msgstr ""
 
-#: src/recode.c:325
+#: src/recode.c:323
 #, c-format
 msgid "Type mismatch after INTO: %s is not a numeric variable."
 msgstr ""
 
-#: src/recode.c:355
+#: src/recode.c:353
 msgid ""
 "INTO must be used when the input values are numeric and output values are "
 "string."
 msgstr ""
 
-#: src/recode.c:363
+#: src/recode.c:361
 msgid ""
 "INTO must be used when the input values are string and output values are "
 "numeric."
 msgstr ""
 
-#: src/recode.c:486
+#: src/recode.c:484
 msgid "expecting output value"
 msgstr ""
 
-#: src/recode.c:500
+#: src/recode.c:498
 msgid ""
 "Inconsistent output types.  The output values must be all numeric or all "
 "string."
 msgstr ""
 
-#: src/recode.c:551
+#: src/recode.c:549
 msgid "following LO THRU"
 msgstr ""
 
-#: src/recode.c:567 src/recode.c:596
+#: src/recode.c:565 src/recode.c:594
 msgid "in source value"
 msgstr ""
 
-#: src/recode.c:609
+#: src/recode.c:607
 msgid ""
 "Keyword CONVERT may only be used with string input values and numeric output "
 "values."
@@ -3207,29 +3298,29 @@ msgid ""
 "be made permanent."
 msgstr ""
 
-#: src/rename-vars.c:62
+#: src/rename-vars.c:59
 msgid "`(' expected."
 msgstr ""
 
-#: src/rename-vars.c:70
+#: src/rename-vars.c:67
 msgid "`=' expected between lists of new and old variable names."
 msgstr ""
 
-#: src/rename-vars.c:88
+#: src/rename-vars.c:85
 msgid "`)' expected after variable names."
 msgstr ""
 
-#: src/rename-vars.c:98
+#: src/rename-vars.c:95
 #, c-format
 msgid "Renaming would duplicate variable name %s."
 msgstr ""
 
-#: src/repeat.c:158
+#: src/repeat.c:155
 #, c-format
 msgid "Identifier %s is given twice."
 msgstr ""
 
-#: src/repeat.c:201
+#: src/repeat.c:198
 #, c-format
 msgid ""
 "There must be the same number of substitutions for each dummy variable "
@@ -3237,32 +3328,32 @@ msgid ""
 "s as well, but %d were specified."
 msgstr ""
 
-#: src/repeat.c:310
+#: src/repeat.c:307
 msgid "No commands in scope."
 msgstr ""
 
-#: src/repeat.c:503
+#: src/repeat.c:500
 msgid "No matching DO REPEAT."
 msgstr ""
 
-#: src/sample.c:71
+#: src/sample.c:69
 msgid "The sampling factor must be between 0 and 1 exclusive."
 msgstr ""
 
-#: src/sample.c:91
+#: src/sample.c:89
 #, c-format
 msgid "Cannot sample %d observations from a population of %d."
 msgstr ""
 
-#: src/sel-if.c:104
+#: src/sel-if.c:99
 msgid "The filter variable must be numeric."
 msgstr ""
 
-#: src/sel-if.c:110
+#: src/sel-if.c:105
 msgid "The filter variable may not be scratch."
 msgstr ""
 
-#: src/sel-if.c:144
+#: src/sel-if.c:136
 msgid "Only last instance of this command is in effect."
 msgstr ""
 
@@ -3270,78 +3361,78 @@ msgstr ""
 msgid "corrupt system file: "
 msgstr ""
 
-#: src/sfm-read.c:166 src/sfm-write.c:739
+#: src/sfm-read.c:166 src/sfm-write.c:743
 #, c-format
 msgid "%s: Closing system file: %s."
 msgstr ""
 
-#: src/sfm-read.c:239
+#: src/sfm-read.c:240
 #, c-format
 msgid "Cannot read file %s as system file: already opened for %s."
 msgstr ""
 
-#: src/sfm-read.c:244
+#: src/sfm-read.c:245
 #, c-format
 msgid "%s: Opening system-file handle %s for reading."
 msgstr ""
 
-#: src/sfm-read.c:252
+#: src/sfm-read.c:253
 #, c-format
 msgid ""
 "An error occurred while opening \"%s\" for reading as a system file: %s."
 msgstr ""
 
-#: src/sfm-read.c:286
+#: src/sfm-read.c:288
 #, c-format
 msgid ""
 "%s: Weighting variable may not be a continuation of a long string variable."
 msgstr ""
 
-#: src/sfm-read.c:289
+#: src/sfm-read.c:291
 #, c-format
 msgid "%s: Weighting variable may not be a string variable."
 msgstr ""
 
-#: src/sfm-read.c:314
+#: src/sfm-read.c:316
 #, c-format
 msgid ""
 "%s: Orphaned variable index record (type 4).  Type 4 records must always "
 "immediately follow type 3 records."
 msgstr ""
 
-#: src/sfm-read.c:369
+#: src/sfm-read.c:365
 #, c-format
 msgid "%s: Unrecognized record type 7, subtype %d encountered in system file."
 msgstr ""
 
-#: src/sfm-read.c:393
+#: src/sfm-read.c:390
 #, c-format
 msgid "%s: Unrecognized record type %d."
 msgstr ""
 
-#: src/sfm-read.c:399
+#: src/sfm-read.c:397
 msgid "Read system-file dictionary successfully."
 msgstr ""
 
-#: src/sfm-read.c:409
+#: src/sfm-read.c:407
 msgid "Error reading system-file header."
 msgstr ""
 
-#: src/sfm-read.c:433
+#: src/sfm-read.c:431
 #, c-format
 msgid ""
 "%s: Bad size (%d) or count (%d) field on record type 7, subtype 3.\tExpected "
 "size %d, count 8."
 msgstr ""
 
-#: src/sfm-read.c:445
+#: src/sfm-read.c:443
 #, c-format
 msgid ""
 "%s: Floating-point representation in system file is not IEEE-754.  PSPP "
 "cannot convert between floating-point formats."
 msgstr ""
 
-#: src/sfm-read.c:460
+#: src/sfm-read.c:459
 #, c-format
 msgid ""
 "%s: File-indicated endianness (%s) does not match endianness intuited from "
@@ -3365,18 +3456,18 @@ msgstr ""
 msgid "%s: File-indicated character representation code (%s) is not ASCII."
 msgstr ""
 
-#: src/sfm-read.c:470
+#: src/sfm-read.c:472
 msgid "DEC Kanji"
 msgstr ""
 
-#: src/sfm-read.c:489
+#: src/sfm-read.c:491
 #, c-format
 msgid ""
 "%s: Bad size (%d) or count (%d) field on record type 7, subtype 4.\tExpected "
 "size %d, count 8."
 msgstr ""
 
-#: src/sfm-read.c:504
+#: src/sfm-read.c:506
 #, c-format
 msgid ""
 "%s: File-indicated value is different from internal value for at least one "
@@ -3384,287 +3475,287 @@ msgid ""
 "%g; LOWEST: %g, %g."
 msgstr ""
 
-#: src/sfm-read.c:535
+#: src/sfm-read.c:537
 #, c-format
 msgid ""
 "%s: Bad magic.  Proper system files begin with the four characters `$FL2'. "
 "This file will not be read."
 msgstr ""
 
-#: src/sfm-read.c:578
+#: src/sfm-read.c:580
 #, c-format
 msgid ""
 "%s: File layout code has unexpected value %d.  Value should be 2, in big-"
 "endian or little-endian format."
 msgstr ""
 
-#: src/sfm-read.c:594
+#: src/sfm-read.c:596
 #, c-format
 msgid "%s: Number of elements per case (%d) is not between 1 and %d."
 msgstr ""
 
-#: src/sfm-read.c:601
+#: src/sfm-read.c:605
 #, c-format
 msgid ""
 "%s: Index of weighting variable (%d) is not between 0 and number of elements "
 "per case (%d)."
 msgstr ""
 
-#: src/sfm-read.c:607
+#: src/sfm-read.c:611
 #, c-format
 msgid "%s: Number of cases in file (%ld) is not between -1 and %d."
 msgstr ""
 
-#: src/sfm-read.c:612
+#: src/sfm-read.c:616
 #, c-format
 msgid "%s: Compression bias (%g) is not the usual value of 100."
 msgstr ""
 
-#: src/sfm-read.c:705
+#: src/sfm-read.c:710
 #, c-format
 msgid "%s: position %d: Bad record type (%d); the expected value was 2."
 msgstr ""
 
-#: src/sfm-read.c:714
+#: src/sfm-read.c:720
 #, c-format
 msgid ""
 "%s: position %d: String variable does not have proper number of continuation "
 "records."
 msgstr ""
 
-#: src/sfm-read.c:722
+#: src/sfm-read.c:729
 #, c-format
 msgid "%s: position %d: Superfluous long string continuation record."
 msgstr ""
 
-#: src/sfm-read.c:727
+#: src/sfm-read.c:735
 #, c-format
 msgid "%s: position %d: Bad variable type code %d."
 msgstr ""
 
-#: src/sfm-read.c:730
+#: src/sfm-read.c:738
 #, c-format
 msgid "%s: position %d: Variable label indicator field is not 0 or 1."
 msgstr ""
 
-#: src/sfm-read.c:734
+#: src/sfm-read.c:742
 #, c-format
 msgid ""
 "%s: position %d: Missing value indicator field is not -3, -2, 0, 1, 2, or 3."
 msgstr ""
 
-#: src/sfm-read.c:740
+#: src/sfm-read.c:748
 #, c-format
 msgid "%s: position %d: Variable name begins with invalid character."
 msgstr ""
 
-#: src/sfm-read.c:743
+#: src/sfm-read.c:752
 #, c-format
 msgid "%s: position %d: Variable name begins with lowercase letter %c."
 msgstr ""
 
-#: src/sfm-read.c:746
+#: src/sfm-read.c:756
 #, c-format
 msgid ""
 "%s: position %d: Variable name begins with octothorpe (`#').  Scratch "
 "variables should not appear in system files."
 msgstr ""
 
-#: src/sfm-read.c:760
+#: src/sfm-read.c:771
 #, c-format
 msgid "%s: position %d: Variable name character %d is lowercase letter %c."
 msgstr ""
 
-#: src/sfm-read.c:768
+#: src/sfm-read.c:780
 #, c-format
 msgid ""
 "%s: position %d: character `\\%03o' (%c) is not valid in a variable name."
 msgstr ""
 
-#: src/sfm-read.c:776
+#: src/sfm-read.c:789
 #, c-format
 msgid "%s: Duplicate variable name `%s' within system file."
 msgstr ""
 
-#: src/sfm-read.c:801
+#: src/sfm-read.c:814
 #, c-format
 msgid "%s: Variable %s indicates variable label of invalid length %d."
 msgstr ""
 
-#: src/sfm-read.c:817
+#: src/sfm-read.c:831
 #, c-format
 msgid "%s: Long string variable %s may not have missing values."
 msgstr ""
 
-#: src/sfm-read.c:841
+#: src/sfm-read.c:856
 #, c-format
 msgid ""
 "%s: String variable %s may not have missing values specified as a range."
 msgstr ""
 
-#: src/sfm-read.c:878
+#: src/sfm-read.c:894
 #, c-format
 msgid "%s: Long string continuation records omitted at end of dictionary."
 msgstr ""
 
-#: src/sfm-read.c:881
+#: src/sfm-read.c:898
 #, c-format
 msgid ""
 "%s: System file header indicates %d variable positions but %d were read from "
 "file."
 msgstr ""
 
-#: src/sfm-read.c:911
+#: src/sfm-read.c:929
 #, c-format
 msgid "%s: %s variable %s has %s format specifier %s."
 msgstr ""
 
-#: src/sfm-read.c:990
+#: src/sfm-read.c:1009
 #, c-format
 msgid ""
 "%s: Variable index record (type 4) does not immediately follow value label "
 "record (type 3) as it should."
 msgstr ""
 
-#: src/sfm-read.c:1000
+#: src/sfm-read.c:1020
 #, c-format
 msgid ""
 "%s: Number of variables associated with a value label (%d) is not between 1 "
 "and the number of variables (%d)."
 msgstr ""
 
-#: src/sfm-read.c:1016
+#: src/sfm-read.c:1036
 #, c-format
 msgid ""
 "%s: Variable index associated with value label (%d) is not between 1 and the "
 "number of values (%d)."
 msgstr ""
 
-#: src/sfm-read.c:1023
+#: src/sfm-read.c:1043
 #, c-format
 msgid ""
 "%s: Variable index associated with value label (%d) refers to a continuation "
 "of a string variable, not to an actual variable."
 msgstr ""
 
-#: src/sfm-read.c:1027
+#: src/sfm-read.c:1048
 #, c-format
 msgid "%s: Value labels are not allowed on long string variables (%s)."
 msgstr ""
 
-#: src/sfm-read.c:1037
+#: src/sfm-read.c:1059
 #, c-format
 msgid ""
 "%s: Variables associated with value label are not all of identical type.  "
 "Variable %s has %s type, but variable %s has %s type."
 msgstr ""
 
-#: src/sfm-read.c:1077
+#: src/sfm-read.c:1100
 #, c-format
 msgid "%s: File contains duplicate label for value %g for variable %s."
 msgstr ""
 
-#: src/sfm-read.c:1080
+#: src/sfm-read.c:1104
 #, c-format
 msgid "%s: File contains duplicate label for value `%.*s' for variable %s."
 msgstr ""
 
-#: src/sfm-read.c:1117 src/sfm-read.c:1392
+#: src/sfm-read.c:1141 src/sfm-read.c:1424
 #, c-format
 msgid "%s: Reading system file: %s."
 msgstr ""
 
-#: src/sfm-read.c:1119 src/sfm-read.c:1301 src/sfm-read.c:1342
+#: src/sfm-read.c:1144 src/sfm-read.c:1331 src/sfm-read.c:1373
 #, c-format
 msgid "%s: Unexpected end of file."
 msgstr ""
 
-#: src/sfm-read.c:1137
+#: src/sfm-read.c:1163
 #, c-format
 msgid "%s: System file contains multiple type 6 (document) records."
 msgstr ""
 
-#: src/sfm-read.c:1142
+#: src/sfm-read.c:1169
 #, c-format
 msgid "%s: Number of document lines (%ld) must be greater than 0."
 msgstr ""
 
-#: src/sfm-read.c:1166
+#: src/sfm-read.c:1194
 msgid "dictionary:\n"
 msgstr ""
 
-#: src/sfm-read.c:1174
+#: src/sfm-read.c:1202
 msgid "num"
 msgstr ""
 
-#: src/sfm-read.c:1175
+#: src/sfm-read.c:1203
 msgid "str"
 msgstr ""
 
-#: src/sfm-read.c:1178
+#: src/sfm-read.c:1206
 msgid "left"
 msgstr ""
 
-#: src/sfm-read.c:1178
+#: src/sfm-read.c:1206
 msgid "right"
 msgstr ""
 
-#: src/sfm-read.c:1184
+#: src/sfm-read.c:1212
 msgid "none"
 msgstr ""
 
-#: src/sfm-read.c:1188
+#: src/sfm-read.c:1216
 msgid "one"
 msgstr ""
 
-#: src/sfm-read.c:1192
+#: src/sfm-read.c:1220
 msgid "two"
 msgstr ""
 
-#: src/sfm-read.c:1196
+#: src/sfm-read.c:1224
 msgid "three"
 msgstr ""
 
-#: src/sfm-read.c:1200 src/descript.q:166
+#: src/sfm-read.c:1228
 msgid "range"
 msgstr ""
 
-#: src/sfm-read.c:1204
+#: src/sfm-read.c:1232
 msgid "low"
 msgstr ""
 
-#: src/sfm-read.c:1208
+#: src/sfm-read.c:1236
 msgid "high"
 msgstr ""
 
-#: src/sfm-read.c:1212
+#: src/sfm-read.c:1240
 msgid "range+1"
 msgstr ""
 
-#: src/sfm-read.c:1216
+#: src/sfm-read.c:1244
 msgid "low+1"
 msgstr ""
 
-#: src/sfm-read.c:1220
+#: src/sfm-read.c:1248
 msgid "high+1"
 msgstr ""
 
-#: src/sfm-read.c:1254
+#: src/sfm-read.c:1282
 #, c-format
 msgid "%s: Error reading file: %s."
 msgstr ""
 
-#: src/sfm-read.c:1292
+#: src/sfm-read.c:1321
 #, c-format
-msgid "%s: Compressed data is corrupted.  Data ends partway through a case."
+msgid "%s: Compressed data is corrupted.  Data ends in partial case."
 msgstr ""
 
-#: src/sfm-read.c:1394
+#: src/sfm-read.c:1427
 #, c-format
 msgid "%s: Partial record at end of system file."
 msgstr ""
 
-#: src/sfm-read.c:1432
+#: src/sfm-read.c:1466
 msgid "reading as a system file"
 msgstr ""
 
@@ -3673,259 +3764,259 @@ msgstr ""
 msgid "Cannot write file %s as system file: already opened for %s."
 msgstr ""
 
-#: src/sfm-write.c:100
+#: src/sfm-write.c:101
 #, c-format
 msgid "%s: Opening system-file handle %s for writing."
 msgstr ""
 
-#: src/sfm-write.c:110
+#: src/sfm-write.c:111
 #, c-format
 msgid ""
 "An error occurred while opening \"%s\" for writing as a system file: %s."
 msgstr ""
 
-#: src/sfm-write.c:163
+#: src/sfm-write.c:165
 msgid "Wrote system-file header successfully."
 msgstr ""
 
-#: src/sfm-write.c:168
+#: src/sfm-write.c:170
 msgid "Error writing system-file header."
 msgstr ""
 
-#: src/sfm-write.c:603
+#: src/sfm-write.c:606
 #, c-format
 msgid "%s: Writing system file: %s."
 msgstr ""
 
-#: src/sfm-write.c:749
+#: src/sfm-write.c:754
 msgid "writing as a system file"
 msgstr ""
 
-#: src/sort.c:82
+#: src/sort.c:83
 msgid ""
 "SORT CASES may not be used after TEMPORARY.  Temporary transformations will "
 "be made permanent."
 msgstr ""
 
-#: src/sort.c:127
+#: src/sort.c:128
 msgid "`A' or `D' expected inside parentheses."
 msgstr ""
 
-#: src/sort.c:132
+#: src/sort.c:133
 msgid "`)' expected."
 msgstr ""
 
-#: src/sort.c:421
+#: src/sort.c:439
 #, c-format
 msgid "%s: Creating temporary directory: %s."
 msgstr ""
 
-#: src/sort.c:452
+#: src/sort.c:470
 #, c-format
 msgid "Generating temporary directory name failed: %s."
 msgstr ""
 
-#: src/sort.c:460
+#: src/sort.c:478
 #, c-format
 msgid "Creating temporary directory failed: %s."
 msgstr ""
 
-#: src/sort.c:512
+#: src/sort.c:530
 #, c-format
 msgid "%s: Error removing directory for temporary files: %s."
 msgstr ""
 
-#: src/sort.c:541
+#: src/sort.c:559
 #, c-format
 msgid "%s: Error opening temporary file for %s: %s."
 msgstr ""
 
-#: src/sort.c:558
+#: src/sort.c:576
 #, c-format
 msgid "%s: Error closing temporary file: %s."
 msgstr ""
 
-#: src/sort.c:574
+#: src/sort.c:592
 #, c-format
 msgid "%s: Error removing temporary file: %s."
 msgstr ""
 
-#: src/sort.c:590
+#: src/sort.c:608
 #, c-format
 msgid "%s: Error writing temporary file: %s."
 msgstr ""
 
-#: src/sort.c:608
+#: src/sort.c:626
 #, c-format
 msgid "%s: Error reading temporary file: %s."
 msgstr ""
 
-#: src/sort.c:611
+#: src/sort.c:629
 #, c-format
 msgid "%s: Unexpected end of temporary file."
 msgstr ""
 
-#: src/sort.c:806 src/sort.c:1037
+#: src/sort.c:824 src/sort.c:1055
 #, c-format
 msgid ""
 "Out of memory.  Could not allocate room for minimum of %d cases of %d bytes "
 "each.  (PSPP workspace is currently restricted to a maximum of %d KB.)"
 msgstr ""
 
-#: src/sysfile-info.c:97
+#: src/sysfile-info.c:94
 msgid "File:"
 msgstr ""
 
-#: src/sysfile-info.c:99
+#: src/sysfile-info.c:96
 msgid "Label:"
 msgstr ""
 
-#: src/sysfile-info.c:103
+#: src/sysfile-info.c:100
 msgid "No label."
 msgstr ""
 
-#: src/sysfile-info.c:106
+#: src/sysfile-info.c:103
 msgid "Created:"
 msgstr ""
 
-#: src/sysfile-info.c:109
+#: src/sysfile-info.c:106
 msgid "Endian:"
 msgstr ""
 
-#: src/sysfile-info.c:110
+#: src/sysfile-info.c:107
 msgid "Big."
 msgstr ""
 
-#: src/sysfile-info.c:110
+#: src/sysfile-info.c:107
 msgid "Little."
 msgstr ""
 
-#: src/sysfile-info.c:111
+#: src/sysfile-info.c:108
 msgid "Variables:"
 msgstr ""
 
-#: src/sysfile-info.c:114
+#: src/sysfile-info.c:111
 msgid "Cases:"
 msgstr ""
 
-#: src/sysfile-info.c:117
+#: src/sysfile-info.c:114
 msgid "Type:"
 msgstr ""
 
-#: src/sysfile-info.c:118
+#: src/sysfile-info.c:115
 msgid "System File."
 msgstr ""
 
-#: src/sysfile-info.c:119
+#: src/sysfile-info.c:116
 msgid "Weight:"
 msgstr ""
 
-#: src/sysfile-info.c:123
+#: src/sysfile-info.c:120
 msgid "Not weighted."
 msgstr ""
 
-#: src/sysfile-info.c:125
+#: src/sysfile-info.c:122
 msgid "Mode:"
 msgstr ""
 
-#: src/sysfile-info.c:127
+#: src/sysfile-info.c:124
 #, c-format
 msgid "Compression %s."
 msgstr ""
 
-#: src/sysfile-info.c:127
+#: src/sysfile-info.c:124
 msgid "on"
 msgstr ""
 
-#: src/sysfile-info.c:127
+#: src/sysfile-info.c:124
 msgid "off"
 msgstr ""
 
-#: src/sysfile-info.c:136 src/sysfile-info.c:375
+#: src/sysfile-info.c:133 src/sysfile-info.c:370
 msgid "Description"
 msgstr ""
 
-#: src/sysfile-info.c:137 src/sysfile-info.c:373
+#: src/sysfile-info.c:134 src/sysfile-info.c:368
 msgid "Position"
 msgstr ""
 
-#: src/sysfile-info.c:196
+#: src/sysfile-info.c:191
 msgid "The active file does not have a file label."
 msgstr ""
 
-#: src/sysfile-info.c:199
+#: src/sysfile-info.c:194
 msgid "File label:"
 msgstr ""
 
-#: src/sysfile-info.c:261
+#: src/sysfile-info.c:256
 msgid "No variables to display."
 msgstr ""
 
-#: src/sysfile-info.c:280
+#: src/sysfile-info.c:275
 msgid "Macros not supported."
 msgstr ""
 
-#: src/sysfile-info.c:290
+#: src/sysfile-info.c:285
 msgid "The active file dictionary does not contain any documents."
 msgstr ""
 
-#: src/sysfile-info.c:299
+#: src/sysfile-info.c:294
 msgid "Documents in the active file:"
 msgstr ""
 
-#: src/sysfile-info.c:377 src/sysfile-info.c:535 src/vfm.c:1013
+#: src/sysfile-info.c:372 src/sysfile-info.c:530 src/vfm.c:835
 msgid "Label"
 msgstr ""
 
-#: src/sysfile-info.c:449
+#: src/sysfile-info.c:444
 #, c-format
 msgid "Format: %s"
 msgstr ""
 
-#: src/sysfile-info.c:456
+#: src/sysfile-info.c:451
 #, c-format
 msgid "Print Format: %s"
 msgstr ""
 
-#: src/sysfile-info.c:459
+#: src/sysfile-info.c:454
 #, c-format
 msgid "Write Format: %s"
 msgstr ""
 
-#: src/sysfile-info.c:467
+#: src/sysfile-info.c:462
 msgid "Missing Values: "
 msgstr ""
 
-#: src/sysfile-info.c:534 src/vfm.c:1012 src/crosstabs.q:1159
-#: src/crosstabs.q:1186 src/crosstabs.q:1206 src/crosstabs.q:1228
-#: src/frequencies.q:1009 src/frequencies.q:1126
+#: src/sysfile-info.c:529 src/vfm.c:834 src/crosstabs.q:1158
+#: src/crosstabs.q:1185 src/crosstabs.q:1205 src/crosstabs.q:1227
+#: src/frequencies.q:1021 src/frequencies.q:1138
 msgid "Value"
 msgstr ""
 
-#: src/sysfile-info.c:591
+#: src/sysfile-info.c:586
 msgid "No vectors defined."
 msgstr ""
 
-#: src/sysfile-info.c:606
+#: src/sysfile-info.c:601
 msgid "Vector"
 msgstr ""
 
-#: src/tab.c:266
+#: src/tab.c:261
 #, c-format
 msgid "bad vline: x=%d+%d=%d y=(%d+%d=%d,%d+%d=%d) in table size (%d,%d)\n"
 msgstr ""
 
-#: src/tab.c:342
+#: src/tab.c:336
 #, c-format
 msgid ""
 "bad box: (%d+%d=%d,%d+%d=%d)-(%d+%d=%d,%d+%d=%d) in table size (%d,%d)\n"
 msgstr ""
 
-#: src/temporary.c:47
+#: src/temporary.c:45
 msgid "This command is not valid inside DO IF or LOOP."
 msgstr ""
 
-#: src/temporary.c:54
+#: src/temporary.c:52
 msgid ""
 "This command may only appear once between procedures and procedure-like "
 "commands."
@@ -3945,73 +4036,73 @@ msgstr ""
 msgid "%s: `.' expected after string."
 msgstr ""
 
-#: src/title.c:82
+#: src/title.c:83
 #, c-format
 msgid "%s after: %s\n"
 msgstr ""
 
-#: src/title.c:137
+#: src/title.c:139
 #, c-format
 msgid "Document entered %s %02d:%02d:%02d by %s (%s):"
 msgstr ""
 
-#: src/val-labs.c:119
+#: src/val-labs.c:115
 #, c-format
 msgid ""
 "It is not possible to assign value labels to long string variables such as %"
 "s."
 msgstr ""
 
-#: src/val-labs.c:168
+#: src/val-labs.c:164
 #, c-format
 msgid "Value label `%g' is not integer."
 msgstr ""
 
-#: src/val-labs.c:178
+#: src/val-labs.c:174
 msgid "Truncating value label to 60 characters."
 msgstr ""
 
-#: src/var-labs.c:53
+#: src/var-labs.c:51
 msgid "String expected for variable label."
 msgstr ""
 
-#: src/var-labs.c:59
+#: src/var-labs.c:57
 msgid "Truncating variable label to 120 characters."
 msgstr ""
 
-#: src/var-labs.c:87
+#: src/var-labs.c:85
 #, c-format
 msgid "Variable labels:\n"
 msgstr ""
 
-#: src/var-labs.c:94
+#: src/var-labs.c:92
 #, c-format
 msgid "(no variable label)"
 msgstr ""
 
-#: src/vars-prs.c:49
+#: src/vars-prs.c:48
 #, c-format
 msgid "%s is not a variable name."
 msgstr ""
 
-#: src/vars-prs.c:101
+#: src/vars-prs.c:100
 msgid "ordinary"
 msgstr ""
 
-#: src/vars-prs.c:103
+#: src/vars-prs.c:102
 msgid "system"
 msgstr ""
 
-#: src/vars-prs.c:105
+#: src/vars-prs.c:104
 msgid "scratch"
 msgstr ""
 
-#: src/vars-prs.c:208
+#: src/vars-prs.c:209
 #, c-format
 msgid "%s TO %s is not valid syntax since %s precedes %s in the dictionary."
 msgstr ""
 
-#: src/vars-prs.c:218
+#: src/vars-prs.c:219
 #, c-format
 msgid ""
 "When using the TO keyword to specify several variables, both variables must "
@@ -4019,825 +4110,563 @@ msgid ""
 "system variables.  %s is a %s variable, whereas %s is %s."
 msgstr ""
 
-#: src/vars-prs.c:236
+#: src/vars-prs.c:237
 #, c-format
 msgid "Scratch variables (such as %s) are not allowed here."
 msgstr ""
 
-#: src/vars-prs.c:259
+#: src/vars-prs.c:260
 #, c-format
 msgid ""
 "%s is not a numeric variable.  It will not be included in the variable list."
 msgstr ""
 
-#: src/vars-prs.c:262
+#: src/vars-prs.c:263
 #, c-format
 msgid ""
 "%s is not a string variable.  It will not be included in the variable list."
 msgstr ""
 
-#: src/vars-prs.c:266
+#: src/vars-prs.c:267
 #, c-format
 msgid ""
 "%s and %s are not the same type.  All variables in this variable list must "
 "be of the same type.  %s will be omitted from list."
 msgstr ""
 
-#: src/vars-prs.c:271
+#: src/vars-prs.c:272
 #, c-format
 msgid "Variable %s appears twice in variable list."
 msgstr ""
 
-#: src/vars-prs.c:351
+#: src/vars-prs.c:352
 msgid "incorrect use of TO convention"
 msgstr ""
 
-#: src/vars-prs.c:398
+#: src/vars-prs.c:399
 msgid "Scratch variables not allowed here."
 msgstr ""
 
-#: src/vars-prs.c:420
+#: src/vars-prs.c:421
 msgid "Prefixes don't match in use of TO convention."
 msgstr ""
 
-#: src/vars-prs.c:425
+#: src/vars-prs.c:426
 msgid "Bad bounds in use of TO convention."
 msgstr ""
 
-#: src/vector.c:68
+#: src/vector.c:66
 #, c-format
 msgid "Vector name %s is given twice."
 msgstr ""
 
-#: src/vector.c:74
+#: src/vector.c:72
 #, c-format
 msgid "There is already a vector with name %s."
 msgstr ""
 
-#: src/vector.c:95
+#: src/vector.c:93
 msgid ""
 "A slash must be used to separate each vector specification when using the "
 "long form.  Commands such as VECTOR A,B=Q1 TO Q20 are not supported."
 msgstr ""
 
-#: src/vector.c:129
+#: src/vector.c:127
 msgid "Vectors must have at least one element."
 msgstr ""
 
-#: src/vector.c:143
+#: src/vector.c:141
 #, c-format
 msgid "%s%d is too long for a variable name."
 msgstr ""
 
-#: src/vector.c:181
+#: src/vector.c:179
 msgid ""
 "The syntax for this command does not match the expected syntax for either "
 "the long form or the short form of VECTOR."
 msgstr ""
 
-#: src/vfm.c:507
-#, c-format
-msgid ""
-"An error occurred creating a temporary file for use as the active file: %s."
-msgstr ""
-
-#: src/vfm.c:520
-#, c-format
-msgid ""
-"An error occurred writing to a temporary file used as the active file: %s."
-msgstr ""
-
-#: src/vfm.c:599
-#, c-format
-msgid ""
-"Workspace limit of %d KB (%d cases at %d bytes each) overflowed.  Writing "
-"active file to disk."
-msgstr ""
-
-#: src/vfm.c:631
-#, c-format
-msgid ""
-"An error occurred while attempting to rewind a temporary file used as the "
-"active file: %s."
-msgstr ""
-
-#: src/vfm.c:680
-#, c-format
-msgid ""
-"An error occurred while attempting to read from a temporary file created for "
-"the active file: %s."
-msgstr ""
-
-#: src/weight.c:54
+#: src/weight.c:52
 msgid "The weighting variable must be numeric."
 msgstr ""
 
-#: src/weight.c:59
+#: src/weight.c:57
 msgid "The weighting variable may not be scratch."
 msgstr ""
 
-#: src/crosstabs.q:251
+#: src/crosstabs.q:250
 msgid ""
 "Missing mode REPORT not allowed in general mode.  Assuming MISSING=TABLE."
 msgstr ""
 
-#: src/crosstabs.q:261
+#: src/crosstabs.q:260
 msgid "Write mode ALL not allowed in general mode.  Assuming WRITE=CELLS."
 msgstr ""
 
-#: src/crosstabs.q:322
+#: src/crosstabs.q:321
 msgid "expecting BY"
 msgstr ""
 
-#: src/crosstabs.q:389
+#: src/crosstabs.q:388
 msgid "VARIABLES must be specified before TABLES."
 msgstr ""
 
-#: src/crosstabs.q:426
+#: src/crosstabs.q:425
 #, c-format
 msgid "Maximum value (%ld) less than minimum value (%ld)."
 msgstr ""
 
-#: src/crosstabs.q:860
+#: src/crosstabs.q:859
 msgid "Summary."
 msgstr ""
 
-#: src/crosstabs.q:862
+#: src/crosstabs.q:861
 msgid "Cases"
 msgstr ""
 
-#: src/crosstabs.q:863 src/frequencies.q:1007
+#: src/crosstabs.q:862 src/frequencies.q:1019 src/frequencies.q:1385
 msgid "Valid"
 msgstr ""
 
-#: src/crosstabs.q:864 src/frequencies.q:1074
+#: src/crosstabs.q:863 src/frequencies.q:1086 src/frequencies.q:1386
 msgid "Missing"
 msgstr ""
 
-#: src/crosstabs.q:865 src/crosstabs.q:1068 src/crosstabs.q:1801
-#: src/frequencies.q:1083
+#: src/crosstabs.q:864 src/crosstabs.q:1067 src/crosstabs.q:1809
+#: src/frequencies.q:1095
 msgid "Total"
 msgstr ""
 
-#: src/crosstabs.q:875 src/t-test.q:657 src/t-test.q:680 src/t-test.q:771
-#: src/t-test.q:1345
+#: src/crosstabs.q:874 src/frequencies.q:1384 src/t-test.q:631
+#: src/t-test.q:654 src/t-test.q:745 src/t-test.q:1259
 msgid "N"
 msgstr ""
 
-#: src/crosstabs.q:876 src/frequencies.q:1011 src/frequencies.q:1012
-#: src/frequencies.q:1013
+#: src/crosstabs.q:875 src/frequencies.q:1023 src/frequencies.q:1024
+#: src/frequencies.q:1025
 msgid "Percent"
 msgstr ""
 
-#: src/crosstabs.q:1118
+#: src/crosstabs.q:1117
 msgid "count"
 msgstr ""
 
-#: src/crosstabs.q:1119
+#: src/crosstabs.q:1118
 msgid "row %"
 msgstr ""
 
-#: src/crosstabs.q:1120
+#: src/crosstabs.q:1119
 msgid "column %"
 msgstr ""
 
-#: src/crosstabs.q:1121
+#: src/crosstabs.q:1120
 msgid "total %"
 msgstr ""
 
-#: src/crosstabs.q:1122
+#: src/crosstabs.q:1121
 msgid "expected"
 msgstr ""
 
-#: src/crosstabs.q:1123
+#: src/crosstabs.q:1122
 msgid "residual"
 msgstr ""
 
-#: src/crosstabs.q:1124
+#: src/crosstabs.q:1123
 msgid "std. resid."
 msgstr ""
 
-#: src/crosstabs.q:1125
+#: src/crosstabs.q:1124
 msgid "adj. resid."
 msgstr ""
 
-#: src/crosstabs.q:1158 src/crosstabs.q:1185 src/crosstabs.q:1205
-#: src/crosstabs.q:1226
+#: src/crosstabs.q:1157 src/crosstabs.q:1184 src/crosstabs.q:1204
+#: src/crosstabs.q:1225
 msgid "Statistic"
 msgstr ""
 
-#: src/crosstabs.q:1160 src/t-test.q:922 src/t-test.q:1123 src/t-test.q:1229
+#: src/crosstabs.q:1159 src/t-test.q:896 src/t-test.q:1065 src/t-test.q:1157
 msgid "df"
 msgstr ""
 
-#: src/crosstabs.q:1162
+#: src/crosstabs.q:1161
 msgid "Asymp. Sig. (2-sided)"
 msgstr ""
 
-#: src/crosstabs.q:1164
+#: src/crosstabs.q:1163
 msgid "Exact. Sig. (2-sided)"
 msgstr ""
 
-#: src/crosstabs.q:1166
+#: src/crosstabs.q:1165
 msgid "Exact. Sig. (1-sided)"
 msgstr ""
 
-#: src/crosstabs.q:1184 src/crosstabs.q:1225
+#: src/crosstabs.q:1183 src/crosstabs.q:1224
 msgid "Category"
 msgstr ""
 
-#: src/crosstabs.q:1187 src/crosstabs.q:1229
+#: src/crosstabs.q:1186 src/crosstabs.q:1228
 msgid "Asymp. Std. Error"
 msgstr ""
 
-#: src/crosstabs.q:1188 src/crosstabs.q:1230
+#: src/crosstabs.q:1187 src/crosstabs.q:1229
 msgid "Approx. T"
 msgstr ""
 
-#: src/crosstabs.q:1189 src/crosstabs.q:1231
+#: src/crosstabs.q:1188 src/crosstabs.q:1230
 msgid "Approx. Sig."
 msgstr ""
 
-#: src/crosstabs.q:1204
+#: src/crosstabs.q:1203
 #, c-format
 msgid " 95%% Confidence Interval"
 msgstr ""
 
-#: src/crosstabs.q:1207 src/t-test.q:926 src/t-test.q:1120 src/t-test.q:1232
+#: src/crosstabs.q:1206 src/t-test.q:900 src/t-test.q:1062 src/t-test.q:1160
 msgid "Lower"
 msgstr ""
 
-#: src/crosstabs.q:1208 src/t-test.q:927 src/t-test.q:1121 src/t-test.q:1233
+#: src/crosstabs.q:1207 src/t-test.q:901 src/t-test.q:1063 src/t-test.q:1161
 msgid "Upper"
 msgstr ""
 
-#: src/crosstabs.q:1227
+#: src/crosstabs.q:1226
 msgid "Type"
 msgstr ""
 
-#: src/crosstabs.q:1977
+#: src/crosstabs.q:2003
 msgid "Pearson Chi-Square"
 msgstr ""
 
-#: src/crosstabs.q:1978
+#: src/crosstabs.q:2004
 msgid "Likelihood Ratio"
 msgstr ""
 
-#: src/crosstabs.q:1979
+#: src/crosstabs.q:2005
 msgid "Fisher's Exact Test"
 msgstr ""
 
-#: src/crosstabs.q:1980
+#: src/crosstabs.q:2006
 msgid "Continuity Correction"
 msgstr ""
 
-#: src/crosstabs.q:1981
+#: src/crosstabs.q:2007
 msgid "Linear-by-Linear Association"
 msgstr ""
 
-#: src/crosstabs.q:2018 src/crosstabs.q:2088 src/crosstabs.q:2147
+#: src/crosstabs.q:2044 src/crosstabs.q:2114 src/crosstabs.q:2173
 msgid "N of Valid Cases"
 msgstr ""
 
-#: src/crosstabs.q:2034 src/crosstabs.q:2163
+#: src/crosstabs.q:2060 src/crosstabs.q:2189
 msgid "Nominal by Nominal"
 msgstr ""
 
-#: src/crosstabs.q:2035 src/crosstabs.q:2164
+#: src/crosstabs.q:2061 src/crosstabs.q:2190
 msgid "Ordinal by Ordinal"
 msgstr ""
 
-#: src/crosstabs.q:2036
+#: src/crosstabs.q:2062
 msgid "Interval by Interval"
 msgstr ""
 
-#: src/crosstabs.q:2037
+#: src/crosstabs.q:2063
 msgid "Measure of Agreement"
 msgstr ""
 
-#: src/crosstabs.q:2042
+#: src/crosstabs.q:2068
 msgid "Phi"
 msgstr ""
 
-#: src/crosstabs.q:2043
+#: src/crosstabs.q:2069
 msgid "Cramer's V"
 msgstr ""
 
-#: src/crosstabs.q:2044
+#: src/crosstabs.q:2070
 msgid "Contingency Coefficient"
 msgstr ""
 
-#: src/crosstabs.q:2045
+#: src/crosstabs.q:2071
 msgid "Kendall's tau-b"
 msgstr ""
 
-#: src/crosstabs.q:2046
+#: src/crosstabs.q:2072
 msgid "Kendall's tau-c"
 msgstr ""
 
-#: src/crosstabs.q:2047
+#: src/crosstabs.q:2073
 msgid "Gamma"
 msgstr ""
 
-#: src/crosstabs.q:2048
+#: src/crosstabs.q:2074
 msgid "Spearman Correlation"
 msgstr ""
 
-#: src/crosstabs.q:2049
+#: src/crosstabs.q:2075
 msgid "Pearson's R"
 msgstr ""
 
-#: src/crosstabs.q:2050
+#: src/crosstabs.q:2076
 msgid "Kappa"
 msgstr ""
 
-#: src/crosstabs.q:2120
+#: src/crosstabs.q:2146
 #, c-format
 msgid "Odds Ratio for %s (%g / %g)"
 msgstr ""
 
-#: src/crosstabs.q:2123
+#: src/crosstabs.q:2149
 #, c-format
 msgid "Odds Ratio for %s (%.*s / %.*s)"
 msgstr ""
 
-#: src/crosstabs.q:2131
+#: src/crosstabs.q:2157
 #, c-format
 msgid "For cohort %s = %g"
 msgstr ""
 
-#: src/crosstabs.q:2134
+#: src/crosstabs.q:2160
 #, c-format
 msgid "For cohort %s = %.*s"
 msgstr ""
 
-#: src/crosstabs.q:2165
+#: src/crosstabs.q:2191
 msgid "Nominal by Interval"
 msgstr ""
 
-#: src/crosstabs.q:2170
+#: src/crosstabs.q:2196
 msgid "Lambda"
 msgstr ""
 
-#: src/crosstabs.q:2171
+#: src/crosstabs.q:2197
 msgid "Goodman and Kruskal tau"
 msgstr ""
 
-#: src/crosstabs.q:2172
+#: src/crosstabs.q:2198
 msgid "Uncertainty Coefficient"
 msgstr ""
 
-#: src/crosstabs.q:2173
+#: src/crosstabs.q:2199
 msgid "Somers' d"
 msgstr ""
 
-#: src/crosstabs.q:2174
+#: src/crosstabs.q:2200
 msgid "Eta"
 msgstr ""
 
-#: src/crosstabs.q:2179
+#: src/crosstabs.q:2205
 msgid "Symmetric"
 msgstr ""
 
-#: src/crosstabs.q:2180 src/crosstabs.q:2181
+#: src/crosstabs.q:2206 src/crosstabs.q:2207
 #, c-format
 msgid "%s Dependent"
 msgstr ""
 
-#: src/descript.q:151 src/frequencies.q:94 src/t-test.q:658 src/t-test.q:681
-#: src/t-test.q:770 src/t-test.q:1117
-msgid "Mean"
-msgstr ""
-
-#: src/descript.q:151
-msgid "mean"
-msgstr ""
-
-#: src/descript.q:152 src/frequencies.q:95
-msgid "S.E. Mean"
-msgstr ""
-
-#: src/descript.q:152
-msgid "S E Mean"
-msgstr ""
-
-#: src/descript.q:152
-msgid "SE"
-msgstr ""
-
-#: src/descript.q:153
-msgid "standard error of mean"
-msgstr ""
-
-#: src/descript.q:154 src/frequencies.q:98
-msgid "Std Dev"
-msgstr ""
-
-#: src/descript.q:154
-msgid "SD"
-msgstr ""
-
-#: src/descript.q:155
-msgid "standard deviation"
-msgstr ""
-
-#: src/descript.q:156 src/frequencies.q:99
-msgid "Variance"
-msgstr ""
-
-#: src/descript.q:157
-msgid "Var"
-msgstr ""
-
-#: src/descript.q:157
-msgid "variance"
-msgstr ""
-
-#: src/descript.q:158 src/frequencies.q:100
-msgid "Kurtosis"
-msgstr ""
-
-#: src/descript.q:159
-msgid "Kurt"
-msgstr ""
-
-#: src/descript.q:159
-msgid "kurtosis"
-msgstr ""
-
-#: src/descript.q:160 src/frequencies.q:101
-msgid "S.E. Kurt"
-msgstr ""
-
-#: src/descript.q:160
-msgid "S E Kurt"
-msgstr ""
-
-#: src/descript.q:160
-msgid "SEKurt"
-msgstr ""
-
-#: src/descript.q:161
-msgid "standard error of kurtosis"
-msgstr ""
-
-#: src/descript.q:162 src/frequencies.q:102
-msgid "Skewness"
-msgstr ""
-
-#: src/descript.q:162
-msgid "Skew"
-msgstr ""
-
-#: src/descript.q:163
-msgid "skewness"
-msgstr ""
-
-#: src/descript.q:164 src/frequencies.q:103
-msgid "S.E. Skew"
-msgstr ""
-
-#: src/descript.q:164
-msgid "S E Skew"
-msgstr ""
-
-#: src/descript.q:164
-msgid "SESkew"
-msgstr ""
-
-#: src/descript.q:165
-msgid "standard error of skewness"
-msgstr ""
-
-#: src/descript.q:166 src/frequencies.q:104
-msgid "Range"
-msgstr ""
-
-#: src/descript.q:166
-msgid "Rng"
-msgstr ""
-
-#: src/descript.q:167 src/frequencies.q:105
-msgid "Minimum"
-msgstr ""
-
-#: src/descript.q:167
-msgid "Min"
-msgstr ""
-
-#: src/descript.q:168
-msgid "minimum"
-msgstr ""
-
-#: src/descript.q:169 src/frequencies.q:106
-msgid "Maximum"
-msgstr ""
-
-#: src/descript.q:169
-msgid "Max"
-msgstr ""
-
-#: src/descript.q:170
-msgid "maximum"
-msgstr ""
-
-#: src/descript.q:171 src/frequencies.q:107
-msgid "Sum"
-msgstr ""
-
-#: src/descript.q:171
-msgid "sum"
-msgstr ""
-
-#: src/descript.q:212 src/list.q:144
-msgid "No variables specified."
-msgstr ""
-
-#: src/descript.q:218
-msgid "OPTIONS may not be used with SAVE, FORMAT, or MISSING."
-msgstr ""
-
-#: src/descript.q:280
+#: src/file-handle.q:124
 #, c-format
-msgid "It's not possible to sort on `%s' without displaying `%s'."
-msgstr ""
-
-#: src/descript.q:294
-msgid ""
-"At least one case in the data file had a weight value that was system-"
-"missing, zero, or negative.  These case(s) were ignored."
-msgstr ""
-
-#: src/descript.q:335
 msgid ""
-"Names for z-score variables must be given for individual variables, not for "
-"groups of variables."
-msgstr ""
-
-#: src/descript.q:343
-msgid "Name for z-score variable expected."
-msgstr ""
-
-#: src/descript.q:348
-#, c-format
-msgid ""
-"Z-score variable name `%s' is a duplicate variable name with a current "
-"variable."
-msgstr ""
-
-#: src/descript.q:357
-#, c-format
-msgid "Z-score variable name `%s' is used multiple times."
-msgstr ""
-
-#: src/descript.q:365
-msgid "`)' expected after z-score variable name."
-msgstr ""
-
-#: src/descript.q:425
-msgid ""
-"Ran out of generic names for Z-score variables.  There are only 126 generic "
-"names: ZSC001-ZSC0999, STDZ01-STDZ09, ZZZZ01-ZZZZ09, ZQZQ01-ZQZQ09."
+"File handle %s already refers to file %s.  File handle cannot be redefined "
+"within a session."
 msgstr ""
 
-#: src/descript.q:454
-msgid "Mapping of variables to corresponding Z-scores."
-msgstr ""
-
-#: src/descript.q:459
-msgid "Source"
-msgstr ""
-
-#: src/descript.q:460
-msgid "Target"
-msgstr ""
-
-#: src/descript.q:548 src/descript.q:554
-msgid "Z-score of "
-msgstr ""
-
-#: src/descript.q:795
-msgid "Valid N"
-msgstr ""
-
-#: src/descript.q:796
-msgid "Missing N"
-msgstr ""
-
-#: src/descript.q:823
-#, c-format
-msgid "Valid cases = %g; cases with missing value(s) = %g."
-msgstr ""
-
-#: src/file-handle.q:72
-#, c-format
-msgid ""
-"File handle %s had already been defined to refer to file %s.  It is not "
-"possible to redefine a file handle within a session."
-msgstr ""
-
-#: src/file-handle.q:94
+#: src/file-handle.q:146
 msgid "The FILE HANDLE required subcommand NAME is not present."
 msgstr ""
 
-#: src/file-handle.q:107
+#: src/file-handle.q:161
 msgid ""
-"Fixed length records were specified on /RECFORM, but record length was not "
-"specified on /LRECL.  80-character records will be assumed."
+"Fixed-length records were specified on /RECFORM, but record length was not "
+"specified on /LRECL.  Assuming 1024-character records."
 msgstr ""
 
-#: src/file-handle.q:114
+#: src/file-handle.q:168
 #, c-format
 msgid ""
-"Record length (%ld) must be at least one byte.  80-character records will be "
+"Record length (%ld) must be at least one byte.  1-character records will be "
 "assumed."
 msgstr ""
 
-#: src/file-handle.q:126 src/file-handle.q:140
-#, c-format
-msgid ""
-"%s is not implemented, as the author doesn't know what it is supposed to "
-"do.  Send a note to %s."
+#: src/file-handle.q:241
+msgid "<Inline File>"
 msgstr ""
 
-#: src/file-handle.q:147 src/file-handle.q:150
-#, c-format
-msgid "%s is not implemented.  If you care, complain."
+#: src/file-handle.q:256
+msgid "expecting a file name or handle name"
 msgstr ""
 
-#: src/file-handle.q:232
-#, c-format
-msgid "File handle `%s' has not been previously declared on FILE HANDLE."
+#: src/frequencies.q:96
+msgid "S.E. Mean"
 msgstr ""
 
-#: src/file-handle.q:319
-msgid "<Inline File>"
+#: src/frequencies.q:97
+msgid "Median"
 msgstr ""
 
-#: src/file-handle.q:338
-msgid "expecting a file name or handle"
+#: src/frequencies.q:98
+msgid "Mode"
 msgstr ""
 
-#: src/frequencies.q:96
-msgid "Median"
+#: src/frequencies.q:102
+msgid "S.E. Kurt"
 msgstr ""
 
-#: src/frequencies.q:97
-msgid "Mode"
+#: src/frequencies.q:104
+msgid "S.E. Skew"
 msgstr ""
 
-#: src/frequencies.q:268
+#: src/frequencies.q:279
 msgid ""
 "At most one of BARCHART, HISTOGRAM, or HBAR should be given.  HBAR will be "
 "assumed.  Argument values will be given precedence increasing along the "
 "order given."
 msgstr ""
 
-#: src/frequencies.q:349
+#: src/frequencies.q:360
 #, c-format
 msgid ""
 "MAX must be greater than or equal to MIN, if both are specified.  However, "
 "MIN was specified as %g and MAX as %g.  MIN and MAX will be ignored."
 msgstr ""
 
-#: src/frequencies.q:632
+#: src/frequencies.q:649
 msgid ""
 "Upper limit of integer mode value range must be greater than lower limit."
 msgstr ""
 
-#: src/frequencies.q:644
+#: src/frequencies.q:661
 #, c-format
 msgid "Variable %s specified multiple times on VARIABLES subcommand."
 msgstr ""
 
-#: src/frequencies.q:657
+#: src/frequencies.q:674
 #, c-format
 msgid "Integer mode specified, but %s is not a numeric variable."
 msgstr ""
 
-#: src/frequencies.q:719
+#: src/frequencies.q:736
 msgid "`)' expected after GROUPED interval list."
 msgstr ""
 
-#: src/frequencies.q:732
+#: src/frequencies.q:749
 #, c-format
 msgid "Variables %s specified on GROUPED but not on VARIABLES."
 msgstr ""
 
-#: src/frequencies.q:735
+#: src/frequencies.q:752
 #, c-format
 msgid "Variables %s specified multiple times on GROUPED subcommand."
 msgstr ""
 
-#: src/frequencies.q:795
+#: src/frequencies.q:808
 msgid "Percentile list expected after PERCENTILES."
 msgstr ""
 
-#: src/frequencies.q:803
-msgid "Percentiles must be greater than 0 and less than 100."
-msgstr ""
+#: src/frequencies.q:816
+#, fuzzy
+msgid "Percentiles must be between 0 and 100."
+msgstr "Frame colour must be between 0 and 6."
 
-#: src/frequencies.q:1008 src/frequencies.q:1098 src/frequencies.q:1099
-#: src/frequencies.q:1129
+#: src/frequencies.q:1020 src/frequencies.q:1110 src/frequencies.q:1111
+#: src/frequencies.q:1141
 msgid "Cum"
 msgstr ""
 
-#: src/frequencies.q:1010
+#: src/frequencies.q:1022
 msgid "Frequency"
 msgstr ""
 
-#: src/frequencies.q:1029
+#: src/frequencies.q:1041
 msgid "Value Label"
 msgstr ""
 
-#: src/frequencies.q:1127
+#: src/frequencies.q:1139
 msgid "Freq"
 msgstr ""
 
-#: src/frequencies.q:1128 src/frequencies.q:1130
+#: src/frequencies.q:1140 src/frequencies.q:1142
 msgid "Pct"
 msgstr ""
 
-#: src/frequencies.q:1285
+#: src/frequencies.q:1358
 #, c-format
 msgid "No valid data for variable %s; statistics not displayed."
 msgstr ""
 
-#: src/frequencies.q:1308
-msgid "Percentile"
+#: src/frequencies.q:1397
+msgid "Percentiles"
 msgstr ""
 
-#: src/list.q:152
+#: src/list.q:151
 #, c-format
 msgid ""
 "The first case (%ld) specified precedes the last case (%ld) specified.  The "
 "values will be swapped."
 msgstr ""
 
-#: src/list.q:160
+#: src/list.q:159
 #, c-format
 msgid ""
 "The first case (%ld) to list is less than 1.  The value is being reset to 1."
 msgstr ""
 
-#: src/list.q:166
+#: src/list.q:165
 #, c-format
 msgid ""
 "The last case (%ld) to list is less than 1.  The value is being reset to 1."
 msgstr ""
 
-#: src/list.q:172
+#: src/list.q:171
 #, c-format
 msgid "The step value %ld is less than 1.  The value is being reset to 1."
 msgstr ""
 
-#: src/list.q:199
+#: src/list.q:198
 msgid "`/FORMAT WEIGHT' specified, but weighting is not on."
 msgstr ""
 
-#: src/list.q:445
+#: src/list.q:444
 msgid "Line"
 msgstr ""
 
-#: src/means.q:106
+#: src/means.q:105
 msgid "Missing required subcommand TABLES."
 msgstr ""
 
-#: src/means.q:144
+#: src/means.q:143
 msgid "TABLES or CROSSBREAK subcommand may not appear more than once."
 msgstr ""
 
-#: src/means.q:181
+#: src/means.q:180
 #, c-format
 msgid ""
 "Variable %s specified on TABLES or CROSSBREAK, but not specified on "
 "VARIABLES."
 msgstr ""
 
-#: src/means.q:195
+#: src/means.q:194
 #, c-format
 msgid "LOWEST and HIGHEST may not be used for independent variables (%s)."
 msgstr ""
 
-#: src/means.q:203
+#: src/means.q:202
 #, c-format
 msgid ""
 "Independent variables (%s) may not have noninteger endpoints in their ranges."
 msgstr ""
 
-#: src/means.q:236
+#: src/means.q:235
 msgid "VARIABLES must precede TABLES."
 msgstr ""
 
-#: src/means.q:293
+#: src/means.q:292
 #, c-format
 msgid "Upper value (%g) is less than lower value (%g) on VARIABLES subcommand."
 msgstr ""
 
-#: src/set.q:216 src/set.q:288 src/set.q:332 src/set.q:389 src/set.q:391
-#: src/set.q:393 src/set.q:395 src/set.q:397 src/set.q:399 src/set.q:401
-#: src/set.q:403 src/set.q:405 src/set.q:407 src/set.q:409 src/set.q:411
-#: src/set.q:413 src/set.q:792 src/set.q:873 src/set.q:968
+#: src/set.q:216 src/set.q:288 src/set.q:332 src/set.q:387 src/set.q:389
+#: src/set.q:391 src/set.q:393 src/set.q:395 src/set.q:397 src/set.q:399
+#: src/set.q:401 src/set.q:403 src/set.q:405 src/set.q:407 src/set.q:409
+#: src/set.q:411 src/set.q:790 src/set.q:871 src/set.q:966
 #, c-format
 msgid "%s is obsolete."
 msgstr ""
@@ -4854,269 +4683,261 @@ msgstr ""
 msgid "Journalling is off"
 msgstr ""
 
-#: src/set.q:422
+#: src/set.q:420
 msgid ""
 "CASE is not implemented and probably won't be.  If you care, complain about "
 "it."
 msgstr ""
 
-#: src/set.q:427
+#: src/set.q:425
 msgid "Active file compression is not yet implemented (and probably won't be)."
 msgstr ""
 
-#: src/set.q:441
+#: src/set.q:439
 #, c-format
 msgid ""
 "CC%c: Length of custom currency string `%s' (%d) exceeds maximum length of "
 "16."
 msgstr ""
 
-#: src/set.q:463
+#: src/set.q:461
 #, c-format
 msgid ""
 "CC%c: Custom currency string `%s' does not contain exactly three periods or "
 "commas (not both)."
 msgstr ""
 
-#: src/set.q:516
+#: src/set.q:514
 msgid "None"
 msgstr ""
 
-#: src/set.q:522
+#: src/set.q:520
 msgid "Disabled"
 msgstr ""
 
-#: src/set.q:527
+#: src/set.q:525
 msgid "Screen"
 msgstr ""
 
-#: src/set.q:534
+#: src/set.q:532
 msgid "Listing"
 msgstr ""
 
-#: src/set.q:541
+#: src/set.q:539
 msgid "Other"
 msgstr ""
 
-#: src/set.q:650
+#: src/set.q:648
 msgid "LENGTH must be at least 1."
 msgstr ""
 
-#: src/set.q:689
+#: src/set.q:687
 msgid "Missing identifier in RESULTS subcommand."
 msgstr ""
 
-#: src/set.q:700
+#: src/set.q:698
 msgid "Unrecognized identifier in RESULTS subcommand."
 msgstr ""
 
-#: src/set.q:738
+#: src/set.q:736
 msgid "WIDTH must be at least 1."
 msgstr ""
 
-#: src/set.q:761
+#: src/set.q:759
 #, c-format
 msgid ""
 "FORMAT requires numeric output format as an argument.  Specified format %s "
 "is of type string."
 msgstr ""
 
-#: src/set.q:805
+#: src/set.q:803
 msgid "Text color must be in range 0-15."
 msgstr "Text colour must be in range 0-15."
 
-#: src/set.q:818
+#: src/set.q:816
 msgid "Background color must be in range 0-7."
 msgstr "Background colour must be in range 0-7."
 
-#: src/set.q:829
+#: src/set.q:827
 msgid "Border color must be in range 0-7."
 msgstr "Border colour must be in range 0-7."
 
-#: src/set.q:885
+#: src/set.q:883
 msgid "Lower window color must be between 0 and 6."
 msgstr "Lower window colour must be between 0 and 6."
 
-#: src/set.q:899
+#: src/set.q:897
 msgid "Upper window color must be between 0 and 6."
 msgstr "Upper window colour must be between 0 and 6."
 
-#: src/set.q:911
+#: src/set.q:909
 msgid "Frame color must be between 0 and 6."
 msgstr "Frame colour must be between 0 and 6."
 
-#: src/set.q:977
+#: src/set.q:975
 msgid "Drive letter expected in WORKDEV subcommand."
 msgstr ""
 
-#: src/set.q:1012
-msgid "Specify a terminal type with `setenv TERM <yourtype>'."
+#: src/set.q:1007
+msgid "Specify a terminal type with the TERM environment variable."
 msgstr ""
 
-#: src/set.q:1018
+#: src/set.q:1013
 msgid "Could not access the termcap data base."
 msgstr ""
 
-#: src/set.q:1020
+#: src/set.q:1015
 #, c-format
 msgid "Terminal type `%s' is not defined."
 msgstr ""
 
-#: src/set.q:1048
+#: src/set.q:1057
 msgid "data> "
 msgstr ""
 
-#: src/t-test.q:237
+#: src/t-test.q:234
 msgid "TESTVAL, GROUPS and PAIRS subcommands are mutually exclusive."
 msgstr ""
 
-#: src/t-test.q:254
+#: src/t-test.q:251
 msgid "VARIABLES subcommand is not appropriate with PAIRS"
 msgstr ""
 
-#: src/t-test.q:354 src/t-test.q:431
+#: src/t-test.q:288
+msgid "One or more VARIABLES must be specified."
+msgstr ""
+
+#: src/t-test.q:328 src/t-test.q:405
 #, c-format
 msgid "`%s' is not a variable name"
 msgstr ""
 
-#: src/t-test.q:367
+#: src/t-test.q:341
 #, c-format
 msgid "Long string variable %s is not valid here."
 msgstr ""
 
-#: src/t-test.q:384
+#: src/t-test.q:358
 msgid ""
 "When applying GROUPS to a string variable, at least one value must be "
 "specified."
 msgstr ""
 
-#: src/t-test.q:466
+#: src/t-test.q:440
 #, c-format
 msgid ""
 "PAIRED was specified but the number of variables preceding WITH (%d) did not "
 "match the number following (%d)."
 msgstr ""
 
-#: src/t-test.q:483
+#: src/t-test.q:457
 msgid "At least two variables must be specified on PAIRS."
 msgstr ""
 
-#: src/t-test.q:655
+#: src/t-test.q:629
 msgid "One-Sample Statistics"
 msgstr ""
 
-#: src/t-test.q:659 src/t-test.q:682 src/t-test.q:772 src/t-test.q:1118
+#: src/t-test.q:633 src/t-test.q:656 src/t-test.q:746 src/t-test.q:1060
 msgid "Std. Deviation"
 msgstr ""
 
-#: src/t-test.q:660 src/t-test.q:683 src/t-test.q:773
+#: src/t-test.q:634 src/t-test.q:657 src/t-test.q:747
 msgid "SE. Mean"
 msgstr ""
 
-#: src/t-test.q:677
+#: src/t-test.q:651
 msgid "Group Statistics"
 msgstr ""
 
-#: src/t-test.q:767
+#: src/t-test.q:741
 msgid "Paired Sample Statistics"
 msgstr ""
 
-#: src/t-test.q:789 src/t-test.q:1146 src/t-test.q:1366
+#: src/t-test.q:763 src/t-test.q:1085 src/t-test.q:1276
 #, c-format
 msgid "Pair %d"
 msgstr ""
 
-#: src/t-test.q:907
+#: src/t-test.q:881
 msgid "Independent Samples Test"
 msgstr ""
 
-#: src/t-test.q:915
+#: src/t-test.q:889
 msgid "Levene's Test for Equality of Variances"
 msgstr ""
 
-#: src/t-test.q:917
+#: src/t-test.q:891
 msgid "t-test for Equality of Means"
 msgstr ""
 
-#: src/t-test.q:919
+#: src/t-test.q:893
 msgid "F"
 msgstr ""
 
-#: src/t-test.q:920 src/t-test.q:1347
+#: src/t-test.q:894 src/t-test.q:1261
 msgid "Sig."
 msgstr ""
 
-#: src/t-test.q:921 src/t-test.q:1122 src/t-test.q:1228
+#: src/t-test.q:895 src/t-test.q:1064 src/t-test.q:1156
 msgid "t"
 msgstr ""
 
-#: src/t-test.q:923 src/t-test.q:1124 src/t-test.q:1230
+#: src/t-test.q:897 src/t-test.q:1066 src/t-test.q:1158
 msgid "Sig. (2-tailed)"
 msgstr ""
 
-#: src/t-test.q:924 src/t-test.q:1231
+#: src/t-test.q:898 src/t-test.q:1159
 msgid "Mean Difference"
 msgstr ""
 
-#: src/t-test.q:925
+#: src/t-test.q:899
 msgid "Std. Error Difference"
 msgstr ""
 
-#: src/t-test.q:930 src/t-test.q:1114 src/t-test.q:1223
+#: src/t-test.q:904 src/t-test.q:1056 src/t-test.q:1151
 #, c-format
 msgid "%d%% Confidence Interval of the Difference"
 msgstr ""
 
-#: src/t-test.q:964
+#: src/t-test.q:935
 msgid "Equal variances assumed"
 msgstr ""
 
-#: src/t-test.q:979
-#, c-format
-msgid "Error calculating F statistic (cdff returned %d)."
-msgstr ""
-
-#: src/t-test.q:1002 src/t-test.q:1022 src/t-test.q:1060 src/t-test.q:1072
-#: src/t-test.q:1167 src/t-test.q:1193 src/t-test.q:1273 src/t-test.q:1290
-#: src/t-test.q:1379
-#, c-format
-msgid "Error calculating T statistic (cdft returned %d)."
-msgstr ""
-
-#: src/t-test.q:1036
+#: src/t-test.q:988
 msgid "Equal variances not assumed"
 msgstr ""
 
-#: src/t-test.q:1104
+#: src/t-test.q:1046
 msgid "Paired Samples Test"
 msgstr ""
 
-#: src/t-test.q:1107
+#: src/t-test.q:1049
 msgid "Paired Differences"
 msgstr ""
 
-#: src/t-test.q:1119
+#: src/t-test.q:1061
 msgid "Std. Error Mean"
 msgstr ""
 
-#: src/t-test.q:1212
+#: src/t-test.q:1140
 msgid "One-Sample Test"
 msgstr ""
 
-#: src/t-test.q:1217
+#: src/t-test.q:1145
 #, c-format
 msgid "Test Value = %f"
 msgstr ""
 
-#: src/t-test.q:1342
+#: src/t-test.q:1256
 msgid "Paired Samples Correlations"
 msgstr ""
 
-#: src/t-test.q:1346
+#: src/t-test.q:1260
 msgid "Correlation"
 msgstr ""
 
-#: src/t-test.q:1369
+#: src/t-test.q:1279
 #, c-format
 msgid "%s & %s"
 msgstr ""
index 07102dc2f06e152394ba512a47b7e5e3b1d7f6cb..56ff9bdf842160b13cacb2f0966ad67c84fe39e6 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: pspp-dev@gnu.org\n"
-"POT-Creation-Date: 2004-03-21 10:15+0800\n"
+"POT-Creation-Date: 2004-04-03 14:42+0800\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -17,49 +17,49 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
 
-#: src/aggregate.c:183 src/aggregate.c:216 src/data-list.c:1363
-#: src/data-list.c:1398 src/data-list.c:1411 src/data-list.c:1424
-#: src/data-list.c:1457
+#: src/aggregate.c:182 src/aggregate.c:215 src/data-list.c:1359
+#: src/data-list.c:1394 src/data-list.c:1407 src/data-list.c:1420
+#: src/data-list.c:1453
 #, c-format
 msgid "%s subcommand given multiple times."
 msgstr ""
 
-#: src/aggregate.c:203
+#: src/aggregate.c:202
 msgid "while expecting COLUMNWISE"
 msgstr ""
 
-#: src/aggregate.c:244
+#: src/aggregate.c:243
 msgid "BREAK subcommand not specified."
 msgstr ""
 
-#: src/aggregate.c:400
+#: src/aggregate.c:399
 msgid "expecting aggregation function"
 msgstr ""
 
-#: src/aggregate.c:416
+#: src/aggregate.c:415
 #, c-format
 msgid "Unknown aggregation function %s."
 msgstr ""
 
-#: src/aggregate.c:431
+#: src/aggregate.c:430
 msgid "expecting `('"
 msgstr ""
 
-#: src/aggregate.c:466
+#: src/aggregate.c:465
 #, c-format
 msgid "Missing argument %d to %s."
 msgstr ""
 
-#: src/aggregate.c:474
+#: src/aggregate.c:473
 #, c-format
 msgid "Arguments to %s must be of same type as source variables."
 msgstr ""
 
-#: src/aggregate.c:484 src/expr-prs.c:665
+#: src/aggregate.c:483 src/expr-prs.c:630
 msgid "expecting `)'"
 msgstr ""
 
-#: src/aggregate.c:496
+#: src/aggregate.c:495
 #, c-format
 msgid ""
 "Number of source variables (%d) does not match number of target variables (%"
@@ -73,37 +73,35 @@ msgid ""
 "contains the aggregate variables and the break variables."
 msgstr ""
 
-#: src/apply-dict.c:68
+#: src/apply-dict.c:65
 #, c-format
 msgid "Variable %s is %s in target file, but %s in source file."
 msgstr ""
 
-#: src/apply-dict.c:71 src/apply-dict.c:72 src/expr-prs.c:1128
-#: src/expr-prs.c:1473 src/expr-prs.c:1489 src/formats.c:103
-#: src/pfm-read.c:634 src/print.c:698 src/sfm-read.c:914 src/sfm-read.c:1040
-#: src/sfm-read.c:1041
+#: src/apply-dict.c:68 src/apply-dict.c:69 src/expr-prs.c:1292
+#: src/expr-prs.c:1308 src/formats.c:100 src/pfm-read.c:638 src/print.c:688
+#: src/sfm-read.c:933 src/sfm-read.c:1063 src/sfm-read.c:1064
 msgid "string"
 msgstr ""
 
-#: src/apply-dict.c:71 src/apply-dict.c:72 src/expr-prs.c:1128
-#: src/expr-prs.c:1470 src/expr-prs.c:1487 src/formats.c:103
-#: src/pfm-read.c:634 src/print.c:698 src/sfm-read.c:914 src/sfm-read.c:1040
-#: src/sfm-read.c:1041
+#: src/apply-dict.c:68 src/apply-dict.c:69 src/expr-prs.c:1289
+#: src/expr-prs.c:1306 src/formats.c:100 src/pfm-read.c:638 src/print.c:688
+#: src/sfm-read.c:933 src/sfm-read.c:1063 src/sfm-read.c:1064
 msgid "numeric"
 msgstr ""
 
-#: src/apply-dict.c:84
+#: src/apply-dict.c:81
 #, c-format
 msgid "Cannot add value labels from source file to long string variable %s."
 msgstr ""
 
-#: src/apply-dict.c:130
+#: src/apply-dict.c:127
 #, c-format
 msgid ""
 "Cannot apply missing values from source file to long string variable %s."
 msgstr ""
 
-#: src/apply-dict.c:163
+#: src/apply-dict.c:160
 msgid "No matching variables found between the source and target files."
 msgstr ""
 
@@ -172,7 +170,7 @@ msgid ""
 "and `bs'."
 msgstr ""
 
-#: src/ascii.c:522 src/postscript.c:680
+#: src/ascii.c:522 src/postscript.c:681
 #, c-format
 msgid "Positive integer required as value for `%s'."
 msgstr ""
@@ -182,76 +180,111 @@ msgstr ""
 msgid "Zero or positive integer required as value for `%s'."
 msgstr ""
 
-#: src/ascii.c:623 src/postscript.c:639
+#: src/ascii.c:624 src/postscript.c:639
 #, c-format
 msgid "Boolean value expected for %s."
 msgstr ""
 
-#: src/ascii.c:655 src/ascii.c:670 src/ascii.c:687
+#: src/ascii.c:656 src/ascii.c:671 src/ascii.c:688
 #, c-format
 msgid "ASCII output driver: %s: %s"
 msgstr ""
 
-#: src/ascii.c:756
+#: src/ascii.c:757
 #, c-format
 msgid "ascii_line_horz: bad hline (%d,%d),%d out of (%d,%d)\n"
 msgstr ""
 
-#: src/ascii.c:790
+#: src/ascii.c:791
 #, c-format
 msgid "ascii_line_vert: bad vline %d,(%d,%d) out of (%d,%d)\n"
 msgstr ""
 
-#: src/ascii.c:820
+#: src/ascii.c:821
 #, c-format
 msgid "ascii_line_intersection: bad intsct (%d,%d) out of (%d,%d)\n"
 msgstr ""
 
-#: src/ascii.c:968
+#: src/ascii.c:969
 #, c-format
 msgid "%s: horiz=%d, vert=%d\n"
 msgstr ""
 
-#: src/ascii.c:1140
+#: src/ascii.c:1141
 #, c-format
 msgid "Writing `%s': %s"
 msgstr ""
 
-#: src/ascii.c:1543 src/postscript.c:2093
+#: src/ascii.c:1550 src/postscript.c:2095
 #, c-format
 msgid "%s - Page %d"
 msgstr ""
 
-#: src/autorecode.c:121
+#: src/autorecode.c:120
 #, c-format
 msgid "Source variable count (%d) does not match target variable count (%d)."
 msgstr ""
 
-#: src/autorecode.c:138 src/command.c:690 src/compute.c:293
-#: src/data-list.c:380 src/data-list.c:878 src/data-list.c:1690
-#: src/do-if.c:263 src/get.c:381 src/lexer.c:387 src/loop.c:241
-#: src/matrix-data.c:510 src/print.c:338 src/print.c:1060 src/recode.c:405
-#: src/sel-if.c:56 src/sel-if.c:138 src/vector.c:194 src/file-handle.q:88
+#: src/autorecode.c:137 src/command.c:738 src/compute.c:290
+#: src/data-list.c:380 src/data-list.c:877 src/data-list.c:1686
+#: src/do-if.c:257 src/get.c:378 src/lexer.c:412 src/loop.c:239
+#: src/matrix-data.c:507 src/print.c:328 src/print.c:1038 src/recode.c:403
+#: src/sel-if.c:53 src/sel-if.c:130 src/vector.c:192 src/file-handle.q:140
 msgid "expecting end of command"
 msgstr ""
 
-#: src/autorecode.c:148
+#: src/autorecode.c:147
 #, c-format
 msgid "Target variable %s duplicates existing variable %s."
 msgstr ""
 
-#: src/autorecode.c:155
+#: src/autorecode.c:154
 #, c-format
 msgid "Duplicate variable name %s among target variables."
 msgstr ""
 
-#: src/cmdline.c:114 src/cmdline.c:133 src/cmdline.c:145 src/command.c:196
-#: src/set.q:416 src/set.q:418 src/set.q:958
+#: src/casefile.c:154
+#, c-format
+msgid "%s: Removing temporary file: %s."
+msgstr ""
+
+#: src/casefile.c:247
+#, c-format
+msgid "Error writing temporary file: %s."
+msgstr ""
+
+#: src/casefile.c:274
+#, c-format
+msgid "%s: Creating temporary file: %s."
+msgstr ""
+
+#: src/casefile.c:471
+#, c-format
+msgid "%s: Opening temporary file: %s."
+msgstr ""
+
+#: src/casefile.c:500
+#, c-format
+msgid "%s: Seeking temporary file: %s."
+msgstr ""
+
+#: src/casefile.c:513
+#, c-format
+msgid "%s: Reading temporary file: %s."
+msgstr ""
+
+#: src/casefile.c:516
+#, c-format
+msgid "%s: Temporary file ended unexpectedly."
+msgstr ""
+
+#: src/cmdline.c:141 src/cmdline.c:160 src/cmdline.c:172 src/command.c:160
+#: src/set.q:414 src/set.q:416 src/set.q:956
 #, c-format
 msgid "%s is not yet implemented."
 msgstr ""
 
-#: src/cmdline.c:159
+#: src/cmdline.c:186
 msgid ""
 "\n"
 "Copyright (C) 1997-9, 2000 Free Software Foundation, Inc.\n"
@@ -261,7 +294,7 @@ msgid ""
 "Written by Ben Pfaff <blp@gnu.org>."
 msgstr ""
 
-#: src/cmdline.c:221
+#: src/cmdline.c:248
 #, c-format
 msgid ""
 "PSPP, a program for statistical analysis of sample data.\n"
@@ -272,6 +305,9 @@ msgid ""
 "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"
@@ -290,6 +326,9 @@ msgid ""
 "  -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"
@@ -305,32 +344,32 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/cmdline.c:253
+#: src/cmdline.c:286
 #, c-format
 msgid ""
 "\n"
 "Report bugs to <%s>.\n"
 msgstr ""
 
-#: src/command.c:134
+#: src/command.c:98
 #, c-format
 msgid "%s not allowed inside FILE TYPE/END FILE TYPE."
 msgstr ""
 
-#: src/command.c:138
+#: src/command.c:102
 #, c-format
 msgid "%s not allowed inside FILE TYPE GROUPED/END FILE TYPE."
 msgstr ""
 
-#: src/command.c:141
+#: src/command.c:105
 msgid "RECORD TYPE must be the first command inside a FILE TYPE structure."
 msgstr ""
 
-#: src/command.c:186
-msgid "This line does not begin with a valid command name."
+#: src/command.c:150
+msgid "expecting command name"
 msgstr ""
 
-#: src/command.c:215
+#: src/command.c:179
 #, c-format
 msgid ""
 "%s is not allowed (1) before a command to specify the input program, such as "
@@ -338,106 +377,83 @@ msgid ""
 "PROGRAM and END INPUT PROGRAM."
 msgstr ""
 
-#: src/command.c:219
+#: src/command.c:183
 #, c-format
 msgid "%s is not allowed within an input program."
 msgstr ""
 
-#: src/command.c:220 src/command.c:221
+#: src/command.c:184 src/command.c:185
 #, c-format
 msgid "%s is only allowed within an input program."
 msgstr ""
 
-#: src/command.c:230
+#: src/command.c:464
 #, c-format
-msgid "%s command beginning\n"
-msgstr ""
-
-#: src/command.c:266
-#, c-format
-msgid ""
-"%s command completed\n"
-"\n"
-msgstr ""
-
-#: src/command.c:281
-msgid "The identifier(s) specified do not form a valid command name:"
-msgstr ""
-
-#: src/command.c:284
-msgid "The identifier(s) specified do not form a complete command name:"
+msgid "Unknown command %s."
 msgstr ""
 
-#: src/command.c:408
+#: src/command.c:564
 msgid ""
 "This command is not accepted in a syntax file.  Instead, use FINISH to "
 "terminate a syntax file."
 msgstr ""
 
-#: src/command.c:426
+#: src/command.c:582
 msgid ""
 "This command is not executed in interactive mode.  Instead, PSPP drops down "
 "to the command prompt.  Use EXIT if you really want to quit."
 msgstr ""
 
-#: src/command.c:517
-msgid "The sentinel may not be the empty string."
-msgstr ""
-
-#: src/command.c:576 src/command.c:708
+#: src/command.c:625 src/command.c:756
 msgid "This command not allowed when the SAFER option is set."
 msgstr ""
 
-#: src/command.c:590
+#: src/command.c:637
 #, c-format
 msgid "Error removing `%s': %s."
 msgstr ""
 
-#: src/command.c:640
+#: src/command.c:687
 #, c-format
 msgid "Couldn't fork: %s."
 msgstr ""
 
-#: src/command.c:681
+#: src/command.c:729
 #, c-format
 msgid "Error executing command: %s."
 msgstr ""
 
-#: src/command.c:731
+#: src/command.c:777
 msgid "No operating system support for this command."
 msgstr ""
 
-#: src/command.c:760
+#: src/command.c:800
 msgid "This command is not valid in a syntax file."
 msgstr ""
 
-#: src/compute.c:145 src/compute.c:209
+#: src/compute.c:143 src/compute.c:207
 #, c-format
 msgid ""
 "When executing COMPUTE: SYSMIS is not a valid value as an index into vector %"
 "s."
 msgstr ""
 
-#: src/compute.c:148 src/compute.c:213
+#: src/compute.c:146 src/compute.c:211
 #, c-format
 msgid ""
 "When executing COMPUTE: %g is not a valid value as an index into vector %s."
 msgstr ""
 
-#: src/compute.c:355
+#: src/compute.c:352
 #, c-format
 msgid "There is no vector named %s."
 msgstr ""
 
-#: src/compute.c:461
-msgid "Extra characters after expression."
-msgstr ""
-
-#: src/count.c:156
+#: src/count.c:154
 msgid "Destination cannot be a string variable."
 msgstr ""
 
-#: src/count.c:263
+#: src/count.c:261
 #, c-format
 msgid ""
 "%g THRU %g is not a valid range.  The number following THRU must be at least "
@@ -625,28 +641,28 @@ msgstr ""
 msgid "Field too long (%d characters).  Truncated after character %d."
 msgstr ""
 
-#: src/data-list.c:139
+#: src/data-list.c:136
 msgid ""
 "DATA LIST may not use a different file from that specified on its "
 "surrounding FILE TYPE."
 msgstr ""
 
-#: src/data-list.c:158
+#: src/data-list.c:155
 msgid "The END subcommand may only be specified once."
 msgstr ""
 
-#: src/data-list.c:194
+#: src/data-list.c:191
 msgid "Only one of FIXED, FREE, or LIST may be specified."
 msgstr ""
 
-#: src/data-list.c:327 src/print.c:299
+#: src/data-list.c:327 src/print.c:289
 #, c-format
 msgid ""
 "The record number specified, %ld, is before the previous record, %d.  Data "
 "fields must be listed in order of increasing record number."
 msgstr ""
 
-#: src/data-list.c:356 src/data-list.c:1679
+#: src/data-list.c:356 src/data-list.c:1675
 msgid ""
 "SPSS-like or FORTRAN-like format specification expected after variable names."
 msgstr ""
@@ -655,13 +671,13 @@ msgstr ""
 msgid "At least one variable must be specified."
 msgstr ""
 
-#: src/data-list.c:372 src/print.c:331
+#: src/data-list.c:372 src/print.c:321
 msgid ""
 "Variables are specified on records that should not exist according to "
 "RECORDS subcommand."
 msgstr ""
 
-#: src/data-list.c:410 src/data-list.c:424 src/print.c:508 src/print.c:521
+#: src/data-list.c:410 src/data-list.c:424 src/print.c:498 src/print.c:511
 msgid "Column positions for fields must be positive."
 msgstr ""
 
@@ -669,25 +685,25 @@ msgstr ""
 msgid "The ending column for a field must be greater than the starting column."
 msgstr ""
 
-#: src/data-list.c:443 src/print.c:598
+#: src/data-list.c:443 src/print.c:588
 #, c-format
 msgid "The %d columns %d-%d can't be evenly divided into %d fields."
 msgstr ""
 
-#: src/data-list.c:463 src/print.c:549
+#: src/data-list.c:463 src/print.c:539
 msgid "A format specifier on this line has extra characters on the end."
 msgstr ""
 
-#: src/data-list.c:478 src/print.c:565
+#: src/data-list.c:478 src/print.c:555
 msgid "The value for number of decimal places must be at least 1."
 msgstr ""
 
-#: src/data-list.c:492 src/print.c:578
+#: src/data-list.c:492 src/print.c:568
 #, c-format
 msgid "Input format %s doesn't accept decimal places."
 msgstr ""
 
-#: src/data-list.c:539 src/data-list.c:635 src/data-list.c:857
+#: src/data-list.c:539 src/data-list.c:635 src/data-list.c:856
 #, c-format
 msgid "%s is a duplicate variable name."
 msgstr ""
@@ -708,27 +724,26 @@ msgid ""
 "names."
 msgstr ""
 
-#: src/data-list.c:739 src/print.c:771
+#: src/data-list.c:739 src/print.c:761
 msgid ""
 "There aren't enough format specifications to match the number of variable "
 "names given."
 msgstr ""
 
-#: src/data-list.c:768 src/data-list.c:899 src/print.c:803
-#: src/sysfile-info.c:135 src/sysfile-info.c:370 src/vfm.c:1011
-#: src/descript.q:791
+#: src/data-list.c:768 src/data-list.c:898 src/descript.c:826 src/print.c:792
+#: src/sysfile-info.c:132 src/sysfile-info.c:365 src/vfm.c:833
 msgid "Variable"
 msgstr ""
 
-#: src/data-list.c:769 src/print.c:804
+#: src/data-list.c:769 src/print.c:793
 msgid "Record"
 msgstr ""
 
-#: src/data-list.c:770 src/print.c:805
+#: src/data-list.c:770 src/print.c:794
 msgid "Columns"
 msgstr ""
 
-#: src/data-list.c:771 src/data-list.c:900 src/print.c:806
+#: src/data-list.c:771 src/data-list.c:899 src/print.c:795
 msgid "Format"
 msgstr ""
 
@@ -746,198 +761,305 @@ msgid_plural "Reading %d records from the command file."
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/data-list.c:923
+#: src/data-list.c:922
 #, c-format
 msgid "Reading free-form data from file %s."
 msgstr ""
 
-#: src/data-list.c:924
+#: src/data-list.c:923
 msgid "Reading free-form data from the command file."
 msgstr ""
 
-#: src/data-list.c:971 src/matrix-data.c:923
+#: src/data-list.c:969 src/matrix-data.c:923
 msgid "Scope of string exceeds line."
 msgstr ""
 
-#: src/data-list.c:1039
+#: src/data-list.c:1038
 #, c-format
 msgid "Partial case of %d of %d records discarded."
 msgstr ""
 
-#: src/data-list.c:1090
+#: src/data-list.c:1089
 #, c-format
 msgid "Partial case discarded.  The first variable missing was %s."
 msgstr ""
 
-#: src/data-list.c:1133
+#: src/data-list.c:1132
 #, c-format
 msgid ""
 "Missing value(s) for all variables from %s onward.  These will be filled "
 "with the system-missing value or blanks, as appropriate."
 msgstr ""
 
-#: src/data-list.c:1210
+#: src/data-list.c:1209
 msgid "Attempt to read past end of file."
 msgstr ""
 
-#: src/data-list.c:1353
+#: src/data-list.c:1349
 msgid ""
 "REPEATING DATA must use the same file as its corresponding DATA LIST or FILE "
 "TYPE."
 msgstr ""
 
-#: src/data-list.c:1387
+#: src/data-list.c:1383
 #, c-format
 msgid "STARTS beginning column (%d) exceeds STARTS ending column (%d)."
 msgstr ""
 
-#: src/data-list.c:1443
+#: src/data-list.c:1439
 #, c-format
 msgid "CONTINUED beginning column (%d) exceeds CONTINUED ending column (%d)."
 msgstr ""
 
-#: src/data-list.c:1466
+#: src/data-list.c:1462
 #, c-format
 msgid "ID beginning column (%ld) must be positive."
 msgstr ""
 
-#: src/data-list.c:1481
+#: src/data-list.c:1477
 #, c-format
 msgid "ID ending column (%ld) must be positive."
 msgstr ""
 
-#: src/data-list.c:1487
+#: src/data-list.c:1483
 #, c-format
 msgid "ID ending column (%ld) cannot be less than ID beginning column (%d)."
 msgstr ""
 
-#: src/data-list.c:1527
+#: src/data-list.c:1523
 msgid "Missing required specification STARTS."
 msgstr ""
 
-#: src/data-list.c:1529
+#: src/data-list.c:1525
 msgid "Missing required specification OCCURS."
 msgstr ""
 
-#: src/data-list.c:1536
+#: src/data-list.c:1532
 msgid "ID specified without CONTINUED."
 msgstr ""
 
-#: src/data-list.c:1628
+#: src/data-list.c:1624
 msgid "String variable not allowed here."
 msgstr ""
 
-#: src/data-list.c:1638
+#: src/data-list.c:1634
 #, c-format
 msgid "%s (%d) must be at least 1."
 msgstr ""
 
-#: src/data-list.c:1644
+#: src/data-list.c:1640
 #, c-format
 msgid "Variable or integer expected for %s."
 msgstr ""
 
-#: src/data-list.c:1782
+#: src/data-list.c:1778
 #, c-format
 msgid "Encountered mismatched record ID \"%s\" expecting \"%s\"."
 msgstr ""
 
-#: src/data-list.c:1814
+#: src/data-list.c:1810
 #, c-format
 msgid ""
 "Variable %s starting in column %d extends beyond physical record length of %"
 "d."
 msgstr ""
 
-#: src/data-list.c:1882
+#: src/data-list.c:1878
 #, c-format
 msgid "Invalid value %d for OCCURS."
 msgstr ""
 
-#: src/data-list.c:1888
+#: src/data-list.c:1884
 #, c-format
 msgid "Beginning column for STARTS (%d) must be at least 1."
 msgstr ""
 
-#: src/data-list.c:1896
+#: src/data-list.c:1892
 #, c-format
 msgid "Ending column for STARTS (%d) is less than beginning column (%d)."
 msgstr ""
 
-#: src/data-list.c:1904
+#: src/data-list.c:1900
 #, c-format
 msgid "Invalid value %d for LENGTH."
 msgstr ""
 
-#: src/data-list.c:1911
+#: src/data-list.c:1907
 #, c-format
 msgid "Beginning column for CONTINUED (%d) must be at least 1."
 msgstr ""
 
-#: src/data-list.c:1919
+#: src/data-list.c:1915
 #, c-format
 msgid "Ending column for CONTINUED (%d) is less than beginning column (%d)."
 msgstr ""
 
-#: src/data-list.c:1951
+#: src/data-list.c:1947
 #, c-format
 msgid ""
 "Number of repetitions specified on OCCURS (%d) exceed number of repetitions "
 "available in space on STARTS (%d), and CONTINUED not specified."
 msgstr ""
 
-#: src/data-list.c:1970
+#: src/data-list.c:1966
 #, c-format
 msgid "Unexpected end of file with %d repetitions remaining out of %d."
 msgstr ""
 
-#: src/data-out.c:231 src/sfm-read.c:470 src/sysfile-info.c:116
+#: src/data-out.c:235 src/sfm-read.c:472 src/sysfile-info.c:113
 msgid "Unknown"
 msgstr ""
 
-#: src/data-out.c:339
+#: src/data-out.c:343
 msgid ""
 "The N output format cannot be used to output a negative number or the system-"
 "missing value."
 msgstr ""
 
-#: src/data-out.c:450
+#: src/data-out.c:454
 #, c-format
 msgid ""
 "Quality of zoned decimal (Z) output format code is suspect.  Check your "
 "results. Report bugs to %s."
 msgstr ""
 
-#: src/data-out.c:458
+#: src/data-out.c:462
 msgid "The system-missing value cannot be output as a zoned decimal number."
 msgstr ""
 
-#: src/data-out.c:471
+#: src/data-out.c:475
 #, c-format
 msgid "Number %g too big to fit in field with format Z%d.%d."
 msgstr ""
 
-#: src/data-out.c:863
+#: src/data-out.c:867
 #, c-format
 msgid "Time value %g too large in magnitude to convert to alphanumeric time."
 msgstr ""
 
-#: src/data-out.c:914
+#: src/data-out.c:918
 #, c-format
 msgid "Weekday index %f does not lie between 1 and 7."
 msgstr ""
 
-#: src/data-out.c:934
+#: src/data-out.c:938
 #, c-format
 msgid "Month index %f does not lie between 1 and 12."
 msgstr ""
 
-#: src/data-out.c:1047
+#: src/data-out.c:1051
 #, c-format
 msgid ""
 "Year %d cannot be represented in four digits for output formatting purposes."
 msgstr ""
 
+#: src/date.c:32
+msgid "Only USE ALL is currently implemented."
+msgstr ""
+
+#: src/descript.c:83 src/frequencies.q:95 src/t-test.q:632 src/t-test.q:655
+#: src/t-test.q:744 src/t-test.q:1059
+msgid "Mean"
+msgstr ""
+
+#: src/descript.c:84
+msgid "S E Mean"
+msgstr ""
+
+#: src/descript.c:85 src/frequencies.q:99
+msgid "Std Dev"
+msgstr ""
+
+#: src/descript.c:86 src/frequencies.q:100
+msgid "Variance"
+msgstr ""
+
+#: src/descript.c:87 src/frequencies.q:101
+msgid "Kurtosis"
+msgstr ""
+
+#: src/descript.c:88
+msgid "S E Kurt"
+msgstr ""
+
+#: src/descript.c:89 src/frequencies.q:103
+msgid "Skewness"
+msgstr ""
+
+#: src/descript.c:90
+msgid "S E Skew"
+msgstr ""
+
+#: src/descript.c:91 src/frequencies.q:105
+msgid "Range"
+msgstr ""
+
+#: src/descript.c:92 src/frequencies.q:106
+msgid "Minimum"
+msgstr ""
+
+#: src/descript.c:93 src/frequencies.q:107
+msgid "Maximum"
+msgstr ""
+
+#: src/descript.c:94 src/frequencies.q:108
+msgid "Sum"
+msgstr ""
+
+#: src/descript.c:320
+#, c-format
+msgid "Z-score variable name %s would bea duplicate variable name."
+msgstr ""
+
+#: src/descript.c:337 src/list.q:143
+msgid "No variables specified."
+msgstr ""
+
+#: src/descript.c:390
+msgid ""
+"At least one case in the data file had a weight value that was system-"
+"missing, zero, or negative.  These case(s) were ignored."
+msgstr ""
+
+#: src/descript.c:427
+msgid "expecting statistic name"
+msgstr ""
+
+#: src/descript.c:498
+msgid ""
+"Ran out of generic names for Z-score variables.  There are only 126 generic "
+"names: ZSC001-ZSC0999, STDZ01-STDZ09, ZZZZ01-ZZZZ09, ZQZQ01-ZQZQ09."
+msgstr ""
+
+#: src/descript.c:529
+msgid "Mapping of variables to corresponding Z-scores."
+msgstr ""
+
+#: src/descript.c:534
+msgid "Source"
+msgstr ""
+
+#: src/descript.c:535
+msgid "Target"
+msgstr ""
+
+#: src/descript.c:612 src/descript.c:618
+msgid "Z-score of "
+msgstr ""
+
+#: src/descript.c:829
+msgid "Valid N"
+msgstr ""
+
+#: src/descript.c:830
+msgid "Missing N"
+msgstr ""
+
+#: src/descript.c:856
+#, c-format
+msgid "Valid cases = %g; cases with missing value(s) = %g."
+msgstr ""
+
 #: src/devind.c:136
 #, c-format
 msgid "DEVIND driver initializing as `%s'..."
@@ -958,99 +1080,95 @@ msgstr ""
 msgid "Cannot open first page on DEVIND device %s."
 msgstr ""
 
-#: src/dfm.c:74
+#: src/dfm.c:77
 #, c-format
 msgid "%s: Closing data-file handle %s."
 msgstr ""
 
-#: src/dfm.c:96
-msgid "<<Bug in dfm.c>>"
+#: src/dfm.c:103
+#, c-format
+msgid "Cannot read from file %s already opened for %s."
 msgstr ""
 
-#: src/dfm.c:118
+#: src/dfm.c:120
 #, c-format
 msgid "%s: Opening data-file handle %s for reading."
 msgstr ""
 
-#: src/dfm.c:135 src/dfm.c:152
-msgid "BEGIN DATA expected."
+#: src/dfm.c:135
+#, c-format
+msgid "Could not open \"%s\" for reading as a data file: %s."
 msgstr ""
 
-#: src/dfm.c:172
+#: src/dfm.c:164
 #, c-format
-msgid "An error occurred while opening \"%s\" for reading as a data file: %s."
+msgid "Cannot write to file %s already opened for %s."
 msgstr ""
 
-#: src/dfm.c:201
+#: src/dfm.c:181
 #, c-format
 msgid "%s: Opening data-file handle %s for writing."
 msgstr ""
 
-#: src/dfm.c:207
+#: src/dfm.c:187
 msgid "Cannot open the inline file for writing."
 msgstr ""
 
-#: src/dfm.c:222
+#: src/dfm.c:201
 #, c-format
 msgid "An error occurred while opening \"%s\" for writing as a data file: %s."
 msgstr ""
 
-#: src/dfm.c:367
+#: src/dfm.c:361 src/dfm.c:378
+msgid "BEGIN DATA expected."
+msgstr ""
+
+#: src/dfm.c:387
 msgid ""
 "Unexpected end-of-file while reading data in BEGIN DATA.  This probably "
 "indicates a missing or misformatted END DATA command.  END DATA must appear "
 "by itself on a single line with exactly one space between words."
 msgstr ""
 
-#: src/dfm.c:400 src/dfm.c:421
+#: src/dfm.c:420 src/dfm.c:442
 #, c-format
 msgid "Error reading file %s: %s."
 msgstr ""
 
-#: src/dfm.c:424
+#: src/dfm.c:445
 #, c-format
 msgid "%s: Partial record at end of file."
 msgstr ""
 
-#: src/dfm.c:482
-#, c-format
-msgid "Cannot read from file %s already opened for %s."
-msgstr ""
-
-#: src/dfm.c:496
+#: src/dfm.c:506
 #, c-format
 msgid "Attempt to read beyond end-of-file on file %s."
 msgstr ""
 
-#: src/dfm.c:590
-#, c-format
-msgid "Cannot write to file %s already opened for %s."
-msgstr ""
-
-#: src/dfm.c:614
+#: src/dfm.c:604
 #, c-format
 msgid "Error writing file %s: %s."
 msgstr ""
 
-#: src/dfm.c:656
+#: src/dfm.c:654
 msgid ""
 "This command is not valid here since the current input program does not "
 "access the inline file."
 msgstr ""
 
-#: src/dfm.c:663
+#: src/dfm.c:661
 msgid "inline file: Opening for reading."
 msgstr ""
 
-#: src/dfm.c:677
+#: src/dfm.c:674
 msgid "Skipping remaining inline data."
 msgstr ""
 
-#: src/dfm.c:689
+#: src/dfm.c:686
 msgid "reading as a data file"
 msgstr ""
 
-#: src/dfm.c:696
+#: src/dfm.c:693
 msgid "writing as a data file"
 msgstr ""
 
@@ -1066,131 +1184,127 @@ msgstr ""
 msgid "End of command expected."
 msgstr ""
 
-#: src/do-if.c:163
+#: src/do-if.c:161
 msgid "There is no DO IF to match with this ELSE."
 msgstr ""
 
-#: src/do-if.c:169
+#: src/do-if.c:167
 msgid ""
 "There may be at most one ELSE clause in each DO IF structure.  It must be "
 "the last clause."
 msgstr ""
 
-#: src/do-if.c:206
+#: src/do-if.c:202
 msgid "There is no DO IF to match with this END IF."
 msgstr ""
 
-#: src/do-if.c:294
+#: src/do-if.c:288
 #, c-format
 msgid "DO IF %d: true\n"
 msgstr ""
 
-#: src/do-if.c:299
+#: src/do-if.c:293
 #, c-format
 msgid "DO IF %d: false\n"
 msgstr ""
 
-#: src/do-if.c:304
+#: src/do-if.c:298
 #, c-format
 msgid "DO IF %d: missing\n"
 msgstr ""
 
-#: src/error.c:115
+#: src/error.c:117
 msgid "Terminating NOW due to a fatal error!"
 msgstr ""
 
-#: src/error.c:192
+#: src/error.c:194
 msgid "Terminating execution of syntax file due to error."
 msgstr ""
 
-#: src/error.c:194
+#: src/error.c:196
 #, c-format
 msgid "Errors (%d) exceeds limit (%d)."
 msgstr ""
 
-#: src/error.c:197
+#: src/error.c:199
 #, c-format
 msgid "Warnings (%d) exceed limit (%d)."
 msgstr ""
 
-#: src/error.c:255
+#: src/error.c:257
 msgid "fatal"
 msgstr ""
 
-#: src/error.c:257 src/error.c:264 src/error.c:267 src/expr-prs.c:1464
+#: src/error.c:259 src/error.c:266 src/error.c:269 src/expr-prs.c:1283
 msgid "error"
 msgstr ""
 
-#: src/error.c:258 src/error.c:265 src/error.c:268
+#: src/error.c:260 src/error.c:267 src/error.c:270
 msgid "warning"
 msgstr ""
 
-#: src/error.c:259 src/error.c:269
+#: src/error.c:261 src/error.c:271
 msgid "note"
 msgstr ""
 
-#: src/error.c:261 src/error.c:262
+#: src/error.c:263 src/error.c:264
 msgid "installation error"
 msgstr ""
 
-#: src/expr-evl.c:1116
+#: src/expr-evl.c:632
+msgid "TIME.HMS cannot mix positive and negative in its arguments."
+msgstr ""
+
+#: src/expr-evl.c:696
+msgid "Week argument to WKYR must be in range 0 to 53."
+msgstr ""
+
+#: src/expr-evl.c:847 src/expr-evl.c:903
+msgid "Argument 3 of RINDEX may not be system-missing."
+msgstr ""
+
+#: src/expr-evl.c:857 src/expr-evl.c:913
+msgid ""
+"Argument 3 of RINDEX must be between 1 and the length of argument 2, and it "
+"must evenly divide the length of argument 2."
+msgstr ""
+
+#: src/expr-evl.c:1099
 msgid ""
 "A number being treated as a Boolean in an expression was found to have a "
 "value other than 0 (false), 1 (true), or the system-missing value.  The "
 "result was forced to 0."
 msgstr ""
 
-#: src/expr-evl.c:1160
+#: src/expr-evl.c:1140
 #, c-format
 msgid ""
 "SYSMIS is not a valid index value for vector %s.  The result will be set to "
 "SYSMIS."
 msgstr ""
 
-#: src/expr-evl.c:1164
+#: src/expr-evl.c:1144
 #, c-format
 msgid ""
 "%g is not a valid index value for vector %s.  The result will be set to "
 "SYSMIS."
 msgstr ""
 
-#: src/expr-evl.c:1182
+#: src/expr-evl.c:1163
 #, c-format
 msgid ""
 "SYSMIS is not a valid index value for vector %s.  The result will be set to "
 "the empty string."
 msgstr ""
 
-#: src/expr-evl.c:1187
+#: src/expr-evl.c:1168
 #, c-format
 msgid ""
 "%g is not a valid index value for vector %s.  The result will be set to the "
 "empty string."
 msgstr ""
 
-#: src/expr-opt.c:662
-msgid ""
-"While optimizing a constant expression, there was a bad value for the third "
-"argument to INDEX."
-msgstr ""
-
-#: src/expr-opt.c:687
-msgid ""
-"While optimizing a constant expression, there was a bad value for the third "
-"argument to RINDEX."
-msgstr ""
-
-#: src/expr-opt.c:746
-#, c-format
-msgid "Third argument to %cPAD() must be at least one character in length."
-msgstr ""
-
-#: src/expr-opt.c:779
-#, c-format
-msgid "Second argument to %cTRIM() must be at least one character in length."
-msgstr ""
-
-#: src/expr-opt.c:880
+#: src/expr-opt.c:679
 msgid ""
 "When optimizing a constant expression, an integer that was being used as an "
 "Boolean value was found to have a constant value other than 0, 1, or SYSMIS."
@@ -1198,188 +1312,164 @@ msgstr ""
 
 #: src/expr-prs.c:141
 msgid ""
-"A string expression was supplied in a place where a Boolean expression was "
-"expected."
+"Type mismatch: expression has string type, but a numeric value is required "
+"here."
 msgstr ""
 
 #: src/expr-prs.c:152
 msgid ""
-"A numeric expression was expected in a place where one was not supplied."
-msgstr ""
-
-#: src/expr-prs.c:160
-msgid "A string expression was expected in a place where one was not supplied."
+"Type mismatch: expression has numeric type, but a string value is required "
+"here."
 msgstr ""
 
-#: src/expr-prs.c:174
-msgid "The OR operator cannot take string operands."
-msgstr ""
-
-#: src/expr-prs.c:222
-msgid "The AND operator cannot take string operands."
+#: src/expr-prs.c:211
+#, c-format
+msgid "Type mismatch: operands of %s operator must be strings."
 msgstr ""
 
-#: src/expr-prs.c:271
-msgid "The NOT operator cannot take a string operand."
+#: src/expr-prs.c:214
+#, c-format
+msgid "Type mismatch: operands of %s operator must be numeric."
 msgstr ""
 
-#: src/expr-prs.c:298
+#: src/expr-prs.c:395
 msgid ""
-"Strings cannot be compared with numeric or Boolean values with the "
-"relational operators = >= > <= < <>."
-msgstr ""
-
-#: src/expr-prs.c:355
-msgid "The `+' and `-' operators may only be used with numeric operands."
-msgstr ""
-
-#: src/expr-prs.c:407
-msgid "The `*' and `/' operators may only be used with numeric operands."
-msgstr ""
-
-#: src/expr-prs.c:458
-msgid "The unary minus (-) operator can only take a numeric operand."
+"Chaining relational operators (e.g. \"a < b < c\") will not produce the "
+"mathematically expected result.  Use the AND logical operator to fix the "
+"problem (e.g. \"a < b AND b < c\").  If chaining is really intended, "
+"parentheses will disable this warning (e.g. \"(a < b) < c\".)"
 msgstr ""
 
-#: src/expr-prs.c:488
-msgid "Both operands to the ** operator must be numeric."
-msgstr ""
-
-#: src/expr-prs.c:582
-msgid "Use of $LENGTH is obsolete, returning default of 66."
-msgstr ""
-
-#: src/expr-prs.c:587
-msgid "Use of $WIDTH is obsolete, returning default of 131."
+#: src/expr-prs.c:475
+msgid ""
+"The exponentiation operator (\"**\") is left-associative, even though right-"
+"associative semantics are more useful.  That is, \"a**b**c\" equals \"(a**b)"
+"**c\", not as \"a**(b**c)\".  To disable this warning, insert parentheses."
 msgstr ""
 
-#: src/expr-prs.c:592
+#: src/expr-prs.c:556
 #, c-format
 msgid "Unknown system variable %s."
 msgstr ""
 
-#: src/expr-prs.c:631
+#: src/expr-prs.c:595
 msgid "expecting variable name"
 msgstr ""
 
-#: src/expr-prs.c:673
+#: src/expr-prs.c:638
 msgid "in expression"
 msgstr ""
 
-#: src/expr-prs.c:854
+#: src/expr-prs.c:734
 msgid "Argument 2 to LAG must be a small positive integer constant."
 msgstr ""
 
-#: src/expr-prs.c:927 src/expr-prs.c:966
+#: src/expr-prs.c:815 src/expr-prs.c:854
 #, c-format
 msgid ""
 "Type mismatch in argument %d of %s, which was expected to be of %s type.  It "
 "was actually of %s type. "
 msgstr ""
 
-#: src/expr-prs.c:953
+#: src/expr-prs.c:841
 #, c-format
 msgid "%s cannot take Boolean operands."
 msgstr ""
 
-#: src/expr-prs.c:985
+#: src/expr-prs.c:873
 msgid "in function call"
 msgstr ""
 
-#: src/expr-prs.c:999
+#: src/expr-prs.c:887
 msgid "RANGE requires an odd number of arguments, but at least three."
 msgstr ""
 
-#: src/expr-prs.c:1009
+#: src/expr-prs.c:897
 #, c-format
 msgid "%s requires at least two arguments."
 msgstr ""
 
-#: src/expr-prs.c:1024
+#: src/expr-prs.c:912
 #, c-format
 msgid "%s.%d requires at least %d arguments."
 msgstr ""
 
-#: src/expr-prs.c:1066
+#: src/expr-prs.c:977
 #, c-format
 msgid ""
 "Argument %d to CONCAT is type %s.  All arguments to CONCAT must be strings."
 msgstr ""
 
-#: src/expr-prs.c:1125
+#: src/expr-prs.c:1074
 #, c-format
 msgid ""
 "Argument %d to %s was expected to be of %s type.  It was actually of type %s."
 msgstr ""
 
-#: src/expr-prs.c:1144
+#: src/expr-prs.c:1091
 #, c-format
 msgid "%s is not a numeric format."
 msgstr ""
 
-#: src/expr-prs.c:1170
+#: src/expr-prs.c:1129
 #, c-format
 msgid "Too few arguments to function %s."
 msgstr ""
 
-#: src/expr-prs.c:1202
+#: src/expr-prs.c:1162
 #, c-format
 msgid ""
-"Type mismatch in argument %d of %s, which was expected to be numeric.  It "
-"was actually type %s."
+"Type mismatch in argument %d of %s.  A string expression was supplied where "
+"only a numeric expression is allowed."
 msgstr ""
 
-#: src/expr-prs.c:1211
+#: src/expr-prs.c:1172
 #, c-format
 msgid "Missing comma following argument %d of %s."
 msgstr ""
 
-#: src/expr-prs.c:1249
+#: src/expr-prs.c:1210
 msgid "The index value after a vector name must be numeric."
 msgstr ""
 
-#: src/expr-prs.c:1256
+#: src/expr-prs.c:1217
 msgid "`)' expected after a vector index value."
 msgstr ""
 
-#: src/expr-prs.c:1289
+#: src/expr-prs.c:1250
 #, c-format
 msgid "There is no function named %s."
 msgstr ""
 
-#: src/expr-prs.c:1294
+#: src/expr-prs.c:1255
 #, c-format
 msgid "Function %s may not be given a minimum number of arguments."
 msgstr ""
 
-#: src/expr-prs.c:1303
+#: src/expr-prs.c:1264
 #, c-format
 msgid "expecting `)' after %s function"
 msgstr ""
 
-#: src/expr-prs.c:1467
+#: src/expr-prs.c:1286
 msgid "Boolean"
 msgstr ""
 
-#: src/expr-prs.c:1696
+#: src/expr-prs.c:1563
 #, c-format
 msgid "!!TERMINAL!!"
 msgstr ""
 
-#: src/expr-prs.c:1722
+#: src/expr-prs.c:1589
 #, c-format
 msgid "!!SENTINEL!!"
 msgstr ""
 
-#: src/expr-prs.c:1725
+#: src/expr-prs.c:1592
 #, c-format
 msgid "!!ERROR%d!!"
 msgstr ""
 
-#: src/expr-prs.c:1743
-msgid "postfix:"
-msgstr ""
-
 #: src/filename.c:221
 #, c-format
 msgid "Searching for `%s'..."
@@ -1394,145 +1484,145 @@ msgstr ""
 msgid "Found `%s'."
 msgstr ""
 
-#: src/filename.c:669
+#: src/filename.c:686
 #, c-format
 msgid "Not opening pipe file `%s' because SAFER option set."
 msgstr ""
 
-#: src/file-type.c:127
+#: src/file-type.c:126
 msgid "MIXED, GROUPED, or NESTED expected."
 msgstr ""
 
-#: src/file-type.c:150
+#: src/file-type.c:149
 msgid "The CASE subcommand is not valid on FILE TYPE MIXED."
 msgstr ""
 
-#: src/file-type.c:168
+#: src/file-type.c:167
 msgid "WARN or NOWARN expected after WILD."
 msgstr ""
 
-#: src/file-type.c:176
+#: src/file-type.c:175
 msgid "The DUPLICATE subcommand is not valid on FILE TYPE MIXED."
 msgstr ""
 
-#: src/file-type.c:190
+#: src/file-type.c:189
 msgid "DUPLICATE=CASE is only valid on FILE TYPE NESTED."
 msgstr ""
 
-#: src/file-type.c:199
+#: src/file-type.c:198
 #, c-format
 msgid "WARN%s expected after DUPLICATE."
 msgstr ""
 
-#: src/file-type.c:200
+#: src/file-type.c:199
 msgid ", NOWARN, or CASE"
 msgstr ""
 
-#: src/file-type.c:201
+#: src/file-type.c:200
 msgid " or NOWARN"
 msgstr ""
 
-#: src/file-type.c:209
+#: src/file-type.c:208
 msgid "The MISSING subcommand is not valid on FILE TYPE MIXED."
 msgstr ""
 
-#: src/file-type.c:221
+#: src/file-type.c:220
 msgid "WARN or NOWARN after MISSING."
 msgstr ""
 
-#: src/file-type.c:229
+#: src/file-type.c:228
 msgid "ORDERED is only valid on FILE TYPE GROUPED."
 msgstr ""
 
-#: src/file-type.c:240
+#: src/file-type.c:239
 msgid "YES or NO expected after ORDERED."
 msgstr ""
 
-#: src/file-type.c:246 src/file-type.c:541 src/get.c:365
+#: src/file-type.c:245 src/file-type.c:539 src/get.c:362
 msgid "while expecting a valid subcommand"
 msgstr ""
 
-#: src/file-type.c:253
+#: src/file-type.c:252
 msgid "The required RECORD subcommand was not present."
 msgstr ""
 
-#: src/file-type.c:261
+#: src/file-type.c:260
 msgid "The required CASE subcommand was not present."
 msgstr ""
 
-#: src/file-type.c:267
+#: src/file-type.c:266
 msgid "CASE and RECORD must specify different variable names."
 msgstr ""
 
-#: src/file-type.c:322
+#: src/file-type.c:323
 msgid "Column value must be positive."
 msgstr ""
 
-#: src/file-type.c:338
+#: src/file-type.c:339
 msgid "Ending column precedes beginning column."
 msgstr ""
 
-#: src/file-type.c:358
+#: src/file-type.c:359
 msgid "Bad format specifier name."
 msgstr ""
 
-#: src/file-type.c:387 src/file-type.c:578
+#: src/file-type.c:388 src/file-type.c:576
 msgid ""
 "This command may only appear within a FILE TYPE/END FILE TYPE structure."
 msgstr ""
 
-#: src/file-type.c:410
+#: src/file-type.c:411
 msgid "OTHER may appear only on the last RECORD TYPE command."
 msgstr ""
 
-#: src/file-type.c:420
+#: src/file-type.c:421
 msgid "No input commands (DATA LIST, REPEATING DATA) for above RECORD TYPE."
 msgstr ""
 
-#: src/file-type.c:474
+#: src/file-type.c:472
 msgid ""
 "The CASE subcommand is not allowed on the RECORD TYPE command for FILE TYPE "
 "MIXED."
 msgstr ""
 
-#: src/file-type.c:484
+#: src/file-type.c:482
 msgid ""
 "No variable name may be specified for the CASE subcommand on RECORD TYPE."
 msgstr ""
 
-#: src/file-type.c:492
+#: src/file-type.c:490
 msgid ""
 "The CASE column specification on RECORD TYPE must give a format specifier "
 "that is the same type as that of the CASE column specification given on FILE "
 "TYPE."
 msgstr ""
 
-#: src/file-type.c:508
+#: src/file-type.c:506
 msgid "WARN or NOWARN expected on DUPLICATE subcommand."
 msgstr ""
 
-#: src/file-type.c:522
+#: src/file-type.c:520
 msgid "WARN or NOWARN expected on MISSING subcommand."
 msgstr ""
 
-#: src/file-type.c:535
+#: src/file-type.c:533
 msgid "YES or NO expected on SPREAD subcommand."
 msgstr ""
 
-#: src/file-type.c:593
+#: src/file-type.c:589
 msgid "No input commands (DATA LIST, REPEATING DATA) on above RECORD TYPE."
 msgstr ""
 
-#: src/file-type.c:600
+#: src/file-type.c:596
 msgid "No commands between FILE TYPE and END FILE TYPE."
 msgstr ""
 
-#: src/file-type.c:669
+#: src/file-type.c:665
 #, c-format
 msgid "Unknown record type \"%.*s\"."
 msgstr ""
 
-#: src/file-type.c:693
+#: src/file-type.c:689
 #, c-format
 msgid "Unknown record type %g."
 msgstr ""
@@ -1542,59 +1632,59 @@ msgid ""
 "FLIP ignores TEMPORARY.  Temporary transformations will be made permanent."
 msgstr ""
 
-#: src/flip.c:217
+#: src/flip.c:216
 #, c-format
 msgid "Could not create acceptable variant for variable %s."
 msgstr ""
 
-#: src/flip.c:233
+#: src/flip.c:232
 msgid "Cannot create more than 99999 variable names."
 msgstr ""
 
-#: src/flip.c:277
+#: src/flip.c:276
 msgid "Could not create temporary file for FLIP."
 msgstr ""
 
-#: src/flip.c:284 src/flip.c:347
+#: src/flip.c:283 src/flip.c:346
 #, c-format
 msgid "Error writing FLIP file: %s."
 msgstr ""
 
-#: src/flip.c:389
+#: src/flip.c:388
 #, c-format
 msgid "Error rewinding FLIP file: %s."
 msgstr ""
 
-#: src/flip.c:393
+#: src/flip.c:392
 msgid "Error creating FLIP source file."
 msgstr ""
 
-#: src/flip.c:402
+#: src/flip.c:401
 #, c-format
 msgid "Error reading FLIP file: %s."
 msgstr ""
 
-#: src/flip.c:414
+#: src/flip.c:413
 #, c-format
 msgid "Error seeking FLIP source file: %s."
 msgstr ""
 
-#: src/flip.c:419
+#: src/flip.c:418
 #, c-format
 msgid "Error writing FLIP source file: %s."
 msgstr ""
 
-#: src/flip.c:430
+#: src/flip.c:429
 #, c-format
 msgid "Error rewind FLIP source file: %s."
 msgstr ""
 
-#: src/flip.c:478
+#: src/flip.c:477
 #, c-format
 msgid "Error reading FLIP temporary file: %s."
 msgstr ""
 
-#: src/flip.c:481
+#: src/flip.c:480
 msgid "Unexpected end of file reading FLIP temporary file."
 msgstr ""
 
@@ -1680,44 +1770,44 @@ msgstr ""
 msgid "Data format %s is not valid."
 msgstr ""
 
-#: src/formats.c:93
+#: src/formats.c:90
 msgid "`(' expected after variable list"
 msgstr ""
 
-#: src/formats.c:102
+#: src/formats.c:99
 #, c-format
 msgid "Format %s may not be assigned to a %s variable."
 msgstr ""
 
-#: src/formats.c:123 src/numeric.c:65 src/numeric.c:137
+#: src/formats.c:120 src/numeric.c:64 src/numeric.c:135
 msgid "`)' expected after output format."
 msgstr ""
 
-#: src/formats.c:153
+#: src/formats.c:150
 #, c-format
 msgid "Formats:\n"
 msgstr ""
 
-#: src/formats.c:154
+#: src/formats.c:151
 #, c-format
 msgid "  Name      Print         Write\n"
 msgstr ""
 
-#: src/get.c:112
+#: src/get.c:111
 #, c-format
 msgid "GET translation table from file to memory:\n"
 msgstr ""
 
-#: src/get.c:117 src/get.c:1429
+#: src/get.c:116 src/get.c:1424
 #, c-format
 msgid "  %8s from %3d,%3d to %3d,%3d\n"
 msgstr ""
 
-#: src/get.c:371
+#: src/get.c:368
 msgid "All variables deleted from system file dictionary."
 msgstr ""
 
-#: src/get.c:418
+#: src/get.c:415
 #, c-format
 msgid ""
 "Cannot rename %s as %s because there already exists a variable named %s.  To "
@@ -1725,89 +1815,89 @@ msgid ""
 "as \"/RENAME (A=B)(B=C)(C=A)\", or equivalently, \"/RENAME (A B C=B C A)\"."
 msgstr ""
 
-#: src/get.c:443
+#: src/get.c:440
 msgid "`=' expected after variable list."
 msgstr ""
 
-#: src/get.c:450
+#: src/get.c:447
 #, c-format
 msgid ""
 "Number of variables on left side of `=' (%d) does not match number of "
 "variables on right side (%d), in parenthesized group %d of RENAME subcommand."
 msgstr ""
 
-#: src/get.c:463
+#: src/get.c:460
 #, c-format
 msgid "Requested renaming duplicates variable name %s."
 msgstr ""
 
-#: src/get.c:483
+#: src/get.c:480
 #, c-format
 msgid ""
 "\n"
 "Variables in dictionary:\n"
 msgstr ""
 
-#: src/get.c:610
+#: src/get.c:604
 msgid "The BY subcommand may be given once at most."
 msgstr ""
 
-#: src/get.c:677
+#: src/get.c:671
 msgid "The active file may not be specified more than once."
 msgstr ""
 
-#: src/get.c:686
+#: src/get.c:680
 msgid "Cannot specify the active file since no active file has been defined."
 msgstr ""
 
-#: src/get.c:694
+#: src/get.c:688
 msgid ""
 "MATCH FILES may not be used after TEMPORARY when the active file is an input "
 "source.  Temporary transformations will be made permanent."
 msgstr ""
 
-#: src/get.c:727
+#: src/get.c:721
 msgid ""
 "IN, FIRST, and LAST subcommands may not occur before the first FILE or TABLE."
 msgstr ""
 
-#: src/get.c:759
+#: src/get.c:756
 #, c-format
 msgid "Multiple %s subcommands for a single FILE or TABLE."
 msgstr ""
 
-#: src/get.c:769
+#: src/get.c:766
 #, c-format
 msgid "Duplicate variable name %s while creating %s variable."
 msgstr ""
 
-#: src/get.c:783
+#: src/get.c:780
 msgid ""
 "RENAME, KEEP, and DROP subcommands may not occur before the first FILE or "
 "TABLE."
 msgstr ""
 
-#: src/get.c:807
+#: src/get.c:804
 msgid "The BY subcommand is required when a TABLE subcommand is given."
 msgstr ""
 
-#: src/get.c:828
+#: src/get.c:825
 #, c-format
 msgid "File %s lacks BY variable %s."
 msgstr ""
 
-#: src/get.c:1341
+#: src/get.c:1338
 #, c-format
 msgid ""
 "Variable %s in file %s (%s) has different type or width from the same "
 "variable in earlier file (%s)."
 msgstr ""
 
-#: src/get.c:1391
+#: src/get.c:1386
 msgid "expecting COMM or TAPE"
 msgstr ""
 
-#: src/get.c:1424
+#: src/get.c:1419
 #, c-format
 msgid "IMPORT translation table from file to memory:\n"
 msgstr ""
@@ -1827,7 +1917,7 @@ msgstr ""
 msgid "Opening `%s': %s."
 msgstr ""
 
-#: src/getline.c:332 src/html.c:330 src/postscript.c:1461
+#: src/getline.c:332 src/html.c:331 src/postscript.c:1463
 #, c-format
 msgid "Reading `%s': %s."
 msgstr ""
@@ -1995,330 +2085,330 @@ msgstr ""
 msgid "Unknown configuration parameter `%s' for HTML device driver."
 msgstr ""
 
-#: src/html.c:236
+#: src/html.c:237
 msgid ""
 "Cannot find HTML prologue.  The use of `-vv' on the command line is "
 "suggested as a debugging aid."
 msgstr ""
 
-#: src/html.c:241
+#: src/html.c:242
 #, c-format
 msgid "%s: %s: Opening HTML prologue..."
 msgstr ""
 
-#: src/html.c:268 src/html.c:279 src/postscript.c:1353 src/postscript.c:1364
+#: src/html.c:269 src/html.c:280 src/postscript.c:1355 src/postscript.c:1366
 msgid "nobody"
 msgstr ""
 
-#: src/html.c:275 src/html.c:280 src/postscript.c:1360 src/postscript.c:1365
+#: src/html.c:276 src/html.c:281 src/postscript.c:1362 src/postscript.c:1367
 msgid "nowhere"
 msgstr ""
 
-#: src/html.c:339
+#: src/html.c:340
 #, c-format
 msgid "%s: HTML prologue read successfully."
 msgstr ""
 
-#: src/html.c:343
+#: src/html.c:344
 #, c-format
 msgid "%s: Error reading HTML prologue."
 msgstr ""
 
-#: src/html.c:371
+#: src/html.c:372
 #, c-format
 msgid "HTML output driver: %s: %s"
 msgstr ""
 
-#: src/html.c:402 src/list.q:259
+#: src/html.c:403 src/list.q:258
 #, c-format
 msgid "Cannot open first page on HTML device %s."
 msgstr ""
 
-#: src/include.c:51
-msgid "Unrecognized filename format."
+#: src/include.c:40
+msgid "expecting filename"
 msgstr ""
 
-#: src/inpt-pgm.c:86
+#: src/inpt-pgm.c:80
 msgid "No matching INPUT PROGRAM command."
 msgstr ""
 
-#: src/inpt-pgm.c:91
+#: src/inpt-pgm.c:85
 msgid ""
 "No data-input or transformation commands specified between INPUT PROGRAM and "
 "END INPUT PROGRAM."
 msgstr ""
 
-#: src/inpt-pgm.c:295 src/inpt-pgm.c:438
+#: src/inpt-pgm.c:286 src/inpt-pgm.c:419
 msgid ""
 "This command may only be executed between INPUT PROGRAM and END INPUT "
 "PROGRAM."
 msgstr ""
 
-#: src/inpt-pgm.c:351
+#: src/inpt-pgm.c:341
 msgid "COLUMN subcommand multiply specified."
 msgstr ""
 
-#: src/inpt-pgm.c:365
-msgid "expecting file handle name"
-msgstr ""
-
-#: src/inpt-pgm.c:410
+#: src/inpt-pgm.c:394
 msgid ""
 "REREAD: Column numbers must be positive finite numbers.  Column set to 1."
 msgstr ""
 
-#: src/lexer.c:219
+#: src/lexer.c:244
 #, c-format
 msgid "%s does not form a valid number."
 msgstr ""
 
-#: src/lexer.c:337
+#: src/lexer.c:362
 #, c-format
 msgid "Bad character in input: `%c'."
 msgstr ""
 
-#: src/lexer.c:339
+#: src/lexer.c:364
 #, c-format
 msgid "Bad character in input: `\\%o'."
 msgstr ""
 
-#: src/lexer.c:360
+#: src/lexer.c:385
 msgid "Syntax error at end of file."
 msgstr ""
 
-#: src/lexer.c:370
+#: src/lexer.c:395
 #, c-format
 msgid "Syntax error %s at `%s'."
 msgstr ""
 
-#: src/lexer.c:373
+#: src/lexer.c:398
 #, c-format
 msgid "Syntax error at `%s'."
 msgstr ""
 
-#: src/lexer.c:493
+#: src/lexer.c:518
 #, c-format
 msgid "expecting `%s'"
 msgstr ""
 
-#: src/lexer.c:510
+#: src/lexer.c:535
 #, c-format
 msgid "expecting %s"
 msgstr ""
 
-#: src/lexer.c:524 src/val-labs.c:155
+#: src/lexer.c:549 src/val-labs.c:151
 msgid "expecting string"
 msgstr ""
 
-#: src/lexer.c:538 src/val-labs.c:164
+#: src/lexer.c:563 src/val-labs.c:160
 msgid "expecting integer"
 msgstr ""
 
-#: src/lexer.c:552
+#: src/lexer.c:577
 msgid "expecting number"
 msgstr ""
 
-#: src/lexer.c:566
+#: src/lexer.c:591
 msgid "expecting identifier"
 msgstr ""
 
-#: src/lexer.c:702
-msgid "The rest of this command has been discarded."
-msgstr ""
-
-#: src/lexer.c:842 src/print.c:1154
-#, c-format
+#: src/lexer.c:860
 msgid "<ERROR>"
 msgstr ""
 
-#: src/lexer.c:968 src/pfm-read.c:132 src/repeat.c:225
+#: src/lexer.c:987 src/pfm-read.c:135 src/repeat.c:222
 msgid "Unexpected end of file."
 msgstr ""
 
-#: src/lexer.c:994
+#: src/lexer.c:1013
 msgid "binary"
 msgstr ""
 
-#: src/lexer.c:994
+#: src/lexer.c:1013
 msgid "octal"
 msgstr ""
 
-#: src/lexer.c:994
+#: src/lexer.c:1013
 msgid "hex"
 msgstr ""
 
-#: src/lexer.c:1008
+#: src/lexer.c:1027
 #, c-format
 msgid "String of %s digits has %d characters, which is not a multiple of %d."
 msgstr ""
 
-#: src/lexer.c:1037
+#: src/lexer.c:1056
 #, c-format
 msgid "`%c' is not a valid %s digit."
 msgstr ""
 
-#: src/lexer.c:1068
+#: src/lexer.c:1087
 msgid "Unterminated string constant."
 msgstr ""
 
-#: src/lexer.c:1140
+#: src/lexer.c:1159
 #, c-format
 msgid "String exceeds 255 characters in length (%d characters)."
 msgstr ""
 
-#: src/lexer.c:1155
+#: src/lexer.c:1174
 msgid ""
 "Sorry, literal strings may not contain null characters.  Replacing with "
 "spaces."
 msgstr ""
 
-#: src/loop.c:194
+#: src/loop.c:192
 msgid "The index variable may not be a string variable."
 msgstr ""
 
-#: src/loop.c:309
+#: src/loop.c:307
 msgid "There is no LOOP command that corresponds to this END LOOP."
 msgstr ""
 
-#: src/loop.c:512
+#: src/loop.c:508
 msgid ""
 "This command may only appear enclosed in a LOOP/END LOOP control structure."
 msgstr ""
 
-#: src/loop.c:518
+#: src/loop.c:514
 msgid "BREAK not enclosed in DO IF structure."
 msgstr ""
 
-#: src/loop.c:596
+#: src/loop.c:592
 #, c-format
 msgid "%s without %s."
 msgstr ""
 
-#: src/main.c:71
+#: src/main.c:64
+#, c-format
+msgid "gsl error at %s:%d; reason: \"%s\""
+msgstr ""
+
+#: src/main.c:81
 msgid "Error initializing output drivers."
 msgstr ""
 
-#: src/main.c:132
+#: src/main.c:147
 msgid "This command not executed."
 msgstr ""
 
-#: src/main.c:136
+#: src/main.c:151
 msgid ""
 "Skipping the rest of this command.  Part of this command may have been "
 "executed."
 msgstr ""
 
-#: src/main.c:141
+#: src/main.c:156
 msgid ""
 "Skipping the rest of this command.  This command was fully executed up to "
 "this point."
 msgstr ""
 
-#: src/main.c:146
+#: src/main.c:161
 msgid ""
 "Trailing garbage was encountered following this command.  The command was "
 "fully executed to this point."
 msgstr ""
 
-#: src/matrix-data.c:191
+#: src/main.c:178
+msgid "The rest of this command has been discarded."
+msgstr ""
+
+#: src/matrix-data.c:188
 msgid "VARIABLES subcommand multiply specified."
 msgstr ""
 
-#: src/matrix-data.c:206
+#: src/matrix-data.c:203
 msgid "VARNAME_ cannot be explicitly specified on VARIABLES."
 msgstr ""
 
-#: src/matrix-data.c:271
+#: src/matrix-data.c:268
 msgid "in FORMAT subcommand"
 msgstr ""
 
-#: src/matrix-data.c:282
+#: src/matrix-data.c:279
 msgid "SPLIT subcommand multiply specified."
 msgstr ""
 
-#: src/matrix-data.c:289
+#: src/matrix-data.c:286
 msgid "in SPLIT subcommand"
 msgstr ""
 
-#: src/matrix-data.c:298
+#: src/matrix-data.c:295
 msgid "Split variable may not be named ROWTYPE_ or VARNAME_."
 msgstr ""
 
-#: src/matrix-data.c:331
+#: src/matrix-data.c:328
 #, c-format
 msgid "Split variable %s is already another type."
 msgstr ""
 
-#: src/matrix-data.c:346
+#: src/matrix-data.c:343
 msgid "FACTORS subcommand multiply specified."
 msgstr ""
 
-#: src/matrix-data.c:361
+#: src/matrix-data.c:358
 #, c-format
 msgid "Factor variable %s is already another type."
 msgstr ""
 
-#: src/matrix-data.c:376
+#: src/matrix-data.c:373
 msgid "CELLS subcommand multiply specified."
 msgstr ""
 
-#: src/matrix-data.c:382 src/matrix-data.c:401
+#: src/matrix-data.c:379 src/matrix-data.c:398
 msgid "expecting positive integer"
 msgstr ""
 
-#: src/matrix-data.c:395
+#: src/matrix-data.c:392
 msgid "N subcommand multiply specified."
 msgstr ""
 
-#: src/matrix-data.c:416
+#: src/matrix-data.c:413
 msgid "CONTENTS subcommand multiply specified."
 msgstr ""
 
-#: src/matrix-data.c:436
+#: src/matrix-data.c:433
 msgid "Nested parentheses not allowed."
 msgstr ""
 
-#: src/matrix-data.c:446
+#: src/matrix-data.c:443
 msgid "Mismatched right parenthesis (`(')."
 msgstr ""
 
-#: src/matrix-data.c:451
+#: src/matrix-data.c:448
 msgid "Empty parentheses not allowed."
 msgstr ""
 
-#: src/matrix-data.c:464 src/matrix-data.c:472
+#: src/matrix-data.c:461 src/matrix-data.c:469
 msgid "in CONTENTS subcommand"
 msgstr ""
 
-#: src/matrix-data.c:479
+#: src/matrix-data.c:476
 #, c-format
 msgid "Content multiply specified for %s."
 msgstr ""
 
-#: src/matrix-data.c:496
+#: src/matrix-data.c:493
 msgid "Missing right parenthesis."
 msgstr ""
 
-#: src/matrix-data.c:516
+#: src/matrix-data.c:513
 msgid "Missing VARIABLES subcommand."
 msgstr ""
 
-#: src/matrix-data.c:522
+#: src/matrix-data.c:519
 msgid ""
 "CONTENTS subcommand not specified: assuming file contains only CORR matrix."
 msgstr ""
 
-#: src/matrix-data.c:532
+#: src/matrix-data.c:529
 msgid ""
 "Missing CELLS subcommand.  CELLS is required when ROWTYPE_ is not given in "
 "the data and factors are present."
 msgstr ""
 
-#: src/matrix-data.c:540
+#: src/matrix-data.c:537
 msgid "Split file values must be present in the data when ROWTYPE_ is present."
 msgstr ""
 
-#: src/matrix-data.c:595
+#: src/matrix-data.c:592
 msgid "No continuous variables specified."
 msgstr ""
 
@@ -2327,129 +2417,129 @@ msgstr ""
 msgid "End of line expected %s while reading %s."
 msgstr ""
 
-#: src/matrix-data.c:1174
+#: src/matrix-data.c:1176
 #, c-format
 msgid "expecting value for %s %s"
 msgstr ""
 
-#: src/matrix-data.c:1336
+#: src/matrix-data.c:1338
 #, c-format
 msgid "Syntax error expecting SPLIT FILE value %s."
 msgstr ""
 
-#: src/matrix-data.c:1345
+#: src/matrix-data.c:1347
 #, c-format
 msgid "Expecting value %g for %s."
 msgstr ""
 
-#: src/matrix-data.c:1386 src/matrix-data.c:1854
+#: src/matrix-data.c:1388 src/matrix-data.c:1856
 #, c-format
 msgid "Syntax error expecting factor value %s."
 msgstr ""
 
-#: src/matrix-data.c:1395
+#: src/matrix-data.c:1397
 #, c-format
 msgid "Syntax error expecting value %g for %s %s."
 msgstr ""
 
-#: src/matrix-data.c:1631
+#: src/matrix-data.c:1633
 #, c-format
 msgid "Syntax error %s expecting SPLIT FILE value."
 msgstr ""
 
-#: src/matrix-data.c:1761
+#: src/matrix-data.c:1763
 #, c-format
 msgid ""
 "Expected %d lines of data for %s content; actually saw %d lines.  No data "
 "will be output for this content."
 msgstr ""
 
-#: src/matrix-data.c:1796
+#: src/matrix-data.c:1798
 #, c-format
 msgid "Multiply specified ROWTYPE_ %s."
 msgstr ""
 
-#: src/matrix-data.c:1801
+#: src/matrix-data.c:1803
 #, c-format
 msgid "Syntax error %s expecting ROWTYPE_ string."
 msgstr ""
 
-#: src/matrix-data.c:1821
+#: src/matrix-data.c:1823
 #, c-format
 msgid "Syntax error %s."
 msgstr ""
 
-#: src/matrix-data.c:1971
+#: src/matrix-data.c:1973
 #, c-format
 msgid "Duplicate specification for %s."
 msgstr ""
 
-#: src/matrix-data.c:1983
+#: src/matrix-data.c:1985
 #, c-format
 msgid "Too many rows of matrix data for %s."
 msgstr ""
 
-#: src/matrix-data.c:2029
+#: src/matrix-data.c:2033
 #, c-format
 msgid "Syntax error expecting value for %s %s."
 msgstr ""
 
-#: src/mis-val.c:77
+#: src/mis-val.c:75
 msgid "`)' expected after value specification."
 msgstr ""
 
-#: src/mis-val.c:111
+#: src/mis-val.c:109
 #, c-format
 msgid "`(' expected after variable name%s."
 msgstr ""
 
-#: src/mis-val.c:123
+#: src/mis-val.c:121
 msgid "Long string value specified."
 msgstr ""
 
-#: src/mis-val.c:128
+#: src/mis-val.c:126
 msgid "Short strings must be of equal width."
 msgstr ""
 
-#: src/mis-val.c:185
+#: src/mis-val.c:183
 #, c-format
 msgid "Range %g THRU %g is not valid because %g is greater than %g."
 msgstr ""
 
-#: src/mis-val.c:216
+#: src/mis-val.c:214
 msgid "Number or range expected."
 msgstr ""
 
-#: src/mis-val.c:249
+#: src/mis-val.c:247
 msgid "At most one range can exist in the missing values for any one variable."
 msgstr ""
 
-#: src/mis-val.c:255
+#: src/mis-val.c:253
 msgid "At most one individual value can be missing along with one range."
 msgstr ""
 
-#: src/mis-val.c:317
+#: src/mis-val.c:315
 msgid "String is not of proper length."
 msgstr ""
 
-#: src/mis-val.c:326 src/repeat.c:476
+#: src/mis-val.c:324 src/repeat.c:473
 msgid "String expected."
 msgstr ""
 
-#: src/mis-val.c:366
+#: src/mis-val.c:364
 msgid "Missing value:"
 msgstr ""
 
-#: src/mis-val.c:371
+#: src/mis-val.c:369
 msgid "(long string variable)"
 msgstr ""
 
-#: src/mis-val.c:376
+#: src/mis-val.c:374
 #, c-format
 msgid "(no missing values)\n"
 msgstr ""
 
-#: src/mis-val.c:399
+#: src/mis-val.c:397
 #, c-format
 msgid "(!!!INTERNAL ERROR--%d!!!)\n"
 msgstr ""
@@ -2460,83 +2550,87 @@ msgid ""
 "be made permanent."
 msgstr ""
 
-#: src/modify-vars.c:115
+#: src/modify-vars.c:112
 msgid "REORDER subcommand may be given at most once."
 msgstr ""
 
-#: src/modify-vars.c:138
+#: src/modify-vars.c:135
 msgid "Cannot specify ALL after specifying a set of variables."
 msgstr ""
 
-#: src/modify-vars.c:148
+#: src/modify-vars.c:145
 msgid "`(' expected on REORDER subcommand."
 msgstr ""
 
-#: src/modify-vars.c:160
+#: src/modify-vars.c:157
 msgid "`)' expected following variable names on REORDER subcommand."
 msgstr ""
 
-#: src/modify-vars.c:178
+#: src/modify-vars.c:175
 msgid "RENAME subcommand may be given at most once."
 msgstr ""
 
-#: src/modify-vars.c:191
+#: src/modify-vars.c:188
 msgid "`(' expected on RENAME subcommand."
 msgstr ""
 
-#: src/modify-vars.c:199
+#: src/modify-vars.c:196
 msgid ""
 "`=' expected between lists of new and old variable names on RENAME "
 "subcommand."
 msgstr ""
 
-#: src/modify-vars.c:207 src/rename-vars.c:77
+#: src/modify-vars.c:204 src/rename-vars.c:74
 #, c-format
 msgid ""
 "Differing number of variables in old name list (%d) and in new name list (%"
 "d)."
 msgstr ""
 
-#: src/modify-vars.c:218
+#: src/modify-vars.c:215
 msgid "`)' expected after variable lists on RENAME subcommand."
 msgstr ""
 
-#: src/modify-vars.c:232
+#: src/modify-vars.c:229
 msgid ""
 "KEEP subcommand may be given at most once.  It may notbe given in "
 "conjunction with the DROP subcommand."
 msgstr ""
 
-#: src/modify-vars.c:274
+#: src/modify-vars.c:271
 msgid ""
 "DROP subcommand may be given at most once.  It may not be given in "
 "conjunction with the KEEP subcommand."
 msgstr ""
 
-#: src/modify-vars.c:300
+#: src/modify-vars.c:297
 #, c-format
 msgid "Unrecognized subcommand name `%s'."
 msgstr ""
 
-#: src/modify-vars.c:302
+#: src/modify-vars.c:299
 msgid "Subcommand name expected."
 msgstr ""
 
-#: src/modify-vars.c:310
+#: src/modify-vars.c:307
 msgid "`/' or `.' expected."
 msgstr ""
 
-#: src/numeric.c:58
+#: src/moments.c:350
+msgid "expecting weight value"
+msgstr ""
+
+#: src/numeric.c:57
 #, c-format
 msgid "Format type %s may not be used with a numeric variable."
 msgstr ""
 
-#: src/numeric.c:77 src/numeric.c:159 src/vector.c:157
+#: src/numeric.c:76 src/numeric.c:158 src/vector.c:155
 #, c-format
 msgid "There is already a variable named %s."
 msgstr ""
 
-#: src/numeric.c:130
+#: src/numeric.c:128
 #, c-format
 msgid "Format type %s may not be used with a string variable."
 msgstr ""
@@ -2564,12 +2658,12 @@ msgstr ""
 msgid "%s: Opening device description file..."
 msgstr ""
 
-#: src/output.c:304 src/output.c:1165 src/postscript.c:1097
+#: src/output.c:304 src/output.c:1165 src/postscript.c:1099
 #, c-format
 msgid "Opening %s: %s."
 msgstr ""
 
-#: src/output.c:315 src/output.c:1176 src/postscript.c:1112
+#: src/output.c:315 src/output.c:1176 src/postscript.c:1114
 #, c-format
 msgid "Reading %s: %s."
 msgstr ""
@@ -2578,7 +2672,7 @@ msgstr ""
 msgid "Syntax error."
 msgstr ""
 
-#: src/output.c:347 src/postscript.c:1123
+#: src/output.c:347 src/postscript.c:1125
 #, c-format
 msgid "Closing %s: %s."
 msgstr ""
@@ -2716,192 +2810,192 @@ msgstr ""
 msgid "Error opening page on %s device of %s class."
 msgstr ""
 
-#: src/pfm-read.c:89
+#: src/pfm-read.c:91
 #, c-format
 msgid "portable file %s corrupt at offset %ld: "
 msgstr ""
 
-#: src/pfm-read.c:108 src/pfm-write.c:502
+#: src/pfm-read.c:110 src/pfm-write.c:504
 #, c-format
 msgid "%s: Closing portable file: %s."
 msgstr ""
 
-#: src/pfm-read.c:140
+#: src/pfm-read.c:143
 msgid "Bad line end."
 msgstr ""
 
-#: src/pfm-read.c:221
+#: src/pfm-read.c:224
 #, c-format
 msgid "Cannot read file %s as portable file: already opened for %s."
 msgstr ""
 
-#: src/pfm-read.c:227
+#: src/pfm-read.c:230
 #, c-format
 msgid "%s: Opening portable-file handle %s for reading."
 msgstr ""
 
-#: src/pfm-read.c:235
+#: src/pfm-read.c:238
 #, c-format
 msgid ""
 "An error occurred while opening \"%s\" for reading as a portable file: %s."
 msgstr ""
 
-#: src/pfm-read.c:269
+#: src/pfm-read.c:273
 msgid "Data record expected."
 msgstr ""
 
-#: src/pfm-read.c:271
+#: src/pfm-read.c:275
 msgid "Read portable-file dictionary successfully."
 msgstr ""
 
-#: src/pfm-read.c:280
+#: src/pfm-read.c:284
 msgid "Error reading portable-file dictionary."
 msgstr ""
 
-#: src/pfm-read.c:378
+#: src/pfm-read.c:382
 msgid "Missing numeric terminator."
 msgstr ""
 
-#: src/pfm-read.c:415
+#: src/pfm-read.c:419
 msgid "Bad integer format."
 msgstr ""
 
-#: src/pfm-read.c:445
+#: src/pfm-read.c:449
 #, c-format
 msgid "Bad string length %d."
 msgstr ""
 
-#: src/pfm-read.c:544
+#: src/pfm-read.c:548
 #, c-format
 msgid "Bad date string length %d."
 msgstr ""
 
-#: src/pfm-read.c:548
+#: src/pfm-read.c:552
 msgid "Bad character in date."
 msgstr ""
 
-#: src/pfm-read.c:568
+#: src/pfm-read.c:572
 #, c-format
 msgid "Bad time string length %d."
 msgstr ""
 
-#: src/pfm-read.c:572
+#: src/pfm-read.c:576
 msgid "Bad character in time."
 msgstr ""
 
-#: src/pfm-read.c:622 src/pfm-read.c:629 src/sfm-read.c:900 src/sfm-read.c:908
+#: src/pfm-read.c:626 src/pfm-read.c:633 src/sfm-read.c:918 src/sfm-read.c:926
 #, c-format
 msgid "%s: Bad format specifier byte (%d)."
 msgstr ""
 
-#: src/pfm-read.c:631
+#: src/pfm-read.c:635
 #, c-format
 msgid "%s variable %s has %s format specifier %s."
 msgstr ""
 
-#: src/pfm-read.c:632 src/print.c:610 src/sfm-read.c:912
+#: src/pfm-read.c:636 src/print.c:600 src/sfm-read.c:931
 msgid "String"
 msgstr ""
 
-#: src/pfm-read.c:632 src/print.c:610 src/sfm-read.c:912
+#: src/pfm-read.c:636 src/print.c:600 src/sfm-read.c:931
 msgid "Numeric"
 msgstr ""
 
-#: src/pfm-read.c:671
+#: src/pfm-read.c:675
 msgid "Expected variable count record."
 msgstr ""
 
-#: src/pfm-read.c:675
+#: src/pfm-read.c:679
 #, c-format
 msgid "Invalid number of variables %d."
 msgstr ""
 
-#: src/pfm-read.c:685
+#: src/pfm-read.c:689
 #, c-format
 msgid "Unexpected flag value %d."
 msgstr ""
 
-#: src/pfm-read.c:699
+#: src/pfm-read.c:703
 #, c-format
 msgid "Weight variable name (%s) truncated."
 msgstr ""
 
-#: src/pfm-read.c:714
+#: src/pfm-read.c:718
 msgid "Expected variable record."
 msgstr ""
 
-#: src/pfm-read.c:720
+#: src/pfm-read.c:724
 #, c-format
 msgid "Invalid variable width %d."
 msgstr ""
 
-#: src/pfm-read.c:738
+#: src/pfm-read.c:742
 #, c-format
 msgid "position %d: Variable name has %u characters."
 msgstr ""
 
-#: src/pfm-read.c:742
+#: src/pfm-read.c:746
 #, c-format
 msgid "position %d: Variable name begins with invalid character."
 msgstr ""
 
-#: src/pfm-read.c:746
+#: src/pfm-read.c:750
 #, c-format
 msgid "position %d: Variable name begins with lowercase letter %c."
 msgstr ""
 
-#: src/pfm-read.c:759
+#: src/pfm-read.c:763
 #, c-format
 msgid "position %d: Variable name character %d is lowercase letter %c."
 msgstr ""
 
-#: src/pfm-read.c:769
+#: src/pfm-read.c:773
 #, c-format
 msgid "position %d: character `\\%03o' is not valid in a variable name."
 msgstr ""
 
-#: src/pfm-read.c:780
+#: src/pfm-read.c:784
 #, c-format
 msgid "Duplicate variable name %s."
 msgstr ""
 
-#: src/pfm-read.c:824
+#: src/pfm-read.c:828
 #, c-format
 msgid "Bad missing values for %s."
 msgstr ""
 
-#: src/pfm-read.c:847
+#: src/pfm-read.c:851
 #, c-format
 msgid "Weighting variable %s not present in dictionary."
 msgstr ""
 
-#: src/pfm-read.c:920
+#: src/pfm-read.c:924
 #, c-format
 msgid "Unknown variable %s while parsing value labels."
 msgstr ""
 
-#: src/pfm-read.c:923
+#: src/pfm-read.c:927
 #, c-format
 msgid ""
 "Cannot assign value labels to %s and %s, which have different variable types "
 "or widths."
 msgstr ""
 
-#: src/pfm-read.c:956
+#: src/pfm-read.c:960
 #, c-format
 msgid "Duplicate label for value %g for variable %s."
 msgstr ""
 
-#: src/pfm-read.c:959
+#: src/pfm-read.c:963
 #, c-format
 msgid "Duplicate label for value `%.*s' for variable %s."
 msgstr ""
 
-#: src/pfm-read.c:1029
+#: src/pfm-read.c:1033
 msgid "End of file midway through case."
 msgstr ""
 
-#: src/pfm-read.c:1039
+#: src/pfm-read.c:1043
 msgid "reading as a portable file"
 msgstr ""
 
@@ -2921,20 +3015,20 @@ msgid ""
 "An error occurred while opening \"%s\" for writing as a portable file: %s."
 msgstr ""
 
-#: src/pfm-write.c:123
+#: src/pfm-write.c:124
 msgid "Wrote portable-file header successfully."
 msgstr ""
 
-#: src/pfm-write.c:128
+#: src/pfm-write.c:129
 msgid "Error writing portable-file header."
 msgstr ""
 
-#: src/pfm-write.c:169
+#: src/pfm-write.c:170
 #, c-format
 msgid "%s: Writing portable file: %s."
 msgstr ""
 
-#: src/pfm-write.c:511
+#: src/pfm-write.c:514
 msgid "writing as a portable file"
 msgstr ""
 
@@ -2976,177 +3070,173 @@ msgstr ""
 msgid "Unknown value for `line-style'.  Valid values are `thick' and `double'."
 msgstr ""
 
-#: src/postscript.c:685
+#: src/postscript.c:686
 #, c-format
 msgid ""
 "Default font size must be at least 1 point (value of 1000 for key `%s')."
 msgstr ""
 
-#: src/postscript.c:717
+#: src/postscript.c:718
 #, c-format
 msgid "Value for `%s' must be a dimension of positive length (i.e., `1in')."
 msgstr ""
 
-#: src/postscript.c:780
+#: src/postscript.c:782
 #, c-format
 msgid "Nonnegative integer required as value for `%s'."
 msgstr ""
 
-#: src/postscript.c:906
+#: src/postscript.c:908
 #, c-format
 msgid "%s: %s: Opening PostScript font encoding..."
 msgstr ""
 
-#: src/postscript.c:912
+#: src/postscript.c:914
 #, c-format
 msgid ""
 "PostScript driver: Cannot open encoding file `%s': %s.  Substituting "
 "ISOLatin1Encoding for missing encoding."
 msgstr ""
 
-#: src/postscript.c:954
+#: src/postscript.c:956
 msgid "PostScript driver: Invalid numeric format."
 msgstr ""
 
-#: src/postscript.c:959
+#: src/postscript.c:961
 #, c-format
 msgid ""
 "PostScript driver: Codes must be between 0 and 255.  (%d is not allowed.)"
 msgstr ""
 
-#: src/postscript.c:995
+#: src/postscript.c:997
 #, c-format
 msgid "PostScript driver: Error closing encoding file `%s'."
 msgstr ""
 
-#: src/postscript.c:998
+#: src/postscript.c:1000
 #, c-format
 msgid "%s: PostScript font encoding read successfully."
 msgstr ""
 
-#: src/postscript.c:1092
+#: src/postscript.c:1094
 #, c-format
 msgid "%s: %s: Opening PostScript encoding list file."
 msgstr ""
 
-#: src/postscript.c:1125
+#: src/postscript.c:1127
 #, c-format
 msgid "%s: PostScript encoding list file read successfully."
 msgstr ""
 
-#: src/postscript.c:1139
+#: src/postscript.c:1141
 msgid "<<default encoding>>"
 msgstr ""
 
-#: src/postscript.c:1297
+#: src/postscript.c:1299
 msgid ""
 "Cannot find PostScript prologue.  The use of `-vv' on the command line is "
 "suggested as a debugging aid."
 msgstr ""
 
-#: src/postscript.c:1302
+#: src/postscript.c:1304
 #, c-format
 msgid "%s: %s: Opening PostScript prologue..."
 msgstr ""
 
-#: src/postscript.c:1474
+#: src/postscript.c:1476
 #, c-format
 msgid "%s: PostScript prologue read successfully."
 msgstr ""
 
-#: src/postscript.c:1478
+#: src/postscript.c:1480
 #, c-format
 msgid "%s: Error reading PostScript prologue."
 msgstr ""
 
-#: src/postscript.c:1648
+#: src/postscript.c:1650
 #, c-format
 msgid "PostScript output driver: %s: %s"
 msgstr ""
 
-#: src/postscript.c:2332
+#: src/postscript.c:2334
 #, c-format
 msgid "PostScript driver: Cannot find encoding `%s' for PostScript font `%s'."
 msgstr ""
 
-#: src/print.c:188
+#: src/print.c:179
 msgid "expecting a valid subcommand"
 msgstr ""
 
-#: src/print.c:368 src/print.c:385
+#: src/print.c:358 src/print.c:375
 #, c-format
 msgid "%g is not a valid column location."
 msgstr ""
 
-#: src/print.c:379
+#: src/print.c:369
 #, c-format
 msgid "Column location expected following `%d-'."
 msgstr ""
 
-#: src/print.c:390
+#: src/print.c:380
 #, c-format
 msgid ""
 "%d-%ld is not a valid column range.  The second column must be greater than "
 "or equal to the first."
 msgstr ""
 
-#: src/print.c:496
+#: src/print.c:486
 #, c-format
 msgid ""
 "%s is not of the same type as %s.  To specify variables of different types "
 "in the same variable list, use a FORTRAN-like format specifier."
 msgstr ""
 
-#: src/print.c:526
+#: src/print.c:516
 msgid ""
 "The ending column for a field must not be less than the starting column."
 msgstr ""
 
-#: src/print.c:609
+#: src/print.c:599
 #, c-format
 msgid "%s variables cannot be displayed with format %s."
 msgstr ""
 
-#: src/print.c:687
+#: src/print.c:677
 msgid ""
 "The number of format specifications exceeds the number of variable names "
 "given."
 msgstr ""
 
-#: src/print.c:696
+#: src/print.c:686
 #, c-format
 msgid "Display format %s may not be used with a %s variable."
 msgstr ""
 
-#: src/print.c:846
+#: src/print.c:834
 #, c-format
-msgid "Writing %3d records to file %s."
+msgid "Writing %d record(s) to file %s."
 msgstr ""
 
-#: src/print.c:847
+#: src/print.c:837
 #, c-format
-msgid "Writing %3d records to the listing file."
-msgstr ""
-
-#: src/print.c:1042
-msgid "A file name or handle was expected in the OUTFILE subcommand."
+msgid "Writing %d record(s) to the listing file."
 msgstr ""
 
-#: src/print.c:1095
+#: src/print.c:1079
 #, c-format
 msgid ""
 "The expression on PRINT SPACE evaluated to %d.  It's not possible to PRINT "
 "SPACE a negative number of lines."
 msgstr ""
 
-#: src/recode.c:283
+#: src/recode.c:281
 #, c-format
 msgid ""
 "%d variable(s) cannot be recoded into %d variable(s).  Specify the same "
 "number of variables as input and output variables."
 msgstr ""
 
-#: src/recode.c:297
+#: src/recode.c:295
 #, c-format
 msgid ""
 "There is no string variable named %s.  (All string variables specified on "
@@ -3154,49 +3244,49 @@ msgid ""
 "variable.)"
 msgstr ""
 
-#: src/recode.c:306
+#: src/recode.c:304
 #, c-format
 msgid ""
 "Type mismatch between input and output variables.  Output variable %s is not "
 "a string variable, but all the input variables are string variables."
 msgstr ""
 
-#: src/recode.c:325
+#: src/recode.c:323
 #, c-format
 msgid "Type mismatch after INTO: %s is not a numeric variable."
 msgstr ""
 
-#: src/recode.c:355
+#: src/recode.c:353
 msgid ""
 "INTO must be used when the input values are numeric and output values are "
 "string."
 msgstr ""
 
-#: src/recode.c:363
+#: src/recode.c:361
 msgid ""
 "INTO must be used when the input values are string and output values are "
 "numeric."
 msgstr ""
 
-#: src/recode.c:486
+#: src/recode.c:484
 msgid "expecting output value"
 msgstr ""
 
-#: src/recode.c:500
+#: src/recode.c:498
 msgid ""
 "Inconsistent output types.  The output values must be all numeric or all "
 "string."
 msgstr ""
 
-#: src/recode.c:551
+#: src/recode.c:549
 msgid "following LO THRU"
 msgstr ""
 
-#: src/recode.c:567 src/recode.c:596
+#: src/recode.c:565 src/recode.c:594
 msgid "in source value"
 msgstr ""
 
-#: src/recode.c:609
+#: src/recode.c:607
 msgid ""
 "Keyword CONVERT may only be used with string input values and numeric output "
 "values."
@@ -3208,29 +3298,29 @@ msgid ""
 "be made permanent."
 msgstr ""
 
-#: src/rename-vars.c:62
+#: src/rename-vars.c:59
 msgid "`(' expected."
 msgstr ""
 
-#: src/rename-vars.c:70
+#: src/rename-vars.c:67
 msgid "`=' expected between lists of new and old variable names."
 msgstr ""
 
-#: src/rename-vars.c:88
+#: src/rename-vars.c:85
 msgid "`)' expected after variable names."
 msgstr ""
 
-#: src/rename-vars.c:98
+#: src/rename-vars.c:95
 #, c-format
 msgid "Renaming would duplicate variable name %s."
 msgstr ""
 
-#: src/repeat.c:158
+#: src/repeat.c:155
 #, c-format
 msgid "Identifier %s is given twice."
 msgstr ""
 
-#: src/repeat.c:201
+#: src/repeat.c:198
 #, c-format
 msgid ""
 "There must be the same number of substitutions for each dummy variable "
@@ -3238,32 +3328,32 @@ msgid ""
 "s as well, but %d were specified."
 msgstr ""
 
-#: src/repeat.c:310
+#: src/repeat.c:307
 msgid "No commands in scope."
 msgstr ""
 
-#: src/repeat.c:503
+#: src/repeat.c:500
 msgid "No matching DO REPEAT."
 msgstr ""
 
-#: src/sample.c:71
+#: src/sample.c:69
 msgid "The sampling factor must be between 0 and 1 exclusive."
 msgstr ""
 
-#: src/sample.c:91
+#: src/sample.c:89
 #, c-format
 msgid "Cannot sample %d observations from a population of %d."
 msgstr ""
 
-#: src/sel-if.c:104
+#: src/sel-if.c:99
 msgid "The filter variable must be numeric."
 msgstr ""
 
-#: src/sel-if.c:110
+#: src/sel-if.c:105
 msgid "The filter variable may not be scratch."
 msgstr ""
 
-#: src/sel-if.c:144
+#: src/sel-if.c:136
 msgid "Only last instance of this command is in effect."
 msgstr ""
 
@@ -3271,78 +3361,78 @@ msgstr ""
 msgid "corrupt system file: "
 msgstr ""
 
-#: src/sfm-read.c:166 src/sfm-write.c:739
+#: src/sfm-read.c:166 src/sfm-write.c:743
 #, c-format
 msgid "%s: Closing system file: %s."
 msgstr ""
 
-#: src/sfm-read.c:239
+#: src/sfm-read.c:240
 #, c-format
 msgid "Cannot read file %s as system file: already opened for %s."
 msgstr ""
 
-#: src/sfm-read.c:244
+#: src/sfm-read.c:245
 #, c-format
 msgid "%s: Opening system-file handle %s for reading."
 msgstr ""
 
-#: src/sfm-read.c:252
+#: src/sfm-read.c:253
 #, c-format
 msgid ""
 "An error occurred while opening \"%s\" for reading as a system file: %s."
 msgstr ""
 
-#: src/sfm-read.c:286
+#: src/sfm-read.c:288
 #, c-format
 msgid ""
 "%s: Weighting variable may not be a continuation of a long string variable."
 msgstr ""
 
-#: src/sfm-read.c:289
+#: src/sfm-read.c:291
 #, c-format
 msgid "%s: Weighting variable may not be a string variable."
 msgstr ""
 
-#: src/sfm-read.c:314
+#: src/sfm-read.c:316
 #, c-format
 msgid ""
 "%s: Orphaned variable index record (type 4).  Type 4 records must always "
 "immediately follow type 3 records."
 msgstr ""
 
-#: src/sfm-read.c:369
+#: src/sfm-read.c:365
 #, c-format
 msgid "%s: Unrecognized record type 7, subtype %d encountered in system file."
 msgstr ""
 
-#: src/sfm-read.c:393
+#: src/sfm-read.c:390
 #, c-format
 msgid "%s: Unrecognized record type %d."
 msgstr ""
 
-#: src/sfm-read.c:399
+#: src/sfm-read.c:397
 msgid "Read system-file dictionary successfully."
 msgstr ""
 
-#: src/sfm-read.c:409
+#: src/sfm-read.c:407
 msgid "Error reading system-file header."
 msgstr ""
 
-#: src/sfm-read.c:433
+#: src/sfm-read.c:431
 #, c-format
 msgid ""
 "%s: Bad size (%d) or count (%d) field on record type 7, subtype 3.\tExpected "
 "size %d, count 8."
 msgstr ""
 
-#: src/sfm-read.c:445
+#: src/sfm-read.c:443
 #, c-format
 msgid ""
 "%s: Floating-point representation in system file is not IEEE-754.  PSPP "
 "cannot convert between floating-point formats."
 msgstr ""
 
-#: src/sfm-read.c:460
+#: src/sfm-read.c:459
 #, c-format
 msgid ""
 "%s: File-indicated endianness (%s) does not match endianness intuited from "
@@ -3366,18 +3456,18 @@ msgstr ""
 msgid "%s: File-indicated character representation code (%s) is not ASCII."
 msgstr ""
 
-#: src/sfm-read.c:470
+#: src/sfm-read.c:472
 msgid "DEC Kanji"
 msgstr ""
 
-#: src/sfm-read.c:489
+#: src/sfm-read.c:491
 #, c-format
 msgid ""
 "%s: Bad size (%d) or count (%d) field on record type 7, subtype 4.\tExpected "
 "size %d, count 8."
 msgstr ""
 
-#: src/sfm-read.c:504
+#: src/sfm-read.c:506
 #, c-format
 msgid ""
 "%s: File-indicated value is different from internal value for at least one "
@@ -3385,287 +3475,287 @@ msgid ""
 "%g; LOWEST: %g, %g."
 msgstr ""
 
-#: src/sfm-read.c:535
+#: src/sfm-read.c:537
 #, c-format
 msgid ""
 "%s: Bad magic.  Proper system files begin with the four characters `$FL2'. "
 "This file will not be read."
 msgstr ""
 
-#: src/sfm-read.c:578
+#: src/sfm-read.c:580
 #, c-format
 msgid ""
 "%s: File layout code has unexpected value %d.  Value should be 2, in big-"
 "endian or little-endian format."
 msgstr ""
 
-#: src/sfm-read.c:594
+#: src/sfm-read.c:596
 #, c-format
 msgid "%s: Number of elements per case (%d) is not between 1 and %d."
 msgstr ""
 
-#: src/sfm-read.c:601
+#: src/sfm-read.c:605
 #, c-format
 msgid ""
 "%s: Index of weighting variable (%d) is not between 0 and number of elements "
 "per case (%d)."
 msgstr ""
 
-#: src/sfm-read.c:607
+#: src/sfm-read.c:611
 #, c-format
 msgid "%s: Number of cases in file (%ld) is not between -1 and %d."
 msgstr ""
 
-#: src/sfm-read.c:612
+#: src/sfm-read.c:616
 #, c-format
 msgid "%s: Compression bias (%g) is not the usual value of 100."
 msgstr ""
 
-#: src/sfm-read.c:705
+#: src/sfm-read.c:710
 #, c-format
 msgid "%s: position %d: Bad record type (%d); the expected value was 2."
 msgstr ""
 
-#: src/sfm-read.c:714
+#: src/sfm-read.c:720
 #, c-format
 msgid ""
 "%s: position %d: String variable does not have proper number of continuation "
 "records."
 msgstr ""
 
-#: src/sfm-read.c:722
+#: src/sfm-read.c:729
 #, c-format
 msgid "%s: position %d: Superfluous long string continuation record."
 msgstr ""
 
-#: src/sfm-read.c:727
+#: src/sfm-read.c:735
 #, c-format
 msgid "%s: position %d: Bad variable type code %d."
 msgstr ""
 
-#: src/sfm-read.c:730
+#: src/sfm-read.c:738
 #, c-format
 msgid "%s: position %d: Variable label indicator field is not 0 or 1."
 msgstr ""
 
-#: src/sfm-read.c:734
+#: src/sfm-read.c:742
 #, c-format
 msgid ""
 "%s: position %d: Missing value indicator field is not -3, -2, 0, 1, 2, or 3."
 msgstr ""
 
-#: src/sfm-read.c:740
+#: src/sfm-read.c:748
 #, c-format
 msgid "%s: position %d: Variable name begins with invalid character."
 msgstr ""
 
-#: src/sfm-read.c:743
+#: src/sfm-read.c:752
 #, c-format
 msgid "%s: position %d: Variable name begins with lowercase letter %c."
 msgstr ""
 
-#: src/sfm-read.c:746
+#: src/sfm-read.c:756
 #, c-format
 msgid ""
 "%s: position %d: Variable name begins with octothorpe (`#').  Scratch "
 "variables should not appear in system files."
 msgstr ""
 
-#: src/sfm-read.c:760
+#: src/sfm-read.c:771
 #, c-format
 msgid "%s: position %d: Variable name character %d is lowercase letter %c."
 msgstr ""
 
-#: src/sfm-read.c:768
+#: src/sfm-read.c:780
 #, c-format
 msgid ""
 "%s: position %d: character `\\%03o' (%c) is not valid in a variable name."
 msgstr ""
 
-#: src/sfm-read.c:776
+#: src/sfm-read.c:789
 #, c-format
 msgid "%s: Duplicate variable name `%s' within system file."
 msgstr ""
 
-#: src/sfm-read.c:801
+#: src/sfm-read.c:814
 #, c-format
 msgid "%s: Variable %s indicates variable label of invalid length %d."
 msgstr ""
 
-#: src/sfm-read.c:817
+#: src/sfm-read.c:831
 #, c-format
 msgid "%s: Long string variable %s may not have missing values."
 msgstr ""
 
-#: src/sfm-read.c:841
+#: src/sfm-read.c:856
 #, c-format
 msgid ""
 "%s: String variable %s may not have missing values specified as a range."
 msgstr ""
 
-#: src/sfm-read.c:878
+#: src/sfm-read.c:894
 #, c-format
 msgid "%s: Long string continuation records omitted at end of dictionary."
 msgstr ""
 
-#: src/sfm-read.c:881
+#: src/sfm-read.c:898
 #, c-format
 msgid ""
 "%s: System file header indicates %d variable positions but %d were read from "
 "file."
 msgstr ""
 
-#: src/sfm-read.c:911
+#: src/sfm-read.c:929
 #, c-format
 msgid "%s: %s variable %s has %s format specifier %s."
 msgstr ""
 
-#: src/sfm-read.c:990
+#: src/sfm-read.c:1009
 #, c-format
 msgid ""
 "%s: Variable index record (type 4) does not immediately follow value label "
 "record (type 3) as it should."
 msgstr ""
 
-#: src/sfm-read.c:1000
+#: src/sfm-read.c:1020
 #, c-format
 msgid ""
 "%s: Number of variables associated with a value label (%d) is not between 1 "
 "and the number of variables (%d)."
 msgstr ""
 
-#: src/sfm-read.c:1016
+#: src/sfm-read.c:1036
 #, c-format
 msgid ""
 "%s: Variable index associated with value label (%d) is not between 1 and the "
 "number of values (%d)."
 msgstr ""
 
-#: src/sfm-read.c:1023
+#: src/sfm-read.c:1043
 #, c-format
 msgid ""
 "%s: Variable index associated with value label (%d) refers to a continuation "
 "of a string variable, not to an actual variable."
 msgstr ""
 
-#: src/sfm-read.c:1027
+#: src/sfm-read.c:1048
 #, c-format
 msgid "%s: Value labels are not allowed on long string variables (%s)."
 msgstr ""
 
-#: src/sfm-read.c:1037
+#: src/sfm-read.c:1059
 #, c-format
 msgid ""
 "%s: Variables associated with value label are not all of identical type.  "
 "Variable %s has %s type, but variable %s has %s type."
 msgstr ""
 
-#: src/sfm-read.c:1077
+#: src/sfm-read.c:1100
 #, c-format
 msgid "%s: File contains duplicate label for value %g for variable %s."
 msgstr ""
 
-#: src/sfm-read.c:1080
+#: src/sfm-read.c:1104
 #, c-format
 msgid "%s: File contains duplicate label for value `%.*s' for variable %s."
 msgstr ""
 
-#: src/sfm-read.c:1117 src/sfm-read.c:1392
+#: src/sfm-read.c:1141 src/sfm-read.c:1424
 #, c-format
 msgid "%s: Reading system file: %s."
 msgstr ""
 
-#: src/sfm-read.c:1119 src/sfm-read.c:1301 src/sfm-read.c:1342
+#: src/sfm-read.c:1144 src/sfm-read.c:1331 src/sfm-read.c:1373
 #, c-format
 msgid "%s: Unexpected end of file."
 msgstr ""
 
-#: src/sfm-read.c:1137
+#: src/sfm-read.c:1163
 #, c-format
 msgid "%s: System file contains multiple type 6 (document) records."
 msgstr ""
 
-#: src/sfm-read.c:1142
+#: src/sfm-read.c:1169
 #, c-format
 msgid "%s: Number of document lines (%ld) must be greater than 0."
 msgstr ""
 
-#: src/sfm-read.c:1166
+#: src/sfm-read.c:1194
 msgid "dictionary:\n"
 msgstr ""
 
-#: src/sfm-read.c:1174
+#: src/sfm-read.c:1202
 msgid "num"
 msgstr ""
 
-#: src/sfm-read.c:1175
+#: src/sfm-read.c:1203
 msgid "str"
 msgstr ""
 
-#: src/sfm-read.c:1178
+#: src/sfm-read.c:1206
 msgid "left"
 msgstr ""
 
-#: src/sfm-read.c:1178
+#: src/sfm-read.c:1206
 msgid "right"
 msgstr ""
 
-#: src/sfm-read.c:1184
+#: src/sfm-read.c:1212
 msgid "none"
 msgstr ""
 
-#: src/sfm-read.c:1188
+#: src/sfm-read.c:1216
 msgid "one"
 msgstr ""
 
-#: src/sfm-read.c:1192
+#: src/sfm-read.c:1220
 msgid "two"
 msgstr ""
 
-#: src/sfm-read.c:1196
+#: src/sfm-read.c:1224
 msgid "three"
 msgstr ""
 
-#: src/sfm-read.c:1200 src/descript.q:166
+#: src/sfm-read.c:1228
 msgid "range"
 msgstr ""
 
-#: src/sfm-read.c:1204
+#: src/sfm-read.c:1232
 msgid "low"
 msgstr ""
 
-#: src/sfm-read.c:1208
+#: src/sfm-read.c:1236
 msgid "high"
 msgstr ""
 
-#: src/sfm-read.c:1212
+#: src/sfm-read.c:1240
 msgid "range+1"
 msgstr ""
 
-#: src/sfm-read.c:1216
+#: src/sfm-read.c:1244
 msgid "low+1"
 msgstr ""
 
-#: src/sfm-read.c:1220
+#: src/sfm-read.c:1248
 msgid "high+1"
 msgstr ""
 
-#: src/sfm-read.c:1254
+#: src/sfm-read.c:1282
 #, c-format
 msgid "%s: Error reading file: %s."
 msgstr ""
 
-#: src/sfm-read.c:1292
+#: src/sfm-read.c:1321
 #, c-format
-msgid "%s: Compressed data is corrupted.  Data ends partway through a case."
+msgid "%s: Compressed data is corrupted.  Data ends in partial case."
 msgstr ""
 
-#: src/sfm-read.c:1394
+#: src/sfm-read.c:1427
 #, c-format
 msgid "%s: Partial record at end of system file."
 msgstr ""
 
-#: src/sfm-read.c:1432
+#: src/sfm-read.c:1466
 msgid "reading as a system file"
 msgstr ""
 
@@ -3674,259 +3764,259 @@ msgstr ""
 msgid "Cannot write file %s as system file: already opened for %s."
 msgstr ""
 
-#: src/sfm-write.c:100
+#: src/sfm-write.c:101
 #, c-format
 msgid "%s: Opening system-file handle %s for writing."
 msgstr ""
 
-#: src/sfm-write.c:110
+#: src/sfm-write.c:111
 #, c-format
 msgid ""
 "An error occurred while opening \"%s\" for writing as a system file: %s."
 msgstr ""
 
-#: src/sfm-write.c:163
+#: src/sfm-write.c:165
 msgid "Wrote system-file header successfully."
 msgstr ""
 
-#: src/sfm-write.c:168
+#: src/sfm-write.c:170
 msgid "Error writing system-file header."
 msgstr ""
 
-#: src/sfm-write.c:603
+#: src/sfm-write.c:606
 #, c-format
 msgid "%s: Writing system file: %s."
 msgstr ""
 
-#: src/sfm-write.c:749
+#: src/sfm-write.c:754
 msgid "writing as a system file"
 msgstr ""
 
-#: src/sort.c:82
+#: src/sort.c:83
 msgid ""
 "SORT CASES may not be used after TEMPORARY.  Temporary transformations will "
 "be made permanent."
 msgstr ""
 
-#: src/sort.c:127
+#: src/sort.c:128
 msgid "`A' or `D' expected inside parentheses."
 msgstr ""
 
-#: src/sort.c:132
+#: src/sort.c:133
 msgid "`)' expected."
 msgstr ""
 
-#: src/sort.c:421
+#: src/sort.c:439
 #, c-format
 msgid "%s: Creating temporary directory: %s."
 msgstr ""
 
-#: src/sort.c:452
+#: src/sort.c:470
 #, c-format
 msgid "Generating temporary directory name failed: %s."
 msgstr ""
 
-#: src/sort.c:460
+#: src/sort.c:478
 #, c-format
 msgid "Creating temporary directory failed: %s."
 msgstr ""
 
-#: src/sort.c:512
+#: src/sort.c:530
 #, c-format
 msgid "%s: Error removing directory for temporary files: %s."
 msgstr ""
 
-#: src/sort.c:541
+#: src/sort.c:559
 #, c-format
 msgid "%s: Error opening temporary file for %s: %s."
 msgstr ""
 
-#: src/sort.c:558
+#: src/sort.c:576
 #, c-format
 msgid "%s: Error closing temporary file: %s."
 msgstr ""
 
-#: src/sort.c:574
+#: src/sort.c:592
 #, c-format
 msgid "%s: Error removing temporary file: %s."
 msgstr ""
 
-#: src/sort.c:590
+#: src/sort.c:608
 #, c-format
 msgid "%s: Error writing temporary file: %s."
 msgstr ""
 
-#: src/sort.c:608
+#: src/sort.c:626
 #, c-format
 msgid "%s: Error reading temporary file: %s."
 msgstr ""
 
-#: src/sort.c:611
+#: src/sort.c:629
 #, c-format
 msgid "%s: Unexpected end of temporary file."
 msgstr ""
 
-#: src/sort.c:806 src/sort.c:1037
+#: src/sort.c:824 src/sort.c:1055
 #, c-format
 msgid ""
 "Out of memory.  Could not allocate room for minimum of %d cases of %d bytes "
 "each.  (PSPP workspace is currently restricted to a maximum of %d KB.)"
 msgstr ""
 
-#: src/sysfile-info.c:97
+#: src/sysfile-info.c:94
 msgid "File:"
 msgstr ""
 
-#: src/sysfile-info.c:99
+#: src/sysfile-info.c:96
 msgid "Label:"
 msgstr ""
 
-#: src/sysfile-info.c:103
+#: src/sysfile-info.c:100
 msgid "No label."
 msgstr ""
 
-#: src/sysfile-info.c:106
+#: src/sysfile-info.c:103
 msgid "Created:"
 msgstr ""
 
-#: src/sysfile-info.c:109
+#: src/sysfile-info.c:106
 msgid "Endian:"
 msgstr ""
 
-#: src/sysfile-info.c:110
+#: src/sysfile-info.c:107
 msgid "Big."
 msgstr ""
 
-#: src/sysfile-info.c:110
+#: src/sysfile-info.c:107
 msgid "Little."
 msgstr ""
 
-#: src/sysfile-info.c:111
+#: src/sysfile-info.c:108
 msgid "Variables:"
 msgstr ""
 
-#: src/sysfile-info.c:114
+#: src/sysfile-info.c:111
 msgid "Cases:"
 msgstr ""
 
-#: src/sysfile-info.c:117
+#: src/sysfile-info.c:114
 msgid "Type:"
 msgstr ""
 
-#: src/sysfile-info.c:118
+#: src/sysfile-info.c:115
 msgid "System File."
 msgstr ""
 
-#: src/sysfile-info.c:119
+#: src/sysfile-info.c:116
 msgid "Weight:"
 msgstr ""
 
-#: src/sysfile-info.c:123
+#: src/sysfile-info.c:120
 msgid "Not weighted."
 msgstr ""
 
-#: src/sysfile-info.c:125
+#: src/sysfile-info.c:122
 msgid "Mode:"
 msgstr ""
 
-#: src/sysfile-info.c:127
+#: src/sysfile-info.c:124
 #, c-format
 msgid "Compression %s."
 msgstr ""
 
-#: src/sysfile-info.c:127
+#: src/sysfile-info.c:124
 msgid "on"
 msgstr ""
 
-#: src/sysfile-info.c:127
+#: src/sysfile-info.c:124
 msgid "off"
 msgstr ""
 
-#: src/sysfile-info.c:136 src/sysfile-info.c:375
+#: src/sysfile-info.c:133 src/sysfile-info.c:370
 msgid "Description"
 msgstr ""
 
-#: src/sysfile-info.c:137 src/sysfile-info.c:373
+#: src/sysfile-info.c:134 src/sysfile-info.c:368
 msgid "Position"
 msgstr ""
 
-#: src/sysfile-info.c:196
+#: src/sysfile-info.c:191
 msgid "The active file does not have a file label."
 msgstr ""
 
-#: src/sysfile-info.c:199
+#: src/sysfile-info.c:194
 msgid "File label:"
 msgstr ""
 
-#: src/sysfile-info.c:261
+#: src/sysfile-info.c:256
 msgid "No variables to display."
 msgstr ""
 
-#: src/sysfile-info.c:280
+#: src/sysfile-info.c:275
 msgid "Macros not supported."
 msgstr ""
 
-#: src/sysfile-info.c:290
+#: src/sysfile-info.c:285
 msgid "The active file dictionary does not contain any documents."
 msgstr ""
 
-#: src/sysfile-info.c:299
+#: src/sysfile-info.c:294
 msgid "Documents in the active file:"
 msgstr ""
 
-#: src/sysfile-info.c:377 src/sysfile-info.c:535 src/vfm.c:1013
+#: src/sysfile-info.c:372 src/sysfile-info.c:530 src/vfm.c:835
 msgid "Label"
 msgstr ""
 
-#: src/sysfile-info.c:449
+#: src/sysfile-info.c:444
 #, c-format
 msgid "Format: %s"
 msgstr ""
 
-#: src/sysfile-info.c:456
+#: src/sysfile-info.c:451
 #, c-format
 msgid "Print Format: %s"
 msgstr ""
 
-#: src/sysfile-info.c:459
+#: src/sysfile-info.c:454
 #, c-format
 msgid "Write Format: %s"
 msgstr ""
 
-#: src/sysfile-info.c:467
+#: src/sysfile-info.c:462
 msgid "Missing Values: "
 msgstr ""
 
-#: src/sysfile-info.c:534 src/vfm.c:1012 src/crosstabs.q:1159
-#: src/crosstabs.q:1186 src/crosstabs.q:1206 src/crosstabs.q:1228
-#: src/frequencies.q:1009 src/frequencies.q:1126
+#: src/sysfile-info.c:529 src/vfm.c:834 src/crosstabs.q:1158
+#: src/crosstabs.q:1185 src/crosstabs.q:1205 src/crosstabs.q:1227
+#: src/frequencies.q:1021 src/frequencies.q:1138
 msgid "Value"
 msgstr ""
 
-#: src/sysfile-info.c:591
+#: src/sysfile-info.c:586
 msgid "No vectors defined."
 msgstr ""
 
-#: src/sysfile-info.c:606
+#: src/sysfile-info.c:601
 msgid "Vector"
 msgstr ""
 
-#: src/tab.c:266
+#: src/tab.c:261
 #, c-format
 msgid "bad vline: x=%d+%d=%d y=(%d+%d=%d,%d+%d=%d) in table size (%d,%d)\n"
 msgstr ""
 
-#: src/tab.c:342
+#: src/tab.c:336
 #, c-format
 msgid ""
 "bad box: (%d+%d=%d,%d+%d=%d)-(%d+%d=%d,%d+%d=%d) in table size (%d,%d)\n"
 msgstr ""
 
-#: src/temporary.c:47
+#: src/temporary.c:45
 msgid "This command is not valid inside DO IF or LOOP."
 msgstr ""
 
-#: src/temporary.c:54
+#: src/temporary.c:52
 msgid ""
 "This command may only appear once between procedures and procedure-like "
 "commands."
@@ -3946,73 +4036,73 @@ msgstr ""
 msgid "%s: `.' expected after string."
 msgstr ""
 
-#: src/title.c:82
+#: src/title.c:83
 #, c-format
 msgid "%s after: %s\n"
 msgstr ""
 
-#: src/title.c:137
+#: src/title.c:139
 #, c-format
 msgid "Document entered %s %02d:%02d:%02d by %s (%s):"
 msgstr ""
 
-#: src/val-labs.c:119
+#: src/val-labs.c:115
 #, c-format
 msgid ""
 "It is not possible to assign value labels to long string variables such as %"
 "s."
 msgstr ""
 
-#: src/val-labs.c:168
+#: src/val-labs.c:164
 #, c-format
 msgid "Value label `%g' is not integer."
 msgstr ""
 
-#: src/val-labs.c:178
+#: src/val-labs.c:174
 msgid "Truncating value label to 60 characters."
 msgstr ""
 
-#: src/var-labs.c:53
+#: src/var-labs.c:51
 msgid "String expected for variable label."
 msgstr ""
 
-#: src/var-labs.c:59
+#: src/var-labs.c:57
 msgid "Truncating variable label to 120 characters."
 msgstr ""
 
-#: src/var-labs.c:87
+#: src/var-labs.c:85
 #, c-format
 msgid "Variable labels:\n"
 msgstr ""
 
-#: src/var-labs.c:94
+#: src/var-labs.c:92
 #, c-format
 msgid "(no variable label)"
 msgstr ""
 
-#: src/vars-prs.c:49
+#: src/vars-prs.c:48
 #, c-format
 msgid "%s is not a variable name."
 msgstr ""
 
-#: src/vars-prs.c:101
+#: src/vars-prs.c:100
 msgid "ordinary"
 msgstr ""
 
-#: src/vars-prs.c:103
+#: src/vars-prs.c:102
 msgid "system"
 msgstr ""
 
-#: src/vars-prs.c:105
+#: src/vars-prs.c:104
 msgid "scratch"
 msgstr ""
 
-#: src/vars-prs.c:208
+#: src/vars-prs.c:209
 #, c-format
 msgid "%s TO %s is not valid syntax since %s precedes %s in the dictionary."
 msgstr ""
 
-#: src/vars-prs.c:218
+#: src/vars-prs.c:219
 #, c-format
 msgid ""
 "When using the TO keyword to specify several variables, both variables must "
@@ -4020,825 +4110,562 @@ msgid ""
 "system variables.  %s is a %s variable, whereas %s is %s."
 msgstr ""
 
-#: src/vars-prs.c:236
+#: src/vars-prs.c:237
 #, c-format
 msgid "Scratch variables (such as %s) are not allowed here."
 msgstr ""
 
-#: src/vars-prs.c:259
+#: src/vars-prs.c:260
 #, c-format
 msgid ""
 "%s is not a numeric variable.  It will not be included in the variable list."
 msgstr ""
 
-#: src/vars-prs.c:262
+#: src/vars-prs.c:263
 #, c-format
 msgid ""
 "%s is not a string variable.  It will not be included in the variable list."
 msgstr ""
 
-#: src/vars-prs.c:266
+#: src/vars-prs.c:267
 #, c-format
 msgid ""
 "%s and %s are not the same type.  All variables in this variable list must "
 "be of the same type.  %s will be omitted from list."
 msgstr ""
 
-#: src/vars-prs.c:271
+#: src/vars-prs.c:272
 #, c-format
 msgid "Variable %s appears twice in variable list."
 msgstr ""
 
-#: src/vars-prs.c:351
+#: src/vars-prs.c:352
 msgid "incorrect use of TO convention"
 msgstr ""
 
-#: src/vars-prs.c:398
+#: src/vars-prs.c:399
 msgid "Scratch variables not allowed here."
 msgstr ""
 
-#: src/vars-prs.c:420
+#: src/vars-prs.c:421
 msgid "Prefixes don't match in use of TO convention."
 msgstr ""
 
-#: src/vars-prs.c:425
+#: src/vars-prs.c:426
 msgid "Bad bounds in use of TO convention."
 msgstr ""
 
-#: src/vector.c:68
+#: src/vector.c:66
 #, c-format
 msgid "Vector name %s is given twice."
 msgstr ""
 
-#: src/vector.c:74
+#: src/vector.c:72
 #, c-format
 msgid "There is already a vector with name %s."
 msgstr ""
 
-#: src/vector.c:95
+#: src/vector.c:93
 msgid ""
 "A slash must be used to separate each vector specification when using the "
 "long form.  Commands such as VECTOR A,B=Q1 TO Q20 are not supported."
 msgstr ""
 
-#: src/vector.c:129
+#: src/vector.c:127
 msgid "Vectors must have at least one element."
 msgstr ""
 
-#: src/vector.c:143
+#: src/vector.c:141
 #, c-format
 msgid "%s%d is too long for a variable name."
 msgstr ""
 
-#: src/vector.c:181
+#: src/vector.c:179
 msgid ""
 "The syntax for this command does not match the expected syntax for either "
 "the long form or the short form of VECTOR."
 msgstr ""
 
-#: src/vfm.c:507
-#, c-format
-msgid ""
-"An error occurred creating a temporary file for use as the active file: %s."
-msgstr ""
-
-#: src/vfm.c:520
-#, c-format
-msgid ""
-"An error occurred writing to a temporary file used as the active file: %s."
-msgstr ""
-
-#: src/vfm.c:599
-#, c-format
-msgid ""
-"Workspace limit of %d KB (%d cases at %d bytes each) overflowed.  Writing "
-"active file to disk."
-msgstr ""
-
-#: src/vfm.c:631
-#, c-format
-msgid ""
-"An error occurred while attempting to rewind a temporary file used as the "
-"active file: %s."
-msgstr ""
-
-#: src/vfm.c:680
-#, c-format
-msgid ""
-"An error occurred while attempting to read from a temporary file created for "
-"the active file: %s."
-msgstr ""
-
-#: src/weight.c:54
+#: src/weight.c:52
 msgid "The weighting variable must be numeric."
 msgstr ""
 
-#: src/weight.c:59
+#: src/weight.c:57
 msgid "The weighting variable may not be scratch."
 msgstr ""
 
-#: src/crosstabs.q:251
+#: src/crosstabs.q:250
 msgid ""
 "Missing mode REPORT not allowed in general mode.  Assuming MISSING=TABLE."
 msgstr ""
 
-#: src/crosstabs.q:261
+#: src/crosstabs.q:260
 msgid "Write mode ALL not allowed in general mode.  Assuming WRITE=CELLS."
 msgstr ""
 
-#: src/crosstabs.q:322
+#: src/crosstabs.q:321
 msgid "expecting BY"
 msgstr ""
 
-#: src/crosstabs.q:389
+#: src/crosstabs.q:388
 msgid "VARIABLES must be specified before TABLES."
 msgstr ""
 
-#: src/crosstabs.q:426
+#: src/crosstabs.q:425
 #, c-format
 msgid "Maximum value (%ld) less than minimum value (%ld)."
 msgstr ""
 
-#: src/crosstabs.q:860
+#: src/crosstabs.q:859
 msgid "Summary."
 msgstr ""
 
-#: src/crosstabs.q:862
+#: src/crosstabs.q:861
 msgid "Cases"
 msgstr ""
 
-#: src/crosstabs.q:863 src/frequencies.q:1007
+#: src/crosstabs.q:862 src/frequencies.q:1019 src/frequencies.q:1385
 msgid "Valid"
 msgstr ""
 
-#: src/crosstabs.q:864 src/frequencies.q:1074
+#: src/crosstabs.q:863 src/frequencies.q:1086 src/frequencies.q:1386
 msgid "Missing"
 msgstr ""
 
-#: src/crosstabs.q:865 src/crosstabs.q:1068 src/crosstabs.q:1801
-#: src/frequencies.q:1083
+#: src/crosstabs.q:864 src/crosstabs.q:1067 src/crosstabs.q:1809
+#: src/frequencies.q:1095
 msgid "Total"
 msgstr ""
 
-#: src/crosstabs.q:875 src/t-test.q:657 src/t-test.q:680 src/t-test.q:771
-#: src/t-test.q:1345
+#: src/crosstabs.q:874 src/frequencies.q:1384 src/t-test.q:631
+#: src/t-test.q:654 src/t-test.q:745 src/t-test.q:1259
 msgid "N"
 msgstr ""
 
-#: src/crosstabs.q:876 src/frequencies.q:1011 src/frequencies.q:1012
-#: src/frequencies.q:1013
+#: src/crosstabs.q:875 src/frequencies.q:1023 src/frequencies.q:1024
+#: src/frequencies.q:1025
 msgid "Percent"
 msgstr ""
 
-#: src/crosstabs.q:1118
+#: src/crosstabs.q:1117
 msgid "count"
 msgstr ""
 
-#: src/crosstabs.q:1119
+#: src/crosstabs.q:1118
 msgid "row %"
 msgstr ""
 
-#: src/crosstabs.q:1120
+#: src/crosstabs.q:1119
 msgid "column %"
 msgstr ""
 
-#: src/crosstabs.q:1121
+#: src/crosstabs.q:1120
 msgid "total %"
 msgstr ""
 
-#: src/crosstabs.q:1122
+#: src/crosstabs.q:1121
 msgid "expected"
 msgstr ""
 
-#: src/crosstabs.q:1123
+#: src/crosstabs.q:1122
 msgid "residual"
 msgstr ""
 
-#: src/crosstabs.q:1124
+#: src/crosstabs.q:1123
 msgid "std. resid."
 msgstr ""
 
-#: src/crosstabs.q:1125
+#: src/crosstabs.q:1124
 msgid "adj. resid."
 msgstr ""
 
-#: src/crosstabs.q:1158 src/crosstabs.q:1185 src/crosstabs.q:1205
-#: src/crosstabs.q:1226
+#: src/crosstabs.q:1157 src/crosstabs.q:1184 src/crosstabs.q:1204
+#: src/crosstabs.q:1225
 msgid "Statistic"
 msgstr ""
 
-#: src/crosstabs.q:1160 src/t-test.q:922 src/t-test.q:1123 src/t-test.q:1229
+#: src/crosstabs.q:1159 src/t-test.q:896 src/t-test.q:1065 src/t-test.q:1157
 msgid "df"
 msgstr ""
 
-#: src/crosstabs.q:1162
+#: src/crosstabs.q:1161
 msgid "Asymp. Sig. (2-sided)"
 msgstr ""
 
-#: src/crosstabs.q:1164
+#: src/crosstabs.q:1163
 msgid "Exact. Sig. (2-sided)"
 msgstr ""
 
-#: src/crosstabs.q:1166
+#: src/crosstabs.q:1165
 msgid "Exact. Sig. (1-sided)"
 msgstr ""
 
-#: src/crosstabs.q:1184 src/crosstabs.q:1225
+#: src/crosstabs.q:1183 src/crosstabs.q:1224
 msgid "Category"
 msgstr ""
 
-#: src/crosstabs.q:1187 src/crosstabs.q:1229
+#: src/crosstabs.q:1186 src/crosstabs.q:1228
 msgid "Asymp. Std. Error"
 msgstr ""
 
-#: src/crosstabs.q:1188 src/crosstabs.q:1230
+#: src/crosstabs.q:1187 src/crosstabs.q:1229
 msgid "Approx. T"
 msgstr ""
 
-#: src/crosstabs.q:1189 src/crosstabs.q:1231
+#: src/crosstabs.q:1188 src/crosstabs.q:1230
 msgid "Approx. Sig."
 msgstr ""
 
-#: src/crosstabs.q:1204
+#: src/crosstabs.q:1203
 #, c-format
 msgid " 95%% Confidence Interval"
 msgstr ""
 
-#: src/crosstabs.q:1207 src/t-test.q:926 src/t-test.q:1120 src/t-test.q:1232
+#: src/crosstabs.q:1206 src/t-test.q:900 src/t-test.q:1062 src/t-test.q:1160
 msgid "Lower"
 msgstr ""
 
-#: src/crosstabs.q:1208 src/t-test.q:927 src/t-test.q:1121 src/t-test.q:1233
+#: src/crosstabs.q:1207 src/t-test.q:901 src/t-test.q:1063 src/t-test.q:1161
 msgid "Upper"
 msgstr ""
 
-#: src/crosstabs.q:1227
+#: src/crosstabs.q:1226
 msgid "Type"
 msgstr ""
 
-#: src/crosstabs.q:1977
+#: src/crosstabs.q:2003
 msgid "Pearson Chi-Square"
 msgstr ""
 
-#: src/crosstabs.q:1978
+#: src/crosstabs.q:2004
 msgid "Likelihood Ratio"
 msgstr ""
 
-#: src/crosstabs.q:1979
+#: src/crosstabs.q:2005
 msgid "Fisher's Exact Test"
 msgstr ""
 
-#: src/crosstabs.q:1980
+#: src/crosstabs.q:2006
 msgid "Continuity Correction"
 msgstr ""
 
-#: src/crosstabs.q:1981
+#: src/crosstabs.q:2007
 msgid "Linear-by-Linear Association"
 msgstr ""
 
-#: src/crosstabs.q:2018 src/crosstabs.q:2088 src/crosstabs.q:2147
+#: src/crosstabs.q:2044 src/crosstabs.q:2114 src/crosstabs.q:2173
 msgid "N of Valid Cases"
 msgstr ""
 
-#: src/crosstabs.q:2034 src/crosstabs.q:2163
+#: src/crosstabs.q:2060 src/crosstabs.q:2189
 msgid "Nominal by Nominal"
 msgstr ""
 
-#: src/crosstabs.q:2035 src/crosstabs.q:2164
+#: src/crosstabs.q:2061 src/crosstabs.q:2190
 msgid "Ordinal by Ordinal"
 msgstr ""
 
-#: src/crosstabs.q:2036
+#: src/crosstabs.q:2062
 msgid "Interval by Interval"
 msgstr ""
 
-#: src/crosstabs.q:2037
+#: src/crosstabs.q:2063
 msgid "Measure of Agreement"
 msgstr ""
 
-#: src/crosstabs.q:2042
+#: src/crosstabs.q:2068
 msgid "Phi"
 msgstr ""
 
-#: src/crosstabs.q:2043
+#: src/crosstabs.q:2069
 msgid "Cramer's V"
 msgstr ""
 
-#: src/crosstabs.q:2044
+#: src/crosstabs.q:2070
 msgid "Contingency Coefficient"
 msgstr ""
 
-#: src/crosstabs.q:2045
+#: src/crosstabs.q:2071
 msgid "Kendall's tau-b"
 msgstr ""
 
-#: src/crosstabs.q:2046
+#: src/crosstabs.q:2072
 msgid "Kendall's tau-c"
 msgstr ""
 
-#: src/crosstabs.q:2047
+#: src/crosstabs.q:2073
 msgid "Gamma"
 msgstr ""
 
-#: src/crosstabs.q:2048
+#: src/crosstabs.q:2074
 msgid "Spearman Correlation"
 msgstr ""
 
-#: src/crosstabs.q:2049
+#: src/crosstabs.q:2075
 msgid "Pearson's R"
 msgstr ""
 
-#: src/crosstabs.q:2050
+#: src/crosstabs.q:2076
 msgid "Kappa"
 msgstr ""
 
-#: src/crosstabs.q:2120
+#: src/crosstabs.q:2146
 #, c-format
 msgid "Odds Ratio for %s (%g / %g)"
 msgstr ""
 
-#: src/crosstabs.q:2123
+#: src/crosstabs.q:2149
 #, c-format
 msgid "Odds Ratio for %s (%.*s / %.*s)"
 msgstr ""
 
-#: src/crosstabs.q:2131
+#: src/crosstabs.q:2157
 #, c-format
 msgid "For cohort %s = %g"
 msgstr ""
 
-#: src/crosstabs.q:2134
+#: src/crosstabs.q:2160
 #, c-format
 msgid "For cohort %s = %.*s"
 msgstr ""
 
-#: src/crosstabs.q:2165
+#: src/crosstabs.q:2191
 msgid "Nominal by Interval"
 msgstr ""
 
-#: src/crosstabs.q:2170
+#: src/crosstabs.q:2196
 msgid "Lambda"
 msgstr ""
 
-#: src/crosstabs.q:2171
+#: src/crosstabs.q:2197
 msgid "Goodman and Kruskal tau"
 msgstr ""
 
-#: src/crosstabs.q:2172
+#: src/crosstabs.q:2198
 msgid "Uncertainty Coefficient"
 msgstr ""
 
-#: src/crosstabs.q:2173
+#: src/crosstabs.q:2199
 msgid "Somers' d"
 msgstr ""
 
-#: src/crosstabs.q:2174
+#: src/crosstabs.q:2200
 msgid "Eta"
 msgstr ""
 
-#: src/crosstabs.q:2179
+#: src/crosstabs.q:2205
 msgid "Symmetric"
 msgstr ""
 
-#: src/crosstabs.q:2180 src/crosstabs.q:2181
+#: src/crosstabs.q:2206 src/crosstabs.q:2207
 #, c-format
 msgid "%s Dependent"
 msgstr ""
 
-#: src/descript.q:151 src/frequencies.q:94 src/t-test.q:658 src/t-test.q:681
-#: src/t-test.q:770 src/t-test.q:1117
-msgid "Mean"
-msgstr ""
-
-#: src/descript.q:151
-msgid "mean"
-msgstr ""
-
-#: src/descript.q:152 src/frequencies.q:95
-msgid "S.E. Mean"
-msgstr ""
-
-#: src/descript.q:152
-msgid "S E Mean"
-msgstr ""
-
-#: src/descript.q:152
-msgid "SE"
-msgstr ""
-
-#: src/descript.q:153
-msgid "standard error of mean"
-msgstr ""
-
-#: src/descript.q:154 src/frequencies.q:98
-msgid "Std Dev"
-msgstr ""
-
-#: src/descript.q:154
-msgid "SD"
-msgstr ""
-
-#: src/descript.q:155
-msgid "standard deviation"
-msgstr ""
-
-#: src/descript.q:156 src/frequencies.q:99
-msgid "Variance"
-msgstr ""
-
-#: src/descript.q:157
-msgid "Var"
-msgstr ""
-
-#: src/descript.q:157
-msgid "variance"
-msgstr ""
-
-#: src/descript.q:158 src/frequencies.q:100
-msgid "Kurtosis"
-msgstr ""
-
-#: src/descript.q:159
-msgid "Kurt"
-msgstr ""
-
-#: src/descript.q:159
-msgid "kurtosis"
-msgstr ""
-
-#: src/descript.q:160 src/frequencies.q:101
-msgid "S.E. Kurt"
-msgstr ""
-
-#: src/descript.q:160
-msgid "S E Kurt"
-msgstr ""
-
-#: src/descript.q:160
-msgid "SEKurt"
-msgstr ""
-
-#: src/descript.q:161
-msgid "standard error of kurtosis"
-msgstr ""
-
-#: src/descript.q:162 src/frequencies.q:102
-msgid "Skewness"
-msgstr ""
-
-#: src/descript.q:162
-msgid "Skew"
-msgstr ""
-
-#: src/descript.q:163
-msgid "skewness"
-msgstr ""
-
-#: src/descript.q:164 src/frequencies.q:103
-msgid "S.E. Skew"
-msgstr ""
-
-#: src/descript.q:164
-msgid "S E Skew"
-msgstr ""
-
-#: src/descript.q:164
-msgid "SESkew"
-msgstr ""
-
-#: src/descript.q:165
-msgid "standard error of skewness"
-msgstr ""
-
-#: src/descript.q:166 src/frequencies.q:104
-msgid "Range"
-msgstr ""
-
-#: src/descript.q:166
-msgid "Rng"
-msgstr ""
-
-#: src/descript.q:167 src/frequencies.q:105
-msgid "Minimum"
-msgstr ""
-
-#: src/descript.q:167
-msgid "Min"
-msgstr ""
-
-#: src/descript.q:168
-msgid "minimum"
-msgstr ""
-
-#: src/descript.q:169 src/frequencies.q:106
-msgid "Maximum"
-msgstr ""
-
-#: src/descript.q:169
-msgid "Max"
-msgstr ""
-
-#: src/descript.q:170
-msgid "maximum"
-msgstr ""
-
-#: src/descript.q:171 src/frequencies.q:107
-msgid "Sum"
-msgstr ""
-
-#: src/descript.q:171
-msgid "sum"
-msgstr ""
-
-#: src/descript.q:212 src/list.q:144
-msgid "No variables specified."
-msgstr ""
-
-#: src/descript.q:218
-msgid "OPTIONS may not be used with SAVE, FORMAT, or MISSING."
-msgstr ""
-
-#: src/descript.q:280
-#, c-format
-msgid "It's not possible to sort on `%s' without displaying `%s'."
-msgstr ""
-
-#: src/descript.q:294
-msgid ""
-"At least one case in the data file had a weight value that was system-"
-"missing, zero, or negative.  These case(s) were ignored."
-msgstr ""
-
-#: src/descript.q:335
-msgid ""
-"Names for z-score variables must be given for individual variables, not for "
-"groups of variables."
-msgstr ""
-
-#: src/descript.q:343
-msgid "Name for z-score variable expected."
-msgstr ""
-
-#: src/descript.q:348
-#, c-format
-msgid ""
-"Z-score variable name `%s' is a duplicate variable name with a current "
-"variable."
-msgstr ""
-
-#: src/descript.q:357
-#, c-format
-msgid "Z-score variable name `%s' is used multiple times."
-msgstr ""
-
-#: src/descript.q:365
-msgid "`)' expected after z-score variable name."
-msgstr ""
-
-#: src/descript.q:425
-msgid ""
-"Ran out of generic names for Z-score variables.  There are only 126 generic "
-"names: ZSC001-ZSC0999, STDZ01-STDZ09, ZZZZ01-ZZZZ09, ZQZQ01-ZQZQ09."
-msgstr ""
-
-#: src/descript.q:454
-msgid "Mapping of variables to corresponding Z-scores."
-msgstr ""
-
-#: src/descript.q:459
-msgid "Source"
-msgstr ""
-
-#: src/descript.q:460
-msgid "Target"
-msgstr ""
-
-#: src/descript.q:548 src/descript.q:554
-msgid "Z-score of "
-msgstr ""
-
-#: src/descript.q:795
-msgid "Valid N"
-msgstr ""
-
-#: src/descript.q:796
-msgid "Missing N"
-msgstr ""
-
-#: src/descript.q:823
-#, c-format
-msgid "Valid cases = %g; cases with missing value(s) = %g."
-msgstr ""
-
-#: src/file-handle.q:72
+#: src/file-handle.q:124
 #, c-format
 msgid ""
-"File handle %s had already been defined to refer to file %s.  It is not "
-"possible to redefine a file handle within a session."
+"File handle %s already refers to file %s.  File handle cannot be redefined "
+"within a session."
 msgstr ""
 
-#: src/file-handle.q:94
+#: src/file-handle.q:146
 msgid "The FILE HANDLE required subcommand NAME is not present."
 msgstr ""
 
-#: src/file-handle.q:107
+#: src/file-handle.q:161
 msgid ""
-"Fixed length records were specified on /RECFORM, but record length was not "
-"specified on /LRECL.  80-character records will be assumed."
+"Fixed-length records were specified on /RECFORM, but record length was not "
+"specified on /LRECL.  Assuming 1024-character records."
 msgstr ""
 
-#: src/file-handle.q:114
+#: src/file-handle.q:168
 #, c-format
 msgid ""
-"Record length (%ld) must be at least one byte.  80-character records will be "
+"Record length (%ld) must be at least one byte.  1-character records will be "
 "assumed."
 msgstr ""
 
-#: src/file-handle.q:126 src/file-handle.q:140
-#, c-format
-msgid ""
-"%s is not implemented, as the author doesn't know what it is supposed to "
-"do.  Send a note to %s."
+#: src/file-handle.q:241
+msgid "<Inline File>"
 msgstr ""
 
-#: src/file-handle.q:147 src/file-handle.q:150
-#, c-format
-msgid "%s is not implemented.  If you care, complain."
+#: src/file-handle.q:256
+msgid "expecting a file name or handle name"
 msgstr ""
 
-#: src/file-handle.q:232
-#, c-format
-msgid "File handle `%s' has not been previously declared on FILE HANDLE."
+#: src/frequencies.q:96
+msgid "S.E. Mean"
 msgstr ""
 
-#: src/file-handle.q:319
-msgid "<Inline File>"
+#: src/frequencies.q:97
+msgid "Median"
 msgstr ""
 
-#: src/file-handle.q:338
-msgid "expecting a file name or handle"
+#: src/frequencies.q:98
+msgid "Mode"
 msgstr ""
 
-#: src/frequencies.q:96
-msgid "Median"
+#: src/frequencies.q:102
+msgid "S.E. Kurt"
 msgstr ""
 
-#: src/frequencies.q:97
-msgid "Mode"
+#: src/frequencies.q:104
+msgid "S.E. Skew"
 msgstr ""
 
-#: src/frequencies.q:268
+#: src/frequencies.q:279
 msgid ""
 "At most one of BARCHART, HISTOGRAM, or HBAR should be given.  HBAR will be "
 "assumed.  Argument values will be given precedence increasing along the "
 "order given."
 msgstr ""
 
-#: src/frequencies.q:349
+#: src/frequencies.q:360
 #, c-format
 msgid ""
 "MAX must be greater than or equal to MIN, if both are specified.  However, "
 "MIN was specified as %g and MAX as %g.  MIN and MAX will be ignored."
 msgstr ""
 
-#: src/frequencies.q:632
+#: src/frequencies.q:649
 msgid ""
 "Upper limit of integer mode value range must be greater than lower limit."
 msgstr ""
 
-#: src/frequencies.q:644
+#: src/frequencies.q:661
 #, c-format
 msgid "Variable %s specified multiple times on VARIABLES subcommand."
 msgstr ""
 
-#: src/frequencies.q:657
+#: src/frequencies.q:674
 #, c-format
 msgid "Integer mode specified, but %s is not a numeric variable."
 msgstr ""
 
-#: src/frequencies.q:719
+#: src/frequencies.q:736
 msgid "`)' expected after GROUPED interval list."
 msgstr ""
 
-#: src/frequencies.q:732
+#: src/frequencies.q:749
 #, c-format
 msgid "Variables %s specified on GROUPED but not on VARIABLES."
 msgstr ""
 
-#: src/frequencies.q:735
+#: src/frequencies.q:752
 #, c-format
 msgid "Variables %s specified multiple times on GROUPED subcommand."
 msgstr ""
 
-#: src/frequencies.q:795
+#: src/frequencies.q:808
 msgid "Percentile list expected after PERCENTILES."
 msgstr ""
 
-#: src/frequencies.q:803
-msgid "Percentiles must be greater than 0 and less than 100."
+#: src/frequencies.q:816
+msgid "Percentiles must be between 0 and 100."
 msgstr ""
 
-#: src/frequencies.q:1008 src/frequencies.q:1098 src/frequencies.q:1099
-#: src/frequencies.q:1129
+#: src/frequencies.q:1020 src/frequencies.q:1110 src/frequencies.q:1111
+#: src/frequencies.q:1141
 msgid "Cum"
 msgstr ""
 
-#: src/frequencies.q:1010
+#: src/frequencies.q:1022
 msgid "Frequency"
 msgstr ""
 
-#: src/frequencies.q:1029
+#: src/frequencies.q:1041
 msgid "Value Label"
 msgstr ""
 
-#: src/frequencies.q:1127
+#: src/frequencies.q:1139
 msgid "Freq"
 msgstr ""
 
-#: src/frequencies.q:1128 src/frequencies.q:1130
+#: src/frequencies.q:1140 src/frequencies.q:1142
 msgid "Pct"
 msgstr ""
 
-#: src/frequencies.q:1285
+#: src/frequencies.q:1358
 #, c-format
 msgid "No valid data for variable %s; statistics not displayed."
 msgstr ""
 
-#: src/frequencies.q:1308
-msgid "Percentile"
+#: src/frequencies.q:1397
+msgid "Percentiles"
 msgstr ""
 
-#: src/list.q:152
+#: src/list.q:151
 #, c-format
 msgid ""
 "The first case (%ld) specified precedes the last case (%ld) specified.  The "
 "values will be swapped."
 msgstr ""
 
-#: src/list.q:160
+#: src/list.q:159
 #, c-format
 msgid ""
 "The first case (%ld) to list is less than 1.  The value is being reset to 1."
 msgstr ""
 
-#: src/list.q:166
+#: src/list.q:165
 #, c-format
 msgid ""
 "The last case (%ld) to list is less than 1.  The value is being reset to 1."
 msgstr ""
 
-#: src/list.q:172
+#: src/list.q:171
 #, c-format
 msgid "The step value %ld is less than 1.  The value is being reset to 1."
 msgstr ""
 
-#: src/list.q:199
+#: src/list.q:198
 msgid "`/FORMAT WEIGHT' specified, but weighting is not on."
 msgstr ""
 
-#: src/list.q:445
+#: src/list.q:444
 msgid "Line"
 msgstr ""
 
-#: src/means.q:106
+#: src/means.q:105
 msgid "Missing required subcommand TABLES."
 msgstr ""
 
-#: src/means.q:144
+#: src/means.q:143
 msgid "TABLES or CROSSBREAK subcommand may not appear more than once."
 msgstr ""
 
-#: src/means.q:181
+#: src/means.q:180
 #, c-format
 msgid ""
 "Variable %s specified on TABLES or CROSSBREAK, but not specified on "
 "VARIABLES."
 msgstr ""
 
-#: src/means.q:195
+#: src/means.q:194
 #, c-format
 msgid "LOWEST and HIGHEST may not be used for independent variables (%s)."
 msgstr ""
 
-#: src/means.q:203
+#: src/means.q:202
 #, c-format
 msgid ""
 "Independent variables (%s) may not have noninteger endpoints in their ranges."
 msgstr ""
 
-#: src/means.q:236
+#: src/means.q:235
 msgid "VARIABLES must precede TABLES."
 msgstr ""
 
-#: src/means.q:293
+#: src/means.q:292
 #, c-format
 msgid "Upper value (%g) is less than lower value (%g) on VARIABLES subcommand."
 msgstr ""
 
-#: src/set.q:216 src/set.q:288 src/set.q:332 src/set.q:389 src/set.q:391
-#: src/set.q:393 src/set.q:395 src/set.q:397 src/set.q:399 src/set.q:401
-#: src/set.q:403 src/set.q:405 src/set.q:407 src/set.q:409 src/set.q:411
-#: src/set.q:413 src/set.q:792 src/set.q:873 src/set.q:968
+#: src/set.q:216 src/set.q:288 src/set.q:332 src/set.q:387 src/set.q:389
+#: src/set.q:391 src/set.q:393 src/set.q:395 src/set.q:397 src/set.q:399
+#: src/set.q:401 src/set.q:403 src/set.q:405 src/set.q:407 src/set.q:409
+#: src/set.q:411 src/set.q:790 src/set.q:871 src/set.q:966
 #, c-format
 msgid "%s is obsolete."
 msgstr ""
@@ -4855,269 +4682,261 @@ msgstr ""
 msgid "Journalling is off"
 msgstr ""
 
-#: src/set.q:422
+#: src/set.q:420
 msgid ""
 "CASE is not implemented and probably won't be.  If you care, complain about "
 "it."
 msgstr ""
 
-#: src/set.q:427
+#: src/set.q:425
 msgid "Active file compression is not yet implemented (and probably won't be)."
 msgstr ""
 
-#: src/set.q:441
+#: src/set.q:439
 #, c-format
 msgid ""
 "CC%c: Length of custom currency string `%s' (%d) exceeds maximum length of "
 "16."
 msgstr ""
 
-#: src/set.q:463
+#: src/set.q:461
 #, c-format
 msgid ""
 "CC%c: Custom currency string `%s' does not contain exactly three periods or "
 "commas (not both)."
 msgstr ""
 
-#: src/set.q:516
+#: src/set.q:514
 msgid "None"
 msgstr ""
 
-#: src/set.q:522
+#: src/set.q:520
 msgid "Disabled"
 msgstr ""
 
-#: src/set.q:527
+#: src/set.q:525
 msgid "Screen"
 msgstr ""
 
-#: src/set.q:534
+#: src/set.q:532
 msgid "Listing"
 msgstr ""
 
-#: src/set.q:541
+#: src/set.q:539
 msgid "Other"
 msgstr ""
 
-#: src/set.q:650
+#: src/set.q:648
 msgid "LENGTH must be at least 1."
 msgstr ""
 
-#: src/set.q:689
+#: src/set.q:687
 msgid "Missing identifier in RESULTS subcommand."
 msgstr ""
 
-#: src/set.q:700
+#: src/set.q:698
 msgid "Unrecognized identifier in RESULTS subcommand."
 msgstr ""
 
-#: src/set.q:738
+#: src/set.q:736
 msgid "WIDTH must be at least 1."
 msgstr ""
 
-#: src/set.q:761
+#: src/set.q:759
 #, c-format
 msgid ""
 "FORMAT requires numeric output format as an argument.  Specified format %s "
 "is of type string."
 msgstr ""
 
-#: src/set.q:805
+#: src/set.q:803
 msgid "Text color must be in range 0-15."
 msgstr ""
 
-#: src/set.q:818
+#: src/set.q:816
 msgid "Background color must be in range 0-7."
 msgstr ""
 
-#: src/set.q:829
+#: src/set.q:827
 msgid "Border color must be in range 0-7."
 msgstr ""
 
-#: src/set.q:885
+#: src/set.q:883
 msgid "Lower window color must be between 0 and 6."
 msgstr ""
 
-#: src/set.q:899
+#: src/set.q:897
 msgid "Upper window color must be between 0 and 6."
 msgstr ""
 
-#: src/set.q:911
+#: src/set.q:909
 msgid "Frame color must be between 0 and 6."
 msgstr ""
 
-#: src/set.q:977
+#: src/set.q:975
 msgid "Drive letter expected in WORKDEV subcommand."
 msgstr ""
 
-#: src/set.q:1012
-msgid "Specify a terminal type with `setenv TERM <yourtype>'."
+#: src/set.q:1007
+msgid "Specify a terminal type with the TERM environment variable."
 msgstr ""
 
-#: src/set.q:1018
+#: src/set.q:1013
 msgid "Could not access the termcap data base."
 msgstr ""
 
-#: src/set.q:1020
+#: src/set.q:1015
 #, c-format
 msgid "Terminal type `%s' is not defined."
 msgstr ""
 
-#: src/set.q:1048
+#: src/set.q:1057
 msgid "data> "
 msgstr ""
 
-#: src/t-test.q:237
+#: src/t-test.q:234
 msgid "TESTVAL, GROUPS and PAIRS subcommands are mutually exclusive."
 msgstr ""
 
-#: src/t-test.q:254
+#: src/t-test.q:251
 msgid "VARIABLES subcommand is not appropriate with PAIRS"
 msgstr ""
 
-#: src/t-test.q:354 src/t-test.q:431
+#: src/t-test.q:288
+msgid "One or more VARIABLES must be specified."
+msgstr ""
+
+#: src/t-test.q:328 src/t-test.q:405
 #, c-format
 msgid "`%s' is not a variable name"
 msgstr ""
 
-#: src/t-test.q:367
+#: src/t-test.q:341
 #, c-format
 msgid "Long string variable %s is not valid here."
 msgstr ""
 
-#: src/t-test.q:384
+#: src/t-test.q:358
 msgid ""
 "When applying GROUPS to a string variable, at least one value must be "
 "specified."
 msgstr ""
 
-#: src/t-test.q:466
+#: src/t-test.q:440
 #, c-format
 msgid ""
 "PAIRED was specified but the number of variables preceding WITH (%d) did not "
 "match the number following (%d)."
 msgstr ""
 
-#: src/t-test.q:483
+#: src/t-test.q:457
 msgid "At least two variables must be specified on PAIRS."
 msgstr ""
 
-#: src/t-test.q:655
+#: src/t-test.q:629
 msgid "One-Sample Statistics"
 msgstr ""
 
-#: src/t-test.q:659 src/t-test.q:682 src/t-test.q:772 src/t-test.q:1118
+#: src/t-test.q:633 src/t-test.q:656 src/t-test.q:746 src/t-test.q:1060
 msgid "Std. Deviation"
 msgstr ""
 
-#: src/t-test.q:660 src/t-test.q:683 src/t-test.q:773
+#: src/t-test.q:634 src/t-test.q:657 src/t-test.q:747
 msgid "SE. Mean"
 msgstr ""
 
-#: src/t-test.q:677
+#: src/t-test.q:651
 msgid "Group Statistics"
 msgstr ""
 
-#: src/t-test.q:767
+#: src/t-test.q:741
 msgid "Paired Sample Statistics"
 msgstr ""
 
-#: src/t-test.q:789 src/t-test.q:1146 src/t-test.q:1366
+#: src/t-test.q:763 src/t-test.q:1085 src/t-test.q:1276
 #, c-format
 msgid "Pair %d"
 msgstr ""
 
-#: src/t-test.q:907
+#: src/t-test.q:881
 msgid "Independent Samples Test"
 msgstr ""
 
-#: src/t-test.q:915
+#: src/t-test.q:889
 msgid "Levene's Test for Equality of Variances"
 msgstr ""
 
-#: src/t-test.q:917
+#: src/t-test.q:891
 msgid "t-test for Equality of Means"
 msgstr ""
 
-#: src/t-test.q:919
+#: src/t-test.q:893
 msgid "F"
 msgstr ""
 
-#: src/t-test.q:920 src/t-test.q:1347
+#: src/t-test.q:894 src/t-test.q:1261
 msgid "Sig."
 msgstr ""
 
-#: src/t-test.q:921 src/t-test.q:1122 src/t-test.q:1228
+#: src/t-test.q:895 src/t-test.q:1064 src/t-test.q:1156
 msgid "t"
 msgstr ""
 
-#: src/t-test.q:923 src/t-test.q:1124 src/t-test.q:1230
+#: src/t-test.q:897 src/t-test.q:1066 src/t-test.q:1158
 msgid "Sig. (2-tailed)"
 msgstr ""
 
-#: src/t-test.q:924 src/t-test.q:1231
+#: src/t-test.q:898 src/t-test.q:1159
 msgid "Mean Difference"
 msgstr ""
 
-#: src/t-test.q:925
+#: src/t-test.q:899
 msgid "Std. Error Difference"
 msgstr ""
 
-#: src/t-test.q:930 src/t-test.q:1114 src/t-test.q:1223
+#: src/t-test.q:904 src/t-test.q:1056 src/t-test.q:1151
 #, c-format
 msgid "%d%% Confidence Interval of the Difference"
 msgstr ""
 
-#: src/t-test.q:964
+#: src/t-test.q:935
 msgid "Equal variances assumed"
 msgstr ""
 
-#: src/t-test.q:979
-#, c-format
-msgid "Error calculating F statistic (cdff returned %d)."
-msgstr ""
-
-#: src/t-test.q:1002 src/t-test.q:1022 src/t-test.q:1060 src/t-test.q:1072
-#: src/t-test.q:1167 src/t-test.q:1193 src/t-test.q:1273 src/t-test.q:1290
-#: src/t-test.q:1379
-#, c-format
-msgid "Error calculating T statistic (cdft returned %d)."
-msgstr ""
-
-#: src/t-test.q:1036
+#: src/t-test.q:988
 msgid "Equal variances not assumed"
 msgstr ""
 
-#: src/t-test.q:1104
+#: src/t-test.q:1046
 msgid "Paired Samples Test"
 msgstr ""
 
-#: src/t-test.q:1107
+#: src/t-test.q:1049
 msgid "Paired Differences"
 msgstr ""
 
-#: src/t-test.q:1119
+#: src/t-test.q:1061
 msgid "Std. Error Mean"
 msgstr ""
 
-#: src/t-test.q:1212
+#: src/t-test.q:1140
 msgid "One-Sample Test"
 msgstr ""
 
-#: src/t-test.q:1217
+#: src/t-test.q:1145
 #, c-format
 msgid "Test Value = %f"
 msgstr ""
 
-#: src/t-test.q:1342
+#: src/t-test.q:1256
 msgid "Paired Samples Correlations"
 msgstr ""
 
-#: src/t-test.q:1346
+#: src/t-test.q:1260
 msgid "Correlation"
 msgstr ""
 
-#: src/t-test.q:1369
+#: src/t-test.q:1279
 #, c-format
 msgid "%s & %s"
 msgstr ""
index 434d9aacbf97dc4072838e86a458d133f89c1c34..b79ce578d2509dc9a777b87bdeff2849fa9fb51d 100644 (file)
 /* Directory separator character for this OS, if applicable. */
 #ifndef __MSDOS__
 #define DIR_SEPARATOR '/'
-#elif
+#else
 #define DIR_SEPARATOR '\\'
 #endif
 
index 1fe13f1e1d0836e922b81dfa4efdb9a0f74abe77..4d9e68b205bc5946bf4c2c98c442fc99d3cb2595 100644 (file)
@@ -1,3 +1,15 @@
+Sat Apr  3 15:00:18 WST 2004 John Darrington <john@darrington.wattle.id.au>
+
+        * frequencies.q:  Fixed the calculation of percentiles
+
+       * Makefile.am:  Added the --ansi flag and dealt with the
+       consequences.  Added some entries to PSPP_sources so that
+       make distcheck would pass
+
+       * cmdline.c:   Added the --syntax and --algorithm options
+
+       * q2c.c:  Added an implicit /ALGORITHM subcommand to everything.
+
 Fri Apr  2 11:25:22 WAST 2004 John Darrington <john@darrington.wattle.id.au>
 
        * t-test.q, levene.c, levene.h  Converted t-test (incl levene) to 
@@ -8,6 +20,9 @@ Wed Mar 31 22:36:22 2004  Ben Pfaff  <blp@gnu.org>
        * frequencies.q: (calc_stats) Use moments data structure and
        calc_seskew(), calc_sekurt() functions.
 
+       * set.q main.c settings.h Added support for --syntax and --algorithm 
+       options
+
 Tue Mar 30 22:04:19 2004  Ben Pfaff  <blp@gnu.org>
 
        * vfm.c: Had to get last call to multipass_split_output() inside
index 5e12142a5948f7bb5a82f6e32b400e28ed918891..082c6c232cd916ded05d2e43b614d01f2e94af95 100644 (file)
@@ -8,14 +8,29 @@ pkgsysconfdir = $(sysconfdir)/@PACKAGE@
 
 bin_PROGRAMS = pspp
 
+
+
 AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/src -I$(top_srcdir)/lib  \
--I$(top_srcdir)/intl
+-I$(top_srcdir)/intl 
+
+AM_CFLAGS=
 
 if cc_is_gcc
-AM_CFLAGS=-Wall -W -Wwrite-strings -Wstrict-prototypes \
--Wpointer-arith -Wno-sign-compare -Wmissing-prototypes 
+AM_CFLAGS+=-Wall -W -Wwrite-strings -Wstrict-prototypes \
+-Wpointer-arith -Wno-sign-compare -Wmissing-prototypes \
+-ansi 
+endif
+
+if unix
+AM_CFLAGS+=-Dunix
 endif
 
+if msdos
+AM_CFLAGS+=-D__MSDOS__
+endif
+
+
+
 CLEANFILES =  $(q_sources_c) version.c
 DISTCLEANFILES = foo 
 MAINTAINERCLEANFILES = Makefile.in
@@ -37,9 +52,10 @@ pspp_SOURCES = $(q_sources_c) aggregate.c algorithm.c algorithm.h    \
 alloc.c alloc.h apply-dict.c ascii.c autorecode.c bitvector.h          \
 casefile.c casefile.h cmdline.c cmdline.h command.c command.def                \
 command.h compute.c copyleft.c copyleft.h count.c data-in.c data-in.h  \
-data-list.c data-list.h data-out.c date.c debug-print.h descript.c     \
+data-list.c data-list.h data-out.c date.c debug.c debug-print.h descript.c     \
 devind.c devind.h dfm.c dfm.h dictionary.c do-if.c do-ifP.h error.c    \
-error.h expr-evl.c expr-opt.c expr-prs.c expr.h exprP.h file-handle.h  \
+error.h expr-evl.c expr-opt.c expr-prs.c expr.h exprP.h expr.def        \
+file-handle.h  \
 file-type.c filename.c filename.h flip.c font.h format.c format.def    \
 format.h formats.c get.c getline.c getline.h glob.c glob.h             \
 groff-font.c hash.c hash.h html.c htmlP.h include.c inpt-pgm.c lexer.c \
@@ -50,6 +66,7 @@ pfm.h pool.c pool.h postscript.c print.c random.c random.h recode.c   \
 rename-vars.c repeat.c repeat.h sample.c sel-if.c settings.h           \
 sfm-read.c sfm-write.c sfm.h sfmP.h som.c som.h sort.c sort.h          \
 split-file.c str.c str.h sysfile-info.c tab.c tab.h temporary.c                \
+stat.h \
 title.c t-test.h val.h val-labs.c value-labels.c value-labels.h                \
 var-labs.c var.h vars-atr.c vars-prs.c vector.c version.c version.h    \
 vfm.c vfm.h vfmP.h weight.c workspace.c workspace.h
index b72f545ba211107888c953ac05e3e92b64c97616..56ce1d94e67ecd53697adec48a3853847ce70226 100644 (file)
@@ -50,6 +50,7 @@ parse_command_line (int argc, char **argv)
 {
   static struct option long_options[] =
   {
+    {"algorithm", required_argument, NULL, 'a'},
     {"command", required_argument, NULL, 'c'},
     {"config-directory", required_argument, NULL, 'B'},
     {"device", required_argument, NULL, 'o'},
@@ -66,6 +67,7 @@ parse_command_line (int argc, char **argv)
     {"pipe", no_argument, NULL, 'p'},
     {"recon", no_argument, NULL, 'n'},
     {"safer", no_argument, NULL, 's'},
+    {"syntax", required_argument, NULL, 'x'},
     {"testing-mode", no_argument, &testing_mode, 1},
     {"verbose", no_argument, NULL, 'v'},
     {"version", no_argument, NULL, 'V'},
@@ -80,12 +82,37 @@ parse_command_line (int argc, char **argv)
 
   for (;;)
     {
-      c = getopt_long (argc, argv, "B:c:f:hiI:lno:prsvV", long_options, NULL);
+      c = getopt_long (argc, argv, "a:x:B:c:f:hiI:lno:prsvV", long_options, NULL);
       if (c == -1)
        break;
 
       switch (c)
        {
+         /* Compatibility options */
+        case 'a':
+         if ( 0 == strcmp(optarg,"compatible") )
+             set_algorithm(COMPATIBLE);
+         else if ( 0 == strcmp(optarg,"enhanced"))
+             set_algorithm(ENHANCED);
+         else
+           {
+             usage();
+             assert(0);
+           }
+         break;
+
+       case 'x':         
+         if ( 0 == strcmp(optarg,"compatible") )
+           set_syntax(COMPATIBLE);
+         else if ( 0 == strcmp(optarg,"enhanced"))
+           set_syntax(ENHANCED);
+         else
+           {
+             usage();
+             assert(0);
+           }
+         break;
+
        case 'c':
          {
            static int n_cmds;
@@ -223,6 +250,9 @@ N_("PSPP, a program for statistical analysis of sample data.\n"
 "\nIf a long option shows an argument as mandatory, then it is mandatory\n"
 "for the equivalent short option also.  Similarly for optional arguments.\n"
 "\nConfiguration:\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"
 "  -d, --define=VAR[=VALUE]  set environment variable VAR to VALUE, or empty\n"
@@ -238,6 +268,9 @@ N_("PSPP, a program for statistical analysis of sample data.\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"
 "\nInformative output:\n"
 "  -h, --help                print this help, then exit\n"
 "  -l, --list                print a list of known driver classes, then exit\n"
index dff2ff4732d7a2e5792856188a0f162225907a63..cd2b2038163b41f85d67394d35ed01fa54cefd1e 100644 (file)
@@ -771,11 +771,11 @@ cmd_host (void)
   /* Make sure that the system has a command interpreter, then run a
      command. */
   if (system (NULL) != 0)
-    success = run_command ();
+    code = run_command ();
   else
     {
       msg (SE, _("No operating system support for this command."));
-      success = CMD_FAILURE;
+      code = CMD_FAILURE;
     }
 #endif /* !unix */
 
index 423a8a30195a9e0802a10f1cf2cc8d4bc6cc648a..f4113982830ca691aec23034d36b8217533c6021 100644 (file)
@@ -37,7 +37,7 @@ enum
     CMD_SUCCESS,               /* Command successfully parsed and executed. */
     CMD_PART_SUCCESS_MAYBE,    /* Command may have been partially executed. */
     CMD_PART_SUCCESS,          /* Command fully executed up to error. */
-    CMD_TRAILING_GARBAGE,      /* Command followed by garbage. */
+    CMD_TRAILING_GARBAGE       /* Command followed by garbage. */
   };
 
 extern int pgm_state;
index 095f7af841680562048e325335c3711655c469d0..801ceda310541bfdb733177b938ae4abd9aa4d01 100644 (file)
@@ -33,7 +33,7 @@ enum
     ERR_CLASS_COUNT,           /* Number of message classes. */
     ERR_CLASS_MASK = 0xf,      /* Bitmask for class. */
     ERR_VERBOSITY_SHIFT = 4,   /* Shift count for verbosity. */
-    ERR_VERBOSITY_MASK = 0xf,  /* Bitmask for verbosity. */
+    ERR_VERBOSITY_MASK = 0xf   /* Bitmask for verbosity. */
   };
 
 /* If passed to msg() as CLASS, the return value will cause the message
@@ -97,7 +97,7 @@ void err_assert_fail(const char *expr, const char *file, int line);
 #undef assert
 
                               
-#define assert(expr) ( (void) ( expr ? 0 : \
+#define assert(expr) ( (void) ( expr ? (void) 0 : \
               err_assert_fail(__STRING(expr), __FILE__, __LINE__)) )
 
 
index a52414613b11c7915d7030d6bd103af212b1aeb3..aa92a323c83946e9686c84f46595dc70b4c67bb9 100644 (file)
@@ -186,7 +186,7 @@ fn_tilde_expand (const char *input)
 }
 #else /* !unix */
 char *
-fn_tilde_expand (char *input)
+fn_tilde_expand (const char *input)
 {
   return xstrdup (input);
 }
@@ -525,6 +525,7 @@ fn_basename (const char *filename)
 }
 #endif
 \f
+#if unix
 /* Returns the current working directory, as a malloc()'d string.
    From libc.info. */
 char *
@@ -544,6 +545,22 @@ fn_get_cwd (void)
       buffer = xmalloc (size);
     }
 }
+#else
+char *
+fn_get_cwd (void)
+{
+  int size = 2;
+  char *buffer = xmalloc (size);
+  if ( buffer) 
+  {
+    buffer[0]='.';
+    buffer[1]='\0';
+  }
+
+  return buffer;
+     
+}
+#endif
 \f
 /* Find out information about files. */
 
index 4ae0379344fea07f6d323df070a27b7b6c6885af..d9926f6d673d188dbe3328f700b99c12e282a024 100644 (file)
@@ -45,6 +45,7 @@
 #include "value-labels.h"
 #include "var.h"
 #include "vfm.h"
+#include "settings.h"
 
 #include "debug-print.h"
 
@@ -109,10 +110,22 @@ static struct frq_info st_name[frq_n_stats + 1] =
 };
 
 /* Percentiles to calculate. */
-static double *percentiles;
-static double *percentile_values;
+
+struct percentile
+{
+  double p;        /* the %ile to be calculated */
+  double value;    /* the %ile's value */
+  double x1;       /* The datum value <= the percentile */
+  double x2;       /* The datum value >= the percentile */
+  int flag;        
+  int flag2;       /* Set to 1 if this percentile value has been found */
+};
+
+static struct percentile *percentiles;
 static int n_percentiles;
 
+static int implicit_50th ; 
+
 /* Groups of statistics. */
 #define BI          BIT_INDEX
 #define frq_default                                                    \
@@ -202,7 +215,6 @@ internal_cmd_frequencies (void)
   int i;
 
   n_percentiles = 0;
-  percentile_values = NULL;
   percentiles = NULL;
 
   n_variables = 0;
@@ -566,15 +578,21 @@ postprocess_freq_tab (struct variable *v)
   sort (ft->missing, ft->n_missing, sizeof *ft->missing, compare, v);
 
   /* Summary statistics. */
-  ft->total_cases = ft->valid_cases = 0.0;
-  for (f = ft->valid; f < ft->valid + ft->n_valid; f++
+  ft->valid_cases = 0.0;
+  for(i = 0 ;  i < ft->n_valid ; ++i 
     {
-      ft->total_cases += f->c;
+      f = &ft->valid[i];
+      ft->valid_cases += f->c;
+
+    }
 
-      if ((v->type != NUMERIC || f->v.f != SYSMIS)
-          && (cmd.miss != FRQ_EXCLUDE || !is_user_missing (&f->v, v)))
-        ft->valid_cases += f->c;
+  ft->total_cases = ft->valid_cases ; 
+  for(i = 0 ;  i < ft->n_missing ; ++i ) 
+    {
+      f = &ft->missing[i];
+      ft->total_cases += f->c;
     }
+
 }
 
 /* Frees the frequency table for variable V. */
@@ -761,24 +779,20 @@ add_percentile (double x)
   int i;
 
   for (i = 0; i < n_percentiles; i++)
-    if (x <= percentiles[i])
+    if (x <= percentiles[i].p)
       break;
-  if (i >= n_percentiles || tokval != percentiles[i])
+
+  if (i >= n_percentiles || tokval != percentiles[i].p)
     {
       percentiles
         = pool_realloc (int_pool, percentiles,
-                        (n_percentiles + 1) * sizeof *percentiles);
-      percentile_values
-        = pool_realloc (int_pool, percentile_values,
-                        (n_percentiles + 1) * sizeof *percentile_values);
-      if (i < n_percentiles) 
-        {
+                        (n_percentiles + 1) * sizeof (struct percentile ));
+
+      if (i < n_percentiles)
           memmove (&percentiles[i + 1], &percentiles[i],
-                   (n_percentiles - i) * sizeof *percentiles);
-          memmove (&percentile_values[i + 1], &percentile_values[i],
-                   (n_percentiles - i) * sizeof *percentile_values);
-        }
-      percentiles[i] = x;
+                   (n_percentiles - i) * sizeof (struct percentile) );
+
+      percentiles[i].p = x;
       n_percentiles++;
     }
 }
@@ -797,10 +811,9 @@ frq_custom_percentiles (struct cmd_frequencies *cmd UNUSED)
   
   do
     {
-      if (tokval <= 0 || tokval >= 100)
+      if (tokval < 0 || tokval > 100)
        {
-         msg (SE, _("Percentiles must be greater than "
-                    "0 and less than 100."));
+         msg (SE, _("Percentiles must be between 0 and 100."));
          return 0;
        }
       
@@ -1170,30 +1183,120 @@ calc_stats (struct variable * v, double d[frq_n_stats])
 {
   double W = v->p.frq.tab.valid_cases;
   struct moments *m;
-  struct freq *f;
+  struct freq *f=0; 
   int most_often;
   double X_mode;
 
-  double cum_total;
+  double rank;
   int i = 0;
-  double previous_value;
+  int idx;
+  double *median_value;
 
   /* Calculate percentiles. */
-  cum_total = 0;
-  previous_value = SYSMIS;
-  for (f = v->p.frq.tab.valid; f < v->p.frq.tab.missing; f++)
+
+  /* If the 50th percentile was not explicitly requested then we must 
+     calculate it anyway --- it's the median */
+  median_value = 0 ;
+  for (i = 0; i < n_percentiles; i++) 
     {
-      cum_total += f->c ;
-      for (; i < n_percentiles; i++) 
+      if (percentiles[i].p == 0.5)
+       {
+         median_value = &percentiles[i].value;
+         break;
+       }
+    }
+
+  if ( 0 == median_value )  
+    {
+      add_percentile (0.5);
+      implicit_50th = 1;
+    }
+
+  for (i = 0; i < n_percentiles; i++) 
+    {
+      percentiles[i].flag = 0;
+      percentiles[i].flag2 = 0;
+    }
+
+  rank = 0;
+  for (idx = 0; idx < v->p.frq.tab.n_valid; ++idx)
+    {
+      static double prev_value = SYSMIS;
+      f = &v->p.frq.tab.valid[idx]; 
+      rank += f->c ;
+      for (i = 0; i < n_percentiles; i++) 
         {
-          if (cum_total / v->p.frq.tab.valid_cases < percentiles[i])
-            break;
+         double tp;
+         if ( percentiles[i].flag2  ) continue ; 
+
+         if ( get_algorithm() != COMPATIBLE ) 
+           tp = 
+             (v->p.frq.tab.valid_cases - 1) *  percentiles[i].p;
+         else
+           tp = 
+             (v->p.frq.tab.valid_cases + 1) *  percentiles[i].p - 1;
+
+         if ( percentiles[i].flag ) 
+           {
+             percentiles[i].x2 = f->v.f;
+             percentiles[i].x1 = prev_value;
+             percentiles[i].flag2 = 1;
+             continue;
+           }
+
+          if (rank >  tp ) 
+         {
+           if ( f->c > 1 && rank - (f->c - 1) > tp ) 
+             {
+               percentiles[i].x2 = percentiles[i].x1 = f->v.f;
+               percentiles[i].flag2 = 1;
+             }
+           else
+             {
+               percentiles[i].flag=1;
+             }
 
-          percentile_values[i] = previous_value;
+           continue;
+         }
         }
-      previous_value = f->v.f;
+      prev_value = f->v.f;
+    }
+
+  for (i = 0; i < n_percentiles; i++) 
+    {
+      /* Catches the case when p == 100% */
+      if ( ! percentiles[i].flag2 ) 
+       percentiles[i].x1 = percentiles[i].x2 = f->v.f;
+
+      /*
+      printf("percentile %d (p==%.2f); X1 = %g; X2 = %g\n",
+            i,percentiles[i].p,percentiles[i].x1,percentiles[i].x2);
+      */
+    }
+
+  for (i = 0; i < n_percentiles; i++) 
+    {
+      struct freq_tab *ft = &v->p.frq.tab;
+      double s;
+
+      double dummy;
+      if ( get_algorithm() != COMPATIBLE ) 
+       {
+         s = modf((ft->valid_cases - 1) *  percentiles[i].p , &dummy);
+       }
+      else
+       {
+         s = modf((ft->valid_cases + 1) *  percentiles[i].p -1, &dummy);
+       }
+
+      percentiles[i].value = percentiles[i].x1 + 
+       ( percentiles[i].x2 - percentiles[i].x1) * s ; 
+
+      if ( percentiles[i].p == 0.50) 
+       median_value = &percentiles[i].value; 
     }
 
+
   /* Calculate the mode. */
   most_often = -1;
   X_mode = SYSMIS;
@@ -1227,7 +1330,7 @@ calc_stats (struct variable * v, double d[frq_n_stats])
   d[frq_max] = v->p.frq.tab.valid[v->p.frq.tab.n_valid - 1].v.f;
   d[frq_mode] = X_mode;
   d[frq_range] = d[frq_max] - d[frq_min];
-  d[frq_median] = SYSMIS;
+  d[frq_median] = *median_value;
   d[frq_sum] = d[frq_mean] * W;
   d[frq_stddev] = sqrt (d[frq_variance]);
   d[frq_semean] = d[frq_stddev] / sqrt (W);
@@ -1243,6 +1346,11 @@ dump_statistics (struct variable * v, int show_varname)
   struct tab_table *t;
   int i, r;
 
+  int n_explicit_percentiles = n_percentiles;
+
+  if ( implicit_50th && n_percentiles > 0 ) 
+    --n_percentiles;
+
   if (v->type == ALPHA)
     return;
   if (v->p.frq.tab.n_valid == 0)
@@ -1253,29 +1361,45 @@ dump_statistics (struct variable * v, int show_varname)
     }
   calc_stats (v, stat_value);
 
-  t = tab_create (2, n_stats + n_percentiles, 0);
+  t = tab_create (3, n_stats + n_explicit_percentiles + 2, 0);
   tab_dim (t, tab_natural_dimensions);
-  tab_vline (t, TAL_1 | TAL_SPACING, 1, 0, n_stats - 1);
-  for (i = r = 0; i < frq_n_stats; i++)
+
+  tab_box (t, TAL_1, TAL_1, -1, -1 , 0 , 0 , 2, tab_nr(t) - 1) ;
+
+
+  tab_vline (t, TAL_1 , 2, 0, tab_nr(t) - 1);
+  tab_vline (t, TAL_1 | TAL_SPACING , 1, 0, tab_nr(t) - 1 ) ;
+  
+  r=2; /* N missing and N valid are always dumped */
+
+  for (i = 0; i < frq_n_stats; i++)
     if (stats & BIT_INDEX (i))
       {
        tab_text (t, 0, r, TAB_LEFT | TAT_TITLE,
                      gettext (st_name[i].s10));
-       tab_float (t, 1, r, TAB_NONE, stat_value[i], 11, 3);
+       tab_float (t, 2, r, TAB_NONE, stat_value[i], 11, 3);
        r++;
       }
 
-  for (i = 0; i < n_percentiles; i++, r++) 
-    {
-      struct string ds;
+  tab_text (t, 0, 0, TAB_LEFT | TAT_TITLE, _("N"));
+  tab_text (t, 1, 0, TAB_LEFT | TAT_TITLE, _("Valid"));
+  tab_text (t, 1, 1, TAB_LEFT | TAT_TITLE, _("Missing"));
+
+  tab_float(t, 2, 0, TAB_NONE, v->p.frq.tab.valid_cases, 11, 0);
+  tab_float(t, 2, 1, TAB_NONE, 
+           v->p.frq.tab.total_cases - v->p.frq.tab.valid_cases, 11, 0);
 
-      ds_init (gen_pool, &ds, 20);
-      ds_printf (&ds, "%s %d", _("Percentile"), (int) (percentiles[i] * 100));
 
-      tab_text (t, 0, r, TAB_LEFT | TAT_TITLE, ds.string);
-      tab_float (t, 1, r, TAB_NONE, percentile_values[i], 11, 3);
+  for (i = 0; i < n_explicit_percentiles; i++, r++) 
+    {
+      if ( i == 0 ) 
+       { 
+         tab_text (t, 0, r, TAB_LEFT | TAT_TITLE, _("Percentiles"));
+       }
+
+      tab_float (t, 1, r, TAB_LEFT, percentiles[i].p * 100, 3, 0 );
+      tab_float (t, 2, r, TAB_NONE, percentiles[i].value, 11, 3);
 
-      ds_destroy (&ds);
     }
 
   tab_columns (t, SOM_COL_DOWN, 1);
@@ -1288,7 +1412,8 @@ dump_statistics (struct variable * v, int show_varname)
     }
   else
     tab_flags (t, SOMF_NO_TITLE);
-  
+
+
   tab_submit (t);
 }
 /* 
index 23ce64bf2154b20098dfd2a44e7cde9e6d469aa3..1561d79319c15ddcd7dc12d8a391ac1de34f3ecd 100644 (file)
@@ -65,7 +65,7 @@ enum
 
     T_FIRST_KEYWORD = T_AND,
     T_LAST_KEYWORD = T_WITH,
-    T_N_KEYWORDS = T_LAST_KEYWORD - T_FIRST_KEYWORD + 1,
+    T_N_KEYWORDS = T_LAST_KEYWORD - T_FIRST_KEYWORD + 1
   };
 
 
index 987daa8f638a7e1b395a7c87ed3a06726320bcfe..b0582c1b297a5e28bf298be6471869acbf95a9b8 100644 (file)
@@ -28,6 +28,7 @@
 #include "glob.h"
 #include "lexer.h"
 #include "output.h"
+#include "settings.h"
 #include <signal.h>
 
 #include <stdlib.h>
@@ -105,6 +106,7 @@ parse_script (void)
 static int
 execute_command (void)
 {
+  int result;
   /* Read the command's first token.
      We may hit end of file.
      If so, give the line reader a chance to proceed to the next file.
@@ -123,7 +125,12 @@ execute_command (void)
 
   /* Parse the command. */
   getl_prompt = GETL_PRPT_CONTINUATION;
-  return cmd_parse ();
+  result =  cmd_parse ();
+  /* Unset the /ALGORITHM subcommand if it was used */
+  unset_cmd_algorithm ();
+
+  return result;
 }
 
 /* Print an error message corresponding to the command return code
index aaf3472799f10d78f49223802923eff117a27553..707cf2728bc09028e627f3ba159858ad2546ecc7 100644 (file)
--- a/src/q2c.c
+++ b/src/q2c.c
@@ -1727,6 +1727,21 @@ dump_parser (int persistent)
        outdent ();
       }
   }
+  /* Now deal with the /ALGORITHM subcommand implicit to all commands */
+  dump(1,"else if ( get_syntax() != COMPATIBLE && lex_match_id(\"ALGORITHM\"))");
+  dump(1,"{");
+
+  dump (0, "lex_match ('=');");
+
+  dump(1,"if (lex_match_id(\"COMPATIBLE\"))");
+  dump(0,"set_cmd_algorithm(COMPATIBLE);");
+  outdent();
+  dump(1,"else if (lex_match_id(\"ENHANCED\"))");
+  dump(0,"set_cmd_algorithm(ENHANCED);");
+
+  dump (-1, "}");
+  outdent ();
+
   
   dump (1, "if (!lex_match ('/'))");
   dump (0, "break;");
@@ -1909,6 +1924,9 @@ dump_header (void)
   dump (0, "   Generated by q2c from %s on %s.", ifn, timep);
   dump (0, "   Do not modify!");
   dump (0, " */");
+
+  dump (0, nullstr);
+  dump (0, "#include \"settings.h\"");
   dump (0, nullstr);
 }
 
@@ -2000,6 +2018,7 @@ main (int argc, char *argv[])
 
   dump_header ();
 
+
   indent = 0;
   dump (0, "#line %d \"%s\"", ln + 1, ifn);
   while (get_line ())
@@ -2033,6 +2052,7 @@ main (int argc, char *argv[])
          dump (0, "#include \"lexer.h\"");
          dump (0, "#include \"str.h\"");
          dump (0, "#include \"var.h\"");
+
          dump (0, nullstr);
        }
       else if (!strcmp (directive, "declarations"))
@@ -2058,6 +2078,8 @@ main (int argc, char *argv[])
       dump (0, "#line %d \"%s\"", ln + 1, ifn);
     }
 
+
+
   return EXIT_SUCCESS;
 }
 
index b42786a6aeaff4cb0f76762dfa071690dc8f949c..8d9afd61cf455776a12992a7ae2327d9d96e6cc2 100644 (file)
--- a/src/set.q
+++ b/src/set.q
@@ -84,7 +84,6 @@
 #else /* !HAVE_TERMCAP_H */
 int tgetent (char *, const char *);
 int tgetnum (const char *);
-int tgetflag (const char *);
 #endif /* !HAVE_TERMCAP_H */
 #endif /* !HAVE_LIBTERMCAP */
 
@@ -1021,10 +1020,10 @@ set_viewport(int sig_num UNUSED)
           not available. It's supposed to do it, but not all platforms 
           do (eg Cygwin) .
        */
-        if ( tgetflag("li")) 
+        if ( -1 != tgetnum("li")) 
          set_viewlength = tgetnum ("li");
 
-        if ( tgetflag("co")) 
+        if ( -1 != tgetnum("co")) 
          set_viewwidth = tgetnum ("co") - 1;
       }
   }
@@ -1335,6 +1334,56 @@ seed_is_set(unsigned long *seed)
 }
 
 
+static int global_algorithm = ENHANCED;
+static int cmd_algorithm = ENHANCED;
+static int *algorithm = &global_algorithm;
+
+static int syntax = ENHANCED;
+
+/* Set the algorithm option globally */
+void 
+set_algorithm(int x)
+{
+  global_algorithm = x;
+}
+
+/* Set the algorithm option for this command only */
+void 
+set_cmd_algorithm(int x)
+{
+  cmd_algorithm = x; 
+  algorithm = &cmd_algorithm;
+}
+
+/* Unset the algorithm option for this command */
+void
+unset_cmd_algorithm(void)
+{
+  algorithm = &global_algorithm;
+}
+
+/* Return the current algorithm setting */
+int
+get_algorithm(void)
+{
+  return *algorithm;
+}
+
+/* Set the syntax option */
+void 
+set_syntax(int x)
+{
+  syntax = x;
+}
+
+/* Get the current syntax setting */
+int
+get_syntax(void)
+{
+  return syntax;
+}
+
+
 /*
    Local Variables:
    mode: c
index 5ca015263531f8685b48ab93be4fc0a6fb4201ac..14f902ec989d5d2c2129f1f26d331721fadffc5e 100644 (file)
@@ -234,4 +234,26 @@ const char *get_pager(void);
 int seed_is_set(unsigned long *seed);
 
 
+enum {ENHANCED,COMPATIBLE};
+
+
+/* Set the algorithm option globally */
+void set_algorithm(int x);
+
+/* Set the algorithm option for this command only */
+void set_cmd_algorithm(int x);
+
+/* Unset the algorithm option for this command */
+void unset_cmd_algorithm(void);
+
+/* Return the current algorithm setting */
+int get_algorithm(void);
+
+/* Set the syntax option */
+void set_syntax(int x);
+
+/* Get the current syntax setting */
+int get_syntax(void);
+
+
 #endif /* !settings_h */
index 21b23faccf040a9282fe97a3747feb4ba2613a4b..faf2cd2bd55d5945b09a1f0ede395f5e47c7fe10 100644 (file)
--- a/src/var.h
+++ b/src/var.h
@@ -433,7 +433,7 @@ enum
     PV_NUMERIC = 0020,         /* Vars must be numeric. */
     PV_STRING = 0040,          /* Vars must be string. */
     PV_SAME_TYPE = 00100,      /* All vars must be the same type. */
-    PV_NO_SCRATCH = 00200,     /* Disallow scratch variables. */
+    PV_NO_SCRATCH = 00200      /* Disallow scratch variables. */
   };
 
 struct variable *parse_variable (void);
index c45621ae8af41f992990263ddc9de9d783a891b1..7bfa7f34b8eca20ddd6f20cb8355d7f14e279865 100644 (file)
@@ -1,3 +1,8 @@
+Sat Mar 27 11:29:06 WST 2004 John Darrington <john@darrington.wattle.id.au>
+
+       * bugs/get.sh Added regression test for a bug in loading a dictionary
+       with the GET command.
+
 Tue Mar 30 22:10:08 2004  Ben Pfaff  <blp@gnu.org>
 
        * Makefile.am: (TESTS) Add bugs/multipass.sh.
index fe8a2cba3b928120d4bac7ef09a610dde1782440..1d8f3c0286feeccc9bfe3fe8468cdb06063d2819 100644 (file)
@@ -13,7 +13,6 @@ TESTS = command/aggregate.sh \
        command/lag.sh \
        command/list.sh \
        command/loop.sh \
-       command/percentiles.sh \
        command/print.sh \
        command/sample.sh \
        command/sort.sh \
@@ -34,6 +33,7 @@ TESTS = command/aggregate.sh \
        bugs/alpha-freq.sh \
        bugs/compute-fmt.sh \
        bugs/double-frequency.sh \
+       bugs/get.sh \
        bugs/html-frequency.sh \
        bugs/crosstabs.sh \
        bugs/data-crash.sh \
@@ -47,7 +47,9 @@ TESTS = command/aggregate.sh \
        xforms/expressions.sh \
        stats/descript-basic.sh \
        stats/descript-missing.sh \
-       stats/moments.sh
+       stats/moments.sh \
+       stats/percentiles-enhanced.sh \
+       stats/percentiles-compatible.sh
 
 noinst_PROGRAMS = gengarbage
 
diff --git a/tests/bugs/get.sh b/tests/bugs/get.sh
new file mode 100755 (executable)
index 0000000..3a57df0
--- /dev/null
@@ -0,0 +1,110 @@
+#!/bin/sh
+
+# This program tests for a bug which caused
+# the second procedure after GET FILE to corrupt it's output
+
+
+TEMPDIR=/tmp/pspp-tst-$$
+
+here=`pwd`;
+
+# ensure that top_srcdir is absolute
+cd $top_srcdir; top_srcdir=`pwd`
+
+export STAT_CONFIG_PATH=$top_srcdir/config
+
+
+cleanup()
+{
+     rm -rf $TEMPDIR
+}
+
+
+fail()
+{
+    echo $activity
+    echo FAILED
+    cleanup;
+    exit 1;
+}
+
+
+no_result()
+{
+    echo $activity
+    echo NO RESULT;
+    cleanup;
+    exit 2;
+}
+
+pass()
+{
+    cleanup;
+    exit 0;
+}
+
+mkdir -p $TEMPDIR
+
+cd $TEMPDIR
+
+activity="create program"
+cat > $TEMPDIR/prog.sps <<EOF
+DATA LIST LIST NOTABLE /location * editor * shell * freq * .
+BEGIN DATA.
+    1.00     1.00    1.0     2.00
+    1.00     1.00    2.0    30.00
+    1.00     2.00    1.0     8.00
+    1.00     2.00    2.0    20.00
+    2.00     1.00    1.0     2.00
+    2.00     1.00    2.0    22.00
+    2.00     2.00    1.0     1.00
+    2.00     2.00    2.0     3.00
+END DATA.
+
+SAVE /OUTFILE='$TEMPDIR/foo.sav'.
+
+GET /FILE='$TEMPDIR/foo.sav'.
+
+* This one's ok
+LIST.
+
+* But this one get rubbish
+LIST.
+
+EOF
+if [ $? -ne 0 ] ; then no_result ; fi
+
+activity="run program"
+$SUPERVISOR $here/../src/pspp -o raw-ascii $TEMPDIR/prog.sps
+if [ $? -ne 0 ] ; then no_result ; fi
+
+
+activity="compare output"
+diff -b -B -w $TEMPDIR/pspp.list - << EOF
+LOCATION   EDITOR    SHELL     FREQ
+ -------- -------- -------- --------
+     1.00     1.00     1.00     2.00 
+     1.00     1.00     2.00    30.00 
+     1.00     2.00     1.00     8.00 
+     1.00     2.00     2.00    20.00 
+     2.00     1.00     1.00     2.00 
+     2.00     1.00     2.00    22.00 
+     2.00     2.00     1.00     1.00 
+     2.00     2.00     2.00     3.00 
+
+LOCATION   EDITOR    SHELL     FREQ
+ -------- -------- -------- --------
+     1.00     1.00     1.00     2.00 
+     1.00     1.00     2.00    30.00 
+     1.00     2.00     1.00     8.00 
+     1.00     2.00     2.00    20.00 
+     2.00     1.00     1.00     2.00 
+     2.00     1.00     2.00    22.00 
+     2.00     2.00     1.00     1.00 
+     2.00     2.00     2.00     3.00 
+EOF
+if [ $? -ne 0 ] ; then fail ; fi
+
+pass;
diff --git a/tests/command/percentiles.sh b/tests/command/percentiles.sh
deleted file mode 100755 (executable)
index 83cace7..0000000
+++ /dev/null
@@ -1,119 +0,0 @@
-#!/bin/sh
-
-# This program tests the PERCENTILES subcommand of the FREQUENCIES cmd
-
-TEMPDIR=/tmp/pspp-tst-$$
-
-here=`pwd`;
-
-# ensure that top_srcdir is absolute
-cd $top_srcdir; top_srcdir=`pwd`
-
-export STAT_CONFIG_PATH=$top_srcdir/config
-
-
-cleanup()
-{
-     rm -rf $TEMPDIR
-}
-
-
-fail()
-{
-    echo $activity
-    echo FAILED
-    cleanup;
-    exit 1;
-}
-
-
-no_result()
-{
-    echo $activity
-    echo NO RESULT;
-    cleanup;
-    exit 2;
-}
-
-pass()
-{
-    cleanup;
-    exit 0;
-}
-
-mkdir -p $TEMPDIR
-
-cd $TEMPDIR
-
-activity="create prog"
-cat > $TEMPDIR/percents.stat <<EOF
-data list free /z x(f3.2) y(f3.0) d(a30).
-begin data.
-1 3 4 apples
-2 5 6 pairs
-3 4 5 bannanas
-4 3 9 pairs
-5 1 2 pairs
-6 4 5 apricots
-7 4 4 bannanas
-8 4 5 apples
-9 3 3 peaches
-10 2 3 coconuts
-end data.
-
-frequencies z  /statistics=all /percentiles = 5,10,30,90.
-
-finish.
-
-EOF
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
-activity="run prog"
-$SUPERVISOR $here/../src/pspp -o raw-ascii $TEMPDIR/percents.stat
-if [ $? -ne 0 ] ; then no_result ; fi
-
-activity="compare output"
-diff -b -B $TEMPDIR/pspp.list - <<EOF
-1.1 FREQUENCIES.  Z: 
-+-----------+--------+---------+--------+--------+--------+
-|           |        |         |        |  Valid |   Cum  |
-|Value Label|  Value |Frequency| Percent| Percent| Percent|
-#===========#========#=========#========#========#========#
-|           |     .01|        1|    10.0|    10.0|    10.0|
-|           |     .02|        1|    10.0|    10.0|    20.0|
-|           |     .03|        1|    10.0|    10.0|    30.0|
-|           |     .04|        1|    10.0|    10.0|    40.0|
-|           |     .05|        1|    10.0|    10.0|    50.0|
-|           |     .06|        1|    10.0|    10.0|    60.0|
-|           |     .07|        1|    10.0|    10.0|    70.0|
-|           |     .08|        1|    10.0|    10.0|    80.0|
-|           |     .09|        1|    10.0|    10.0|    90.0|
-|           |     .10|        1|    10.0|    10.0|   100.0|
-#===========#========#=========#========#========#========#
-|               Total|       10|   100.0|   100.0|        |
-+--------------------+---------+--------+--------+--------+
-
-Mean            .055
-S.E. Mean       .010
-Median          .   
-Mode            .   
-Std Dev         .030
-Variance        .001
-Kurtosis      -1.200
-S.E. Kurt      1.334
-Skewness        .000
-S.E. Skew       .687
-Range           .090
-Minimum         .010
-Maximum         .100
-Sum             .550
-Percentile 5    .   
-Percentile 10   .010
-Percentile 29   .020
-Percentile 90   .090
-EOF
-if [ $? -ne 0 ] ; then fail ; fi
-
-
-pass;
index 9243cb32a0f1ccf074e7b48a70ceced2d6de440d..8eb2cf9265cc910d61dcedbf2cb2ab47452796d7 100755 (executable)
@@ -137,20 +137,24 @@ diff -B -b $TEMPDIR/pspp.list - <<EOF
 |      94|       1|  0|100|
 +--------+--------+---+---+
 
-Mean         31.515
-S.E. Mean      .405
-Median         .   
-Mode         21.000
-Std Dev      10.937
-Variance    119.608
-Kurtosis      2.411
-S.E. Kurt      .181
-Skewness      1.345
-S.E. Skew      .090
-Range        76.000
-Minimum      18.000
-Maximum      94.000
-Sum       23006.000
++-----------------+---------+
+|N         Valid  |      730|
+|          Missing|        0|
+|Mean             |   31.515|
+|S.E. Mean        |     .405|
+|Median           |   28.500|
+|Mode             |   21.000|
+|Std Dev          |   10.937|
+|Variance         |  119.608|
+|Kurtosis         |    2.411|
+|S.E. Kurt        |     .181|
+|Skewness         |    1.345|
+|S.E. Skew        |     .090|
+|Range            |   76.000|
+|Minimum          |   18.000|
+|Maximum          |   94.000|
+|Sum              |23006.000|
++-----------------+---------+
 EOF
 if [ $? -ne 0 ] ; then fail ; fi
 
diff --git a/tests/stats/percentiles-compatible.sh b/tests/stats/percentiles-compatible.sh
new file mode 100755 (executable)
index 0000000..74afea4
--- /dev/null
@@ -0,0 +1,108 @@
+#! /bin/sh
+
+# Tests calculation of percentiles with the 
+# COMPATIBLE algorithm set.
+
+TEMPDIR=/tmp/pspp-tst-$$
+
+here=`pwd`;
+
+# ensure that top_srcdir is absolute
+cd $top_srcdir; top_srcdir=`pwd`
+
+export STAT_CONFIG_PATH=$top_srcdir/config
+
+
+cleanup()
+{
+     rm -rf $TEMPDIR
+     :
+}
+
+
+fail()
+{
+    echo $activity
+    echo FAILED
+    cleanup;
+    exit 1;
+}
+
+
+no_result()
+{
+    echo $activity
+    echo NO RESULT;
+    cleanup;
+    exit 2;
+}
+
+pass()
+{
+    cleanup;
+    exit 0;
+}
+
+mkdir -p $TEMPDIR
+
+cd $TEMPDIR
+
+
+i=1;
+
+activity="create program $i"
+cat > $TEMPDIR/prog.sps <<EOF
+DATA LIST LIST notable /x * .
+BEGIN DATA.
+1 
+2 
+3 
+4 
+5
+END DATA.
+
+FREQUENCIES 
+       VAR=x
+       /ALGORITHM=COMPATIBLE
+       /PERCENTILES = 0 25 50 75 100
+
+EOF
+if [ $? -ne 0 ] ; then no_result; fi
+
+activity="run program $i"
+$SUPERVISOR $here/../src/pspp -o raw-ascii $TEMPDIR/prog.sps
+if [ $? -ne 0 ] ; then no_result ; fi
+
+activity="compare output $i"
+diff -B -b $TEMPDIR/pspp.list - <<EOF
+1.1 FREQUENCIES.  X: 
++-----------+--------+---------+--------+--------+--------+
+|           |        |         |        |  Valid |   Cum  |
+|Value Label|  Value |Frequency| Percent| Percent| Percent|
+#===========#========#=========#========#========#========#
+|           |    1.00|        1|    20.0|    20.0|    20.0|
+|           |    2.00|        1|    20.0|    20.0|    40.0|
+|           |    3.00|        1|    20.0|    20.0|    60.0|
+|           |    4.00|        1|    20.0|    20.0|    80.0|
+|           |    5.00|        1|    20.0|    20.0|   100.0|
+#===========#========#=========#========#========#========#
+|               Total|        5|   100.0|   100.0|        |
++--------------------+---------+--------+--------+--------+
+
++-------------------+-----+
+|N           Valid  |    5|
+|            Missing|    0|
+|Mean               |3.000|
+|Std Dev            |1.581|
+|Minimum            |1.000|
+|Maximum            |5.000|
+|Percentiles 0      |1.000|
+|            25     |1.500|
+|            50     |3.000|
+|            75     |4.500|
+|            100    |5.000|
++-------------------+-----+
+EOF
+if [ $? -ne 0 ] ; then fail ; fi
+
+pass;
diff --git a/tests/stats/percentiles-enhanced.sh b/tests/stats/percentiles-enhanced.sh
new file mode 100755 (executable)
index 0000000..8cda085
--- /dev/null
@@ -0,0 +1,291 @@
+#! /bin/sh
+
+# Tests calculation of percentiles with the 
+# ENHANCED algorithm set.
+
+TEMPDIR=/tmp/pspp-tst-$$
+
+here=`pwd`;
+
+# ensure that top_srcdir is absolute
+cd $top_srcdir; top_srcdir=`pwd`
+
+export STAT_CONFIG_PATH=$top_srcdir/config
+
+
+cleanup()
+{
+     rm -rf $TEMPDIR
+     :
+}
+
+
+fail()
+{
+    echo $activity
+    echo FAILED
+    cleanup;
+    exit 1;
+}
+
+
+no_result()
+{
+    echo $activity
+    echo NO RESULT;
+    cleanup;
+    exit 2;
+}
+
+pass()
+{
+    cleanup;
+    exit 0;
+}
+
+mkdir -p $TEMPDIR
+
+cd $TEMPDIR
+
+
+i=1;
+
+activity="create program $i"
+cat > $TEMPDIR/prog.sps <<EOF
+DATA LIST LIST notable /x * .
+BEGIN DATA.
+1 
+2 
+3 
+4 
+5
+END DATA.
+
+FREQUENCIES 
+       VAR=x
+       /PERCENTILES = 0 25 50 75 100
+
+EOF
+if [ $? -ne 0 ] ; then no_result; fi
+
+activity="run program $i"
+$SUPERVISOR $here/../src/pspp -o raw-ascii $TEMPDIR/prog.sps
+if [ $? -ne 0 ] ; then no_result ; fi
+
+activity="compare output $i"
+diff -B -b $TEMPDIR/pspp.list - <<EOF
+1.1 FREQUENCIES.  X: 
++-----------+--------+---------+--------+--------+--------+
+|           |        |         |        |  Valid |   Cum  |
+|Value Label|  Value |Frequency| Percent| Percent| Percent|
+#===========#========#=========#========#========#========#
+|           |    1.00|        1|    20.0|    20.0|    20.0|
+|           |    2.00|        1|    20.0|    20.0|    40.0|
+|           |    3.00|        1|    20.0|    20.0|    60.0|
+|           |    4.00|        1|    20.0|    20.0|    80.0|
+|           |    5.00|        1|    20.0|    20.0|   100.0|
+#===========#========#=========#========#========#========#
+|               Total|        5|   100.0|   100.0|        |
++--------------------+---------+--------+--------+--------+
+
++-------------------+-----+
+|N           Valid  |    5|
+|            Missing|    0|
+|Mean               |3.000|
+|Std Dev            |1.581|
+|Minimum            |1.000|
+|Maximum            |5.000|
+|Percentiles 0      |1.000|
+|            25     |2.000|
+|            50     |3.000|
+|            75     |4.000|
+|            100    |5.000|
++-------------------+-----+
+EOF
+if [ $? -ne 0 ] ; then fail ; fi
+
+
+
+i=$[$i+1];
+
+activity="create program $i"
+cat > $TEMPDIR/prog.sps <<EOF
+DATA LIST LIST notable /x * f *.
+BEGIN DATA.
+1 2
+2 2
+3 2
+4 1
+4 1
+5 1
+5 1
+END DATA.
+
+WEIGHT BY f.
+
+FREQUENCIES 
+       VAR=x
+       /PERCENTILES = 0 25 50 75 100
+
+EOF
+if [ $? -ne 0 ] ; then no_result; fi
+
+
+activity="run program $i"
+$SUPERVISOR $here/../src/pspp -o raw-ascii $TEMPDIR/prog.sps
+if [ $? -ne 0 ] ; then no_result ; fi
+
+activity="compare output $i"
+diff -B -b $TEMPDIR/pspp.list - <<EOF
+1.1 FREQUENCIES.  X: 
++-----------+--------+---------+--------+--------+--------+
+|           |        |         |        |  Valid |   Cum  |
+|Value Label|  Value |Frequency| Percent| Percent| Percent|
+#===========#========#=========#========#========#========#
+|           |    1.00|        2|    20.0|    20.0|    20.0|
+|           |    2.00|        2|    20.0|    20.0|    40.0|
+|           |    3.00|        2|    20.0|    20.0|    60.0|
+|           |    4.00|        2|    20.0|    20.0|    80.0|
+|           |    5.00|        2|    20.0|    20.0|   100.0|
+#===========#========#=========#========#========#========#
+|               Total|       10|   100.0|   100.0|        |
++--------------------+---------+--------+--------+--------+
+
++-------------------+-----+
+|N           Valid  |   10|
+|            Missing|    0|
+|Mean               |3.000|
+|Std Dev            |1.491|
+|Minimum            |1.000|
+|Maximum            |5.000|
+|Percentiles 0      |1.000|
+|            25     |2.000|
+|            50     |3.000|
+|            75     |4.000|
+|            100    |5.000|
++-------------------+-----+
+EOF
+if [ $? -ne 0 ] ; then fail ; fi
+
+
+
+i=$[$i+1];
+
+activity="create program $i"
+cat > $TEMPDIR/prog.sps <<EOF
+DATA LIST LIST notable /x * f *.
+BEGIN DATA.
+1 1
+3 2
+4 1
+5 1
+5 1
+END DATA.
+
+WEIGHT BY f.
+
+FREQUENCIES 
+       VAR=x
+       /PERCENTILES = 0 25 50 75 100
+
+EOF
+if [ $? -ne 0 ] ; then no_result; fi
+
+
+activity="run program $i"
+$SUPERVISOR $here/../src/pspp -o raw-ascii $TEMPDIR/prog.sps
+if [ $? -ne 0 ] ; then no_result ; fi
+
+activity="compare output $i"
+diff -B -b $TEMPDIR/pspp.list - <<EOF
+1.1 FREQUENCIES.  X: 
++-----------+--------+---------+--------+--------+--------+
+|           |        |         |        |  Valid |   Cum  |
+|Value Label|  Value |Frequency| Percent| Percent| Percent|
+#===========#========#=========#========#========#========#
+|           |    1.00|        1|    16.7|    16.7|    16.7|
+|           |    3.00|        2|    33.3|    33.3|    50.0|
+|           |    4.00|        1|    16.7|    16.7|    66.7|
+|           |    5.00|        2|    33.3|    33.3|   100.0|
+#===========#========#=========#========#========#========#
+|               Total|        6|   100.0|   100.0|        |
++--------------------+---------+--------+--------+--------+
+
++-------------------+-----+
+|N           Valid  |    6|
+|            Missing|    0|
+|Mean               |3.500|
+|Std Dev            |1.517|
+|Minimum            |1.000|
+|Maximum            |5.000|
+|Percentiles 0      |1.000|
+|            25     |3.000|
+|            50     |3.500|
+|            75     |4.750|
+|            100    |5.000|
++-------------------+-----+
+EOF
+if [ $? -ne 0 ] ; then fail ; fi
+
+i=$[$i+1];
+
+activity="create program $i"
+cat > $TEMPDIR/prog.sps <<EOF
+DATA LIST LIST notable /x * f *.
+BEGIN DATA.
+1 1
+3 2
+4 1
+5 1
+5 1
+99 4
+END DATA.
+
+MISSING VALUE x (99.0) .
+WEIGHT BY f.
+
+FREQUENCIES 
+       VAR=x
+       /PERCENTILES = 0 25 50 75 100
+
+EOF
+if [ $? -ne 0 ] ; then no_result; fi
+
+
+activity="run program $i"
+$SUPERVISOR $here/../src/pspp -o raw-ascii $TEMPDIR/prog.sps
+if [ $? -ne 0 ] ; then no_result ; fi
+
+activity="compare output $i"
+diff -B -b $TEMPDIR/pspp.list - <<EOF
+1.1 FREQUENCIES.  X: 
++-----------+--------+---------+--------+--------+--------+
+|           |        |         |        |  Valid |   Cum  |
+|Value Label|  Value |Frequency| Percent| Percent| Percent|
+#===========#========#=========#========#========#========#
+|           |    1.00|        1|    10.0|    16.7|    16.7|
+|           |    3.00|        2|    20.0|    33.3|    50.0|
+|           |    4.00|        1|    10.0|    16.7|    66.7|
+|           |    5.00|        2|    20.0|    33.3|   100.0|
+|           |   99.00|        4|    40.0| Missing|        |
+#===========#========#=========#========#========#========#
+|               Total|       10|   100.0|   100.0|        |
++--------------------+---------+--------+--------+--------+
+
++-------------------+-----+
+|N           Valid  |    6|
+|            Missing|    4|
+|Mean               |3.500|
+|Std Dev            |1.517|
+|Minimum            |1.000|
+|Maximum            |5.000|
+|Percentiles 0      |1.000|
+|            25     |3.000|
+|            50     |3.500|
+|            75     |4.750|
+|            100    |5.000|
++-------------------+-----+
+EOF
+if [ $? -ne 0 ] ; then fail ; fi
+
+pass;
\ No newline at end of file