? diffs
? lb-filter.c
? lb-filter.h
? lb-interactive.c
? lb-interactive.h
? lb.patch
? leaks.patch
? pspp.list
? repeat.c,d
? sig.patch
? ss.patch
? doc/.dirstamp
? lib/gsl-extras/.deps
? lib/gsl-extras/.dirstamp
? lib/gtksheet/.deps
? lib/gtksheet/.dirstamp
? lib/linreg/.deps
? lib/linreg/.dirstamp
? m4/Makefile.am
? m4/codeset.m4
? m4/gettext.m4
? m4/glibc2.m4
? m4/glibc21.m4
? m4/iconv.m4
? m4/intdiv0.m4
? m4/intmax.m4
? m4/inttypes-pri.m4
? m4/inttypes.m4
? m4/inttypes_h.m4
? m4/isc-posix.m4
? m4/lcmessage.m4
? m4/lib-ld.m4
? m4/lib-link.m4
? m4/lib-prefix.m4
? m4/longdouble.m4
? m4/longlong.m4
? m4/nls.m4
? m4/po.m4
? m4/printf-posix.m4
? m4/progtest.m4
? m4/signed.m4
? m4/size_max.m4
? m4/stdint_h.m4
? m4/uintmax_t.m4
? m4/ulonglong.m4
? m4/wchar_t.m4
? m4/wint_t.m4
? m4/xsize.m4
? src/data/.deps
? src/data/.dirstamp
? src/language/.deps
? src/language/.dirstamp
? src/language/control/.deps
? src/language/control/.dirstamp
? src/language/data-io/.deps
? src/language/data-io/.dirstamp
? src/language/data-io/file-handle.c
? src/language/data-io/list.c
? src/language/dictionary/.deps
? src/language/dictionary/.dirstamp
? src/language/expressions/.deps
? src/language/expressions/.dirstamp
? src/language/lexer/.deps
? src/language/lexer/.dirstamp
? src/language/lexer/q2c
? src/language/stats/.deps
? src/language/stats/.dirstamp
? src/language/stats/correlations.c
? src/language/stats/crosstabs.c
? src/language/stats/examine.c
? src/language/stats/frequencies.c
? src/language/stats/means.c
? src/language/stats/oneway.c
? src/language/stats/rank.c
? src/language/stats/regression.c
? src/language/stats/t-test.c
? src/language/tests/.deps
? src/language/tests/.dirstamp
? src/language/utilities/.deps
? src/language/utilities/.dirstamp
? src/language/utilities/set.c
? src/language/xforms/.deps
? src/language/xforms/.dirstamp
? src/libpspp/.deps
? src/libpspp/.dirstamp
? src/libpspp/version.c
? src/math/.deps
? src/math/.dirstamp
? src/math/linreg/.deps
? src/math/linreg/.dirstamp
? src/math/ts/.deps
? src/math/ts/.dirstamp
? src/output/.deps
? src/output/.dirstamp
? src/output/charts/.deps
? src/output/charts/.dirstamp
? src/ui/.deps
? src/ui/.dirstamp
? src/ui/gui/.deps
? src/ui/gui/.dirstamp
? src/ui/gui/psppire
? src/ui/terminal/.deps
? src/ui/terminal/.dirstamp
? src/ui/terminal/pspp
? tests/formats/.deps
? tests/formats/.dirstamp
? tests/formats/inexactify
? tests/libpspp/.deps
? tests/libpspp/.dirstamp
? tests/libpspp/ll-test
? tests/libpspp/llx-test
Index: po/de.po
===================================================================
RCS file: /sources/pspp/pspp/po/de.po,v
retrieving revision 1.18
diff -b -w -U3 -r1.18 de.po
--- po/de.po	28 Oct 2006 08:31:22 -0000	1.18
+++ po/de.po	26 Nov 2006 05:09:03 -0000
@@ -10,7 +10,7 @@
 msgstr ""
 "Project-Id-Version: PSPP 0.4.2\n"
 "Report-Msgid-Bugs-To: pspp-dev@gnu.org\n"
-"POT-Creation-Date: 2006-10-26 16:30+0800\n"
+"POT-Creation-Date: 2006-11-26 08:37+0800\n"
 "PO-Revision-Date: 2006-05-26 17:49+0800\n"
 "Last-Translator: John Darrington <john@darrington.wattle.id.au>\n"
 "Language-Team: German <pspp-dev@gnu.org>\n"
@@ -47,222 +47,136 @@
 msgid "Date %04d-%d-%d is before the earliest acceptable date of 1582-10-15."
 msgstr ""
 
-#: src/data/data-in.c:59
-#, c-format
-msgid "(column %d"
-msgstr ""
-
-#: src/data/data-in.c:61
-#, c-format
-msgid "(columns %d-%d"
-msgstr ""
-
-#: src/data/data-in.c:62
-#, c-format
-msgid ", field type %s) "
+#: src/data/data-in.c:272 src/data/data-in.c:462
+msgid "Field contents are not numeric."
 msgstr ""
 
-#: src/data/data-in.c:207
-msgid "Field does not form a valid floating-point constant."
+#: src/data/data-in.c:274 src/data/data-in.c:464
+msgid "Number followed by garbage."
 msgstr ""
 
-#: src/data/data-in.c:234
-msgid "Field contents followed by garbage."
+#: src/data/data-in.c:285
+msgid "Invalid numeric syntax."
 msgstr ""
 
-#: src/data/data-in.c:252
-msgid "Underflow in floating-point constant."
+#: src/data/data-in.c:294 src/data/data-in.c:477
+msgid "Too-large number set to system-missing."
 msgstr ""
 
-#: src/data/data-in.c:263
-msgid "Overflow in floating-point constant."
+#: src/data/data-in.c:299 src/data/data-in.c:482
+msgid "Too-small number set to zero."
 msgstr ""
 
-#: src/data/data-in.c:296
+#: src/data/data-in.c:325
 msgid "All characters in field must be digits."
 msgstr ""
 
-#: src/data/data-in.c:320
+#: src/data/data-in.c:348
 msgid "Unrecognized character in field."
 msgstr ""
 
-#: src/data/data-in.c:338 src/data/data-in.c:586
+#: src/data/data-in.c:372 src/data/data-in.c:636
 msgid "Field must have even length."
 msgstr ""
 
-#: src/data/data-in.c:348 src/data/data-in.c:596
+#: src/data/data-in.c:377 src/data/data-in.c:642
 msgid "Field must contain only hex digits."
 msgstr ""
 
-#: src/data/data-in.c:387
-#, c-format
-msgid ""
-"Quality of zoned decimal (Z) input format code is suspect.  Check your "
-"results three times. Report bugs to %s."
-msgstr ""
-
-#: src/data/data-in.c:399
-msgid "Zoned decimal field contains fewer than 2 characters."
-msgstr ""
-
-#: src/data/data-in.c:407
-msgid "Bad sign byte in zoned decimal number."
+#: src/data/data-in.c:681 src/data/data-in.c:728
+msgid "Syntax error in date field."
 msgstr ""
 
-#: src/data/data-in.c:427
-msgid "Format error in zoned decimal number."
-msgstr ""
-
-#: src/data/data-in.c:441
-msgid "Error in syntax of zoned decimal number."
-msgstr ""
-
-#: src/data/data-in.c:636
-msgid "Unexpected end of field."
-msgstr ""
-
-#: src/data/data-in.c:662
-msgid "Digit expected in field."
-msgstr ""
-
-#: src/data/data-in.c:687
+#: src/data/data-in.c:697
 #, c-format
 msgid "Day (%ld) must be between 1 and 31."
 msgstr ""
 
-#: src/data/data-in.c:712
+#: src/data/data-in.c:744
 msgid "Delimiter expected between fields in date."
 msgstr ""
 
-#: src/data/data-in.c:745
-#, c-format
-msgid "Parse error at `%c' expecting %s."
-msgstr ""
-
-#: src/data/data-in.c:759
-#, c-format
-msgid "Unknown %s `%.*s'."
-msgstr ""
-
-#: src/data/data-in.c:809
-#, c-format
-msgid "Month (%ld) must be between 1 and 12."
-msgstr ""
-
-#: src/data/data-in.c:813
-msgid "month"
+#: src/data/data-in.c:818
+msgid ""
+"Unrecognized month format.  Months may be specified as Arabic or Roman "
+"numerals or as at least 3 letters of their English names."
 msgstr ""
 
-#: src/data/data-in.c:827
+#: src/data/data-in.c:845
 #, c-format
 msgid "Year (%ld) must be between 1582 and 19999."
 msgstr ""
 
-#: src/data/data-in.c:838
+#: src/data/data-in.c:857
 #, c-format
-msgid "Trailing garbage \"%s\" following date."
+msgid "Trailing garbage \"%.*s\" following date."
 msgstr ""
 
-#: src/data/data-in.c:853
-#, c-format
-msgid "Julian day (%d) must be between 1 and 366."
+#: src/data/data-in.c:873
+msgid "Julian day must have exactly three digits."
 msgstr ""
 
-#: src/data/data-in.c:865
+#: src/data/data-in.c:878
 #, c-format
-msgid "Year (%d) must be between 1582 and 19999."
+msgid "Julian day (%ld) must be between 1 and 366."
 msgstr ""
 
-#: src/data/data-in.c:881
+#: src/data/data-in.c:902
 #, c-format
 msgid "Quarter (%ld) must be between 1 and 4."
 msgstr ""
 
-#: src/data/data-in.c:891
-msgid "`Q' expected between quarter and year."
-msgstr ""
-
-#: src/data/data-in.c:907
+#: src/data/data-in.c:922
 #, c-format
 msgid "Week (%ld) must be between 1 and 53."
 msgstr ""
 
-#: src/data/data-in.c:919
-msgid "`WK' expected between week and year."
-msgstr ""
-
-#: src/data/data-in.c:942
+#: src/data/data-in.c:935
 msgid "Delimiter expected between fields in time."
 msgstr ""
 
-#: src/data/data-in.c:954
-#, c-format
-msgid "Hour (%ld) must be positive."
-msgstr ""
-
-#: src/data/data-in.c:966
+#: src/data/data-in.c:955
 #, c-format
 msgid "Minute (%ld) must be between 0 and 59."
 msgstr ""
 
-#: src/data/data-in.c:1013
-#, c-format
-msgid "Hour (%ld) must be between 0 and 23."
-msgstr ""
-
-#: src/data/data-in.c:1041
-msgid "weekday"
-msgstr ""
-
-#: src/data/data-in.c:1372
-#, c-format
-msgid "Field too long (%d characters).  Truncated after character %d."
-msgstr ""
-
-#: src/data/data-out.c:242
-msgid ""
-"The N output format cannot be used to output a negative number or the system-"
-"missing value."
-msgstr ""
-
-#: src/data/data-out.c:356
-#, c-format
+#: src/data/data-in.c:995
 msgid ""
-"Quality of zoned decimal (Z) output format code is suspect.  Check your "
-"results. Report bugs to %s."
+"Unrecognized weekday name.  At least the first two letters of an English "
+"weekday name must be specified."
 msgstr ""
 
-#: src/data/data-out.c:364
-msgid "The system-missing value cannot be output as a zoned decimal number."
-msgstr ""
+#: src/data/data-in.c:1133
+#, fuzzy, c-format
+msgid "`%c' expected in date field."
+msgstr "plotzlich ist der Datei beendet"
 
-#: src/data/data-out.c:377
-#, c-format
-msgid "Number %g too big to fit in field with format Z%d.%d."
-msgstr ""
+#: src/data/data-in.c:1174
+#, fuzzy, c-format
+msgid "column %d"
+msgstr "Spalten"
 
-#: src/data/data-out.c:771
-#, c-format
-msgid "Time value %g too large in magnitude to convert to alphanumeric time."
-msgstr ""
+#: src/data/data-in.c:1176
+#, fuzzy, c-format
+msgid "columns %d-%d"
+msgstr "Spalten"
 
-#: src/data/data-out.c:822
+#: src/data/data-in.c:1180
 #, c-format
-msgid "Weekday index %f does not lie between 1 and 7."
+msgid "%s field) "
 msgstr ""
 
-#: src/data/data-out.c:842
+#: src/data/data-out.c:469
 #, c-format
-msgid "Month index %f does not lie between 1 and 12."
+msgid "Weekday number %f is not between 1 and 7."
 msgstr ""
 
-#: src/data/data-out.c:955
+#: src/data/data-out.c:490
 #, c-format
-msgid ""
-"Year %d cannot be represented in four digits for output formatting purposes."
+msgid "Month number %f is not between 1 and 12."
 msgstr ""
 
-#: src/data/dictionary.c:708
+#: src/data/dictionary.c:710
 msgid ""
 "At least one case in the data file had a weight value that was user-missing, "
 "system-missing, zero, or negative.  These case(s) were ignored."
@@ -332,96 +246,96 @@
 msgid "Not opening pipe file `%s' because SAFER option set."
 msgstr ""
 
-#: src/data/format.c:98
-#, c-format
-msgid "Format %s specifies an odd width %d, but an even width is required."
+#: src/data/format.c:218
+msgid "Input format"
 msgstr ""
 
-#: src/data/format.c:106
-#, c-format
-msgid ""
-"Format %s specifies a bad number of implied decimal places %d.  Format type %"
-"s allows up to 16 implied decimal places."
+#: src/data/format.c:218
+msgid "Output format"
 msgstr ""
 
-#: src/data/format.c:114
+#: src/data/format.c:227
 #, c-format
-msgid ""
-"Format %s specifies %d decimal places, but format type %s does not allow for "
-"decimal places."
+msgid "Format %s may not be used for input."
 msgstr ""
 
-#: src/data/format.c:139
+#: src/data/format.c:234
 #, c-format
-msgid "Format %s may not be used for input."
+msgid "%s specifies width %d, but %s requires an even width."
 msgstr ""
 
-#: src/data/format.c:145
+#: src/data/format.c:243
 #, c-format
-msgid ""
-"Input format %s specifies a bad width %d.  Format %s requires a width "
-"between %d and %d."
+msgid "%s %s specifies width %d, but %s requires a width between %d and %d."
 msgstr ""
 
-#: src/data/format.c:155
+#: src/data/format.c:252
 #, c-format
-msgid ""
-"Input format %s is invalid because it specifies more decimal places than the "
-"field width."
-msgstr ""
+msgid "%s %s specifies %d decimal place, but %s does not allow any decimals."
+msgid_plural ""
+"%s %s specifies %d decimal places, but %s does not allow any decimals."
+msgstr[0] ""
+msgstr[1] ""
 
-#: src/data/format.c:179
+#: src/data/format.c:263
 #, c-format
 msgid ""
-"Output format %s specifies a bad width %d.  Format %s requires a width "
-"between %d and %d."
-msgstr ""
+"%s %s specifies %d decimal place, but the given width allows at most %d "
+"decimals."
+msgid_plural ""
+"%s %s specifies %d decimal places, but the given width allows at most %d "
+"decimals."
+msgstr[0] ""
+msgstr[1] ""
 
-#: src/data/format.c:189
+#: src/data/format.c:270
 #, c-format
 msgid ""
-"Output format %s is invalid because it specifies as many decimal places as "
-"the field width, which fails to allow space for a decimal point.  Try %s%d.%"
-"d instead."
-msgstr ""
+"%s %s specifies %d decimal place, but the given width does not allow for any "
+"decimals."
+msgid_plural ""
+"%s %s specifies %d decimal places, but the given width does not allow for "
+"any decimals."
+msgstr[0] ""
+msgstr[1] ""
 
-#: src/data/format.c:211
+#: src/data/format.c:309
 #, c-format
 msgid "%s variables are not compatible with %s format %s."
 msgstr ""
 
-#: src/data/format.c:212 src/data/por-file-reader.c:481
-#: src/data/sys-file-reader.c:1221 src/data/sys-file-reader.c:1230
+#: src/data/format.c:310 src/data/por-file-reader.c:487
+#: src/data/sys-file-reader.c:1222 src/data/sys-file-reader.c:1235
 #: src/ui/gui/psppire.glade:1192 src/ui/gui/psppire-var-store.c:451
 msgid "String"
 msgstr "Zeichenkette"
 
-#: src/data/format.c:212 src/data/por-file-reader.c:481
-#: src/data/sys-file-reader.c:1221 src/data/sys-file-reader.c:1230
+#: src/data/format.c:310 src/data/por-file-reader.c:487
+#: src/data/sys-file-reader.c:1222 src/data/sys-file-reader.c:1235
 #: src/ui/gui/psppire.glade:1053 src/ui/gui/psppire-var-store.c:444
 msgid "Numeric"
 msgstr "Nummer"
 
-#: src/data/format.c:213 src/data/sys-file-reader.c:1223
-#: src/data/sys-file-reader.c:1368 src/data/sys-file-reader.c:1369
-#: src/data/variable.c:42 src/language/dictionary/apply-dictionary.c:76
+#: src/data/format.c:311 src/data/sys-file-reader.c:1224
+#: src/data/sys-file-reader.c:1375 src/data/sys-file-reader.c:1376
+#: src/data/variable.c:44 src/language/dictionary/apply-dictionary.c:76
 #: src/language/dictionary/apply-dictionary.c:77
-#: src/language/xforms/recode.c:479 src/language/xforms/recode.c:480
+#: src/language/xforms/recode.c:481 src/language/xforms/recode.c:482
 msgid "numeric"
 msgstr "numerisch"
 
-#: src/data/format.c:213 src/data/sys-file-reader.c:1223
-#: src/data/sys-file-reader.c:1368 src/data/sys-file-reader.c:1369
-#: src/data/variable.c:42 src/data/variable.c:50
+#: src/data/format.c:311 src/data/sys-file-reader.c:1224
+#: src/data/sys-file-reader.c:1375 src/data/sys-file-reader.c:1376
+#: src/data/variable.c:44 src/data/variable.c:52
 #: src/language/dictionary/apply-dictionary.c:76
 #: src/language/dictionary/apply-dictionary.c:77
-#: src/language/xforms/recode.c:479 src/language/xforms/recode.c:480
+#: src/language/xforms/recode.c:481 src/language/xforms/recode.c:482
 msgid "string"
 msgstr "kette"
 
-#: src/data/format.c:232
+#: src/data/format.c:329
 #, c-format
-msgid "String variable with width %d not compatible with format %s."
+msgid "String variable with width %d is not compatible with format %s."
 msgstr ""
 
 #: src/data/make-file.c:60
@@ -481,72 +395,72 @@
 msgid "Bad time string length %d."
 msgstr ""
 
-#: src/data/por-file-reader.c:473 src/data/sys-file-reader.c:1213
+#: src/data/por-file-reader.c:474 src/data/sys-file-reader.c:1214
 #, c-format
 msgid "%s: Bad format specifier byte (%d)."
 msgstr ""
 
-#: src/data/por-file-reader.c:480 src/data/sys-file-reader.c:1229
+#: src/data/por-file-reader.c:486 src/data/sys-file-reader.c:1234
 #, c-format
 msgid "%s variable %s has invalid format specifier %s."
 msgstr ""
 
-#: src/data/por-file-reader.c:495
+#: src/data/por-file-reader.c:502
 msgid "Expected variable count record."
 msgstr ""
 
-#: src/data/por-file-reader.c:499
+#: src/data/por-file-reader.c:506
 #, c-format
 msgid "Invalid number of variables %d."
 msgstr ""
 
-#: src/data/por-file-reader.c:509
+#: src/data/por-file-reader.c:516
 #, c-format
 msgid "Weight variable name (%s) truncated."
 msgstr ""
 
-#: src/data/por-file-reader.c:521
+#: src/data/por-file-reader.c:528
 msgid "Expected variable record."
 msgstr ""
 
-#: src/data/por-file-reader.c:525
+#: src/data/por-file-reader.c:532
 #, c-format
 msgid "Invalid variable width %d."
 msgstr ""
 
-#: src/data/por-file-reader.c:533
+#: src/data/por-file-reader.c:540
 #, c-format
 msgid "position %d: Invalid variable name `%s'."
 msgstr ""
 
-#: src/data/por-file-reader.c:541 src/language/expressions/evaluate.c:172
+#: src/data/por-file-reader.c:548 src/language/expressions/evaluate.c:170
 #, c-format
 msgid "Duplicate variable name %s."
 msgstr ""
 
-#: src/data/por-file-reader.c:577
+#: src/data/por-file-reader.c:584
 #, c-format
 msgid "Weighting variable %s not present in dictionary."
 msgstr ""
 
-#: src/data/por-file-reader.c:624
+#: src/data/por-file-reader.c:631
 #, c-format
 msgid "Unknown variable %s while parsing value labels."
 msgstr ""
 
-#: src/data/por-file-reader.c:627
+#: src/data/por-file-reader.c:634
 #, c-format
 msgid ""
 "Cannot assign value labels to %s and %s, which have different variable types "
 "or widths."
 msgstr ""
 
-#: src/data/por-file-reader.c:651
+#: src/data/por-file-reader.c:658
 #, c-format
 msgid "Duplicate label for value %g for variable %s."
 msgstr ""
 
-#: src/data/por-file-reader.c:654
+#: src/data/por-file-reader.c:661
 #, c-format
 msgid "Duplicate label for value `%.*s' for variable %s."
 msgstr ""
@@ -574,7 +488,7 @@
 "procedure, so it cannot yet be used for reading."
 msgstr ""
 
-#: src/data/settings.c:146
+#: src/data/settings.c:136
 #, c-format
 msgid "Could not access definition for terminal `%s'."
 msgstr ""
@@ -707,7 +621,7 @@
 msgid "DEC Kanji"
 msgstr ""
 
-#: src/data/sys-file-reader.c:802 src/language/dictionary/sys-file-info.c:124
+#: src/data/sys-file-reader.c:802 src/language/dictionary/sys-file-info.c:126
 msgid "Unknown"
 msgstr ""
 
@@ -821,165 +735,165 @@
 "file."
 msgstr ""
 
-#: src/data/sys-file-reader.c:1219
+#: src/data/sys-file-reader.c:1220
 #, c-format
 msgid "%s: %s variable %s has %s format specifier %s."
 msgstr ""
 
-#: src/data/sys-file-reader.c:1272
+#: src/data/sys-file-reader.c:1279
 #, c-format
 msgid "%s: Invalid number of labels: %d.  Ignoring labels."
 msgstr ""
 
-#: src/data/sys-file-reader.c:1314
+#: src/data/sys-file-reader.c:1321
 #, c-format
 msgid ""
 "%s: Variable index record (type 4) does not immediately follow value label "
 "record (type 3) as it should."
 msgstr ""
 
-#: src/data/sys-file-reader.c:1325
+#: src/data/sys-file-reader.c:1332
 #, 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/data/sys-file-reader.c:1341
+#: src/data/sys-file-reader.c:1348
 #, c-format
 msgid ""
 "%s: Variable index associated with value label (%d) is not between 1 and the "
 "number of values (%d)."
 msgstr ""
 
-#: src/data/sys-file-reader.c:1348
+#: src/data/sys-file-reader.c:1355
 #, 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/data/sys-file-reader.c:1353
+#: src/data/sys-file-reader.c:1360
 #, c-format
 msgid "%s: Value labels are not allowed on long string variables (%s)."
 msgstr ""
 
-#: src/data/sys-file-reader.c:1364
+#: src/data/sys-file-reader.c:1371
 #, 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/data/sys-file-reader.c:1405
+#: src/data/sys-file-reader.c:1412
 #, c-format
 msgid "%s: File contains duplicate label for value %g for variable %s."
 msgstr ""
 
-#: src/data/sys-file-reader.c:1409
+#: src/data/sys-file-reader.c:1416
 #, c-format
 msgid "%s: File contains duplicate label for value `%.*s' for variable %s."
 msgstr ""
 
-#: src/data/sys-file-reader.c:1451 src/data/sys-file-reader.c:1747
+#: src/data/sys-file-reader.c:1458 src/data/sys-file-reader.c:1754
 #, c-format
 msgid "%s: Reading system file: %s."
 msgstr ""
 
-#: src/data/sys-file-reader.c:1454 src/data/sys-file-reader.c:1573
-#: src/data/sys-file-reader.c:1614
+#: src/data/sys-file-reader.c:1461 src/data/sys-file-reader.c:1580
+#: src/data/sys-file-reader.c:1621
 #, c-format
 msgid "%s: Unexpected end of file."
 msgstr ""
 
-#: src/data/sys-file-reader.c:1471
+#: src/data/sys-file-reader.c:1478
 #, c-format
 msgid "%s: Seeking system file: %s."
 msgstr ""
 
-#: src/data/sys-file-reader.c:1486
+#: src/data/sys-file-reader.c:1493
 #, c-format
 msgid "%s: System file contains multiple type 6 (document) records."
 msgstr ""
 
-#: src/data/sys-file-reader.c:1492
+#: src/data/sys-file-reader.c:1499
 #, c-format
 msgid "%s: Number of document lines (%ld) must be greater than 0."
 msgstr ""
 
-#: src/data/sys-file-reader.c:1526
+#: src/data/sys-file-reader.c:1533
 #, c-format
 msgid "%s: Error reading file: %s."
 msgstr ""
 
-#: src/data/sys-file-reader.c:1565
+#: src/data/sys-file-reader.c:1572
 #, c-format
 msgid "%s: Compressed data is corrupted.  Data ends in partial case."
 msgstr ""
 
-#: src/data/sys-file-reader.c:1753
+#: src/data/sys-file-reader.c:1760
 #, c-format
 msgid "%s: Partial record at end of system file."
 msgstr ""
 
-#: src/data/sys-file-writer.c:176
+#: src/data/sys-file-writer.c:180
 #, c-format
 msgid "Unknown system file version %d. Treating as version %d."
 msgstr ""
 
-#: src/data/sys-file-writer.c:328
+#: src/data/sys-file-writer.c:332
 #, c-format
 msgid "Error opening \"%s\" for writing as a system file: %s."
 msgstr ""
 
-#: src/data/sys-file-writer.c:1035
+#: src/data/sys-file-writer.c:1039
 #, c-format
 msgid "An I/O error occurred writing system file \"%s\"."
 msgstr ""
 
-#: src/data/variable.c:50
+#: src/data/variable.c:52
 msgid "number"
 msgstr ""
 
-#: src/data/variable.c:153
+#: src/data/variable.c:155
 #, c-format
 msgid ""
 "Character `%c' (in %s), may not appear as the first character in a variable "
 "name."
 msgstr ""
 
-#: src/data/variable.c:165
+#: src/data/variable.c:167
 #, c-format
 msgid "Character `%c' (in %s) may not appear in a variable name."
 msgstr ""
 
-#: src/data/variable.c:194
+#: src/data/variable.c:196
 msgid "Variable name cannot be empty string."
 msgstr "Ein Variablename darf nicht eines leeres Kette sein."
 
-#: src/data/variable.c:200
+#: src/data/variable.c:202
 #, c-format
 msgid "Variable name %s exceeds %d-character limit."
 msgstr "Der Variabelname %s ist große als %d Buchstaben."
 
-#: src/data/variable.c:208
+#: src/data/variable.c:210
 #, c-format
 msgid "`%s' may not be used as a variable name because it is a reserved word."
 msgstr ""
 
-#: src/data/variable.c:303
+#: src/data/variable.c:305
 msgid "Variable suffix too large."
 msgstr ""
 
-#: src/data/variable.c:344
+#: src/data/variable.c:346
 msgid "ordinary"
 msgstr ""
 
-#: src/data/variable.c:346
+#: src/data/variable.c:348
 msgid "system"
 msgstr ""
 
-#: src/data/variable.c:348
+#: src/data/variable.c:350
 msgid "scratch"
 msgstr ""
 
@@ -1007,75 +921,75 @@
 msgid "Unknown command %s."
 msgstr ""
 
-#: src/language/command.c:587
+#: src/language/command.c:588
 msgid "before the active file has been defined"
 msgstr ""
 
-#: src/language/command.c:589
+#: src/language/command.c:590
 msgid "after the active file has been defined"
 msgstr ""
 
-#: src/language/command.c:591
+#: src/language/command.c:592
 msgid "inside INPUT PROGRAM"
 msgstr ""
 
-#: src/language/command.c:593
+#: src/language/command.c:594
 msgid "inside FILE TYPE"
 msgstr ""
 
-#: src/language/command.c:598
+#: src/language/command.c:599
 #, c-format
 msgid "%s or %s"
 msgstr ""
 
-#: src/language/command.c:600
+#: src/language/command.c:601
 #, c-format
 msgid "%s, %s, or %s"
 msgstr ""
 
-#: src/language/command.c:604
+#: src/language/command.c:605
 #, c-format
 msgid "%s is allowed only %s."
 msgstr ""
 
-#: src/language/command.c:609
+#: src/language/command.c:610
 #, c-format
 msgid "%s is not allowed inside INPUT PROGRAM."
 msgstr ""
 
-#: src/language/command.c:611
+#: src/language/command.c:612
 #, c-format
 msgid "%s is not allowed inside FILE TYPE."
 msgstr ""
 
-#: src/language/command.c:689 src/language/command.c:820
+#: src/language/command.c:690 src/language/command.c:819
 #: src/language/utilities/permissions.c:102
 msgid "This command not allowed when the SAFER option is set."
 msgstr ""
 
-#: src/language/command.c:701
+#: src/language/command.c:702
 #, c-format
 msgid "Error removing `%s': %s."
 msgstr ""
 
-#: src/language/command.c:751
+#: src/language/command.c:752
 #, c-format
 msgid "Couldn't fork: %s."
 msgstr ""
 
-#: src/language/command.c:793
+#: src/language/command.c:794
 #, c-format
 msgid "Error executing command: %s."
 msgstr ""
 
-#: src/language/command.c:802 src/language/data-io/matrix-data.c:539
+#: src/language/command.c:803 src/language/data-io/matrix-data.c:541
 #: src/language/data-io/print-space.c:75 src/language/dictionary/vector.c:203
-#: src/language/lexer/lexer.c:456 src/language/stats/autorecode.c:154
+#: src/language/lexer/lexer.c:457 src/language/stats/autorecode.c:154
 #: src/language/xforms/select-if.c:62
 msgid "expecting end of command"
 msgstr ""
 
-#: src/language/command.c:841
+#: src/language/command.c:840
 msgid "No operating system support for this command."
 msgstr ""
 
@@ -1098,33 +1012,33 @@
 msgid "This command may not follow ELSE in DO IF...END IF."
 msgstr ""
 
-#: src/language/control/repeat.c:144
+#: src/language/control/repeat.c:149
 #, c-format
 msgid "Dummy variable name \"%s\" hides dictionary variable \"%s\"."
 msgstr ""
 
-#: src/language/control/repeat.c:150
+#: src/language/control/repeat.c:155
 #, c-format
 msgid "Dummy variable name \"%s\" is given twice."
 msgstr ""
 
-#: src/language/control/repeat.c:196
+#: src/language/control/repeat.c:202
 #, c-format
 msgid ""
 "Dummy variable \"%s\" had %d substitutions, so \"%s\" must also, but %d were "
 "specified."
 msgstr ""
 
-#: src/language/control/repeat.c:399
+#: src/language/control/repeat.c:406
 #, c-format
 msgid "%ld TO %ld is an invalid range."
 msgstr ""
 
-#: src/language/control/repeat.c:435
+#: src/language/control/repeat.c:442
 msgid "String expected."
 msgstr ""
 
-#: src/language/control/repeat.c:454
+#: src/language/control/repeat.c:461
 msgid "No matching DO REPEAT."
 msgstr ""
 
@@ -1134,180 +1048,180 @@
 "commands."
 msgstr ""
 
-#: src/language/data-io/data-list.c:165
+#: src/language/data-io/data-list.c:175
 msgid "The END subcommand may only be specified once."
 msgstr ""
 
-#: src/language/data-io/data-list.c:200
+#: src/language/data-io/data-list.c:210
 msgid "Only one of FIXED, FREE, or LIST may be specified."
 msgstr ""
 
-#: src/language/data-io/data-list.c:340 src/language/data-io/data-list.c:475
+#: src/language/data-io/data-list.c:351 src/language/data-io/data-list.c:495
 #, c-format
 msgid "%s is a duplicate variable name."
 msgstr ""
 
-#: src/language/data-io/data-list.c:347
+#: src/language/data-io/data-list.c:358
 #, c-format
 msgid "There is already a variable %s of a different type."
 msgstr ""
 
-#: src/language/data-io/data-list.c:354
+#: src/language/data-io/data-list.c:365
 #, c-format
 msgid "There is already a string variable %s of a different width."
 msgstr ""
 
-#: src/language/data-io/data-list.c:375
+#: src/language/data-io/data-list.c:386
 msgid "At least one variable must be specified."
 msgstr ""
 
-#: src/language/data-io/data-list.c:382
+#: src/language/data-io/data-list.c:393
 msgid ""
 "Variables are specified on records that should not exist according to "
 "RECORDS subcommand."
 msgstr ""
 
-#: src/language/data-io/data-list.c:407 src/language/data-io/data-list.c:507
-#: src/language/data-io/print.c:374 src/language/dictionary/split-file.c:85
-#: src/language/dictionary/sys-file-info.c:144
-#: src/language/dictionary/sys-file-info.c:378
-#: src/language/stats/descriptives.c:902
+#: src/language/data-io/data-list.c:418 src/language/data-io/data-list.c:527
+#: src/language/data-io/print.c:395 src/language/dictionary/split-file.c:86
+#: src/language/dictionary/sys-file-info.c:146
+#: src/language/dictionary/sys-file-info.c:380
+#: src/language/stats/descriptives.c:903
 msgid "Variable"
 msgstr ""
 
-#: src/language/data-io/data-list.c:408 src/language/data-io/print.c:375
+#: src/language/data-io/data-list.c:419 src/language/data-io/print.c:396
 msgid "Record"
 msgstr ""
 
-#: src/language/data-io/data-list.c:409 src/language/data-io/print.c:376
+#: src/language/data-io/data-list.c:420 src/language/data-io/print.c:397
 #: src/ui/gui/var-sheet.c:78
 msgid "Columns"
 msgstr "Spalten"
 
-#: src/language/data-io/data-list.c:410 src/language/data-io/data-list.c:508
-#: src/language/data-io/print.c:377
+#: src/language/data-io/data-list.c:421 src/language/data-io/data-list.c:528
+#: src/language/data-io/print.c:398
 msgid "Format"
 msgstr ""
 
-#: src/language/data-io/data-list.c:426
+#: src/language/data-io/data-list.c:439
 #, c-format
 msgid "Reading %d record from %s."
 msgid_plural "Reading %d records from %s."
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/language/data-io/data-list.c:521
+#: src/language/data-io/data-list.c:542
 #, c-format
 msgid "Reading free-form data from %s."
 msgstr ""
 
-#: src/language/data-io/data-list.c:567
+#: src/language/data-io/data-list.c:588
 msgid "Quoted string extends beyond end of line."
 msgstr ""
 
-#: src/language/data-io/data-list.c:652
+#: src/language/data-io/data-list.c:673
 #, c-format
 msgid "Partial case of %d of %d records discarded."
 msgstr ""
 
-#: src/language/data-io/data-list.c:701
+#: src/language/data-io/data-list.c:711
 #, c-format
 msgid "Partial case discarded.  The first variable missing was %s."
 msgstr ""
 
-#: src/language/data-io/data-list.c:737
+#: src/language/data-io/data-list.c:742
 #, c-format
 msgid ""
 "Missing value(s) for all variables from %s onward.  These will be filled "
 "with the system-missing value or blanks, as appropriate."
 msgstr ""
 
-#: src/language/data-io/data-reader.c:138
+#: src/language/data-io/data-reader.c:141
 #, c-format
 msgid "Could not open \"%s\" for reading as a data file: %s."
 msgstr ""
 
-#: src/language/data-io/data-reader.c:175
+#: src/language/data-io/data-reader.c:178
 msgid ""
 "Unexpected end-of-file while reading data in BEGIN DATA.  This probably "
 "indicates a missing or misformatted END DATA command.  END DATA must appear "
 "by itself on a single line with exactly one space between words."
 msgstr ""
 
-#: src/language/data-io/data-reader.c:207
-#: src/language/data-io/data-reader.c:219
+#: src/language/data-io/data-reader.c:210
+#: src/language/data-io/data-reader.c:223
 #, c-format
 msgid "Error reading file %s: %s."
 msgstr ""
 
-#: src/language/data-io/data-reader.c:222
+#: src/language/data-io/data-reader.c:226
 #, c-format
 msgid "%s: Partial record at end of file."
 msgstr ""
 
-#: src/language/data-io/data-reader.c:273
+#: src/language/data-io/data-reader.c:277
 #, c-format
 msgid "Attempt to read beyond end-of-file on file %s."
 msgstr ""
 
-#: src/language/data-io/data-reader.c:276
+#: src/language/data-io/data-reader.c:280
 msgid "Attempt to read beyond END DATA."
 msgstr ""
 
-#: src/language/data-io/data-reader.c:434
+#: src/language/data-io/data-reader.c:438
 msgid ""
 "This command is not valid here since the current input program does not "
 "access the inline file."
 msgstr ""
 
-#: src/language/data-io/data-writer.c:62
+#: src/language/data-io/data-writer.c:66
 #, c-format
 msgid "An error occurred while opening \"%s\" for writing as a data file: %s."
 msgstr ""
 
-#: src/language/data-io/data-writer.c:131
+#: src/language/data-io/data-writer.c:150
 #, c-format
 msgid "I/O error occurred writing data file \"%s\"."
 msgstr ""
 
-#: src/language/data-io/file-handle.q:69
+#: src/language/data-io/file-handle.q:68
 #, c-format
 msgid ""
 "File handle %s is already defined.  Use CLOSE FILE HANDLE before redefining "
 "a file handle."
 msgstr ""
 
-#: src/language/data-io/file-handle.q:101
+#: src/language/data-io/file-handle.q:100
 #, c-format
 msgid ""
 "Fixed-length records were specified on /RECFORM, but record length was not "
 "specified on /LRECL.  Assuming %d-character records."
 msgstr ""
 
-#: src/language/data-io/file-handle.q:106
+#: src/language/data-io/file-handle.q:105
 #, c-format
 msgid ""
 "Record length (%ld) must be at least one byte.  Assuming %d-character "
 "records."
 msgstr ""
 
-#: src/language/data-io/file-handle.q:152
+#: src/language/data-io/file-handle.q:151
 msgid "file"
 msgstr ""
 
-#: src/language/data-io/file-handle.q:154
+#: src/language/data-io/file-handle.q:153
 msgid "inline file"
 msgstr ""
 
-#: src/language/data-io/file-handle.q:156
+#: src/language/data-io/file-handle.q:155
 msgid "scratch file"
 msgstr ""
 
-#: src/language/data-io/file-handle.q:177
+#: src/language/data-io/file-handle.q:176
 msgid "expecting a file name or handle name"
 msgstr ""
 
-#: src/language/data-io/file-handle.q:204
+#: src/language/data-io/file-handle.q:203
 #, c-format
 msgid "Handle for %s not allowed here."
 msgstr ""
@@ -1322,7 +1236,7 @@
 msgid "expecting %s or %s"
 msgstr ""
 
-#: src/language/data-io/get.c:608 src/language/data-io/print.c:176
+#: src/language/data-io/get.c:608 src/language/data-io/print.c:178
 msgid "expecting a valid subcommand"
 msgstr ""
 
@@ -1426,219 +1340,219 @@
 "REREAD: Column numbers must be positive finite numbers.  Column set to 1."
 msgstr ""
 
-#: src/language/data-io/list.q:152 src/language/stats/descriptives.c:366
+#: src/language/data-io/list.q:155 src/language/stats/descriptives.c:366
 msgid "No variables specified."
 msgstr ""
 
-#: src/language/data-io/list.q:160
+#: src/language/data-io/list.q:163
 #, c-format
 msgid ""
 "The first case (%ld) specified precedes the last case (%ld) specified.  The "
 "values will be swapped."
 msgstr ""
 
-#: src/language/data-io/list.q:168
+#: src/language/data-io/list.q:171
 #, c-format
 msgid ""
 "The first case (%ld) to list is less than 1.  The value is being reset to 1."
 msgstr ""
 
-#: src/language/data-io/list.q:174
+#: src/language/data-io/list.q:177
 #, c-format
 msgid ""
 "The last case (%ld) to list is less than 1.  The value is being reset to 1."
 msgstr ""
 
-#: src/language/data-io/list.q:180
+#: src/language/data-io/list.q:183
 #, c-format
 msgid "The step value %ld is less than 1.  The value is being reset to 1."
 msgstr ""
 
-#: src/language/data-io/list.q:206
+#: src/language/data-io/list.q:209
 msgid "`/FORMAT WEIGHT' specified, but weighting is not on."
 msgstr ""
 
-#: src/language/data-io/list.q:434
+#: src/language/data-io/list.q:437
 msgid "Line"
 msgstr ""
 
-#: src/language/data-io/matrix-data.c:218
+#: src/language/data-io/matrix-data.c:219
 msgid "VARIABLES subcommand multiply specified."
 msgstr ""
 
-#: src/language/data-io/matrix-data.c:233
+#: src/language/data-io/matrix-data.c:234
 msgid "VARNAME_ cannot be explicitly specified on VARIABLES."
 msgstr ""
 
-#: src/language/data-io/matrix-data.c:294
+#: src/language/data-io/matrix-data.c:295
 msgid "in FORMAT subcommand"
 msgstr ""
 
-#: src/language/data-io/matrix-data.c:305
+#: src/language/data-io/matrix-data.c:306
 msgid "SPLIT subcommand multiply specified."
 msgstr ""
 
-#: src/language/data-io/matrix-data.c:312
+#: src/language/data-io/matrix-data.c:313
 msgid "in SPLIT subcommand"
 msgstr ""
 
-#: src/language/data-io/matrix-data.c:322
+#: src/language/data-io/matrix-data.c:323
 msgid "Split variable may not be named ROWTYPE_ or VARNAME_."
 msgstr ""
 
-#: src/language/data-io/matrix-data.c:356
+#: src/language/data-io/matrix-data.c:358
 #, c-format
 msgid "Split variable %s is already another type."
 msgstr ""
 
-#: src/language/data-io/matrix-data.c:371
+#: src/language/data-io/matrix-data.c:373
 msgid "FACTORS subcommand multiply specified."
 msgstr ""
 
-#: src/language/data-io/matrix-data.c:390
+#: src/language/data-io/matrix-data.c:392
 #, c-format
 msgid "Factor variable %s is already another type."
 msgstr ""
 
-#: src/language/data-io/matrix-data.c:405
+#: src/language/data-io/matrix-data.c:407
 msgid "CELLS subcommand multiply specified."
 msgstr ""
 
-#: src/language/data-io/matrix-data.c:411
-#: src/language/data-io/matrix-data.c:430
+#: src/language/data-io/matrix-data.c:413
+#: src/language/data-io/matrix-data.c:432
 msgid "expecting positive integer"
 msgstr ""
 
-#: src/language/data-io/matrix-data.c:424
+#: src/language/data-io/matrix-data.c:426
 msgid "N subcommand multiply specified."
 msgstr ""
 
-#: src/language/data-io/matrix-data.c:445
+#: src/language/data-io/matrix-data.c:447
 msgid "CONTENTS subcommand multiply specified."
 msgstr ""
 
-#: src/language/data-io/matrix-data.c:465
+#: src/language/data-io/matrix-data.c:467
 msgid "Nested parentheses not allowed."
 msgstr ""
 
-#: src/language/data-io/matrix-data.c:475
+#: src/language/data-io/matrix-data.c:477
 msgid "Mismatched right parenthesis (`(')."
 msgstr ""
 
-#: src/language/data-io/matrix-data.c:480
+#: src/language/data-io/matrix-data.c:482
 msgid "Empty parentheses not allowed."
 msgstr ""
 
-#: src/language/data-io/matrix-data.c:493
-#: src/language/data-io/matrix-data.c:501
+#: src/language/data-io/matrix-data.c:495
+#: src/language/data-io/matrix-data.c:503
 msgid "in CONTENTS subcommand"
 msgstr ""
 
-#: src/language/data-io/matrix-data.c:508
+#: src/language/data-io/matrix-data.c:510
 #, c-format
 msgid "Content multiply specified for %s."
 msgstr ""
 
-#: src/language/data-io/matrix-data.c:525
+#: src/language/data-io/matrix-data.c:527
 msgid "Missing right parenthesis."
 msgstr ""
 
-#: src/language/data-io/matrix-data.c:545
+#: src/language/data-io/matrix-data.c:547
 msgid "Missing VARIABLES subcommand."
 msgstr ""
 
-#: src/language/data-io/matrix-data.c:551
+#: src/language/data-io/matrix-data.c:553
 msgid ""
 "CONTENTS subcommand not specified: assuming file contains only CORR matrix."
 msgstr ""
 
-#: src/language/data-io/matrix-data.c:561
+#: src/language/data-io/matrix-data.c:563
 msgid ""
 "Missing CELLS subcommand.  CELLS is required when ROWTYPE_ is not given in "
 "the data and factors are present."
 msgstr ""
 
-#: src/language/data-io/matrix-data.c:569
+#: src/language/data-io/matrix-data.c:571
 msgid "Split file values must be present in the data when ROWTYPE_ is present."
 msgstr ""
 
-#: src/language/data-io/matrix-data.c:622
+#: src/language/data-io/matrix-data.c:624
 msgid "No continuous variables specified."
 msgstr ""
 
-#: src/language/data-io/matrix-data.c:841
+#: src/language/data-io/matrix-data.c:843
 msgid "Scope of string exceeds line."
 msgstr ""
 
-#: src/language/data-io/matrix-data.c:902
+#: src/language/data-io/matrix-data.c:896
 #, c-format
 msgid "End of line expected %s while reading %s."
 msgstr ""
 
-#: src/language/data-io/matrix-data.c:1093
+#: src/language/data-io/matrix-data.c:1087
 #, c-format
 msgid "expecting value for %s %s"
 msgstr ""
 
-#: src/language/data-io/matrix-data.c:1258
+#: src/language/data-io/matrix-data.c:1252
 #, c-format
 msgid "Syntax error expecting SPLIT FILE value %s."
 msgstr ""
 
-#: src/language/data-io/matrix-data.c:1267
+#: src/language/data-io/matrix-data.c:1261
 #, c-format
 msgid "Expecting value %g for %s."
 msgstr ""
 
-#: src/language/data-io/matrix-data.c:1308
-#: src/language/data-io/matrix-data.c:1791
+#: src/language/data-io/matrix-data.c:1302
+#: src/language/data-io/matrix-data.c:1785
 #, c-format
 msgid "Syntax error expecting factor value %s."
 msgstr ""
 
-#: src/language/data-io/matrix-data.c:1317
+#: src/language/data-io/matrix-data.c:1311
 #, c-format
 msgid "Syntax error expecting value %g for %s %s."
 msgstr ""
 
-#: src/language/data-io/matrix-data.c:1566
+#: src/language/data-io/matrix-data.c:1560
 #, c-format
 msgid "Syntax error %s expecting SPLIT FILE value."
 msgstr ""
 
-#: src/language/data-io/matrix-data.c:1695
+#: src/language/data-io/matrix-data.c:1689
 #, 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/language/data-io/matrix-data.c:1733
+#: src/language/data-io/matrix-data.c:1727
 #, c-format
 msgid "Multiply specified ROWTYPE_ %s."
 msgstr ""
 
-#: src/language/data-io/matrix-data.c:1738
+#: src/language/data-io/matrix-data.c:1732
 #, c-format
 msgid "Syntax error %s expecting ROWTYPE_ string."
 msgstr ""
 
-#: src/language/data-io/matrix-data.c:1758
+#: src/language/data-io/matrix-data.c:1752
 #, c-format
 msgid "Syntax error %s."
 msgstr ""
 
-#: src/language/data-io/matrix-data.c:1909
+#: src/language/data-io/matrix-data.c:1903
 #, c-format
 msgid "Duplicate specification for %s."
 msgstr ""
 
-#: src/language/data-io/matrix-data.c:1921
+#: src/language/data-io/matrix-data.c:1915
 #, c-format
 msgid "Too many rows of matrix data for %s."
 msgstr ""
 
-#: src/language/data-io/matrix-data.c:1965
+#: src/language/data-io/matrix-data.c:1959
 #, c-format
 msgid "Syntax error expecting value for %s %s."
 msgstr ""
@@ -1660,42 +1574,42 @@
 msgid "The %d columns %d-%d can't be evenly divided into %d fields."
 msgstr ""
 
-#: src/language/data-io/placement-parser.c:226
-#: src/language/lexer/format-parser.c:110
-#: src/language/lexer/format-parser.c:129
+#: src/language/data-io/placement-parser.c:227
+#: src/language/lexer/format-parser.c:111
+#: src/language/lexer/format-parser.c:130
 #, c-format
 msgid "Unknown format type \"%s\"."
 msgstr ""
 
-#: src/language/data-io/placement-parser.c:310
-#: src/language/data-io/placement-parser.c:324
+#: src/language/data-io/placement-parser.c:311
+#: src/language/data-io/placement-parser.c:325
 msgid "Column positions for fields must be positive."
 msgstr ""
 
-#: src/language/data-io/placement-parser.c:329
+#: src/language/data-io/placement-parser.c:330
 msgid "The ending column for a field must be greater than the starting column."
 msgstr ""
 
-#: src/language/data-io/placement-parser.c:364
+#: src/language/data-io/placement-parser.c:365
 #, c-format
 msgid ""
 "The record number specified, %ld, is at or before the previous record, %d.  "
 "Data fields must be listed in order of increasing record number."
 msgstr ""
 
-#: src/language/data-io/print.c:252
+#: src/language/data-io/print.c:261
 #, c-format
 msgid "Output calls for %d records but %d specified on RECORDS subcommand."
 msgstr ""
 
-#: src/language/data-io/print.c:406
+#: src/language/data-io/print.c:428
 #, c-format
 msgid "Writing %d record to %s."
 msgid_plural "Writing %d records to %s."
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/language/data-io/print.c:410
+#: src/language/data-io/print.c:432
 #, c-format
 msgid "Writing %d record."
 msgid_plural "Writing %d records."
@@ -1735,13 +1649,12 @@
 msgid "`(' expected after variable list."
 msgstr ""
 
-#: src/language/dictionary/formats.c:102 src/language/dictionary/numeric.c:71
-#: src/language/dictionary/numeric.c:141
+#: src/language/dictionary/formats.c:102 src/language/dictionary/numeric.c:72
 msgid "`)' expected after output format."
 msgstr ""
 
 #: src/language/dictionary/missing-values.c:57
-#: src/language/stats/aggregate.c:454
+#: src/language/stats/aggregate.c:467
 msgid "expecting `('"
 msgstr ""
 
@@ -1752,12 +1665,12 @@
 "a single list."
 msgstr ""
 
-#: src/language/dictionary/missing-values.c:113
+#: src/language/dictionary/missing-values.c:117
 #, c-format
 msgid "Truncating missing value to short string length (%d characters)."
 msgstr ""
 
-#: src/language/dictionary/missing-values.c:132
+#: src/language/dictionary/missing-values.c:137
 #, c-format
 msgid "Missing values provided are too long to assign to variable of width %d."
 msgstr ""
@@ -1792,60 +1705,60 @@
 msgid "`(' expected on RENAME subcommand."
 msgstr ""
 
-#: src/language/dictionary/modify-variables.c:202
+#: src/language/dictionary/modify-variables.c:203
 msgid ""
 "`=' expected between lists of new and old variable names on RENAME "
 "subcommand."
 msgstr ""
 
-#: src/language/dictionary/modify-variables.c:210
+#: src/language/dictionary/modify-variables.c:212
 #, c-format
 msgid ""
 "Differing number of variables in old name list (%d) and in new name list (%"
 "d)."
 msgstr ""
 
-#: src/language/dictionary/modify-variables.c:221
+#: src/language/dictionary/modify-variables.c:223
 msgid "`)' expected after variable lists on RENAME subcommand."
 msgstr ""
 
-#: src/language/dictionary/modify-variables.c:235
+#: src/language/dictionary/modify-variables.c:237
 msgid ""
 "KEEP subcommand may be given at most once.  It may notbe given in "
 "conjunction with the DROP subcommand."
 msgstr ""
 
-#: src/language/dictionary/modify-variables.c:278
+#: src/language/dictionary/modify-variables.c:280
 msgid ""
 "DROP subcommand may be given at most once.  It may not be given in "
 "conjunction with the KEEP subcommand."
 msgstr ""
 
-#: src/language/dictionary/modify-variables.c:304
+#: src/language/dictionary/modify-variables.c:306
 #, c-format
 msgid "Unrecognized subcommand name `%s'."
 msgstr ""
 
-#: src/language/dictionary/modify-variables.c:306
+#: src/language/dictionary/modify-variables.c:308
 msgid "Subcommand name expected."
 msgstr ""
 
-#: src/language/dictionary/modify-variables.c:314
+#: src/language/dictionary/modify-variables.c:316
 msgid "`/' or `.' expected."
 msgstr ""
 
-#: src/language/dictionary/numeric.c:64
+#: src/language/dictionary/numeric.c:65
 #, c-format
 msgid "Format type %s may not be used with a numeric variable."
 msgstr ""
 
-#: src/language/dictionary/numeric.c:83 src/language/dictionary/numeric.c:163
+#: src/language/dictionary/numeric.c:84 src/language/dictionary/numeric.c:153
 #: src/language/dictionary/vector.c:165
 #, c-format
 msgid "There is already a variable named %s."
 msgstr ""
 
-#: src/language/dictionary/numeric.c:134
+#: src/language/dictionary/numeric.c:138
 #, c-format
 msgid "Format type %s may not be used with a string variable."
 msgstr ""
@@ -1880,180 +1793,180 @@
 msgid "Renaming would duplicate variable name %s."
 msgstr ""
 
-#: src/language/dictionary/split-file.c:86
-#: src/language/dictionary/sys-file-info.c:523
-#: src/language/stats/crosstabs.q:1118 src/language/stats/crosstabs.q:1145
-#: src/language/stats/crosstabs.q:1165 src/language/stats/crosstabs.q:1187
-#: src/language/stats/examine.q:1152 src/language/stats/frequencies.q:1179
+#: src/language/dictionary/split-file.c:87
+#: src/language/dictionary/sys-file-info.c:527
+#: src/language/stats/crosstabs.q:1122 src/language/stats/crosstabs.q:1149
+#: src/language/stats/crosstabs.q:1169 src/language/stats/crosstabs.q:1191
+#: src/language/stats/examine.q:1163 src/language/stats/frequencies.q:1179
 #: src/language/stats/frequencies.q:1303
 msgid "Value"
 msgstr ""
 
-#: src/language/dictionary/split-file.c:87
-#: src/language/dictionary/sys-file-info.c:385
-#: src/language/dictionary/sys-file-info.c:524 src/ui/gui/var-sheet.c:75
+#: src/language/dictionary/split-file.c:88
+#: src/language/dictionary/sys-file-info.c:387
+#: src/language/dictionary/sys-file-info.c:528 src/ui/gui/var-sheet.c:75
 msgid "Label"
 msgstr "Kennsatz"
 
-#: src/language/dictionary/sys-file-info.c:105
+#: src/language/dictionary/sys-file-info.c:107
 msgid "File:"
 msgstr "Datei:"
 
-#: src/language/dictionary/sys-file-info.c:107
+#: src/language/dictionary/sys-file-info.c:109
 msgid "Label:"
 msgstr "Kennsatz:"
 
-#: src/language/dictionary/sys-file-info.c:111
+#: src/language/dictionary/sys-file-info.c:113
 msgid "No label."
 msgstr "Kein Kennsatz."
 
-#: src/language/dictionary/sys-file-info.c:114
+#: src/language/dictionary/sys-file-info.c:116
 msgid "Created:"
 msgstr "Gemacht:"
 
-#: src/language/dictionary/sys-file-info.c:117
+#: src/language/dictionary/sys-file-info.c:119
 msgid "Endian:"
 msgstr ""
 
-#: src/language/dictionary/sys-file-info.c:118
+#: src/language/dictionary/sys-file-info.c:120
 msgid "Big."
 msgstr ""
 
-#: src/language/dictionary/sys-file-info.c:118
+#: src/language/dictionary/sys-file-info.c:120
 msgid "Little."
 msgstr ""
 
-#: src/language/dictionary/sys-file-info.c:119
+#: src/language/dictionary/sys-file-info.c:121
 msgid "Variables:"
 msgstr ""
 
-#: src/language/dictionary/sys-file-info.c:122
+#: src/language/dictionary/sys-file-info.c:124
 msgid "Cases:"
 msgstr ""
 
-#: src/language/dictionary/sys-file-info.c:125
+#: src/language/dictionary/sys-file-info.c:127
 msgid "Type:"
 msgstr ""
 
-#: src/language/dictionary/sys-file-info.c:126
+#: src/language/dictionary/sys-file-info.c:128
 msgid "System File."
 msgstr ""
 
-#: src/language/dictionary/sys-file-info.c:127
+#: src/language/dictionary/sys-file-info.c:129
 msgid "Weight:"
 msgstr ""
 
-#: src/language/dictionary/sys-file-info.c:131
+#: src/language/dictionary/sys-file-info.c:133
 msgid "Not weighted."
 msgstr ""
 
-#: src/language/dictionary/sys-file-info.c:133
+#: src/language/dictionary/sys-file-info.c:135
 msgid "Mode:"
 msgstr ""
 
-#: src/language/dictionary/sys-file-info.c:135
+#: src/language/dictionary/sys-file-info.c:137
 #, c-format
 msgid "Compression %s."
 msgstr ""
 
-#: src/language/dictionary/sys-file-info.c:135
+#: src/language/dictionary/sys-file-info.c:137
 msgid "on"
 msgstr ""
 
-#: src/language/dictionary/sys-file-info.c:135
+#: src/language/dictionary/sys-file-info.c:137
 msgid "off"
 msgstr ""
 
-#: src/language/dictionary/sys-file-info.c:145
-#: src/language/dictionary/sys-file-info.c:383
+#: src/language/dictionary/sys-file-info.c:147
+#: src/language/dictionary/sys-file-info.c:385
 msgid "Description"
 msgstr ""
 
-#: src/language/dictionary/sys-file-info.c:146
-#: src/language/dictionary/sys-file-info.c:381
+#: src/language/dictionary/sys-file-info.c:148
+#: src/language/dictionary/sys-file-info.c:383
 msgid "Position"
 msgstr ""
 
-#: src/language/dictionary/sys-file-info.c:204
+#: src/language/dictionary/sys-file-info.c:206
 msgid "The active file does not have a file label."
 msgstr ""
 
-#: src/language/dictionary/sys-file-info.c:207
+#: src/language/dictionary/sys-file-info.c:209
 msgid "File label:"
 msgstr ""
 
-#: src/language/dictionary/sys-file-info.c:269
+#: src/language/dictionary/sys-file-info.c:271
 msgid "No variables to display."
 msgstr ""
 
-#: src/language/dictionary/sys-file-info.c:288
+#: src/language/dictionary/sys-file-info.c:290
 msgid "Macros not supported."
 msgstr ""
 
-#: src/language/dictionary/sys-file-info.c:298
+#: src/language/dictionary/sys-file-info.c:300
 msgid "The active file dictionary does not contain any documents."
 msgstr ""
 
-#: src/language/dictionary/sys-file-info.c:307
+#: src/language/dictionary/sys-file-info.c:309
 msgid "Documents in the active file:"
 msgstr ""
 
-#: src/language/dictionary/sys-file-info.c:457
+#: src/language/dictionary/sys-file-info.c:460
 #, c-format
 msgid "Format: %s"
 msgstr ""
 
-#: src/language/dictionary/sys-file-info.c:464
+#: src/language/dictionary/sys-file-info.c:468
 #, c-format
 msgid "Print Format: %s"
 msgstr ""
 
-#: src/language/dictionary/sys-file-info.c:467
+#: src/language/dictionary/sys-file-info.c:471
 #, c-format
 msgid "Write Format: %s"
 msgstr ""
 
-#: src/language/dictionary/sys-file-info.c:479
+#: src/language/dictionary/sys-file-info.c:483
 msgid "Missing Values: "
 msgstr ""
 
-#: src/language/dictionary/sys-file-info.c:580
+#: src/language/dictionary/sys-file-info.c:584
 msgid "No vectors defined."
 msgstr ""
 
-#: src/language/dictionary/sys-file-info.c:595
+#: src/language/dictionary/sys-file-info.c:599
 msgid "Vector"
 msgstr ""
 
-#: src/language/dictionary/value-labels.c:122
+#: src/language/dictionary/value-labels.c:123
 #, c-format
 msgid ""
 "It is not possible to assign value labels to long string variables such as %"
 "s."
 msgstr ""
 
-#: src/language/dictionary/value-labels.c:158 src/language/lexer/lexer.c:593
+#: src/language/dictionary/value-labels.c:159 src/language/lexer/lexer.c:594
 msgid "expecting string"
 msgstr ""
 
-#: src/language/dictionary/value-labels.c:167 src/language/lexer/lexer.c:607
+#: src/language/dictionary/value-labels.c:168 src/language/lexer/lexer.c:608
 msgid "expecting integer"
 msgstr ""
 
-#: src/language/dictionary/value-labels.c:171
+#: src/language/dictionary/value-labels.c:172
 #, c-format
 msgid "Value label `%g' is not integer."
 msgstr ""
 
-#: src/language/dictionary/value-labels.c:181
+#: src/language/dictionary/value-labels.c:185
 msgid "Truncating value label to 60 characters."
 msgstr ""
 
-#: src/language/dictionary/variable-label.c:52
+#: src/language/dictionary/variable-label.c:53
 msgid "String expected for variable label."
 msgstr ""
 
-#: src/language/dictionary/variable-label.c:58
+#: src/language/dictionary/variable-label.c:61
 msgid "Truncating variable label to 255 characters."
 msgstr ""
 
@@ -2096,7 +2009,7 @@
 msgid "The weighting variable may not be scratch."
 msgstr ""
 
-#: src/language/expressions/evaluate.c:158
+#: src/language/expressions/evaluate.c:156
 msgid "expecting number or string"
 msgstr ""
 
@@ -2136,24 +2049,24 @@
 "system-missing."
 msgstr ""
 
-#: src/language/expressions/parse.c:257
+#: src/language/expressions/parse.c:261
 #, c-format
 msgid ""
 "Type mismatch: expression has %s type, but a numeric value is required here."
 msgstr ""
 
-#: src/language/expressions/parse.c:269
+#: src/language/expressions/parse.c:273
 #, c-format
 msgid ""
 "Type mismatch: expression has %s type, but a string value is required here."
 msgstr ""
 
-#: src/language/expressions/parse.c:410
+#: src/language/expressions/parse.c:420
 #, c-format
 msgid "Type mismatch while applying %s operator: cannot convert %s to %s."
 msgstr ""
 
-#: src/language/expressions/parse.c:615
+#: src/language/expressions/parse.c:626
 msgid ""
 "Chaining relational operators (e.g. \"a < b < c\") will not produce the "
 "mathematically expected result.  Use the AND logical operator to fix the "
@@ -2161,146 +2074,166 @@
 "parentheses will disable this warning (e.g. \"(a < b) < c\".)"
 msgstr ""
 
-#: src/language/expressions/parse.c:714
+#: src/language/expressions/parse.c:727
 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/language/expressions/parse.c:779
+#: src/language/expressions/parse.c:792
 #, c-format
 msgid "Unknown system variable %s."
 msgstr ""
 
-#: src/language/expressions/parse.c:827
+#: src/language/expressions/parse.c:840
 #, c-format
 msgid "Unknown identifier %s."
 msgstr ""
 
-#: src/language/expressions/parse.c:855 src/language/stats/aggregate.c:510
+#: src/language/expressions/parse.c:868 src/language/stats/aggregate.c:523
 msgid "expecting `)'"
 msgstr ""
 
-#: src/language/expressions/parse.c:862
+#: src/language/expressions/parse.c:875
 msgid "in expression"
 msgstr ""
 
-#: src/language/expressions/parse.c:1038
+#: src/language/expressions/parse.c:1051
 #, c-format
 msgid "%s must have at least %d arguments in list."
 msgstr ""
 
-#: src/language/expressions/parse.c:1047
+#: src/language/expressions/parse.c:1060
 #, c-format
 msgid "%s must have even number of arguments in list."
 msgstr ""
 
-#: src/language/expressions/parse.c:1050
+#: src/language/expressions/parse.c:1063
 #, c-format
 msgid "%s must have multiple of %d arguments in list."
 msgstr ""
 
-#: src/language/expressions/parse.c:1060
+#: src/language/expressions/parse.c:1073
 #, c-format
 msgid "%s function does not accept a minimum valid argument count."
 msgstr ""
 
-#: src/language/expressions/parse.c:1069
+#: src/language/expressions/parse.c:1082
 #, c-format
 msgid "%s requires at least %d valid arguments in list."
 msgstr ""
 
-#: src/language/expressions/parse.c:1075
+#: src/language/expressions/parse.c:1088
 #, c-format
 msgid ""
 "With %s, using minimum valid argument count of %d does not make sense when "
 "passing only %d arguments in list."
 msgstr ""
 
-#: src/language/expressions/parse.c:1129
+#: src/language/expressions/parse.c:1142
 #, c-format
 msgid "Type mismatch invoking %s as "
 msgstr ""
 
-#: src/language/expressions/parse.c:1134
+#: src/language/expressions/parse.c:1147
 msgid "Function invocation "
 msgstr ""
 
-#: src/language/expressions/parse.c:1136
+#: src/language/expressions/parse.c:1149
 msgid " does not match any known function.  Candidates are:"
 msgstr ""
 
-#: src/language/expressions/parse.c:1166
+#: src/language/expressions/parse.c:1179
 #, c-format
 msgid "No function or vector named %s."
 msgstr ""
 
-#: src/language/expressions/parse.c:1208
+#: src/language/expressions/parse.c:1221
 #, c-format
 msgid "expecting `,' or `)' invoking %s function"
 msgstr ""
 
-#: src/language/expressions/parse.c:1228
+#: src/language/expressions/parse.c:1241
 #, c-format
 msgid "%s is a PSPP extension."
 msgstr ""
 
-#: src/language/expressions/parse.c:1231 src/ui/terminal/command-line.c:127
-#: src/ui/terminal/command-line.c:146 src/ui/terminal/command-line.c:158
+#: src/language/expressions/parse.c:1244 src/ui/terminal/command-line.c:133
+#: src/ui/terminal/command-line.c:152 src/ui/terminal/command-line.c:164
 #, c-format
 msgid "%s is not yet implemented."
 msgstr ""
 
-#: src/language/expressions/parse.c:1237
+#: src/language/expressions/parse.c:1250
 #, c-format
 msgid "%s may not appear after TEMPORARY."
 msgstr ""
 
-#: src/language/lexer/format-parser.c:91
+#: src/language/lb-syntax-file.c:88
+#, c-format
+msgid "opening \"%s\" as syntax file"
+msgstr ""
+
+#: src/language/lb-syntax-file.c:93
+#, c-format
+msgid "Opening `%s': %s."
+msgstr ""
+
+#: src/language/lb-syntax-file.c:106
+#, c-format
+msgid "Reading `%s': %s."
+msgstr ""
+
+#: src/language/lb-syntax-file.c:126
+#, c-format
+msgid "Closing `%s': %s."
+msgstr ""
+
+#: src/language/lexer/format-parser.c:92
 msgid "expecting valid format specifier"
 msgstr ""
 
-#: src/language/lexer/format-parser.c:124
+#: src/language/lexer/format-parser.c:125
 msgid "expecting format type"
 msgstr ""
 
-#: src/language/lexer/lexer.c:267
+#: src/language/lexer/lexer.c:268
 #, c-format
 msgid "%s does not form a valid number."
 msgstr ""
 
-#: src/language/lexer/lexer.c:371
+#: src/language/lexer/lexer.c:372
 #, c-format
 msgid "Bad character in input: `%c'."
 msgstr ""
 
-#: src/language/lexer/lexer.c:373
+#: src/language/lexer/lexer.c:374
 #, c-format
 msgid "Bad character in input: `\\%o'."
 msgstr ""
 
-#: src/language/lexer/lexer.c:404
+#: src/language/lexer/lexer.c:405
 #, c-format
 msgid "Subcommand %s may only be specified once."
 msgstr ""
 
-#: src/language/lexer/lexer.c:412
+#: src/language/lexer/lexer.c:413
 #, c-format
 msgid "missing required subcommand %s"
 msgstr ""
 
-#: src/language/lexer/lexer.c:441
+#: src/language/lexer/lexer.c:442
 #, c-format
 msgid "Syntax error %s at %s."
 msgstr ""
 
-#: src/language/lexer/lexer.c:444
+#: src/language/lexer/lexer.c:445
 #, c-format
 msgid "Syntax error at %s."
 msgstr ""
 
-#: src/language/lexer/lexer.c:562 src/language/lexer/lexer.c:579
+#: src/language/lexer/lexer.c:563 src/language/lexer/lexer.c:580
 #, c-format
 msgid "expecting `%s'"
 msgstr ""
@@ -2309,123 +2242,117 @@
 msgid "expecting number"
 msgstr ""
 
-#: src/language/lexer/lexer.c:635
+#: src/language/lexer/lexer.c:633
 msgid "expecting identifier"
 msgstr ""
 
-#: src/language/lexer/lexer.c:1020
+#: src/language/lexer/lexer.c:1019
 msgid "binary"
 msgstr ""
 
-#: src/language/lexer/lexer.c:1025
+#: src/language/lexer/lexer.c:1024
 msgid "octal"
 msgstr ""
 
-#: src/language/lexer/lexer.c:1030
+#: src/language/lexer/lexer.c:1029
 msgid "hex"
 msgstr ""
 
-#: src/language/lexer/lexer.c:1040
+#: src/language/lexer/lexer.c:1039
 #, c-format
 msgid "String of %s digits has %d characters, which is not a multiple of %d."
 msgstr ""
 
-#: src/language/lexer/lexer.c:1069
+#: src/language/lexer/lexer.c:1068
 #, c-format
 msgid "`%c' is not a valid %s digit."
 msgstr ""
 
-#: src/language/lexer/lexer.c:1100
+#: src/language/lexer/lexer.c:1102
 msgid "Unterminated string constant."
 msgstr ""
 
-#: src/language/lexer/lexer.c:1154
+#: src/language/lexer/lexer.c:1156
 msgid "Unexpected end of file in string concatenation."
 msgstr ""
 
-#: src/language/lexer/lexer.c:1162
+#: src/language/lexer/lexer.c:1164
 msgid "String expected following `+'."
 msgstr ""
 
-#: src/language/lexer/lexer.c:1175
+#: src/language/lexer/lexer.c:1177
 #, c-format
 msgid "String exceeds 255 characters in length (%d characters)."
 msgstr ""
 
-#: src/language/lexer/lexer.c:1190
-msgid ""
-"Sorry, literal strings may not contain null characters.  Replacing with "
-"spaces."
-msgstr ""
-
-#: src/language/lexer/range-parser.c:43
+#: src/language/lexer/range-parser.c:63
 #, c-format
 msgid ""
 "Low end of range (%g) is below high end (%g).  The range will be treated as "
 "reversed."
 msgstr ""
 
-#: src/language/lexer/range-parser.c:51
+#: src/language/lexer/range-parser.c:71
 #, c-format
 msgid "Ends of range are equal (%g)."
 msgstr ""
 
-#: src/language/lexer/range-parser.c:59
+#: src/language/lexer/range-parser.c:79
 msgid "LO or LOWEST must be part of a range."
 msgstr ""
 
-#: src/language/lexer/range-parser.c:98
+#: src/language/lexer/range-parser.c:110
 msgid "System-missing value is not valid here."
 msgstr ""
 
-#: src/language/lexer/range-parser.c:106
+#: src/language/lexer/range-parser.c:118
 msgid "expecting number or data string"
 msgstr ""
 
-#: src/language/lexer/variable-parser.c:53
+#: src/language/lexer/variable-parser.c:54
 msgid "expecting variable name"
 msgstr ""
 
-#: src/language/lexer/variable-parser.c:63
+#: src/language/lexer/variable-parser.c:64
 #, c-format
 msgid "%s is not a variable name."
 msgstr ""
 
-#: src/language/lexer/variable-parser.c:164
+#: src/language/lexer/variable-parser.c:168
 #, c-format
 msgid ""
 "%s is not a numeric variable.  It will not be included in the variable list."
 msgstr ""
 
-#: src/language/lexer/variable-parser.c:167
+#: src/language/lexer/variable-parser.c:171
 #, c-format
 msgid ""
 "%s is not a string variable.  It will not be included in the variable list."
 msgstr ""
 
-#: src/language/lexer/variable-parser.c:171
+#: src/language/lexer/variable-parser.c:175
 #, c-format
 msgid "Scratch variables (such as %s) are not allowed here."
 msgstr ""
 
-#: src/language/lexer/variable-parser.c:174
+#: src/language/lexer/variable-parser.c:178
 #, 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/language/lexer/variable-parser.c:179
+#: src/language/lexer/variable-parser.c:183
 #, c-format
 msgid "Variable %s appears twice in variable list."
 msgstr ""
 
-#: src/language/lexer/variable-parser.c:284
+#: src/language/lexer/variable-parser.c:288
 #, c-format
 msgid "%s TO %s is not valid syntax since %s precedes %s in the dictionary."
 msgstr ""
 
-#: src/language/lexer/variable-parser.c:293
+#: src/language/lexer/variable-parser.c:297
 #, c-format
 msgid ""
 "When using the TO keyword to specify several variables, both variables must "
@@ -2433,95 +2360,70 @@
 "system variables.  %s is a %s variable, whereas %s is %s."
 msgstr ""
 
-#: src/language/lexer/variable-parser.c:366
+#: src/language/lexer/variable-parser.c:370
 msgid "incorrect use of TO convention"
 msgstr ""
 
-#: src/language/lexer/variable-parser.c:409
+#: src/language/lexer/variable-parser.c:413
 msgid "Scratch variables not allowed here."
 msgstr ""
 
-#: src/language/lexer/variable-parser.c:431
+#: src/language/lexer/variable-parser.c:435
 msgid "Prefixes don't match in use of TO convention."
 msgstr ""
 
-#: src/language/lexer/variable-parser.c:436
+#: src/language/lexer/variable-parser.c:440
 msgid "Bad bounds in use of TO convention."
 msgstr ""
 
-#: src/language/line-buffer.c:251
-#, c-format
-msgid "Can't find `%s' in include file search path."
-msgstr ""
-
-#: src/language/line-buffer.c:335
-#, c-format
-msgid "Closing `%s': %s."
-msgstr ""
-
-#: src/language/line-buffer.c:446
-#, c-format
-msgid "opening \"%s\" as syntax file"
-msgstr ""
-
-#: src/language/line-buffer.c:451
-#, c-format
-msgid "Opening `%s': %s."
-msgstr ""
-
-#: src/language/line-buffer.c:464
-#, c-format
-msgid "Reading `%s': %s."
-msgstr ""
-
-#: src/language/stats/aggregate.c:216
+#: src/language/stats/aggregate.c:218
 msgid "while expecting COLUMNWISE"
 msgstr ""
 
-#: src/language/stats/aggregate.c:245
+#: src/language/stats/aggregate.c:247
 msgid "expecting BREAK"
 msgstr ""
 
-#: src/language/stats/aggregate.c:250
+#: src/language/stats/aggregate.c:252
 msgid ""
 "When PRESORTED is specified, specifying sorting directions with (A) or (D) "
 "has no effect.  Output data will be sorted the same way as the input data."
 msgstr ""
 
-#: src/language/stats/aggregate.c:423
+#: src/language/stats/aggregate.c:432
 msgid "expecting aggregation function"
 msgstr ""
 
-#: src/language/stats/aggregate.c:439
+#: src/language/stats/aggregate.c:450
 #, c-format
 msgid "Unknown aggregation function %s."
 msgstr ""
 
-#: src/language/stats/aggregate.c:491
+#: src/language/stats/aggregate.c:504
 #, c-format
 msgid "Missing argument %d to %s."
 msgstr ""
 
-#: src/language/stats/aggregate.c:500
+#: src/language/stats/aggregate.c:513
 #, c-format
 msgid "Arguments to %s must be of same type as source variables."
 msgstr ""
 
-#: src/language/stats/aggregate.c:522
+#: src/language/stats/aggregate.c:535
 #, c-format
 msgid ""
 "Number of source variables (%u) does not match number of target variables (%"
 "u)."
 msgstr ""
 
-#: src/language/stats/aggregate.c:538
+#: src/language/stats/aggregate.c:551
 #, c-format
 msgid ""
 "The value arguments passed to the %s function are out-of-order.  They will "
 "be treated as if they had been specified in the correct order."
 msgstr ""
 
-#: src/language/stats/aggregate.c:605
+#: src/language/stats/aggregate.c:621
 #, c-format
 msgid ""
 "Variable name %s is not unique within the aggregate file dictionary, which "
@@ -2543,313 +2445,313 @@
 msgid "Duplicate variable name %s among target variables."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:270
+#: src/language/stats/crosstabs.q:273
 msgid ""
 "Missing mode REPORT not allowed in general mode.  Assuming MISSING=TABLE."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:280
+#: src/language/stats/crosstabs.q:283
 msgid "Write mode ALL not allowed in general mode.  Assuming WRITE=CELLS."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:336
+#: src/language/stats/crosstabs.q:339
 msgid "Too many crosstabulation variables or dimensions."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:346
+#: src/language/stats/crosstabs.q:349
 msgid "expecting BY"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:413
+#: src/language/stats/crosstabs.q:416
 msgid "VARIABLES must be specified before TABLES."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:450
+#: src/language/stats/crosstabs.q:454
 #, c-format
 msgid "Maximum value (%ld) less than minimum value (%ld)."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:819
+#: src/language/stats/crosstabs.q:823
 msgid "Summary."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:821 src/language/stats/examine.q:937
+#: src/language/stats/crosstabs.q:825 src/language/stats/examine.q:948
 msgid "Cases"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:822 src/language/stats/examine.q:871
+#: src/language/stats/crosstabs.q:826 src/language/stats/examine.q:882
 #: src/language/stats/frequencies.q:1177 src/language/stats/frequencies.q:1553
 msgid "Valid"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:823 src/language/stats/examine.q:872
+#: src/language/stats/crosstabs.q:827 src/language/stats/examine.q:883
 #: src/language/stats/frequencies.q:1246 src/language/stats/frequencies.q:1554
 #: src/ui/gui/var-sheet.c:77
 msgid "Missing"
 msgstr "Löse"
 
-#: src/language/stats/crosstabs.q:824 src/language/stats/crosstabs.q:1027
-#: src/language/stats/crosstabs.q:1747 src/language/stats/examine.q:873
-#: src/language/stats/frequencies.q:1255 src/language/stats/oneway.q:315
-#: src/language/stats/oneway.q:479 src/language/stats/regression.q:315
+#: src/language/stats/crosstabs.q:828 src/language/stats/crosstabs.q:1031
+#: src/language/stats/crosstabs.q:1751 src/language/stats/examine.q:884
+#: src/language/stats/frequencies.q:1255 src/language/stats/oneway.q:307
+#: src/language/stats/oneway.q:470 src/language/stats/regression.q:315
 msgid "Total"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:834 src/language/stats/examine.q:949
-#: src/language/stats/frequencies.q:1552 src/language/stats/oneway.q:401
-#: src/language/stats/t-test.q:690 src/language/stats/t-test.q:713
-#: src/language/stats/t-test.q:838 src/language/stats/t-test.q:1373
+#: src/language/stats/crosstabs.q:838 src/language/stats/examine.q:960
+#: src/language/stats/frequencies.q:1552 src/language/stats/oneway.q:392
+#: src/language/stats/t-test.q:683 src/language/stats/t-test.q:706
+#: src/language/stats/t-test.q:831 src/language/stats/t-test.q:1366
 msgid "N"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:835 src/language/stats/examine.q:952
+#: src/language/stats/crosstabs.q:839 src/language/stats/examine.q:963
 #: src/language/stats/frequencies.q:1181 src/language/stats/frequencies.q:1182
 #: src/language/stats/frequencies.q:1183
 msgid "Percent"
 msgstr "Prozent"
 
-#: src/language/stats/crosstabs.q:1077
+#: src/language/stats/crosstabs.q:1081
 msgid "count"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1078
+#: src/language/stats/crosstabs.q:1082
 msgid "row %"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1079
+#: src/language/stats/crosstabs.q:1083
 msgid "column %"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1080
+#: src/language/stats/crosstabs.q:1084
 msgid "total %"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1081
+#: src/language/stats/crosstabs.q:1085
 msgid "expected"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1082
+#: src/language/stats/crosstabs.q:1086
 msgid "residual"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1083
+#: src/language/stats/crosstabs.q:1087
 msgid "std. resid."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1084
+#: src/language/stats/crosstabs.q:1088
 msgid "adj. resid."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1114
+#: src/language/stats/crosstabs.q:1118
 msgid "Chi-square tests."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1117 src/language/stats/crosstabs.q:1144
-#: src/language/stats/crosstabs.q:1164 src/language/stats/crosstabs.q:1185
-#: src/language/stats/examine.q:1383
+#: src/language/stats/crosstabs.q:1121 src/language/stats/crosstabs.q:1148
+#: src/language/stats/crosstabs.q:1168 src/language/stats/crosstabs.q:1189
+#: src/language/stats/examine.q:1394
 msgid "Statistic"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1119 src/language/stats/oneway.q:288
-#: src/language/stats/oneway.q:691 src/language/stats/regression.q:308
-#: src/language/stats/t-test.q:988 src/language/stats/t-test.q:1180
-#: src/language/stats/t-test.q:1272
+#: src/language/stats/crosstabs.q:1123 src/language/stats/oneway.q:280
+#: src/language/stats/oneway.q:680 src/language/stats/regression.q:308
+#: src/language/stats/t-test.q:981 src/language/stats/t-test.q:1173
+#: src/language/stats/t-test.q:1265
 msgid "df"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1121
+#: src/language/stats/crosstabs.q:1125
 msgid "Asymp. Sig. (2-sided)"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1123
+#: src/language/stats/crosstabs.q:1127
 msgid "Exact. Sig. (2-sided)"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1125
+#: src/language/stats/crosstabs.q:1129
 msgid "Exact. Sig. (1-sided)"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1140
+#: src/language/stats/crosstabs.q:1144
 msgid "Symmetric measures."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1143 src/language/stats/crosstabs.q:1184
+#: src/language/stats/crosstabs.q:1147 src/language/stats/crosstabs.q:1188
 msgid "Category"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1146 src/language/stats/crosstabs.q:1188
+#: src/language/stats/crosstabs.q:1150 src/language/stats/crosstabs.q:1192
 msgid "Asymp. Std. Error"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1147 src/language/stats/crosstabs.q:1189
+#: src/language/stats/crosstabs.q:1151 src/language/stats/crosstabs.q:1193
 msgid "Approx. T"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1148 src/language/stats/crosstabs.q:1190
+#: src/language/stats/crosstabs.q:1152 src/language/stats/crosstabs.q:1194
 msgid "Approx. Sig."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1159
+#: src/language/stats/crosstabs.q:1163
 msgid "Risk estimate."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1163
+#: src/language/stats/crosstabs.q:1167
 #, c-format
 msgid "95%% Confidence Interval"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1166 src/language/stats/t-test.q:992
-#: src/language/stats/t-test.q:1177 src/language/stats/t-test.q:1275
+#: src/language/stats/crosstabs.q:1170 src/language/stats/t-test.q:985
+#: src/language/stats/t-test.q:1170 src/language/stats/t-test.q:1268
 msgid "Lower"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1167 src/language/stats/t-test.q:993
-#: src/language/stats/t-test.q:1178 src/language/stats/t-test.q:1276
+#: src/language/stats/crosstabs.q:1171 src/language/stats/t-test.q:986
+#: src/language/stats/t-test.q:1171 src/language/stats/t-test.q:1269
 msgid "Upper"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1181
+#: src/language/stats/crosstabs.q:1185
 msgid "Directional measures."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1186 src/ui/gui/var-sheet.c:72
+#: src/language/stats/crosstabs.q:1190 src/ui/gui/var-sheet.c:72
 msgid "Type"
 msgstr "Typ"
 
-#: src/language/stats/crosstabs.q:1939
+#: src/language/stats/crosstabs.q:1943
 msgid "Pearson Chi-Square"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1940
+#: src/language/stats/crosstabs.q:1944
 msgid "Likelihood Ratio"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1941
+#: src/language/stats/crosstabs.q:1945
 msgid "Fisher's Exact Test"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1942
+#: src/language/stats/crosstabs.q:1946
 msgid "Continuity Correction"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1943
+#: src/language/stats/crosstabs.q:1947
 msgid "Linear-by-Linear Association"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1980 src/language/stats/crosstabs.q:2050
-#: src/language/stats/crosstabs.q:2109
+#: src/language/stats/crosstabs.q:1984 src/language/stats/crosstabs.q:2054
+#: src/language/stats/crosstabs.q:2113
 msgid "N of Valid Cases"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1996 src/language/stats/crosstabs.q:2125
+#: src/language/stats/crosstabs.q:2000 src/language/stats/crosstabs.q:2129
 msgid "Nominal by Nominal"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1997 src/language/stats/crosstabs.q:2126
+#: src/language/stats/crosstabs.q:2001 src/language/stats/crosstabs.q:2130
 msgid "Ordinal by Ordinal"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1998
+#: src/language/stats/crosstabs.q:2002
 msgid "Interval by Interval"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1999
+#: src/language/stats/crosstabs.q:2003
 msgid "Measure of Agreement"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2004
+#: src/language/stats/crosstabs.q:2008
 msgid "Phi"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2005
+#: src/language/stats/crosstabs.q:2009
 msgid "Cramer's V"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2006
+#: src/language/stats/crosstabs.q:2010
 msgid "Contingency Coefficient"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2007
+#: src/language/stats/crosstabs.q:2011
 msgid "Kendall's tau-b"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2008
+#: src/language/stats/crosstabs.q:2012
 msgid "Kendall's tau-c"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2009
+#: src/language/stats/crosstabs.q:2013
 msgid "Gamma"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2010
+#: src/language/stats/crosstabs.q:2014
 msgid "Spearman Correlation"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2011
+#: src/language/stats/crosstabs.q:2015
 msgid "Pearson's R"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2012
+#: src/language/stats/crosstabs.q:2016
 msgid "Kappa"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2082
+#: src/language/stats/crosstabs.q:2086
 #, c-format
 msgid "Odds Ratio for %s (%g / %g)"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2085
+#: src/language/stats/crosstabs.q:2089
 #, c-format
 msgid "Odds Ratio for %s (%.*s / %.*s)"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2093
+#: src/language/stats/crosstabs.q:2097
 #, c-format
 msgid "For cohort %s = %g"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2096
+#: src/language/stats/crosstabs.q:2100
 #, c-format
 msgid "For cohort %s = %.*s"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2127
+#: src/language/stats/crosstabs.q:2131
 msgid "Nominal by Interval"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2132
+#: src/language/stats/crosstabs.q:2136
 msgid "Lambda"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2133
+#: src/language/stats/crosstabs.q:2137
 msgid "Goodman and Kruskal tau"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2134
+#: src/language/stats/crosstabs.q:2138
 msgid "Uncertainty Coefficient"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2135
+#: src/language/stats/crosstabs.q:2139
 msgid "Somers' d"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2136
+#: src/language/stats/crosstabs.q:2140
 msgid "Eta"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2141
+#: src/language/stats/crosstabs.q:2145
 msgid "Symmetric"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2142 src/language/stats/crosstabs.q:2143
+#: src/language/stats/crosstabs.q:2146 src/language/stats/crosstabs.q:2147
 #, c-format
 msgid "%s Dependent"
 msgstr ""
 
-#: src/language/stats/descriptives.c:108 src/language/stats/examine.q:1488
-#: src/language/stats/frequencies.q:123 src/language/stats/oneway.q:402
-#: src/language/stats/t-test.q:691 src/language/stats/t-test.q:714
-#: src/language/stats/t-test.q:837 src/language/stats/t-test.q:1174
+#: src/language/stats/descriptives.c:108 src/language/stats/examine.q:1499
+#: src/language/stats/frequencies.q:123 src/language/stats/oneway.q:393
+#: src/language/stats/t-test.q:684 src/language/stats/t-test.q:707
+#: src/language/stats/t-test.q:830 src/language/stats/t-test.q:1167
 msgid "Mean"
 msgstr ""
 
@@ -2861,12 +2763,12 @@
 msgid "Std Dev"
 msgstr ""
 
-#: src/language/stats/descriptives.c:111 src/language/stats/examine.q:1568
+#: src/language/stats/descriptives.c:111 src/language/stats/examine.q:1579
 #: src/language/stats/frequencies.q:128
 msgid "Variance"
 msgstr ""
 
-#: src/language/stats/descriptives.c:112 src/language/stats/examine.q:1675
+#: src/language/stats/descriptives.c:112 src/language/stats/examine.q:1686
 #: src/language/stats/frequencies.q:129
 msgid "Kurtosis"
 msgstr ""
@@ -2875,7 +2777,7 @@
 msgid "S E Kurt"
 msgstr ""
 
-#: src/language/stats/descriptives.c:114 src/language/stats/examine.q:1655
+#: src/language/stats/descriptives.c:114 src/language/stats/examine.q:1666
 #: src/language/stats/frequencies.q:131
 msgid "Skewness"
 msgstr ""
@@ -2884,18 +2786,18 @@
 msgid "S E Skew"
 msgstr ""
 
-#: src/language/stats/descriptives.c:116 src/language/stats/examine.q:1616
+#: src/language/stats/descriptives.c:116 src/language/stats/examine.q:1627
 #: src/language/stats/frequencies.q:133
 msgid "Range"
 msgstr ""
 
-#: src/language/stats/descriptives.c:117 src/language/stats/examine.q:1593
-#: src/language/stats/frequencies.q:134 src/language/stats/oneway.q:414
+#: src/language/stats/descriptives.c:117 src/language/stats/examine.q:1604
+#: src/language/stats/frequencies.q:134 src/language/stats/oneway.q:405
 msgid "Minimum"
 msgstr ""
 
-#: src/language/stats/descriptives.c:118 src/language/stats/examine.q:1604
-#: src/language/stats/frequencies.q:135 src/language/stats/oneway.q:415
+#: src/language/stats/descriptives.c:118 src/language/stats/examine.q:1615
+#: src/language/stats/frequencies.q:135 src/language/stats/oneway.q:406
 msgid "Maximum"
 msgstr ""
 
@@ -2912,210 +2814,215 @@
 msgid "expecting statistic name: reverting to default"
 msgstr ""
 
-#: src/language/stats/descriptives.c:522
+#: src/language/stats/descriptives.c:523
 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/language/stats/descriptives.c:554
+#: src/language/stats/descriptives.c:555
 msgid "Mapping of variables to corresponding Z-scores."
 msgstr ""
 
-#: src/language/stats/descriptives.c:559
+#: src/language/stats/descriptives.c:560
 msgid "Source"
 msgstr ""
 
-#: src/language/stats/descriptives.c:560
+#: src/language/stats/descriptives.c:561
 msgid "Target"
 msgstr ""
 
-#: src/language/stats/descriptives.c:678 src/language/stats/descriptives.c:684
+#: src/language/stats/descriptives.c:679 src/language/stats/descriptives.c:685
 msgid "Z-score of "
 msgstr ""
 
-#: src/language/stats/descriptives.c:905
+#: src/language/stats/descriptives.c:906
 msgid "Valid N"
 msgstr ""
 
-#: src/language/stats/descriptives.c:906
+#: src/language/stats/descriptives.c:907
 msgid "Missing N"
 msgstr ""
 
-#: src/language/stats/descriptives.c:933
+#: src/language/stats/descriptives.c:934
 #, c-format
 msgid "Valid cases = %g; cases with missing value(s) = %g."
 msgstr ""
 
-#: src/language/stats/examine.q:486 src/language/stats/examine.q:499
+#: src/language/stats/examine.q:288 src/language/stats/examine.q:291
+#, c-format
+msgid "%s is not currently supported."
+msgstr ""
+
+#: src/language/stats/examine.q:497 src/language/stats/examine.q:510
 #, c-format
 msgid "%s and %s are mutually exclusive"
 msgstr ""
 
-#: src/language/stats/examine.q:931
+#: src/language/stats/examine.q:942
 msgid "Case Processing Summary"
 msgstr ""
 
-#: src/language/stats/examine.q:1137
+#: src/language/stats/examine.q:1148
 msgid "Extreme Values"
 msgstr ""
 
-#: src/language/stats/examine.q:1153
+#: src/language/stats/examine.q:1164
 msgid "Case Number"
 msgstr ""
 
-#: src/language/stats/examine.q:1238
+#: src/language/stats/examine.q:1249
 msgid "Highest"
 msgstr ""
 
-#: src/language/stats/examine.q:1243
+#: src/language/stats/examine.q:1254
 msgid "Lowest"
 msgstr ""
 
-#: src/language/stats/examine.q:1384 src/language/stats/oneway.q:404
-#: src/language/stats/oneway.q:689 src/language/stats/regression.q:212
+#: src/language/stats/examine.q:1395 src/language/stats/oneway.q:395
+#: src/language/stats/oneway.q:678 src/language/stats/regression.q:212
 msgid "Std. Error"
 msgstr ""
 
-#: src/language/stats/examine.q:1386 src/language/stats/oneway.q:418
+#: src/language/stats/examine.q:1397 src/language/stats/oneway.q:409
 msgid "Descriptives"
 msgstr ""
 
-#: src/language/stats/examine.q:1506 src/language/stats/oneway.q:409
+#: src/language/stats/examine.q:1517 src/language/stats/oneway.q:400
 #, c-format
 msgid "%g%% Confidence Interval for Mean"
 msgstr ""
 
-#: src/language/stats/examine.q:1512 src/language/stats/oneway.q:411
+#: src/language/stats/examine.q:1523 src/language/stats/oneway.q:402
 msgid "Lower Bound"
 msgstr ""
 
-#: src/language/stats/examine.q:1523 src/language/stats/oneway.q:412
+#: src/language/stats/examine.q:1534 src/language/stats/oneway.q:403
 msgid "Upper Bound"
 msgstr ""
 
-#: src/language/stats/examine.q:1535
+#: src/language/stats/examine.q:1546
 #, c-format
 msgid "5%% Trimmed Mean"
 msgstr ""
 
-#: src/language/stats/examine.q:1546 src/language/stats/frequencies.q:125
+#: src/language/stats/examine.q:1557 src/language/stats/frequencies.q:125
 msgid "Median"
 msgstr ""
 
-#: src/language/stats/examine.q:1580 src/language/stats/oneway.q:403
-#: src/language/stats/t-test.q:692 src/language/stats/t-test.q:715
-#: src/language/stats/t-test.q:839 src/language/stats/t-test.q:1175
+#: src/language/stats/examine.q:1591 src/language/stats/oneway.q:394
+#: src/language/stats/t-test.q:685 src/language/stats/t-test.q:708
+#: src/language/stats/t-test.q:832 src/language/stats/t-test.q:1168
 msgid "Std. Deviation"
 msgstr ""
 
-#: src/language/stats/examine.q:1628
+#: src/language/stats/examine.q:1639
 msgid "Interquartile Range"
 msgstr ""
 
-#: src/language/stats/examine.q:1780
+#: src/language/stats/examine.q:1791
 #, c-format
 msgid "Boxplot of %s vs. %s"
 msgstr ""
 
-#: src/language/stats/examine.q:1805
+#: src/language/stats/examine.q:1816
 msgid "Boxplot"
 msgstr ""
 
-#: src/language/stats/examine.q:1847
+#: src/language/stats/examine.q:1858
 #, c-format
 msgid "Normal Q-Q Plot of %s"
 msgstr ""
 
-#: src/language/stats/examine.q:1848 src/language/stats/examine.q:1854
+#: src/language/stats/examine.q:1859 src/language/stats/examine.q:1865
 msgid "Observed Value"
 msgstr ""
 
-#: src/language/stats/examine.q:1849
+#: src/language/stats/examine.q:1860
 msgid "Expected Normal"
 msgstr ""
 
-#: src/language/stats/examine.q:1852
+#: src/language/stats/examine.q:1863
 #, c-format
 msgid "Detrended Normal Q-Q Plot of %s"
 msgstr ""
 
-#: src/language/stats/examine.q:1855
+#: src/language/stats/examine.q:1866
 msgid "Dev from Normal"
 msgstr ""
 
-#: src/language/stats/examine.q:1974 src/language/stats/examine.q:1996
+#: src/language/stats/examine.q:1985 src/language/stats/examine.q:2007
 #: src/language/stats/frequencies.q:1564
 msgid "Percentiles"
 msgstr ""
 
-#: src/language/stats/examine.q:2121
+#: src/language/stats/examine.q:2132
 msgid "Tukey's Hinges"
 msgstr ""
 
-#: src/language/stats/flip.c:101
+#: src/language/stats/flip.c:102
 msgid ""
 "FLIP ignores TEMPORARY.  Temporary transformations will be made permanent."
 msgstr ""
 
-#: src/language/stats/flip.c:243
+#: src/language/stats/flip.c:244
 #, c-format
 msgid "Could not create acceptable variant for variable %s."
 msgstr ""
 
-#: src/language/stats/flip.c:259
+#: src/language/stats/flip.c:260
 msgid "Cannot create more than 99999 variable names."
 msgstr ""
 
-#: src/language/stats/flip.c:296
+#: src/language/stats/flip.c:297
 msgid "Could not create temporary file for FLIP."
 msgstr ""
 
-#: src/language/stats/flip.c:307 src/language/stats/flip.c:373
+#: src/language/stats/flip.c:308 src/language/stats/flip.c:374
 #, c-format
 msgid "Error writing FLIP file: %s."
 msgstr ""
 
-#: src/language/stats/flip.c:420
+#: src/language/stats/flip.c:421
 #, c-format
 msgid "Error rewinding FLIP file: %s."
 msgstr ""
 
-#: src/language/stats/flip.c:427
+#: src/language/stats/flip.c:428
 msgid "Error creating FLIP source file."
 msgstr ""
 
-#: src/language/stats/flip.c:439
+#: src/language/stats/flip.c:440
 #, c-format
 msgid "Error reading FLIP file: %s."
 msgstr ""
 
-#: src/language/stats/flip.c:463
+#: src/language/stats/flip.c:464
 #, c-format
 msgid "Error seeking FLIP source file: %s."
 msgstr ""
 
-#: src/language/stats/flip.c:471
+#: src/language/stats/flip.c:472
 #, c-format
 msgid "Error writing FLIP source file: %s."
 msgstr ""
 
-#: src/language/stats/flip.c:482
+#: src/language/stats/flip.c:483
 #, c-format
 msgid "Error closing FLIP source file: %s."
 msgstr ""
 
-#: src/language/stats/flip.c:490
+#: src/language/stats/flip.c:491
 #, c-format
 msgid "Error rewinding FLIP source file: %s."
 msgstr ""
 
-#: src/language/stats/flip.c:538
+#: src/language/stats/flip.c:539
 #, c-format
 msgid "Error reading FLIP temporary file: %s."
 msgstr ""
 
-#: src/language/stats/flip.c:541
+#: src/language/stats/flip.c:542
 msgid "Unexpected end of file reading FLIP temporary file."
 msgstr ""
 
@@ -3212,98 +3119,98 @@
 msgid "TABLES subcommand may not appear more than once."
 msgstr ""
 
-#: src/language/stats/oneway.q:180
+#: src/language/stats/oneway.q:170
 msgid "Number of contrast coefficients must equal the number of groups"
 msgstr ""
 
-#: src/language/stats/oneway.q:189
+#: src/language/stats/oneway.q:179
 #, c-format
 msgid "Coefficients for contrast %d do not total zero"
 msgstr ""
 
-#: src/language/stats/oneway.q:253
+#: src/language/stats/oneway.q:245
 #, c-format
 msgid "`%s' is not a variable name"
 msgstr ""
 
-#: src/language/stats/oneway.q:287 src/language/stats/regression.q:307
+#: src/language/stats/oneway.q:279 src/language/stats/regression.q:307
 msgid "Sum of Squares"
 msgstr ""
 
-#: src/language/stats/oneway.q:289 src/language/stats/regression.q:309
+#: src/language/stats/oneway.q:281 src/language/stats/regression.q:309
 msgid "Mean Square"
 msgstr ""
 
-#: src/language/stats/oneway.q:290 src/language/stats/regression.q:310
-#: src/language/stats/t-test.q:985
+#: src/language/stats/oneway.q:282 src/language/stats/regression.q:310
+#: src/language/stats/t-test.q:978
 msgid "F"
 msgstr ""
 
-#: src/language/stats/oneway.q:291 src/language/stats/oneway.q:545
+#: src/language/stats/oneway.q:283 src/language/stats/oneway.q:536
 #: src/language/stats/regression.q:215 src/language/stats/regression.q:311
 msgid "Significance"
 msgstr ""
 
-#: src/language/stats/oneway.q:313
+#: src/language/stats/oneway.q:305
 msgid "Between Groups"
 msgstr ""
 
-#: src/language/stats/oneway.q:314
+#: src/language/stats/oneway.q:306
 msgid "Within Groups"
 msgstr ""
 
-#: src/language/stats/oneway.q:361 src/language/stats/regression.q:337
+#: src/language/stats/oneway.q:353 src/language/stats/regression.q:337
 msgid "ANOVA"
 msgstr ""
 
-#: src/language/stats/oneway.q:542
+#: src/language/stats/oneway.q:533
 msgid "Levene Statistic"
 msgstr ""
 
-#: src/language/stats/oneway.q:543
+#: src/language/stats/oneway.q:534
 msgid "df1"
 msgstr ""
 
-#: src/language/stats/oneway.q:544
+#: src/language/stats/oneway.q:535
 msgid "df2"
 msgstr ""
 
-#: src/language/stats/oneway.q:548
+#: src/language/stats/oneway.q:539
 msgid "Test of Homogeneity of Variances"
 msgstr ""
 
-#: src/language/stats/oneway.q:618
+#: src/language/stats/oneway.q:607
 msgid "Contrast Coefficients"
 msgstr ""
 
-#: src/language/stats/oneway.q:620 src/language/stats/oneway.q:687
+#: src/language/stats/oneway.q:609 src/language/stats/oneway.q:676
 msgid "Contrast"
 msgstr ""
 
-#: src/language/stats/oneway.q:685
+#: src/language/stats/oneway.q:674
 msgid "Contrast Tests"
 msgstr ""
 
-#: src/language/stats/oneway.q:688
+#: src/language/stats/oneway.q:677
 msgid "Value of Contrast"
 msgstr ""
 
-#: src/language/stats/oneway.q:690 src/language/stats/regression.q:214
-#: src/language/stats/t-test.q:987 src/language/stats/t-test.q:1179
-#: src/language/stats/t-test.q:1271
+#: src/language/stats/oneway.q:679 src/language/stats/regression.q:214
+#: src/language/stats/t-test.q:980 src/language/stats/t-test.q:1172
+#: src/language/stats/t-test.q:1264
 msgid "t"
 msgstr ""
 
-#: src/language/stats/oneway.q:692 src/language/stats/t-test.q:989
-#: src/language/stats/t-test.q:1181 src/language/stats/t-test.q:1273
+#: src/language/stats/oneway.q:681 src/language/stats/t-test.q:982
+#: src/language/stats/t-test.q:1174 src/language/stats/t-test.q:1266
 msgid "Sig. (2-tailed)"
 msgstr ""
 
-#: src/language/stats/oneway.q:736
+#: src/language/stats/oneway.q:725
 msgid "Assume equal variances"
 msgstr ""
 
-#: src/language/stats/oneway.q:740
+#: src/language/stats/oneway.q:729
 msgid "Does not assume equal"
 msgstr ""
 
@@ -3321,31 +3228,31 @@
 msgid "Cannot create new rank variable.  All candidates in use."
 msgstr ""
 
-#: src/language/stats/rank.q:823
+#: src/language/stats/rank.q:822
 msgid "Variables Created By RANK"
 msgstr ""
 
-#: src/language/stats/rank.q:847
+#: src/language/stats/rank.q:846
 #, c-format
 msgid "%s into %s(%s of %s using %s BY %s)"
 msgstr ""
 
-#: src/language/stats/rank.q:858
+#: src/language/stats/rank.q:857
 #, c-format
 msgid "%s into %s(%s of %s BY %s)"
 msgstr ""
 
-#: src/language/stats/rank.q:872
+#: src/language/stats/rank.q:871
 #, c-format
 msgid "%s into %s(%s of %s using %s)"
 msgstr ""
 
-#: src/language/stats/rank.q:882
+#: src/language/stats/rank.q:881
 #, c-format
 msgid "%s into %s(%s of %s)"
 msgstr ""
 
-#: src/language/stats/rank.q:895
+#: src/language/stats/rank.q:894
 msgid ""
 "FRACTION has been specified, but NORMAL and PROPORTION rank functions have "
 "not been requested.  The FRACTION subcommand will be ignored."
@@ -3444,122 +3351,142 @@
 msgid "One or more VARIABLES must be specified."
 msgstr ""
 
-#: src/language/stats/t-test.q:387
+#: src/language/stats/t-test.q:380
 #, c-format
 msgid "Long string variable %s is not valid here."
 msgstr ""
 
-#: src/language/stats/t-test.q:407 src/language/stats/t-test.q:422
+#: src/language/stats/t-test.q:400 src/language/stats/t-test.q:415
 msgid ""
 "When applying GROUPS to a string variable, two values must be specified."
 msgstr ""
 
-#: src/language/stats/t-test.q:494
+#: src/language/stats/t-test.q:487
 #, c-format
 msgid ""
 "PAIRED was specified but the number of variables preceding WITH (%d) did not "
 "match the number following (%d)."
 msgstr ""
 
-#: src/language/stats/t-test.q:511
+#: src/language/stats/t-test.q:504
 msgid "At least two variables must be specified on PAIRS."
 msgstr ""
 
-#: src/language/stats/t-test.q:688
+#: src/language/stats/t-test.q:681
 msgid "One-Sample Statistics"
 msgstr ""
 
-#: src/language/stats/t-test.q:693 src/language/stats/t-test.q:716
-#: src/language/stats/t-test.q:840
+#: src/language/stats/t-test.q:686 src/language/stats/t-test.q:709
+#: src/language/stats/t-test.q:833
 msgid "SE. Mean"
 msgstr ""
 
-#: src/language/stats/t-test.q:711
+#: src/language/stats/t-test.q:704
 msgid "Group Statistics"
 msgstr ""
 
-#: src/language/stats/t-test.q:834
+#: src/language/stats/t-test.q:827
 msgid "Paired Sample Statistics"
 msgstr ""
 
-#: src/language/stats/t-test.q:856 src/language/stats/t-test.q:1200
-#: src/language/stats/t-test.q:1390
+#: src/language/stats/t-test.q:849 src/language/stats/t-test.q:1193
+#: src/language/stats/t-test.q:1383
 #, c-format
 msgid "Pair %d"
 msgstr ""
 
-#: src/language/stats/t-test.q:973
+#: src/language/stats/t-test.q:966
 msgid "Independent Samples Test"
 msgstr ""
 
-#: src/language/stats/t-test.q:981
+#: src/language/stats/t-test.q:974
 msgid "Levene's Test for Equality of Variances"
 msgstr ""
 
-#: src/language/stats/t-test.q:983
+#: src/language/stats/t-test.q:976
 msgid "t-test for Equality of Means"
 msgstr ""
 
-#: src/language/stats/t-test.q:986 src/language/stats/t-test.q:1375
+#: src/language/stats/t-test.q:979 src/language/stats/t-test.q:1368
 msgid "Sig."
 msgstr ""
 
-#: src/language/stats/t-test.q:990 src/language/stats/t-test.q:1274
+#: src/language/stats/t-test.q:983 src/language/stats/t-test.q:1267
 msgid "Mean Difference"
 msgstr ""
 
-#: src/language/stats/t-test.q:991
+#: src/language/stats/t-test.q:984
 msgid "Std. Error Difference"
 msgstr ""
 
-#: src/language/stats/t-test.q:996 src/language/stats/t-test.q:1171
-#: src/language/stats/t-test.q:1266
+#: src/language/stats/t-test.q:989 src/language/stats/t-test.q:1164
+#: src/language/stats/t-test.q:1259
 #, c-format
 msgid "%g%% Confidence Interval of the Difference"
 msgstr ""
 
-#: src/language/stats/t-test.q:1051
+#: src/language/stats/t-test.q:1044
 msgid "Equal variances assumed"
 msgstr ""
 
-#: src/language/stats/t-test.q:1103
+#: src/language/stats/t-test.q:1096
 msgid "Equal variances not assumed"
 msgstr ""
 
-#: src/language/stats/t-test.q:1161
+#: src/language/stats/t-test.q:1154
 msgid "Paired Samples Test"
 msgstr ""
 
-#: src/language/stats/t-test.q:1164
+#: src/language/stats/t-test.q:1157
 msgid "Paired Differences"
 msgstr ""
 
-#: src/language/stats/t-test.q:1176
+#: src/language/stats/t-test.q:1169
 msgid "Std. Error Mean"
 msgstr ""
 
-#: src/language/stats/t-test.q:1255
+#: src/language/stats/t-test.q:1248
 msgid "One-Sample Test"
 msgstr ""
 
-#: src/language/stats/t-test.q:1260
+#: src/language/stats/t-test.q:1253
 #, c-format
 msgid "Test Value = %f"
 msgstr ""
 
-#: src/language/stats/t-test.q:1370
+#: src/language/stats/t-test.q:1363
 msgid "Paired Samples Correlations"
 msgstr ""
 
-#: src/language/stats/t-test.q:1374
+#: src/language/stats/t-test.q:1367
 msgid "Correlation"
 msgstr ""
 
-#: src/language/stats/t-test.q:1393
+#: src/language/stats/t-test.q:1386
 #, c-format
 msgid "%s & %s"
 msgstr ""
 
+#: src/language/tests/float-format.c:127
+#, c-format
+msgid "%d-byte string needed but %d-byte string supplied."
+msgstr ""
+
+#: src/language/tests/float-format.c:138
+msgid "Hexadecimal floating constant too long."
+msgstr ""
+
+#: src/language/tests/float-format.c:203
+#, c-format
+msgid ""
+"%s conversion of %s from %s to %s should have produced %s but actually "
+"produced %s."
+msgstr ""
+
+#: src/language/tests/float-format.c:249
+msgid "Too many values in single command."
+msgstr ""
+
 #: src/language/tests/moments-test.c:50
 msgid "expecting weight value"
 msgstr ""
@@ -3568,10 +3495,15 @@
 msgid "Only USE ALL is currently implemented."
 msgstr ""
 
-#: src/language/utilities/include.c:43
+#: src/language/utilities/include.c:49
 msgid "expecting file name"
 msgstr ""
 
+#: src/language/utilities/include.c:65
+#, c-format
+msgid "Can't find `%s' in include file search path."
+msgstr ""
+
 #: src/language/utilities/permissions.c:77
 #, c-format
 msgid "Expecting %s or %s."
@@ -3587,129 +3519,139 @@
 msgid "Cannot change mode of %s: %s"
 msgstr ""
 
-#: src/language/utilities/set.q:175 src/language/utilities/set.q:177
-#: src/language/utilities/set.q:179 src/language/utilities/set.q:181
-#: src/language/utilities/set.q:183 src/language/utilities/set.q:185
-#: src/language/utilities/set.q:187 src/language/utilities/set.q:189
-#: src/language/utilities/set.q:191
+#: src/language/utilities/set.q:201 src/language/utilities/set.q:203
+#: src/language/utilities/set.q:205 src/language/utilities/set.q:207
+#: src/language/utilities/set.q:209 src/language/utilities/set.q:211
+#: src/language/utilities/set.q:213 src/language/utilities/set.q:215
+#: src/language/utilities/set.q:217
 #, c-format
 msgid "%s is obsolete."
 msgstr ""
 
-#: src/language/utilities/set.q:194
+#: src/language/utilities/set.q:220
 #, c-format
 msgid "%s is not implemented."
 msgstr ""
 
-#: src/language/utilities/set.q:197
+#: src/language/utilities/set.q:223
 msgid "Active file compression is not implemented."
 msgstr ""
 
-#: src/language/utilities/set.q:272
+#: src/language/utilities/set.q:347
 #, c-format
 msgid ""
-"CC%c: Custom currency string `%s' does not contain exactly three periods or "
-"commas (not both)."
+"%s: Custom currency string `%s' does not contain exactly three periods or "
+"commas (or it contains both)."
 msgstr ""
 
-#: src/language/utilities/set.q:324
+#: src/language/utilities/set.q:403
 msgid "EPOCH must be 1500 or later."
 msgstr ""
 
-#: src/language/utilities/set.q:331
+#: src/language/utilities/set.q:410
 msgid "expecting AUTOMATIC or year"
 msgstr ""
 
-#: src/language/utilities/set.q:352
+#: src/language/utilities/set.q:431
 msgid "LENGTH must be at least 1."
 msgstr ""
 
-#: src/language/utilities/set.q:396
+#: src/language/utilities/set.q:475
 msgid "WIDTH must be at least 40."
 msgstr ""
 
-#: src/language/utilities/set.q:418
+#: src/language/utilities/set.q:498
 #, c-format
 msgid ""
 "FORMAT requires numeric output format as an argument.  Specified format %s "
 "is of type string."
 msgstr ""
 
-#: src/language/utilities/set.q:475
+#: src/language/utilities/set.q:555
 msgid "BLANKS is SYSMIS."
 msgstr ""
 
-#: src/language/utilities/set.q:477
+#: src/language/utilities/set.q:557
 #, c-format
 msgid "BLANKS is %g."
 msgstr ""
 
-#: src/language/utilities/set.q:509
+#: src/language/utilities/set.q:592
 #, c-format
-msgid "CC%c is \"%s\"."
+msgid "%s is \"%s\"."
 msgstr ""
 
-#: src/language/utilities/set.q:546
+#: src/language/utilities/set.q:628
 #, c-format
 msgid "DECIMAL is \"%c\"."
 msgstr ""
 
-#: src/language/utilities/set.q:552
+#: src/language/utilities/set.q:634
 #, c-format
 msgid "ENDCMD is \"%c\"."
 msgstr ""
 
-#: src/language/utilities/set.q:558
+#: src/language/utilities/set.q:642
+#, c-format
+msgid "ERRORS is \"%s\"."
+msgstr ""
+
+#: src/language/utilities/set.q:653
 #, c-format
 msgid "FORMAT is %s."
 msgstr ""
 
-#: src/language/utilities/set.q:564
+#: src/language/utilities/set.q:659
 #, c-format
 msgid "LENGTH is %d."
 msgstr ""
 
-#: src/language/utilities/set.q:570
+#: src/language/utilities/set.q:665
 #, c-format
 msgid "MXERRS is %d."
 msgstr ""
 
-#: src/language/utilities/set.q:576
+#: src/language/utilities/set.q:671
 #, c-format
 msgid "MXLOOPS is %d."
 msgstr ""
 
-#: src/language/utilities/set.q:582
+#: src/language/utilities/set.q:677
 #, c-format
 msgid "MXWARNS is %d."
 msgstr ""
 
-#: src/language/utilities/set.q:589
+#: src/language/utilities/set.q:684 src/language/utilities/set.q:735
+#, c-format
+msgid "%s is %s (%s)."
+msgstr ""
+
+#: src/language/utilities/set.q:756
 msgid "SCOMPRESSION is ON."
 msgstr ""
 
-#: src/language/utilities/set.q:591
+#: src/language/utilities/set.q:758
 msgid "SCOMPRESSION is OFF."
 msgstr ""
 
-#: src/language/utilities/set.q:598
+#: src/language/utilities/set.q:765
 msgid "UNDEFINED is WARN."
 msgstr ""
 
-#: src/language/utilities/set.q:600
+#: src/language/utilities/set.q:767
 msgid "UNDEFINED is NOWARN."
 msgstr ""
 
-#: src/language/utilities/set.q:608
+#: src/language/utilities/set.q:775
 msgid "WEIGHT is off."
 msgstr ""
 
-#: src/language/utilities/set.q:610
+#: src/language/utilities/set.q:777
 #, c-format
 msgid "WEIGHT is variable %s."
 msgstr ""
 
-#: src/language/utilities/set.q:616
+#: src/language/utilities/set.q:795
 #, c-format
 msgid "WIDTH is %d."
 msgstr ""
@@ -3719,25 +3661,25 @@
 msgid "%s: `.' expected after string."
 msgstr ""
 
-#: src/language/utilities/title.c:141
+#: src/language/utilities/title.c:139
 #, c-format
 msgid "Document entered %s by %s:"
 msgstr ""
 
-#: src/language/xforms/compute.c:145 src/language/xforms/compute.c:192
+#: src/language/xforms/compute.c:148 src/language/xforms/compute.c:195
 #, c-format
 msgid ""
 "When executing COMPUTE: SYSMIS is not a valid value as an index into vector %"
 "s."
 msgstr ""
 
-#: src/language/xforms/compute.c:148 src/language/xforms/compute.c:199
+#: src/language/xforms/compute.c:151 src/language/xforms/compute.c:202
 #, c-format
 msgid ""
 "When executing COMPUTE: %g is not a valid value as an index into vector %s."
 msgstr ""
 
-#: src/language/xforms/compute.c:336
+#: src/language/xforms/compute.c:340
 #, c-format
 msgid "There is no vector named %s."
 msgstr ""
@@ -3746,40 +3688,40 @@
 msgid "Destination cannot be a string variable."
 msgstr ""
 
-#: src/language/xforms/recode.c:248
+#: src/language/xforms/recode.c:249
 msgid ""
 "Inconsistent target variable types.  Target variables must be all numeric or "
 "all string."
 msgstr ""
 
-#: src/language/xforms/recode.c:268
+#: src/language/xforms/recode.c:269
 msgid "CONVERT requires string input values and numeric output values."
 msgstr ""
 
-#: src/language/xforms/recode.c:386
+#: src/language/xforms/recode.c:387
 msgid "expecting output value"
 msgstr ""
 
-#: src/language/xforms/recode.c:434
+#: src/language/xforms/recode.c:436
 #, c-format
 msgid ""
 "%u variable(s) cannot be recoded into %u variable(s).  Specify the same "
 "number of variables as source and target variables."
 msgstr ""
 
-#: src/language/xforms/recode.c:449
+#: src/language/xforms/recode.c:451
 #, c-format
 msgid ""
 "There is no variable named %s.  (All string variables specified on INTO must "
 "already exist.  Use the STRING command to create a string variable.)"
 msgstr ""
 
-#: src/language/xforms/recode.c:464
+#: src/language/xforms/recode.c:466
 #, c-format
 msgid "INTO is required with %s input values and %s output values."
 msgstr ""
 
-#: src/language/xforms/recode.c:477
+#: src/language/xforms/recode.c:479
 #, c-format
 msgid "Type mismatch.  Cannot store %s data in %s variable %s."
 msgstr ""
@@ -3830,7 +3772,7 @@
 msgid "Empirical with averaging"
 msgstr ""
 
-#: src/math/sort.c:436
+#: src/math/sort.c:440
 #, c-format
 msgid ""
 "Out of memory.  Could not allocate room for minimum of %d cases of %d bytes "
@@ -4224,12 +4166,12 @@
 msgid "invalid numeric format"
 msgstr ""
 
-#: src/output/table.c:232
+#: src/output/table.c:238
 #, c-format
 msgid "bad vline: x=%d+%d=%d y=(%d+%d=%d,%d+%d=%d) in table size (%d,%d)\n"
 msgstr ""
 
-#: src/output/table.c:303
+#: src/output/table.c:309
 #, c-format
 msgid ""
 "bad box: (%d+%d=%d,%d+%d=%d)-(%d+%d=%d,%d+%d=%d) in table size (%d,%d)\n"
@@ -4271,15 +4213,15 @@
 msgid "Font Selection"
 msgstr "Schriftwahlung"
 
-#: src/ui/gui/message-dialog.c:136
+#: src/ui/gui/message-dialog.c:128
 msgid "Script Error"
 msgstr "Skript Fehler"
 
-#: src/ui/gui/message-dialog.c:140
+#: src/ui/gui/message-dialog.c:132
 msgid "Data File Error"
 msgstr "Datei Fehler"
 
-#: src/ui/gui/message-dialog.c:145
+#: src/ui/gui/message-dialog.c:137
 msgid "PSPP Error"
 msgstr "PSPP Fehler"
 
@@ -4291,17 +4233,17 @@
 msgid "Incorrect range specification"
 msgstr "Falshe Spannweitebeschreibung"
 
-#: src/ui/gui/psppire.c:67
+#: src/ui/gui/psppire.c:71
 msgid "Sorry. The help system hasn't yet been implemented."
 msgstr "Es gibt noch nicht kein Helpsysteme. Schade!"
 
-#: src/ui/gui/psppire-data-store.c:733
+#: src/ui/gui/psppire-data-store.c:724
 msgid "var"
 msgstr ""
 
-#: src/ui/gui/psppire-data-store.c:814 src/ui/gui/psppire-var-store.c:518
-#: src/ui/gui/psppire-var-store.c:528 src/ui/gui/psppire-var-store.c:538
-#: src/ui/gui/psppire-var-store.c:735
+#: src/ui/gui/psppire-data-store.c:805 src/ui/gui/psppire-var-store.c:521
+#: src/ui/gui/psppire-var-store.c:531 src/ui/gui/psppire-var-store.c:541
+#: src/ui/gui/psppire-var-store.c:738
 #, c-format
 msgid "%d"
 msgstr ""
@@ -4654,7 +4596,7 @@
 msgid "Scale"
 msgstr "Skalwert"
 
-#: src/ui/terminal/command-line.c:215
+#: src/ui/terminal/command-line.c:222
 #, c-format
 msgid ""
 "PSPP, a program for statistical analysis of sample data.\n"
@@ -4673,6 +4615,7 @@
 "defaults\n"
 "\n"
 "Input and output:\n"
+"  -e, --error-file=FILE     send error messages to FILE (appended)\n"
 "  -f, --out-file=FILE       send output to FILE (overwritten)\n"
 "  -p, --pipe                read script from stdin, send output to stdout\n"
 "  -I-, --no-include         clear include path\n"
@@ -4699,38 +4642,43 @@
 "\n"
 msgstr ""
 
-#: src/ui/terminal/command-line.c:249
+#: src/ui/terminal/command-line.c:257
 #, c-format
 msgid ""
 "\n"
 "Report bugs to <%s>.\n"
 msgstr ""
 
-#: src/ui/terminal/main.c:114
+#: src/ui/terminal/main.c:120
 msgid ""
 "Stopping syntax file processing here to avoid a cascade of dependent command "
 "failures."
 msgstr ""
 
-#: src/ui/terminal/msg-ui.c:62
+#: src/ui/terminal/msg-ui.c:66
+#, c-format
+msgid "Cannot open %s (%s). Writing errors to stdout instead.\n"
+msgstr ""
+
+#: src/ui/terminal/msg-ui.c:91
 msgid "Terminating execution of syntax file due to error."
 msgstr ""
 
-#: src/ui/terminal/msg-ui.c:64
+#: src/ui/terminal/msg-ui.c:93
 #, c-format
 msgid "Errors (%d) exceeds limit (%d)."
 msgstr ""
 
-#: src/ui/terminal/msg-ui.c:67
+#: src/ui/terminal/msg-ui.c:96
 #, c-format
 msgid "Warnings (%d) exceed limit (%d)."
 msgstr ""
 
-#: src/ui/terminal/msg-ui.c:116
+#: src/ui/terminal/msg-ui.c:145
 msgid "error"
 msgstr "Fehler"
 
-#: src/ui/terminal/msg-ui.c:117
+#: src/ui/terminal/msg-ui.c:146
 msgid "warning"
 msgstr "Warnung"
 
Index: po/pspp.pot
===================================================================
RCS file: /sources/pspp/pspp/po/pspp.pot,v
retrieving revision 1.103
diff -b -w -U3 -r1.103 pspp.pot
--- po/pspp.pot	28 Oct 2006 08:31:22 -0000	1.103
+++ po/pspp.pot	26 Nov 2006 05:09:04 -0000
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: pspp-dev@gnu.org\n"
-"POT-Creation-Date: 2006-10-26 16:30+0800\n"
+"POT-Creation-Date: 2006-11-26 08:37+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"
@@ -46,222 +46,136 @@
 msgid "Date %04d-%d-%d is before the earliest acceptable date of 1582-10-15."
 msgstr ""
 
-#: src/data/data-in.c:59
-#, c-format
-msgid "(column %d"
-msgstr ""
-
-#: src/data/data-in.c:61
-#, c-format
-msgid "(columns %d-%d"
-msgstr ""
-
-#: src/data/data-in.c:62
-#, c-format
-msgid ", field type %s) "
+#: src/data/data-in.c:272 src/data/data-in.c:462
+msgid "Field contents are not numeric."
 msgstr ""
 
-#: src/data/data-in.c:207
-msgid "Field does not form a valid floating-point constant."
+#: src/data/data-in.c:274 src/data/data-in.c:464
+msgid "Number followed by garbage."
 msgstr ""
 
-#: src/data/data-in.c:234
-msgid "Field contents followed by garbage."
+#: src/data/data-in.c:285
+msgid "Invalid numeric syntax."
 msgstr ""
 
-#: src/data/data-in.c:252
-msgid "Underflow in floating-point constant."
+#: src/data/data-in.c:294 src/data/data-in.c:477
+msgid "Too-large number set to system-missing."
 msgstr ""
 
-#: src/data/data-in.c:263
-msgid "Overflow in floating-point constant."
+#: src/data/data-in.c:299 src/data/data-in.c:482
+msgid "Too-small number set to zero."
 msgstr ""
 
-#: src/data/data-in.c:296
+#: src/data/data-in.c:325
 msgid "All characters in field must be digits."
 msgstr ""
 
-#: src/data/data-in.c:320
+#: src/data/data-in.c:348
 msgid "Unrecognized character in field."
 msgstr ""
 
-#: src/data/data-in.c:338 src/data/data-in.c:586
+#: src/data/data-in.c:372 src/data/data-in.c:636
 msgid "Field must have even length."
 msgstr ""
 
-#: src/data/data-in.c:348 src/data/data-in.c:596
+#: src/data/data-in.c:377 src/data/data-in.c:642
 msgid "Field must contain only hex digits."
 msgstr ""
 
-#: src/data/data-in.c:387
-#, c-format
-msgid ""
-"Quality of zoned decimal (Z) input format code is suspect.  Check your "
-"results three times. Report bugs to %s."
-msgstr ""
-
-#: src/data/data-in.c:399
-msgid "Zoned decimal field contains fewer than 2 characters."
-msgstr ""
-
-#: src/data/data-in.c:407
-msgid "Bad sign byte in zoned decimal number."
+#: src/data/data-in.c:681 src/data/data-in.c:728
+msgid "Syntax error in date field."
 msgstr ""
 
-#: src/data/data-in.c:427
-msgid "Format error in zoned decimal number."
-msgstr ""
-
-#: src/data/data-in.c:441
-msgid "Error in syntax of zoned decimal number."
-msgstr ""
-
-#: src/data/data-in.c:636
-msgid "Unexpected end of field."
-msgstr ""
-
-#: src/data/data-in.c:662
-msgid "Digit expected in field."
-msgstr ""
-
-#: src/data/data-in.c:687
+#: src/data/data-in.c:697
 #, c-format
 msgid "Day (%ld) must be between 1 and 31."
 msgstr ""
 
-#: src/data/data-in.c:712
+#: src/data/data-in.c:744
 msgid "Delimiter expected between fields in date."
 msgstr ""
 
-#: src/data/data-in.c:745
-#, c-format
-msgid "Parse error at `%c' expecting %s."
-msgstr ""
-
-#: src/data/data-in.c:759
-#, c-format
-msgid "Unknown %s `%.*s'."
-msgstr ""
-
-#: src/data/data-in.c:809
-#, c-format
-msgid "Month (%ld) must be between 1 and 12."
-msgstr ""
-
-#: src/data/data-in.c:813
-msgid "month"
+#: src/data/data-in.c:818
+msgid ""
+"Unrecognized month format.  Months may be specified as Arabic or Roman "
+"numerals or as at least 3 letters of their English names."
 msgstr ""
 
-#: src/data/data-in.c:827
+#: src/data/data-in.c:845
 #, c-format
 msgid "Year (%ld) must be between 1582 and 19999."
 msgstr ""
 
-#: src/data/data-in.c:838
+#: src/data/data-in.c:857
 #, c-format
-msgid "Trailing garbage \"%s\" following date."
+msgid "Trailing garbage \"%.*s\" following date."
 msgstr ""
 
-#: src/data/data-in.c:853
-#, c-format
-msgid "Julian day (%d) must be between 1 and 366."
+#: src/data/data-in.c:873
+msgid "Julian day must have exactly three digits."
 msgstr ""
 
-#: src/data/data-in.c:865
+#: src/data/data-in.c:878
 #, c-format
-msgid "Year (%d) must be between 1582 and 19999."
+msgid "Julian day (%ld) must be between 1 and 366."
 msgstr ""
 
-#: src/data/data-in.c:881
+#: src/data/data-in.c:902
 #, c-format
 msgid "Quarter (%ld) must be between 1 and 4."
 msgstr ""
 
-#: src/data/data-in.c:891
-msgid "`Q' expected between quarter and year."
-msgstr ""
-
-#: src/data/data-in.c:907
+#: src/data/data-in.c:922
 #, c-format
 msgid "Week (%ld) must be between 1 and 53."
 msgstr ""
 
-#: src/data/data-in.c:919
-msgid "`WK' expected between week and year."
-msgstr ""
-
-#: src/data/data-in.c:942
+#: src/data/data-in.c:935
 msgid "Delimiter expected between fields in time."
 msgstr ""
 
-#: src/data/data-in.c:954
-#, c-format
-msgid "Hour (%ld) must be positive."
-msgstr ""
-
-#: src/data/data-in.c:966
+#: src/data/data-in.c:955
 #, c-format
 msgid "Minute (%ld) must be between 0 and 59."
 msgstr ""
 
-#: src/data/data-in.c:1013
-#, c-format
-msgid "Hour (%ld) must be between 0 and 23."
-msgstr ""
-
-#: src/data/data-in.c:1041
-msgid "weekday"
-msgstr ""
-
-#: src/data/data-in.c:1372
-#, c-format
-msgid "Field too long (%d characters).  Truncated after character %d."
-msgstr ""
-
-#: src/data/data-out.c:242
+#: src/data/data-in.c:995
 msgid ""
-"The N output format cannot be used to output a negative number or the system-"
-"missing value."
+"Unrecognized weekday name.  At least the first two letters of an English "
+"weekday name must be specified."
 msgstr ""
 
-#: src/data/data-out.c:356
+#: src/data/data-in.c:1133
 #, c-format
-msgid ""
-"Quality of zoned decimal (Z) output format code is suspect.  Check your "
-"results. Report bugs to %s."
-msgstr ""
-
-#: src/data/data-out.c:364
-msgid "The system-missing value cannot be output as a zoned decimal number."
+msgid "`%c' expected in date field."
 msgstr ""
 
-#: src/data/data-out.c:377
+#: src/data/data-in.c:1174
 #, c-format
-msgid "Number %g too big to fit in field with format Z%d.%d."
+msgid "column %d"
 msgstr ""
 
-#: src/data/data-out.c:771
+#: src/data/data-in.c:1176
 #, c-format
-msgid "Time value %g too large in magnitude to convert to alphanumeric time."
+msgid "columns %d-%d"
 msgstr ""
 
-#: src/data/data-out.c:822
+#: src/data/data-in.c:1180
 #, c-format
-msgid "Weekday index %f does not lie between 1 and 7."
+msgid "%s field) "
 msgstr ""
 
-#: src/data/data-out.c:842
+#: src/data/data-out.c:469
 #, c-format
-msgid "Month index %f does not lie between 1 and 12."
+msgid "Weekday number %f is not between 1 and 7."
 msgstr ""
 
-#: src/data/data-out.c:955
+#: src/data/data-out.c:490
 #, c-format
-msgid ""
-"Year %d cannot be represented in four digits for output formatting purposes."
+msgid "Month number %f is not between 1 and 12."
 msgstr ""
 
-#: src/data/dictionary.c:708
+#: src/data/dictionary.c:710
 msgid ""
 "At least one case in the data file had a weight value that was user-missing, "
 "system-missing, zero, or negative.  These case(s) were ignored."
@@ -331,96 +245,96 @@
 msgid "Not opening pipe file `%s' because SAFER option set."
 msgstr ""
 
-#: src/data/format.c:98
-#, c-format
-msgid "Format %s specifies an odd width %d, but an even width is required."
+#: src/data/format.c:218
+msgid "Input format"
 msgstr ""
 
-#: src/data/format.c:106
-#, c-format
-msgid ""
-"Format %s specifies a bad number of implied decimal places %d.  Format type %"
-"s allows up to 16 implied decimal places."
+#: src/data/format.c:218
+msgid "Output format"
 msgstr ""
 
-#: src/data/format.c:114
+#: src/data/format.c:227
 #, c-format
-msgid ""
-"Format %s specifies %d decimal places, but format type %s does not allow for "
-"decimal places."
+msgid "Format %s may not be used for input."
 msgstr ""
 
-#: src/data/format.c:139
+#: src/data/format.c:234
 #, c-format
-msgid "Format %s may not be used for input."
+msgid "%s specifies width %d, but %s requires an even width."
 msgstr ""
 
-#: src/data/format.c:145
+#: src/data/format.c:243
 #, c-format
-msgid ""
-"Input format %s specifies a bad width %d.  Format %s requires a width "
-"between %d and %d."
+msgid "%s %s specifies width %d, but %s requires a width between %d and %d."
 msgstr ""
 
-#: src/data/format.c:155
+#: src/data/format.c:252
 #, c-format
-msgid ""
-"Input format %s is invalid because it specifies more decimal places than the "
-"field width."
-msgstr ""
+msgid "%s %s specifies %d decimal place, but %s does not allow any decimals."
+msgid_plural ""
+"%s %s specifies %d decimal places, but %s does not allow any decimals."
+msgstr[0] ""
+msgstr[1] ""
 
-#: src/data/format.c:179
+#: src/data/format.c:263
 #, c-format
 msgid ""
-"Output format %s specifies a bad width %d.  Format %s requires a width "
-"between %d and %d."
-msgstr ""
+"%s %s specifies %d decimal place, but the given width allows at most %d "
+"decimals."
+msgid_plural ""
+"%s %s specifies %d decimal places, but the given width allows at most %d "
+"decimals."
+msgstr[0] ""
+msgstr[1] ""
 
-#: src/data/format.c:189
+#: src/data/format.c:270
 #, c-format
 msgid ""
-"Output format %s is invalid because it specifies as many decimal places as "
-"the field width, which fails to allow space for a decimal point.  Try %s%d.%"
-"d instead."
-msgstr ""
+"%s %s specifies %d decimal place, but the given width does not allow for any "
+"decimals."
+msgid_plural ""
+"%s %s specifies %d decimal places, but the given width does not allow for "
+"any decimals."
+msgstr[0] ""
+msgstr[1] ""
 
-#: src/data/format.c:211
+#: src/data/format.c:309
 #, c-format
 msgid "%s variables are not compatible with %s format %s."
 msgstr ""
 
-#: src/data/format.c:212 src/data/por-file-reader.c:481
-#: src/data/sys-file-reader.c:1221 src/data/sys-file-reader.c:1230
+#: src/data/format.c:310 src/data/por-file-reader.c:487
+#: src/data/sys-file-reader.c:1222 src/data/sys-file-reader.c:1235
 #: src/ui/gui/psppire.glade:1192 src/ui/gui/psppire-var-store.c:451
 msgid "String"
 msgstr ""
 
-#: src/data/format.c:212 src/data/por-file-reader.c:481
-#: src/data/sys-file-reader.c:1221 src/data/sys-file-reader.c:1230
+#: src/data/format.c:310 src/data/por-file-reader.c:487
+#: src/data/sys-file-reader.c:1222 src/data/sys-file-reader.c:1235
 #: src/ui/gui/psppire.glade:1053 src/ui/gui/psppire-var-store.c:444
 msgid "Numeric"
 msgstr ""
 
-#: src/data/format.c:213 src/data/sys-file-reader.c:1223
-#: src/data/sys-file-reader.c:1368 src/data/sys-file-reader.c:1369
-#: src/data/variable.c:42 src/language/dictionary/apply-dictionary.c:76
+#: src/data/format.c:311 src/data/sys-file-reader.c:1224
+#: src/data/sys-file-reader.c:1375 src/data/sys-file-reader.c:1376
+#: src/data/variable.c:44 src/language/dictionary/apply-dictionary.c:76
 #: src/language/dictionary/apply-dictionary.c:77
-#: src/language/xforms/recode.c:479 src/language/xforms/recode.c:480
+#: src/language/xforms/recode.c:481 src/language/xforms/recode.c:482
 msgid "numeric"
 msgstr ""
 
-#: src/data/format.c:213 src/data/sys-file-reader.c:1223
-#: src/data/sys-file-reader.c:1368 src/data/sys-file-reader.c:1369
-#: src/data/variable.c:42 src/data/variable.c:50
+#: src/data/format.c:311 src/data/sys-file-reader.c:1224
+#: src/data/sys-file-reader.c:1375 src/data/sys-file-reader.c:1376
+#: src/data/variable.c:44 src/data/variable.c:52
 #: src/language/dictionary/apply-dictionary.c:76
 #: src/language/dictionary/apply-dictionary.c:77
-#: src/language/xforms/recode.c:479 src/language/xforms/recode.c:480
+#: src/language/xforms/recode.c:481 src/language/xforms/recode.c:482
 msgid "string"
 msgstr ""
 
-#: src/data/format.c:232
+#: src/data/format.c:329
 #, c-format
-msgid "String variable with width %d not compatible with format %s."
+msgid "String variable with width %d is not compatible with format %s."
 msgstr ""
 
 #: src/data/make-file.c:60
@@ -480,72 +394,72 @@
 msgid "Bad time string length %d."
 msgstr ""
 
-#: src/data/por-file-reader.c:473 src/data/sys-file-reader.c:1213
+#: src/data/por-file-reader.c:474 src/data/sys-file-reader.c:1214
 #, c-format
 msgid "%s: Bad format specifier byte (%d)."
 msgstr ""
 
-#: src/data/por-file-reader.c:480 src/data/sys-file-reader.c:1229
+#: src/data/por-file-reader.c:486 src/data/sys-file-reader.c:1234
 #, c-format
 msgid "%s variable %s has invalid format specifier %s."
 msgstr ""
 
-#: src/data/por-file-reader.c:495
+#: src/data/por-file-reader.c:502
 msgid "Expected variable count record."
 msgstr ""
 
-#: src/data/por-file-reader.c:499
+#: src/data/por-file-reader.c:506
 #, c-format
 msgid "Invalid number of variables %d."
 msgstr ""
 
-#: src/data/por-file-reader.c:509
+#: src/data/por-file-reader.c:516
 #, c-format
 msgid "Weight variable name (%s) truncated."
 msgstr ""
 
-#: src/data/por-file-reader.c:521
+#: src/data/por-file-reader.c:528
 msgid "Expected variable record."
 msgstr ""
 
-#: src/data/por-file-reader.c:525
+#: src/data/por-file-reader.c:532
 #, c-format
 msgid "Invalid variable width %d."
 msgstr ""
 
-#: src/data/por-file-reader.c:533
+#: src/data/por-file-reader.c:540
 #, c-format
 msgid "position %d: Invalid variable name `%s'."
 msgstr ""
 
-#: src/data/por-file-reader.c:541 src/language/expressions/evaluate.c:172
+#: src/data/por-file-reader.c:548 src/language/expressions/evaluate.c:170
 #, c-format
 msgid "Duplicate variable name %s."
 msgstr ""
 
-#: src/data/por-file-reader.c:577
+#: src/data/por-file-reader.c:584
 #, c-format
 msgid "Weighting variable %s not present in dictionary."
 msgstr ""
 
-#: src/data/por-file-reader.c:624
+#: src/data/por-file-reader.c:631
 #, c-format
 msgid "Unknown variable %s while parsing value labels."
 msgstr ""
 
-#: src/data/por-file-reader.c:627
+#: src/data/por-file-reader.c:634
 #, c-format
 msgid ""
 "Cannot assign value labels to %s and %s, which have different variable types "
 "or widths."
 msgstr ""
 
-#: src/data/por-file-reader.c:651
+#: src/data/por-file-reader.c:658
 #, c-format
 msgid "Duplicate label for value %g for variable %s."
 msgstr ""
 
-#: src/data/por-file-reader.c:654
+#: src/data/por-file-reader.c:661
 #, c-format
 msgid "Duplicate label for value `%.*s' for variable %s."
 msgstr ""
@@ -573,7 +487,7 @@
 "procedure, so it cannot yet be used for reading."
 msgstr ""
 
-#: src/data/settings.c:146
+#: src/data/settings.c:136
 #, c-format
 msgid "Could not access definition for terminal `%s'."
 msgstr ""
@@ -706,7 +620,7 @@
 msgid "DEC Kanji"
 msgstr ""
 
-#: src/data/sys-file-reader.c:802 src/language/dictionary/sys-file-info.c:124
+#: src/data/sys-file-reader.c:802 src/language/dictionary/sys-file-info.c:126
 msgid "Unknown"
 msgstr ""
 
@@ -820,165 +734,165 @@
 "file."
 msgstr ""
 
-#: src/data/sys-file-reader.c:1219
+#: src/data/sys-file-reader.c:1220
 #, c-format
 msgid "%s: %s variable %s has %s format specifier %s."
 msgstr ""
 
-#: src/data/sys-file-reader.c:1272
+#: src/data/sys-file-reader.c:1279
 #, c-format
 msgid "%s: Invalid number of labels: %d.  Ignoring labels."
 msgstr ""
 
-#: src/data/sys-file-reader.c:1314
+#: src/data/sys-file-reader.c:1321
 #, c-format
 msgid ""
 "%s: Variable index record (type 4) does not immediately follow value label "
 "record (type 3) as it should."
 msgstr ""
 
-#: src/data/sys-file-reader.c:1325
+#: src/data/sys-file-reader.c:1332
 #, 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/data/sys-file-reader.c:1341
+#: src/data/sys-file-reader.c:1348
 #, c-format
 msgid ""
 "%s: Variable index associated with value label (%d) is not between 1 and the "
 "number of values (%d)."
 msgstr ""
 
-#: src/data/sys-file-reader.c:1348
+#: src/data/sys-file-reader.c:1355
 #, 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/data/sys-file-reader.c:1353
+#: src/data/sys-file-reader.c:1360
 #, c-format
 msgid "%s: Value labels are not allowed on long string variables (%s)."
 msgstr ""
 
-#: src/data/sys-file-reader.c:1364
+#: src/data/sys-file-reader.c:1371
 #, 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/data/sys-file-reader.c:1405
+#: src/data/sys-file-reader.c:1412
 #, c-format
 msgid "%s: File contains duplicate label for value %g for variable %s."
 msgstr ""
 
-#: src/data/sys-file-reader.c:1409
+#: src/data/sys-file-reader.c:1416
 #, c-format
 msgid "%s: File contains duplicate label for value `%.*s' for variable %s."
 msgstr ""
 
-#: src/data/sys-file-reader.c:1451 src/data/sys-file-reader.c:1747
+#: src/data/sys-file-reader.c:1458 src/data/sys-file-reader.c:1754
 #, c-format
 msgid "%s: Reading system file: %s."
 msgstr ""
 
-#: src/data/sys-file-reader.c:1454 src/data/sys-file-reader.c:1573
-#: src/data/sys-file-reader.c:1614
+#: src/data/sys-file-reader.c:1461 src/data/sys-file-reader.c:1580
+#: src/data/sys-file-reader.c:1621
 #, c-format
 msgid "%s: Unexpected end of file."
 msgstr ""
 
-#: src/data/sys-file-reader.c:1471
+#: src/data/sys-file-reader.c:1478
 #, c-format
 msgid "%s: Seeking system file: %s."
 msgstr ""
 
-#: src/data/sys-file-reader.c:1486
+#: src/data/sys-file-reader.c:1493
 #, c-format
 msgid "%s: System file contains multiple type 6 (document) records."
 msgstr ""
 
-#: src/data/sys-file-reader.c:1492
+#: src/data/sys-file-reader.c:1499
 #, c-format
 msgid "%s: Number of document lines (%ld) must be greater than 0."
 msgstr ""
 
-#: src/data/sys-file-reader.c:1526
+#: src/data/sys-file-reader.c:1533
 #, c-format
 msgid "%s: Error reading file: %s."
 msgstr ""
 
-#: src/data/sys-file-reader.c:1565
+#: src/data/sys-file-reader.c:1572
 #, c-format
 msgid "%s: Compressed data is corrupted.  Data ends in partial case."
 msgstr ""
 
-#: src/data/sys-file-reader.c:1753
+#: src/data/sys-file-reader.c:1760
 #, c-format
 msgid "%s: Partial record at end of system file."
 msgstr ""
 
-#: src/data/sys-file-writer.c:176
+#: src/data/sys-file-writer.c:180
 #, c-format
 msgid "Unknown system file version %d. Treating as version %d."
 msgstr ""
 
-#: src/data/sys-file-writer.c:328
+#: src/data/sys-file-writer.c:332
 #, c-format
 msgid "Error opening \"%s\" for writing as a system file: %s."
 msgstr ""
 
-#: src/data/sys-file-writer.c:1035
+#: src/data/sys-file-writer.c:1039
 #, c-format
 msgid "An I/O error occurred writing system file \"%s\"."
 msgstr ""
 
-#: src/data/variable.c:50
+#: src/data/variable.c:52
 msgid "number"
 msgstr ""
 
-#: src/data/variable.c:153
+#: src/data/variable.c:155
 #, c-format
 msgid ""
 "Character `%c' (in %s), may not appear as the first character in a variable "
 "name."
 msgstr ""
 
-#: src/data/variable.c:165
+#: src/data/variable.c:167
 #, c-format
 msgid "Character `%c' (in %s) may not appear in a variable name."
 msgstr ""
 
-#: src/data/variable.c:194
+#: src/data/variable.c:196
 msgid "Variable name cannot be empty string."
 msgstr ""
 
-#: src/data/variable.c:200
+#: src/data/variable.c:202
 #, c-format
 msgid "Variable name %s exceeds %d-character limit."
 msgstr ""
 
-#: src/data/variable.c:208
+#: src/data/variable.c:210
 #, c-format
 msgid "`%s' may not be used as a variable name because it is a reserved word."
 msgstr ""
 
-#: src/data/variable.c:303
+#: src/data/variable.c:305
 msgid "Variable suffix too large."
 msgstr ""
 
-#: src/data/variable.c:344
+#: src/data/variable.c:346
 msgid "ordinary"
 msgstr ""
 
-#: src/data/variable.c:346
+#: src/data/variable.c:348
 msgid "system"
 msgstr ""
 
-#: src/data/variable.c:348
+#: src/data/variable.c:350
 msgid "scratch"
 msgstr ""
 
@@ -1006,75 +920,75 @@
 msgid "Unknown command %s."
 msgstr ""
 
-#: src/language/command.c:587
+#: src/language/command.c:588
 msgid "before the active file has been defined"
 msgstr ""
 
-#: src/language/command.c:589
+#: src/language/command.c:590
 msgid "after the active file has been defined"
 msgstr ""
 
-#: src/language/command.c:591
+#: src/language/command.c:592
 msgid "inside INPUT PROGRAM"
 msgstr ""
 
-#: src/language/command.c:593
+#: src/language/command.c:594
 msgid "inside FILE TYPE"
 msgstr ""
 
-#: src/language/command.c:598
+#: src/language/command.c:599
 #, c-format
 msgid "%s or %s"
 msgstr ""
 
-#: src/language/command.c:600
+#: src/language/command.c:601
 #, c-format
 msgid "%s, %s, or %s"
 msgstr ""
 
-#: src/language/command.c:604
+#: src/language/command.c:605
 #, c-format
 msgid "%s is allowed only %s."
 msgstr ""
 
-#: src/language/command.c:609
+#: src/language/command.c:610
 #, c-format
 msgid "%s is not allowed inside INPUT PROGRAM."
 msgstr ""
 
-#: src/language/command.c:611
+#: src/language/command.c:612
 #, c-format
 msgid "%s is not allowed inside FILE TYPE."
 msgstr ""
 
-#: src/language/command.c:689 src/language/command.c:820
+#: src/language/command.c:690 src/language/command.c:819
 #: src/language/utilities/permissions.c:102
 msgid "This command not allowed when the SAFER option is set."
 msgstr ""
 
-#: src/language/command.c:701
+#: src/language/command.c:702
 #, c-format
 msgid "Error removing `%s': %s."
 msgstr ""
 
-#: src/language/command.c:751
+#: src/language/command.c:752
 #, c-format
 msgid "Couldn't fork: %s."
 msgstr ""
 
-#: src/language/command.c:793
+#: src/language/command.c:794
 #, c-format
 msgid "Error executing command: %s."
 msgstr ""
 
-#: src/language/command.c:802 src/language/data-io/matrix-data.c:539
+#: src/language/command.c:803 src/language/data-io/matrix-data.c:541
 #: src/language/data-io/print-space.c:75 src/language/dictionary/vector.c:203
-#: src/language/lexer/lexer.c:456 src/language/stats/autorecode.c:154
+#: src/language/lexer/lexer.c:457 src/language/stats/autorecode.c:154
 #: src/language/xforms/select-if.c:62
 msgid "expecting end of command"
 msgstr ""
 
-#: src/language/command.c:841
+#: src/language/command.c:840
 msgid "No operating system support for this command."
 msgstr ""
 
@@ -1097,33 +1011,33 @@
 msgid "This command may not follow ELSE in DO IF...END IF."
 msgstr ""
 
-#: src/language/control/repeat.c:144
+#: src/language/control/repeat.c:149
 #, c-format
 msgid "Dummy variable name \"%s\" hides dictionary variable \"%s\"."
 msgstr ""
 
-#: src/language/control/repeat.c:150
+#: src/language/control/repeat.c:155
 #, c-format
 msgid "Dummy variable name \"%s\" is given twice."
 msgstr ""
 
-#: src/language/control/repeat.c:196
+#: src/language/control/repeat.c:202
 #, c-format
 msgid ""
 "Dummy variable \"%s\" had %d substitutions, so \"%s\" must also, but %d were "
 "specified."
 msgstr ""
 
-#: src/language/control/repeat.c:399
+#: src/language/control/repeat.c:406
 #, c-format
 msgid "%ld TO %ld is an invalid range."
 msgstr ""
 
-#: src/language/control/repeat.c:435
+#: src/language/control/repeat.c:442
 msgid "String expected."
 msgstr ""
 
-#: src/language/control/repeat.c:454
+#: src/language/control/repeat.c:461
 msgid "No matching DO REPEAT."
 msgstr ""
 
@@ -1133,180 +1047,180 @@
 "commands."
 msgstr ""
 
-#: src/language/data-io/data-list.c:165
+#: src/language/data-io/data-list.c:175
 msgid "The END subcommand may only be specified once."
 msgstr ""
 
-#: src/language/data-io/data-list.c:200
+#: src/language/data-io/data-list.c:210
 msgid "Only one of FIXED, FREE, or LIST may be specified."
 msgstr ""
 
-#: src/language/data-io/data-list.c:340 src/language/data-io/data-list.c:475
+#: src/language/data-io/data-list.c:351 src/language/data-io/data-list.c:495
 #, c-format
 msgid "%s is a duplicate variable name."
 msgstr ""
 
-#: src/language/data-io/data-list.c:347
+#: src/language/data-io/data-list.c:358
 #, c-format
 msgid "There is already a variable %s of a different type."
 msgstr ""
 
-#: src/language/data-io/data-list.c:354
+#: src/language/data-io/data-list.c:365
 #, c-format
 msgid "There is already a string variable %s of a different width."
 msgstr ""
 
-#: src/language/data-io/data-list.c:375
+#: src/language/data-io/data-list.c:386
 msgid "At least one variable must be specified."
 msgstr ""
 
-#: src/language/data-io/data-list.c:382
+#: src/language/data-io/data-list.c:393
 msgid ""
 "Variables are specified on records that should not exist according to "
 "RECORDS subcommand."
 msgstr ""
 
-#: src/language/data-io/data-list.c:407 src/language/data-io/data-list.c:507
-#: src/language/data-io/print.c:374 src/language/dictionary/split-file.c:85
-#: src/language/dictionary/sys-file-info.c:144
-#: src/language/dictionary/sys-file-info.c:378
-#: src/language/stats/descriptives.c:902
+#: src/language/data-io/data-list.c:418 src/language/data-io/data-list.c:527
+#: src/language/data-io/print.c:395 src/language/dictionary/split-file.c:86
+#: src/language/dictionary/sys-file-info.c:146
+#: src/language/dictionary/sys-file-info.c:380
+#: src/language/stats/descriptives.c:903
 msgid "Variable"
 msgstr ""
 
-#: src/language/data-io/data-list.c:408 src/language/data-io/print.c:375
+#: src/language/data-io/data-list.c:419 src/language/data-io/print.c:396
 msgid "Record"
 msgstr ""
 
-#: src/language/data-io/data-list.c:409 src/language/data-io/print.c:376
+#: src/language/data-io/data-list.c:420 src/language/data-io/print.c:397
 #: src/ui/gui/var-sheet.c:78
 msgid "Columns"
 msgstr ""
 
-#: src/language/data-io/data-list.c:410 src/language/data-io/data-list.c:508
-#: src/language/data-io/print.c:377
+#: src/language/data-io/data-list.c:421 src/language/data-io/data-list.c:528
+#: src/language/data-io/print.c:398
 msgid "Format"
 msgstr ""
 
-#: src/language/data-io/data-list.c:426
+#: src/language/data-io/data-list.c:439
 #, c-format
 msgid "Reading %d record from %s."
 msgid_plural "Reading %d records from %s."
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/language/data-io/data-list.c:521
+#: src/language/data-io/data-list.c:542
 #, c-format
 msgid "Reading free-form data from %s."
 msgstr ""
 
-#: src/language/data-io/data-list.c:567
+#: src/language/data-io/data-list.c:588
 msgid "Quoted string extends beyond end of line."
 msgstr ""
 
-#: src/language/data-io/data-list.c:652
+#: src/language/data-io/data-list.c:673
 #, c-format
 msgid "Partial case of %d of %d records discarded."
 msgstr ""
 
-#: src/language/data-io/data-list.c:701
+#: src/language/data-io/data-list.c:711
 #, c-format
 msgid "Partial case discarded.  The first variable missing was %s."
 msgstr ""
 
-#: src/language/data-io/data-list.c:737
+#: src/language/data-io/data-list.c:742
 #, c-format
 msgid ""
 "Missing value(s) for all variables from %s onward.  These will be filled "
 "with the system-missing value or blanks, as appropriate."
 msgstr ""
 
-#: src/language/data-io/data-reader.c:138
+#: src/language/data-io/data-reader.c:141
 #, c-format
 msgid "Could not open \"%s\" for reading as a data file: %s."
 msgstr ""
 
-#: src/language/data-io/data-reader.c:175
+#: src/language/data-io/data-reader.c:178
 msgid ""
 "Unexpected end-of-file while reading data in BEGIN DATA.  This probably "
 "indicates a missing or misformatted END DATA command.  END DATA must appear "
 "by itself on a single line with exactly one space between words."
 msgstr ""
 
-#: src/language/data-io/data-reader.c:207
-#: src/language/data-io/data-reader.c:219
+#: src/language/data-io/data-reader.c:210
+#: src/language/data-io/data-reader.c:223
 #, c-format
 msgid "Error reading file %s: %s."
 msgstr ""
 
-#: src/language/data-io/data-reader.c:222
+#: src/language/data-io/data-reader.c:226
 #, c-format
 msgid "%s: Partial record at end of file."
 msgstr ""
 
-#: src/language/data-io/data-reader.c:273
+#: src/language/data-io/data-reader.c:277
 #, c-format
 msgid "Attempt to read beyond end-of-file on file %s."
 msgstr ""
 
-#: src/language/data-io/data-reader.c:276
+#: src/language/data-io/data-reader.c:280
 msgid "Attempt to read beyond END DATA."
 msgstr ""
 
-#: src/language/data-io/data-reader.c:434
+#: src/language/data-io/data-reader.c:438
 msgid ""
 "This command is not valid here since the current input program does not "
 "access the inline file."
 msgstr ""
 
-#: src/language/data-io/data-writer.c:62
+#: src/language/data-io/data-writer.c:66
 #, c-format
 msgid "An error occurred while opening \"%s\" for writing as a data file: %s."
 msgstr ""
 
-#: src/language/data-io/data-writer.c:131
+#: src/language/data-io/data-writer.c:150
 #, c-format
 msgid "I/O error occurred writing data file \"%s\"."
 msgstr ""
 
-#: src/language/data-io/file-handle.q:69
+#: src/language/data-io/file-handle.q:68
 #, c-format
 msgid ""
 "File handle %s is already defined.  Use CLOSE FILE HANDLE before redefining "
 "a file handle."
 msgstr ""
 
-#: src/language/data-io/file-handle.q:101
+#: src/language/data-io/file-handle.q:100
 #, c-format
 msgid ""
 "Fixed-length records were specified on /RECFORM, but record length was not "
 "specified on /LRECL.  Assuming %d-character records."
 msgstr ""
 
-#: src/language/data-io/file-handle.q:106
+#: src/language/data-io/file-handle.q:105
 #, c-format
 msgid ""
 "Record length (%ld) must be at least one byte.  Assuming %d-character "
 "records."
 msgstr ""
 
-#: src/language/data-io/file-handle.q:152
+#: src/language/data-io/file-handle.q:151
 msgid "file"
 msgstr ""
 
-#: src/language/data-io/file-handle.q:154
+#: src/language/data-io/file-handle.q:153
 msgid "inline file"
 msgstr ""
 
-#: src/language/data-io/file-handle.q:156
+#: src/language/data-io/file-handle.q:155
 msgid "scratch file"
 msgstr ""
 
-#: src/language/data-io/file-handle.q:177
+#: src/language/data-io/file-handle.q:176
 msgid "expecting a file name or handle name"
 msgstr ""
 
-#: src/language/data-io/file-handle.q:204
+#: src/language/data-io/file-handle.q:203
 #, c-format
 msgid "Handle for %s not allowed here."
 msgstr ""
@@ -1321,7 +1235,7 @@
 msgid "expecting %s or %s"
 msgstr ""
 
-#: src/language/data-io/get.c:608 src/language/data-io/print.c:176
+#: src/language/data-io/get.c:608 src/language/data-io/print.c:178
 msgid "expecting a valid subcommand"
 msgstr ""
 
@@ -1425,219 +1339,219 @@
 "REREAD: Column numbers must be positive finite numbers.  Column set to 1."
 msgstr ""
 
-#: src/language/data-io/list.q:152 src/language/stats/descriptives.c:366
+#: src/language/data-io/list.q:155 src/language/stats/descriptives.c:366
 msgid "No variables specified."
 msgstr ""
 
-#: src/language/data-io/list.q:160
+#: src/language/data-io/list.q:163
 #, c-format
 msgid ""
 "The first case (%ld) specified precedes the last case (%ld) specified.  The "
 "values will be swapped."
 msgstr ""
 
-#: src/language/data-io/list.q:168
+#: src/language/data-io/list.q:171
 #, c-format
 msgid ""
 "The first case (%ld) to list is less than 1.  The value is being reset to 1."
 msgstr ""
 
-#: src/language/data-io/list.q:174
+#: src/language/data-io/list.q:177
 #, c-format
 msgid ""
 "The last case (%ld) to list is less than 1.  The value is being reset to 1."
 msgstr ""
 
-#: src/language/data-io/list.q:180
+#: src/language/data-io/list.q:183
 #, c-format
 msgid "The step value %ld is less than 1.  The value is being reset to 1."
 msgstr ""
 
-#: src/language/data-io/list.q:206
+#: src/language/data-io/list.q:209
 msgid "`/FORMAT WEIGHT' specified, but weighting is not on."
 msgstr ""
 
-#: src/language/data-io/list.q:434
+#: src/language/data-io/list.q:437
 msgid "Line"
 msgstr ""
 
-#: src/language/data-io/matrix-data.c:218
+#: src/language/data-io/matrix-data.c:219
 msgid "VARIABLES subcommand multiply specified."
 msgstr ""
 
-#: src/language/data-io/matrix-data.c:233
+#: src/language/data-io/matrix-data.c:234
 msgid "VARNAME_ cannot be explicitly specified on VARIABLES."
 msgstr ""
 
-#: src/language/data-io/matrix-data.c:294
+#: src/language/data-io/matrix-data.c:295
 msgid "in FORMAT subcommand"
 msgstr ""
 
-#: src/language/data-io/matrix-data.c:305
+#: src/language/data-io/matrix-data.c:306
 msgid "SPLIT subcommand multiply specified."
 msgstr ""
 
-#: src/language/data-io/matrix-data.c:312
+#: src/language/data-io/matrix-data.c:313
 msgid "in SPLIT subcommand"
 msgstr ""
 
-#: src/language/data-io/matrix-data.c:322
+#: src/language/data-io/matrix-data.c:323
 msgid "Split variable may not be named ROWTYPE_ or VARNAME_."
 msgstr ""
 
-#: src/language/data-io/matrix-data.c:356
+#: src/language/data-io/matrix-data.c:358
 #, c-format
 msgid "Split variable %s is already another type."
 msgstr ""
 
-#: src/language/data-io/matrix-data.c:371
+#: src/language/data-io/matrix-data.c:373
 msgid "FACTORS subcommand multiply specified."
 msgstr ""
 
-#: src/language/data-io/matrix-data.c:390
+#: src/language/data-io/matrix-data.c:392
 #, c-format
 msgid "Factor variable %s is already another type."
 msgstr ""
 
-#: src/language/data-io/matrix-data.c:405
+#: src/language/data-io/matrix-data.c:407
 msgid "CELLS subcommand multiply specified."
 msgstr ""
 
-#: src/language/data-io/matrix-data.c:411
-#: src/language/data-io/matrix-data.c:430
+#: src/language/data-io/matrix-data.c:413
+#: src/language/data-io/matrix-data.c:432
 msgid "expecting positive integer"
 msgstr ""
 
-#: src/language/data-io/matrix-data.c:424
+#: src/language/data-io/matrix-data.c:426
 msgid "N subcommand multiply specified."
 msgstr ""
 
-#: src/language/data-io/matrix-data.c:445
+#: src/language/data-io/matrix-data.c:447
 msgid "CONTENTS subcommand multiply specified."
 msgstr ""
 
-#: src/language/data-io/matrix-data.c:465
+#: src/language/data-io/matrix-data.c:467
 msgid "Nested parentheses not allowed."
 msgstr ""
 
-#: src/language/data-io/matrix-data.c:475
+#: src/language/data-io/matrix-data.c:477
 msgid "Mismatched right parenthesis (`(')."
 msgstr ""
 
-#: src/language/data-io/matrix-data.c:480
+#: src/language/data-io/matrix-data.c:482
 msgid "Empty parentheses not allowed."
 msgstr ""
 
-#: src/language/data-io/matrix-data.c:493
-#: src/language/data-io/matrix-data.c:501
+#: src/language/data-io/matrix-data.c:495
+#: src/language/data-io/matrix-data.c:503
 msgid "in CONTENTS subcommand"
 msgstr ""
 
-#: src/language/data-io/matrix-data.c:508
+#: src/language/data-io/matrix-data.c:510
 #, c-format
 msgid "Content multiply specified for %s."
 msgstr ""
 
-#: src/language/data-io/matrix-data.c:525
+#: src/language/data-io/matrix-data.c:527
 msgid "Missing right parenthesis."
 msgstr ""
 
-#: src/language/data-io/matrix-data.c:545
+#: src/language/data-io/matrix-data.c:547
 msgid "Missing VARIABLES subcommand."
 msgstr ""
 
-#: src/language/data-io/matrix-data.c:551
+#: src/language/data-io/matrix-data.c:553
 msgid ""
 "CONTENTS subcommand not specified: assuming file contains only CORR matrix."
 msgstr ""
 
-#: src/language/data-io/matrix-data.c:561
+#: src/language/data-io/matrix-data.c:563
 msgid ""
 "Missing CELLS subcommand.  CELLS is required when ROWTYPE_ is not given in "
 "the data and factors are present."
 msgstr ""
 
-#: src/language/data-io/matrix-data.c:569
+#: src/language/data-io/matrix-data.c:571
 msgid "Split file values must be present in the data when ROWTYPE_ is present."
 msgstr ""
 
-#: src/language/data-io/matrix-data.c:622
+#: src/language/data-io/matrix-data.c:624
 msgid "No continuous variables specified."
 msgstr ""
 
-#: src/language/data-io/matrix-data.c:841
+#: src/language/data-io/matrix-data.c:843
 msgid "Scope of string exceeds line."
 msgstr ""
 
-#: src/language/data-io/matrix-data.c:902
+#: src/language/data-io/matrix-data.c:896
 #, c-format
 msgid "End of line expected %s while reading %s."
 msgstr ""
 
-#: src/language/data-io/matrix-data.c:1093
+#: src/language/data-io/matrix-data.c:1087
 #, c-format
 msgid "expecting value for %s %s"
 msgstr ""
 
-#: src/language/data-io/matrix-data.c:1258
+#: src/language/data-io/matrix-data.c:1252
 #, c-format
 msgid "Syntax error expecting SPLIT FILE value %s."
 msgstr ""
 
-#: src/language/data-io/matrix-data.c:1267
+#: src/language/data-io/matrix-data.c:1261
 #, c-format
 msgid "Expecting value %g for %s."
 msgstr ""
 
-#: src/language/data-io/matrix-data.c:1308
-#: src/language/data-io/matrix-data.c:1791
+#: src/language/data-io/matrix-data.c:1302
+#: src/language/data-io/matrix-data.c:1785
 #, c-format
 msgid "Syntax error expecting factor value %s."
 msgstr ""
 
-#: src/language/data-io/matrix-data.c:1317
+#: src/language/data-io/matrix-data.c:1311
 #, c-format
 msgid "Syntax error expecting value %g for %s %s."
 msgstr ""
 
-#: src/language/data-io/matrix-data.c:1566
+#: src/language/data-io/matrix-data.c:1560
 #, c-format
 msgid "Syntax error %s expecting SPLIT FILE value."
 msgstr ""
 
-#: src/language/data-io/matrix-data.c:1695
+#: src/language/data-io/matrix-data.c:1689
 #, 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/language/data-io/matrix-data.c:1733
+#: src/language/data-io/matrix-data.c:1727
 #, c-format
 msgid "Multiply specified ROWTYPE_ %s."
 msgstr ""
 
-#: src/language/data-io/matrix-data.c:1738
+#: src/language/data-io/matrix-data.c:1732
 #, c-format
 msgid "Syntax error %s expecting ROWTYPE_ string."
 msgstr ""
 
-#: src/language/data-io/matrix-data.c:1758
+#: src/language/data-io/matrix-data.c:1752
 #, c-format
 msgid "Syntax error %s."
 msgstr ""
 
-#: src/language/data-io/matrix-data.c:1909
+#: src/language/data-io/matrix-data.c:1903
 #, c-format
 msgid "Duplicate specification for %s."
 msgstr ""
 
-#: src/language/data-io/matrix-data.c:1921
+#: src/language/data-io/matrix-data.c:1915
 #, c-format
 msgid "Too many rows of matrix data for %s."
 msgstr ""
 
-#: src/language/data-io/matrix-data.c:1965
+#: src/language/data-io/matrix-data.c:1959
 #, c-format
 msgid "Syntax error expecting value for %s %s."
 msgstr ""
@@ -1659,42 +1573,42 @@
 msgid "The %d columns %d-%d can't be evenly divided into %d fields."
 msgstr ""
 
-#: src/language/data-io/placement-parser.c:226
-#: src/language/lexer/format-parser.c:110
-#: src/language/lexer/format-parser.c:129
+#: src/language/data-io/placement-parser.c:227
+#: src/language/lexer/format-parser.c:111
+#: src/language/lexer/format-parser.c:130
 #, c-format
 msgid "Unknown format type \"%s\"."
 msgstr ""
 
-#: src/language/data-io/placement-parser.c:310
-#: src/language/data-io/placement-parser.c:324
+#: src/language/data-io/placement-parser.c:311
+#: src/language/data-io/placement-parser.c:325
 msgid "Column positions for fields must be positive."
 msgstr ""
 
-#: src/language/data-io/placement-parser.c:329
+#: src/language/data-io/placement-parser.c:330
 msgid "The ending column for a field must be greater than the starting column."
 msgstr ""
 
-#: src/language/data-io/placement-parser.c:364
+#: src/language/data-io/placement-parser.c:365
 #, c-format
 msgid ""
 "The record number specified, %ld, is at or before the previous record, %d.  "
 "Data fields must be listed in order of increasing record number."
 msgstr ""
 
-#: src/language/data-io/print.c:252
+#: src/language/data-io/print.c:261
 #, c-format
 msgid "Output calls for %d records but %d specified on RECORDS subcommand."
 msgstr ""
 
-#: src/language/data-io/print.c:406
+#: src/language/data-io/print.c:428
 #, c-format
 msgid "Writing %d record to %s."
 msgid_plural "Writing %d records to %s."
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/language/data-io/print.c:410
+#: src/language/data-io/print.c:432
 #, c-format
 msgid "Writing %d record."
 msgid_plural "Writing %d records."
@@ -1734,13 +1648,12 @@
 msgid "`(' expected after variable list."
 msgstr ""
 
-#: src/language/dictionary/formats.c:102 src/language/dictionary/numeric.c:71
-#: src/language/dictionary/numeric.c:141
+#: src/language/dictionary/formats.c:102 src/language/dictionary/numeric.c:72
 msgid "`)' expected after output format."
 msgstr ""
 
 #: src/language/dictionary/missing-values.c:57
-#: src/language/stats/aggregate.c:454
+#: src/language/stats/aggregate.c:467
 msgid "expecting `('"
 msgstr ""
 
@@ -1751,12 +1664,12 @@
 "a single list."
 msgstr ""
 
-#: src/language/dictionary/missing-values.c:113
+#: src/language/dictionary/missing-values.c:117
 #, c-format
 msgid "Truncating missing value to short string length (%d characters)."
 msgstr ""
 
-#: src/language/dictionary/missing-values.c:132
+#: src/language/dictionary/missing-values.c:137
 #, c-format
 msgid "Missing values provided are too long to assign to variable of width %d."
 msgstr ""
@@ -1791,60 +1704,60 @@
 msgid "`(' expected on RENAME subcommand."
 msgstr ""
 
-#: src/language/dictionary/modify-variables.c:202
+#: src/language/dictionary/modify-variables.c:203
 msgid ""
 "`=' expected between lists of new and old variable names on RENAME "
 "subcommand."
 msgstr ""
 
-#: src/language/dictionary/modify-variables.c:210
+#: src/language/dictionary/modify-variables.c:212
 #, c-format
 msgid ""
 "Differing number of variables in old name list (%d) and in new name list (%"
 "d)."
 msgstr ""
 
-#: src/language/dictionary/modify-variables.c:221
+#: src/language/dictionary/modify-variables.c:223
 msgid "`)' expected after variable lists on RENAME subcommand."
 msgstr ""
 
-#: src/language/dictionary/modify-variables.c:235
+#: src/language/dictionary/modify-variables.c:237
 msgid ""
 "KEEP subcommand may be given at most once.  It may notbe given in "
 "conjunction with the DROP subcommand."
 msgstr ""
 
-#: src/language/dictionary/modify-variables.c:278
+#: src/language/dictionary/modify-variables.c:280
 msgid ""
 "DROP subcommand may be given at most once.  It may not be given in "
 "conjunction with the KEEP subcommand."
 msgstr ""
 
-#: src/language/dictionary/modify-variables.c:304
+#: src/language/dictionary/modify-variables.c:306
 #, c-format
 msgid "Unrecognized subcommand name `%s'."
 msgstr ""
 
-#: src/language/dictionary/modify-variables.c:306
+#: src/language/dictionary/modify-variables.c:308
 msgid "Subcommand name expected."
 msgstr ""
 
-#: src/language/dictionary/modify-variables.c:314
+#: src/language/dictionary/modify-variables.c:316
 msgid "`/' or `.' expected."
 msgstr ""
 
-#: src/language/dictionary/numeric.c:64
+#: src/language/dictionary/numeric.c:65
 #, c-format
 msgid "Format type %s may not be used with a numeric variable."
 msgstr ""
 
-#: src/language/dictionary/numeric.c:83 src/language/dictionary/numeric.c:163
+#: src/language/dictionary/numeric.c:84 src/language/dictionary/numeric.c:153
 #: src/language/dictionary/vector.c:165
 #, c-format
 msgid "There is already a variable named %s."
 msgstr ""
 
-#: src/language/dictionary/numeric.c:134
+#: src/language/dictionary/numeric.c:138
 #, c-format
 msgid "Format type %s may not be used with a string variable."
 msgstr ""
@@ -1879,180 +1792,180 @@
 msgid "Renaming would duplicate variable name %s."
 msgstr ""
 
-#: src/language/dictionary/split-file.c:86
-#: src/language/dictionary/sys-file-info.c:523
-#: src/language/stats/crosstabs.q:1118 src/language/stats/crosstabs.q:1145
-#: src/language/stats/crosstabs.q:1165 src/language/stats/crosstabs.q:1187
-#: src/language/stats/examine.q:1152 src/language/stats/frequencies.q:1179
+#: src/language/dictionary/split-file.c:87
+#: src/language/dictionary/sys-file-info.c:527
+#: src/language/stats/crosstabs.q:1122 src/language/stats/crosstabs.q:1149
+#: src/language/stats/crosstabs.q:1169 src/language/stats/crosstabs.q:1191
+#: src/language/stats/examine.q:1163 src/language/stats/frequencies.q:1179
 #: src/language/stats/frequencies.q:1303
 msgid "Value"
 msgstr ""
 
-#: src/language/dictionary/split-file.c:87
-#: src/language/dictionary/sys-file-info.c:385
-#: src/language/dictionary/sys-file-info.c:524 src/ui/gui/var-sheet.c:75
+#: src/language/dictionary/split-file.c:88
+#: src/language/dictionary/sys-file-info.c:387
+#: src/language/dictionary/sys-file-info.c:528 src/ui/gui/var-sheet.c:75
 msgid "Label"
 msgstr ""
 
-#: src/language/dictionary/sys-file-info.c:105
+#: src/language/dictionary/sys-file-info.c:107
 msgid "File:"
 msgstr ""
 
-#: src/language/dictionary/sys-file-info.c:107
+#: src/language/dictionary/sys-file-info.c:109
 msgid "Label:"
 msgstr ""
 
-#: src/language/dictionary/sys-file-info.c:111
+#: src/language/dictionary/sys-file-info.c:113
 msgid "No label."
 msgstr ""
 
-#: src/language/dictionary/sys-file-info.c:114
+#: src/language/dictionary/sys-file-info.c:116
 msgid "Created:"
 msgstr ""
 
-#: src/language/dictionary/sys-file-info.c:117
+#: src/language/dictionary/sys-file-info.c:119
 msgid "Endian:"
 msgstr ""
 
-#: src/language/dictionary/sys-file-info.c:118
+#: src/language/dictionary/sys-file-info.c:120
 msgid "Big."
 msgstr ""
 
-#: src/language/dictionary/sys-file-info.c:118
+#: src/language/dictionary/sys-file-info.c:120
 msgid "Little."
 msgstr ""
 
-#: src/language/dictionary/sys-file-info.c:119
+#: src/language/dictionary/sys-file-info.c:121
 msgid "Variables:"
 msgstr ""
 
-#: src/language/dictionary/sys-file-info.c:122
+#: src/language/dictionary/sys-file-info.c:124
 msgid "Cases:"
 msgstr ""
 
-#: src/language/dictionary/sys-file-info.c:125
+#: src/language/dictionary/sys-file-info.c:127
 msgid "Type:"
 msgstr ""
 
-#: src/language/dictionary/sys-file-info.c:126
+#: src/language/dictionary/sys-file-info.c:128
 msgid "System File."
 msgstr ""
 
-#: src/language/dictionary/sys-file-info.c:127
+#: src/language/dictionary/sys-file-info.c:129
 msgid "Weight:"
 msgstr ""
 
-#: src/language/dictionary/sys-file-info.c:131
+#: src/language/dictionary/sys-file-info.c:133
 msgid "Not weighted."
 msgstr ""
 
-#: src/language/dictionary/sys-file-info.c:133
+#: src/language/dictionary/sys-file-info.c:135
 msgid "Mode:"
 msgstr ""
 
-#: src/language/dictionary/sys-file-info.c:135
+#: src/language/dictionary/sys-file-info.c:137
 #, c-format
 msgid "Compression %s."
 msgstr ""
 
-#: src/language/dictionary/sys-file-info.c:135
+#: src/language/dictionary/sys-file-info.c:137
 msgid "on"
 msgstr ""
 
-#: src/language/dictionary/sys-file-info.c:135
+#: src/language/dictionary/sys-file-info.c:137
 msgid "off"
 msgstr ""
 
-#: src/language/dictionary/sys-file-info.c:145
-#: src/language/dictionary/sys-file-info.c:383
+#: src/language/dictionary/sys-file-info.c:147
+#: src/language/dictionary/sys-file-info.c:385
 msgid "Description"
 msgstr ""
 
-#: src/language/dictionary/sys-file-info.c:146
-#: src/language/dictionary/sys-file-info.c:381
+#: src/language/dictionary/sys-file-info.c:148
+#: src/language/dictionary/sys-file-info.c:383
 msgid "Position"
 msgstr ""
 
-#: src/language/dictionary/sys-file-info.c:204
+#: src/language/dictionary/sys-file-info.c:206
 msgid "The active file does not have a file label."
 msgstr ""
 
-#: src/language/dictionary/sys-file-info.c:207
+#: src/language/dictionary/sys-file-info.c:209
 msgid "File label:"
 msgstr ""
 
-#: src/language/dictionary/sys-file-info.c:269
+#: src/language/dictionary/sys-file-info.c:271
 msgid "No variables to display."
 msgstr ""
 
-#: src/language/dictionary/sys-file-info.c:288
+#: src/language/dictionary/sys-file-info.c:290
 msgid "Macros not supported."
 msgstr ""
 
-#: src/language/dictionary/sys-file-info.c:298
+#: src/language/dictionary/sys-file-info.c:300
 msgid "The active file dictionary does not contain any documents."
 msgstr ""
 
-#: src/language/dictionary/sys-file-info.c:307
+#: src/language/dictionary/sys-file-info.c:309
 msgid "Documents in the active file:"
 msgstr ""
 
-#: src/language/dictionary/sys-file-info.c:457
+#: src/language/dictionary/sys-file-info.c:460
 #, c-format
 msgid "Format: %s"
 msgstr ""
 
-#: src/language/dictionary/sys-file-info.c:464
+#: src/language/dictionary/sys-file-info.c:468
 #, c-format
 msgid "Print Format: %s"
 msgstr ""
 
-#: src/language/dictionary/sys-file-info.c:467
+#: src/language/dictionary/sys-file-info.c:471
 #, c-format
 msgid "Write Format: %s"
 msgstr ""
 
-#: src/language/dictionary/sys-file-info.c:479
+#: src/language/dictionary/sys-file-info.c:483
 msgid "Missing Values: "
 msgstr ""
 
-#: src/language/dictionary/sys-file-info.c:580
+#: src/language/dictionary/sys-file-info.c:584
 msgid "No vectors defined."
 msgstr ""
 
-#: src/language/dictionary/sys-file-info.c:595
+#: src/language/dictionary/sys-file-info.c:599
 msgid "Vector"
 msgstr ""
 
-#: src/language/dictionary/value-labels.c:122
+#: src/language/dictionary/value-labels.c:123
 #, c-format
 msgid ""
 "It is not possible to assign value labels to long string variables such as %"
 "s."
 msgstr ""
 
-#: src/language/dictionary/value-labels.c:158 src/language/lexer/lexer.c:593
+#: src/language/dictionary/value-labels.c:159 src/language/lexer/lexer.c:594
 msgid "expecting string"
 msgstr ""
 
-#: src/language/dictionary/value-labels.c:167 src/language/lexer/lexer.c:607
+#: src/language/dictionary/value-labels.c:168 src/language/lexer/lexer.c:608
 msgid "expecting integer"
 msgstr ""
 
-#: src/language/dictionary/value-labels.c:171
+#: src/language/dictionary/value-labels.c:172
 #, c-format
 msgid "Value label `%g' is not integer."
 msgstr ""
 
-#: src/language/dictionary/value-labels.c:181
+#: src/language/dictionary/value-labels.c:185
 msgid "Truncating value label to 60 characters."
 msgstr ""
 
-#: src/language/dictionary/variable-label.c:52
+#: src/language/dictionary/variable-label.c:53
 msgid "String expected for variable label."
 msgstr ""
 
-#: src/language/dictionary/variable-label.c:58
+#: src/language/dictionary/variable-label.c:61
 msgid "Truncating variable label to 255 characters."
 msgstr ""
 
@@ -2095,7 +2008,7 @@
 msgid "The weighting variable may not be scratch."
 msgstr ""
 
-#: src/language/expressions/evaluate.c:158
+#: src/language/expressions/evaluate.c:156
 msgid "expecting number or string"
 msgstr ""
 
@@ -2135,24 +2048,24 @@
 "system-missing."
 msgstr ""
 
-#: src/language/expressions/parse.c:257
+#: src/language/expressions/parse.c:261
 #, c-format
 msgid ""
 "Type mismatch: expression has %s type, but a numeric value is required here."
 msgstr ""
 
-#: src/language/expressions/parse.c:269
+#: src/language/expressions/parse.c:273
 #, c-format
 msgid ""
 "Type mismatch: expression has %s type, but a string value is required here."
 msgstr ""
 
-#: src/language/expressions/parse.c:410
+#: src/language/expressions/parse.c:420
 #, c-format
 msgid "Type mismatch while applying %s operator: cannot convert %s to %s."
 msgstr ""
 
-#: src/language/expressions/parse.c:615
+#: src/language/expressions/parse.c:626
 msgid ""
 "Chaining relational operators (e.g. \"a < b < c\") will not produce the "
 "mathematically expected result.  Use the AND logical operator to fix the "
@@ -2160,146 +2073,166 @@
 "parentheses will disable this warning (e.g. \"(a < b) < c\".)"
 msgstr ""
 
-#: src/language/expressions/parse.c:714
+#: src/language/expressions/parse.c:727
 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/language/expressions/parse.c:779
+#: src/language/expressions/parse.c:792
 #, c-format
 msgid "Unknown system variable %s."
 msgstr ""
 
-#: src/language/expressions/parse.c:827
+#: src/language/expressions/parse.c:840
 #, c-format
 msgid "Unknown identifier %s."
 msgstr ""
 
-#: src/language/expressions/parse.c:855 src/language/stats/aggregate.c:510
+#: src/language/expressions/parse.c:868 src/language/stats/aggregate.c:523
 msgid "expecting `)'"
 msgstr ""
 
-#: src/language/expressions/parse.c:862
+#: src/language/expressions/parse.c:875
 msgid "in expression"
 msgstr ""
 
-#: src/language/expressions/parse.c:1038
+#: src/language/expressions/parse.c:1051
 #, c-format
 msgid "%s must have at least %d arguments in list."
 msgstr ""
 
-#: src/language/expressions/parse.c:1047
+#: src/language/expressions/parse.c:1060
 #, c-format
 msgid "%s must have even number of arguments in list."
 msgstr ""
 
-#: src/language/expressions/parse.c:1050
+#: src/language/expressions/parse.c:1063
 #, c-format
 msgid "%s must have multiple of %d arguments in list."
 msgstr ""
 
-#: src/language/expressions/parse.c:1060
+#: src/language/expressions/parse.c:1073
 #, c-format
 msgid "%s function does not accept a minimum valid argument count."
 msgstr ""
 
-#: src/language/expressions/parse.c:1069
+#: src/language/expressions/parse.c:1082
 #, c-format
 msgid "%s requires at least %d valid arguments in list."
 msgstr ""
 
-#: src/language/expressions/parse.c:1075
+#: src/language/expressions/parse.c:1088
 #, c-format
 msgid ""
 "With %s, using minimum valid argument count of %d does not make sense when "
 "passing only %d arguments in list."
 msgstr ""
 
-#: src/language/expressions/parse.c:1129
+#: src/language/expressions/parse.c:1142
 #, c-format
 msgid "Type mismatch invoking %s as "
 msgstr ""
 
-#: src/language/expressions/parse.c:1134
+#: src/language/expressions/parse.c:1147
 msgid "Function invocation "
 msgstr ""
 
-#: src/language/expressions/parse.c:1136
+#: src/language/expressions/parse.c:1149
 msgid " does not match any known function.  Candidates are:"
 msgstr ""
 
-#: src/language/expressions/parse.c:1166
+#: src/language/expressions/parse.c:1179
 #, c-format
 msgid "No function or vector named %s."
 msgstr ""
 
-#: src/language/expressions/parse.c:1208
+#: src/language/expressions/parse.c:1221
 #, c-format
 msgid "expecting `,' or `)' invoking %s function"
 msgstr ""
 
-#: src/language/expressions/parse.c:1228
+#: src/language/expressions/parse.c:1241
 #, c-format
 msgid "%s is a PSPP extension."
 msgstr ""
 
-#: src/language/expressions/parse.c:1231 src/ui/terminal/command-line.c:127
-#: src/ui/terminal/command-line.c:146 src/ui/terminal/command-line.c:158
+#: src/language/expressions/parse.c:1244 src/ui/terminal/command-line.c:133
+#: src/ui/terminal/command-line.c:152 src/ui/terminal/command-line.c:164
 #, c-format
 msgid "%s is not yet implemented."
 msgstr ""
 
-#: src/language/expressions/parse.c:1237
+#: src/language/expressions/parse.c:1250
 #, c-format
 msgid "%s may not appear after TEMPORARY."
 msgstr ""
 
-#: src/language/lexer/format-parser.c:91
+#: src/language/lb-syntax-file.c:88
+#, c-format
+msgid "opening \"%s\" as syntax file"
+msgstr ""
+
+#: src/language/lb-syntax-file.c:93
+#, c-format
+msgid "Opening `%s': %s."
+msgstr ""
+
+#: src/language/lb-syntax-file.c:106
+#, c-format
+msgid "Reading `%s': %s."
+msgstr ""
+
+#: src/language/lb-syntax-file.c:126
+#, c-format
+msgid "Closing `%s': %s."
+msgstr ""
+
+#: src/language/lexer/format-parser.c:92
 msgid "expecting valid format specifier"
 msgstr ""
 
-#: src/language/lexer/format-parser.c:124
+#: src/language/lexer/format-parser.c:125
 msgid "expecting format type"
 msgstr ""
 
-#: src/language/lexer/lexer.c:267
+#: src/language/lexer/lexer.c:268
 #, c-format
 msgid "%s does not form a valid number."
 msgstr ""
 
-#: src/language/lexer/lexer.c:371
+#: src/language/lexer/lexer.c:372
 #, c-format
 msgid "Bad character in input: `%c'."
 msgstr ""
 
-#: src/language/lexer/lexer.c:373
+#: src/language/lexer/lexer.c:374
 #, c-format
 msgid "Bad character in input: `\\%o'."
 msgstr ""
 
-#: src/language/lexer/lexer.c:404
+#: src/language/lexer/lexer.c:405
 #, c-format
 msgid "Subcommand %s may only be specified once."
 msgstr ""
 
-#: src/language/lexer/lexer.c:412
+#: src/language/lexer/lexer.c:413
 #, c-format
 msgid "missing required subcommand %s"
 msgstr ""
 
-#: src/language/lexer/lexer.c:441
+#: src/language/lexer/lexer.c:442
 #, c-format
 msgid "Syntax error %s at %s."
 msgstr ""
 
-#: src/language/lexer/lexer.c:444
+#: src/language/lexer/lexer.c:445
 #, c-format
 msgid "Syntax error at %s."
 msgstr ""
 
-#: src/language/lexer/lexer.c:562 src/language/lexer/lexer.c:579
+#: src/language/lexer/lexer.c:563 src/language/lexer/lexer.c:580
 #, c-format
 msgid "expecting `%s'"
 msgstr ""
@@ -2308,123 +2241,117 @@
 msgid "expecting number"
 msgstr ""
 
-#: src/language/lexer/lexer.c:635
+#: src/language/lexer/lexer.c:633
 msgid "expecting identifier"
 msgstr ""
 
-#: src/language/lexer/lexer.c:1020
+#: src/language/lexer/lexer.c:1019
 msgid "binary"
 msgstr ""
 
-#: src/language/lexer/lexer.c:1025
+#: src/language/lexer/lexer.c:1024
 msgid "octal"
 msgstr ""
 
-#: src/language/lexer/lexer.c:1030
+#: src/language/lexer/lexer.c:1029
 msgid "hex"
 msgstr ""
 
-#: src/language/lexer/lexer.c:1040
+#: src/language/lexer/lexer.c:1039
 #, c-format
 msgid "String of %s digits has %d characters, which is not a multiple of %d."
 msgstr ""
 
-#: src/language/lexer/lexer.c:1069
+#: src/language/lexer/lexer.c:1068
 #, c-format
 msgid "`%c' is not a valid %s digit."
 msgstr ""
 
-#: src/language/lexer/lexer.c:1100
+#: src/language/lexer/lexer.c:1102
 msgid "Unterminated string constant."
 msgstr ""
 
-#: src/language/lexer/lexer.c:1154
+#: src/language/lexer/lexer.c:1156
 msgid "Unexpected end of file in string concatenation."
 msgstr ""
 
-#: src/language/lexer/lexer.c:1162
+#: src/language/lexer/lexer.c:1164
 msgid "String expected following `+'."
 msgstr ""
 
-#: src/language/lexer/lexer.c:1175
+#: src/language/lexer/lexer.c:1177
 #, c-format
 msgid "String exceeds 255 characters in length (%d characters)."
 msgstr ""
 
-#: src/language/lexer/lexer.c:1190
-msgid ""
-"Sorry, literal strings may not contain null characters.  Replacing with "
-"spaces."
-msgstr ""
-
-#: src/language/lexer/range-parser.c:43
+#: src/language/lexer/range-parser.c:63
 #, c-format
 msgid ""
 "Low end of range (%g) is below high end (%g).  The range will be treated as "
 "reversed."
 msgstr ""
 
-#: src/language/lexer/range-parser.c:51
+#: src/language/lexer/range-parser.c:71
 #, c-format
 msgid "Ends of range are equal (%g)."
 msgstr ""
 
-#: src/language/lexer/range-parser.c:59
+#: src/language/lexer/range-parser.c:79
 msgid "LO or LOWEST must be part of a range."
 msgstr ""
 
-#: src/language/lexer/range-parser.c:98
+#: src/language/lexer/range-parser.c:110
 msgid "System-missing value is not valid here."
 msgstr ""
 
-#: src/language/lexer/range-parser.c:106
+#: src/language/lexer/range-parser.c:118
 msgid "expecting number or data string"
 msgstr ""
 
-#: src/language/lexer/variable-parser.c:53
+#: src/language/lexer/variable-parser.c:54
 msgid "expecting variable name"
 msgstr ""
 
-#: src/language/lexer/variable-parser.c:63
+#: src/language/lexer/variable-parser.c:64
 #, c-format
 msgid "%s is not a variable name."
 msgstr ""
 
-#: src/language/lexer/variable-parser.c:164
+#: src/language/lexer/variable-parser.c:168
 #, c-format
 msgid ""
 "%s is not a numeric variable.  It will not be included in the variable list."
 msgstr ""
 
-#: src/language/lexer/variable-parser.c:167
+#: src/language/lexer/variable-parser.c:171
 #, c-format
 msgid ""
 "%s is not a string variable.  It will not be included in the variable list."
 msgstr ""
 
-#: src/language/lexer/variable-parser.c:171
+#: src/language/lexer/variable-parser.c:175
 #, c-format
 msgid "Scratch variables (such as %s) are not allowed here."
 msgstr ""
 
-#: src/language/lexer/variable-parser.c:174
+#: src/language/lexer/variable-parser.c:178
 #, 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/language/lexer/variable-parser.c:179
+#: src/language/lexer/variable-parser.c:183
 #, c-format
 msgid "Variable %s appears twice in variable list."
 msgstr ""
 
-#: src/language/lexer/variable-parser.c:284
+#: src/language/lexer/variable-parser.c:288
 #, c-format
 msgid "%s TO %s is not valid syntax since %s precedes %s in the dictionary."
 msgstr ""
 
-#: src/language/lexer/variable-parser.c:293
+#: src/language/lexer/variable-parser.c:297
 #, c-format
 msgid ""
 "When using the TO keyword to specify several variables, both variables must "
@@ -2432,95 +2359,70 @@
 "system variables.  %s is a %s variable, whereas %s is %s."
 msgstr ""
 
-#: src/language/lexer/variable-parser.c:366
+#: src/language/lexer/variable-parser.c:370
 msgid "incorrect use of TO convention"
 msgstr ""
 
-#: src/language/lexer/variable-parser.c:409
+#: src/language/lexer/variable-parser.c:413
 msgid "Scratch variables not allowed here."
 msgstr ""
 
-#: src/language/lexer/variable-parser.c:431
+#: src/language/lexer/variable-parser.c:435
 msgid "Prefixes don't match in use of TO convention."
 msgstr ""
 
-#: src/language/lexer/variable-parser.c:436
+#: src/language/lexer/variable-parser.c:440
 msgid "Bad bounds in use of TO convention."
 msgstr ""
 
-#: src/language/line-buffer.c:251
-#, c-format
-msgid "Can't find `%s' in include file search path."
-msgstr ""
-
-#: src/language/line-buffer.c:335
-#, c-format
-msgid "Closing `%s': %s."
-msgstr ""
-
-#: src/language/line-buffer.c:446
-#, c-format
-msgid "opening \"%s\" as syntax file"
-msgstr ""
-
-#: src/language/line-buffer.c:451
-#, c-format
-msgid "Opening `%s': %s."
-msgstr ""
-
-#: src/language/line-buffer.c:464
-#, c-format
-msgid "Reading `%s': %s."
-msgstr ""
-
-#: src/language/stats/aggregate.c:216
+#: src/language/stats/aggregate.c:218
 msgid "while expecting COLUMNWISE"
 msgstr ""
 
-#: src/language/stats/aggregate.c:245
+#: src/language/stats/aggregate.c:247
 msgid "expecting BREAK"
 msgstr ""
 
-#: src/language/stats/aggregate.c:250
+#: src/language/stats/aggregate.c:252
 msgid ""
 "When PRESORTED is specified, specifying sorting directions with (A) or (D) "
 "has no effect.  Output data will be sorted the same way as the input data."
 msgstr ""
 
-#: src/language/stats/aggregate.c:423
+#: src/language/stats/aggregate.c:432
 msgid "expecting aggregation function"
 msgstr ""
 
-#: src/language/stats/aggregate.c:439
+#: src/language/stats/aggregate.c:450
 #, c-format
 msgid "Unknown aggregation function %s."
 msgstr ""
 
-#: src/language/stats/aggregate.c:491
+#: src/language/stats/aggregate.c:504
 #, c-format
 msgid "Missing argument %d to %s."
 msgstr ""
 
-#: src/language/stats/aggregate.c:500
+#: src/language/stats/aggregate.c:513
 #, c-format
 msgid "Arguments to %s must be of same type as source variables."
 msgstr ""
 
-#: src/language/stats/aggregate.c:522
+#: src/language/stats/aggregate.c:535
 #, c-format
 msgid ""
 "Number of source variables (%u) does not match number of target variables (%"
 "u)."
 msgstr ""
 
-#: src/language/stats/aggregate.c:538
+#: src/language/stats/aggregate.c:551
 #, c-format
 msgid ""
 "The value arguments passed to the %s function are out-of-order.  They will "
 "be treated as if they had been specified in the correct order."
 msgstr ""
 
-#: src/language/stats/aggregate.c:605
+#: src/language/stats/aggregate.c:621
 #, c-format
 msgid ""
 "Variable name %s is not unique within the aggregate file dictionary, which "
@@ -2542,313 +2444,313 @@
 msgid "Duplicate variable name %s among target variables."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:270
+#: src/language/stats/crosstabs.q:273
 msgid ""
 "Missing mode REPORT not allowed in general mode.  Assuming MISSING=TABLE."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:280
+#: src/language/stats/crosstabs.q:283
 msgid "Write mode ALL not allowed in general mode.  Assuming WRITE=CELLS."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:336
+#: src/language/stats/crosstabs.q:339
 msgid "Too many crosstabulation variables or dimensions."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:346
+#: src/language/stats/crosstabs.q:349
 msgid "expecting BY"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:413
+#: src/language/stats/crosstabs.q:416
 msgid "VARIABLES must be specified before TABLES."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:450
+#: src/language/stats/crosstabs.q:454
 #, c-format
 msgid "Maximum value (%ld) less than minimum value (%ld)."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:819
+#: src/language/stats/crosstabs.q:823
 msgid "Summary."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:821 src/language/stats/examine.q:937
+#: src/language/stats/crosstabs.q:825 src/language/stats/examine.q:948
 msgid "Cases"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:822 src/language/stats/examine.q:871
+#: src/language/stats/crosstabs.q:826 src/language/stats/examine.q:882
 #: src/language/stats/frequencies.q:1177 src/language/stats/frequencies.q:1553
 msgid "Valid"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:823 src/language/stats/examine.q:872
+#: src/language/stats/crosstabs.q:827 src/language/stats/examine.q:883
 #: src/language/stats/frequencies.q:1246 src/language/stats/frequencies.q:1554
 #: src/ui/gui/var-sheet.c:77
 msgid "Missing"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:824 src/language/stats/crosstabs.q:1027
-#: src/language/stats/crosstabs.q:1747 src/language/stats/examine.q:873
-#: src/language/stats/frequencies.q:1255 src/language/stats/oneway.q:315
-#: src/language/stats/oneway.q:479 src/language/stats/regression.q:315
+#: src/language/stats/crosstabs.q:828 src/language/stats/crosstabs.q:1031
+#: src/language/stats/crosstabs.q:1751 src/language/stats/examine.q:884
+#: src/language/stats/frequencies.q:1255 src/language/stats/oneway.q:307
+#: src/language/stats/oneway.q:470 src/language/stats/regression.q:315
 msgid "Total"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:834 src/language/stats/examine.q:949
-#: src/language/stats/frequencies.q:1552 src/language/stats/oneway.q:401
-#: src/language/stats/t-test.q:690 src/language/stats/t-test.q:713
-#: src/language/stats/t-test.q:838 src/language/stats/t-test.q:1373
+#: src/language/stats/crosstabs.q:838 src/language/stats/examine.q:960
+#: src/language/stats/frequencies.q:1552 src/language/stats/oneway.q:392
+#: src/language/stats/t-test.q:683 src/language/stats/t-test.q:706
+#: src/language/stats/t-test.q:831 src/language/stats/t-test.q:1366
 msgid "N"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:835 src/language/stats/examine.q:952
+#: src/language/stats/crosstabs.q:839 src/language/stats/examine.q:963
 #: src/language/stats/frequencies.q:1181 src/language/stats/frequencies.q:1182
 #: src/language/stats/frequencies.q:1183
 msgid "Percent"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1077
+#: src/language/stats/crosstabs.q:1081
 msgid "count"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1078
+#: src/language/stats/crosstabs.q:1082
 msgid "row %"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1079
+#: src/language/stats/crosstabs.q:1083
 msgid "column %"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1080
+#: src/language/stats/crosstabs.q:1084
 msgid "total %"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1081
+#: src/language/stats/crosstabs.q:1085
 msgid "expected"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1082
+#: src/language/stats/crosstabs.q:1086
 msgid "residual"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1083
+#: src/language/stats/crosstabs.q:1087
 msgid "std. resid."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1084
+#: src/language/stats/crosstabs.q:1088
 msgid "adj. resid."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1114
+#: src/language/stats/crosstabs.q:1118
 msgid "Chi-square tests."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1117 src/language/stats/crosstabs.q:1144
-#: src/language/stats/crosstabs.q:1164 src/language/stats/crosstabs.q:1185
-#: src/language/stats/examine.q:1383
+#: src/language/stats/crosstabs.q:1121 src/language/stats/crosstabs.q:1148
+#: src/language/stats/crosstabs.q:1168 src/language/stats/crosstabs.q:1189
+#: src/language/stats/examine.q:1394
 msgid "Statistic"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1119 src/language/stats/oneway.q:288
-#: src/language/stats/oneway.q:691 src/language/stats/regression.q:308
-#: src/language/stats/t-test.q:988 src/language/stats/t-test.q:1180
-#: src/language/stats/t-test.q:1272
+#: src/language/stats/crosstabs.q:1123 src/language/stats/oneway.q:280
+#: src/language/stats/oneway.q:680 src/language/stats/regression.q:308
+#: src/language/stats/t-test.q:981 src/language/stats/t-test.q:1173
+#: src/language/stats/t-test.q:1265
 msgid "df"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1121
+#: src/language/stats/crosstabs.q:1125
 msgid "Asymp. Sig. (2-sided)"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1123
+#: src/language/stats/crosstabs.q:1127
 msgid "Exact. Sig. (2-sided)"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1125
+#: src/language/stats/crosstabs.q:1129
 msgid "Exact. Sig. (1-sided)"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1140
+#: src/language/stats/crosstabs.q:1144
 msgid "Symmetric measures."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1143 src/language/stats/crosstabs.q:1184
+#: src/language/stats/crosstabs.q:1147 src/language/stats/crosstabs.q:1188
 msgid "Category"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1146 src/language/stats/crosstabs.q:1188
+#: src/language/stats/crosstabs.q:1150 src/language/stats/crosstabs.q:1192
 msgid "Asymp. Std. Error"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1147 src/language/stats/crosstabs.q:1189
+#: src/language/stats/crosstabs.q:1151 src/language/stats/crosstabs.q:1193
 msgid "Approx. T"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1148 src/language/stats/crosstabs.q:1190
+#: src/language/stats/crosstabs.q:1152 src/language/stats/crosstabs.q:1194
 msgid "Approx. Sig."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1159
+#: src/language/stats/crosstabs.q:1163
 msgid "Risk estimate."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1163
+#: src/language/stats/crosstabs.q:1167
 #, c-format
 msgid "95%% Confidence Interval"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1166 src/language/stats/t-test.q:992
-#: src/language/stats/t-test.q:1177 src/language/stats/t-test.q:1275
+#: src/language/stats/crosstabs.q:1170 src/language/stats/t-test.q:985
+#: src/language/stats/t-test.q:1170 src/language/stats/t-test.q:1268
 msgid "Lower"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1167 src/language/stats/t-test.q:993
-#: src/language/stats/t-test.q:1178 src/language/stats/t-test.q:1276
+#: src/language/stats/crosstabs.q:1171 src/language/stats/t-test.q:986
+#: src/language/stats/t-test.q:1171 src/language/stats/t-test.q:1269
 msgid "Upper"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1181
+#: src/language/stats/crosstabs.q:1185
 msgid "Directional measures."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1186 src/ui/gui/var-sheet.c:72
+#: src/language/stats/crosstabs.q:1190 src/ui/gui/var-sheet.c:72
 msgid "Type"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1939
+#: src/language/stats/crosstabs.q:1943
 msgid "Pearson Chi-Square"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1940
+#: src/language/stats/crosstabs.q:1944
 msgid "Likelihood Ratio"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1941
+#: src/language/stats/crosstabs.q:1945
 msgid "Fisher's Exact Test"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1942
+#: src/language/stats/crosstabs.q:1946
 msgid "Continuity Correction"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1943
+#: src/language/stats/crosstabs.q:1947
 msgid "Linear-by-Linear Association"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1980 src/language/stats/crosstabs.q:2050
-#: src/language/stats/crosstabs.q:2109
+#: src/language/stats/crosstabs.q:1984 src/language/stats/crosstabs.q:2054
+#: src/language/stats/crosstabs.q:2113
 msgid "N of Valid Cases"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1996 src/language/stats/crosstabs.q:2125
+#: src/language/stats/crosstabs.q:2000 src/language/stats/crosstabs.q:2129
 msgid "Nominal by Nominal"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1997 src/language/stats/crosstabs.q:2126
+#: src/language/stats/crosstabs.q:2001 src/language/stats/crosstabs.q:2130
 msgid "Ordinal by Ordinal"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1998
+#: src/language/stats/crosstabs.q:2002
 msgid "Interval by Interval"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1999
+#: src/language/stats/crosstabs.q:2003
 msgid "Measure of Agreement"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2004
+#: src/language/stats/crosstabs.q:2008
 msgid "Phi"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2005
+#: src/language/stats/crosstabs.q:2009
 msgid "Cramer's V"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2006
+#: src/language/stats/crosstabs.q:2010
 msgid "Contingency Coefficient"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2007
+#: src/language/stats/crosstabs.q:2011
 msgid "Kendall's tau-b"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2008
+#: src/language/stats/crosstabs.q:2012
 msgid "Kendall's tau-c"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2009
+#: src/language/stats/crosstabs.q:2013
 msgid "Gamma"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2010
+#: src/language/stats/crosstabs.q:2014
 msgid "Spearman Correlation"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2011
+#: src/language/stats/crosstabs.q:2015
 msgid "Pearson's R"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2012
+#: src/language/stats/crosstabs.q:2016
 msgid "Kappa"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2082
+#: src/language/stats/crosstabs.q:2086
 #, c-format
 msgid "Odds Ratio for %s (%g / %g)"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2085
+#: src/language/stats/crosstabs.q:2089
 #, c-format
 msgid "Odds Ratio for %s (%.*s / %.*s)"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2093
+#: src/language/stats/crosstabs.q:2097
 #, c-format
 msgid "For cohort %s = %g"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2096
+#: src/language/stats/crosstabs.q:2100
 #, c-format
 msgid "For cohort %s = %.*s"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2127
+#: src/language/stats/crosstabs.q:2131
 msgid "Nominal by Interval"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2132
+#: src/language/stats/crosstabs.q:2136
 msgid "Lambda"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2133
+#: src/language/stats/crosstabs.q:2137
 msgid "Goodman and Kruskal tau"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2134
+#: src/language/stats/crosstabs.q:2138
 msgid "Uncertainty Coefficient"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2135
+#: src/language/stats/crosstabs.q:2139
 msgid "Somers' d"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2136
+#: src/language/stats/crosstabs.q:2140
 msgid "Eta"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2141
+#: src/language/stats/crosstabs.q:2145
 msgid "Symmetric"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2142 src/language/stats/crosstabs.q:2143
+#: src/language/stats/crosstabs.q:2146 src/language/stats/crosstabs.q:2147
 #, c-format
 msgid "%s Dependent"
 msgstr ""
 
-#: src/language/stats/descriptives.c:108 src/language/stats/examine.q:1488
-#: src/language/stats/frequencies.q:123 src/language/stats/oneway.q:402
-#: src/language/stats/t-test.q:691 src/language/stats/t-test.q:714
-#: src/language/stats/t-test.q:837 src/language/stats/t-test.q:1174
+#: src/language/stats/descriptives.c:108 src/language/stats/examine.q:1499
+#: src/language/stats/frequencies.q:123 src/language/stats/oneway.q:393
+#: src/language/stats/t-test.q:684 src/language/stats/t-test.q:707
+#: src/language/stats/t-test.q:830 src/language/stats/t-test.q:1167
 msgid "Mean"
 msgstr ""
 
@@ -2860,12 +2762,12 @@
 msgid "Std Dev"
 msgstr ""
 
-#: src/language/stats/descriptives.c:111 src/language/stats/examine.q:1568
+#: src/language/stats/descriptives.c:111 src/language/stats/examine.q:1579
 #: src/language/stats/frequencies.q:128
 msgid "Variance"
 msgstr ""
 
-#: src/language/stats/descriptives.c:112 src/language/stats/examine.q:1675
+#: src/language/stats/descriptives.c:112 src/language/stats/examine.q:1686
 #: src/language/stats/frequencies.q:129
 msgid "Kurtosis"
 msgstr ""
@@ -2874,7 +2776,7 @@
 msgid "S E Kurt"
 msgstr ""
 
-#: src/language/stats/descriptives.c:114 src/language/stats/examine.q:1655
+#: src/language/stats/descriptives.c:114 src/language/stats/examine.q:1666
 #: src/language/stats/frequencies.q:131
 msgid "Skewness"
 msgstr ""
@@ -2883,18 +2785,18 @@
 msgid "S E Skew"
 msgstr ""
 
-#: src/language/stats/descriptives.c:116 src/language/stats/examine.q:1616
+#: src/language/stats/descriptives.c:116 src/language/stats/examine.q:1627
 #: src/language/stats/frequencies.q:133
 msgid "Range"
 msgstr ""
 
-#: src/language/stats/descriptives.c:117 src/language/stats/examine.q:1593
-#: src/language/stats/frequencies.q:134 src/language/stats/oneway.q:414
+#: src/language/stats/descriptives.c:117 src/language/stats/examine.q:1604
+#: src/language/stats/frequencies.q:134 src/language/stats/oneway.q:405
 msgid "Minimum"
 msgstr ""
 
-#: src/language/stats/descriptives.c:118 src/language/stats/examine.q:1604
-#: src/language/stats/frequencies.q:135 src/language/stats/oneway.q:415
+#: src/language/stats/descriptives.c:118 src/language/stats/examine.q:1615
+#: src/language/stats/frequencies.q:135 src/language/stats/oneway.q:406
 msgid "Maximum"
 msgstr ""
 
@@ -2911,210 +2813,215 @@
 msgid "expecting statistic name: reverting to default"
 msgstr ""
 
-#: src/language/stats/descriptives.c:522
+#: src/language/stats/descriptives.c:523
 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/language/stats/descriptives.c:554
+#: src/language/stats/descriptives.c:555
 msgid "Mapping of variables to corresponding Z-scores."
 msgstr ""
 
-#: src/language/stats/descriptives.c:559
+#: src/language/stats/descriptives.c:560
 msgid "Source"
 msgstr ""
 
-#: src/language/stats/descriptives.c:560
+#: src/language/stats/descriptives.c:561
 msgid "Target"
 msgstr ""
 
-#: src/language/stats/descriptives.c:678 src/language/stats/descriptives.c:684
+#: src/language/stats/descriptives.c:679 src/language/stats/descriptives.c:685
 msgid "Z-score of "
 msgstr ""
 
-#: src/language/stats/descriptives.c:905
+#: src/language/stats/descriptives.c:906
 msgid "Valid N"
 msgstr ""
 
-#: src/language/stats/descriptives.c:906
+#: src/language/stats/descriptives.c:907
 msgid "Missing N"
 msgstr ""
 
-#: src/language/stats/descriptives.c:933
+#: src/language/stats/descriptives.c:934
 #, c-format
 msgid "Valid cases = %g; cases with missing value(s) = %g."
 msgstr ""
 
-#: src/language/stats/examine.q:486 src/language/stats/examine.q:499
+#: src/language/stats/examine.q:288 src/language/stats/examine.q:291
+#, c-format
+msgid "%s is not currently supported."
+msgstr ""
+
+#: src/language/stats/examine.q:497 src/language/stats/examine.q:510
 #, c-format
 msgid "%s and %s are mutually exclusive"
 msgstr ""
 
-#: src/language/stats/examine.q:931
+#: src/language/stats/examine.q:942
 msgid "Case Processing Summary"
 msgstr ""
 
-#: src/language/stats/examine.q:1137
+#: src/language/stats/examine.q:1148
 msgid "Extreme Values"
 msgstr ""
 
-#: src/language/stats/examine.q:1153
+#: src/language/stats/examine.q:1164
 msgid "Case Number"
 msgstr ""
 
-#: src/language/stats/examine.q:1238
+#: src/language/stats/examine.q:1249
 msgid "Highest"
 msgstr ""
 
-#: src/language/stats/examine.q:1243
+#: src/language/stats/examine.q:1254
 msgid "Lowest"
 msgstr ""
 
-#: src/language/stats/examine.q:1384 src/language/stats/oneway.q:404
-#: src/language/stats/oneway.q:689 src/language/stats/regression.q:212
+#: src/language/stats/examine.q:1395 src/language/stats/oneway.q:395
+#: src/language/stats/oneway.q:678 src/language/stats/regression.q:212
 msgid "Std. Error"
 msgstr ""
 
-#: src/language/stats/examine.q:1386 src/language/stats/oneway.q:418
+#: src/language/stats/examine.q:1397 src/language/stats/oneway.q:409
 msgid "Descriptives"
 msgstr ""
 
-#: src/language/stats/examine.q:1506 src/language/stats/oneway.q:409
+#: src/language/stats/examine.q:1517 src/language/stats/oneway.q:400
 #, c-format
 msgid "%g%% Confidence Interval for Mean"
 msgstr ""
 
-#: src/language/stats/examine.q:1512 src/language/stats/oneway.q:411
+#: src/language/stats/examine.q:1523 src/language/stats/oneway.q:402
 msgid "Lower Bound"
 msgstr ""
 
-#: src/language/stats/examine.q:1523 src/language/stats/oneway.q:412
+#: src/language/stats/examine.q:1534 src/language/stats/oneway.q:403
 msgid "Upper Bound"
 msgstr ""
 
-#: src/language/stats/examine.q:1535
+#: src/language/stats/examine.q:1546
 #, c-format
 msgid "5%% Trimmed Mean"
 msgstr ""
 
-#: src/language/stats/examine.q:1546 src/language/stats/frequencies.q:125
+#: src/language/stats/examine.q:1557 src/language/stats/frequencies.q:125
 msgid "Median"
 msgstr ""
 
-#: src/language/stats/examine.q:1580 src/language/stats/oneway.q:403
-#: src/language/stats/t-test.q:692 src/language/stats/t-test.q:715
-#: src/language/stats/t-test.q:839 src/language/stats/t-test.q:1175
+#: src/language/stats/examine.q:1591 src/language/stats/oneway.q:394
+#: src/language/stats/t-test.q:685 src/language/stats/t-test.q:708
+#: src/language/stats/t-test.q:832 src/language/stats/t-test.q:1168
 msgid "Std. Deviation"
 msgstr ""
 
-#: src/language/stats/examine.q:1628
+#: src/language/stats/examine.q:1639
 msgid "Interquartile Range"
 msgstr ""
 
-#: src/language/stats/examine.q:1780
+#: src/language/stats/examine.q:1791
 #, c-format
 msgid "Boxplot of %s vs. %s"
 msgstr ""
 
-#: src/language/stats/examine.q:1805
+#: src/language/stats/examine.q:1816
 msgid "Boxplot"
 msgstr ""
 
-#: src/language/stats/examine.q:1847
+#: src/language/stats/examine.q:1858
 #, c-format
 msgid "Normal Q-Q Plot of %s"
 msgstr ""
 
-#: src/language/stats/examine.q:1848 src/language/stats/examine.q:1854
+#: src/language/stats/examine.q:1859 src/language/stats/examine.q:1865
 msgid "Observed Value"
 msgstr ""
 
-#: src/language/stats/examine.q:1849
+#: src/language/stats/examine.q:1860
 msgid "Expected Normal"
 msgstr ""
 
-#: src/language/stats/examine.q:1852
+#: src/language/stats/examine.q:1863
 #, c-format
 msgid "Detrended Normal Q-Q Plot of %s"
 msgstr ""
 
-#: src/language/stats/examine.q:1855
+#: src/language/stats/examine.q:1866
 msgid "Dev from Normal"
 msgstr ""
 
-#: src/language/stats/examine.q:1974 src/language/stats/examine.q:1996
+#: src/language/stats/examine.q:1985 src/language/stats/examine.q:2007
 #: src/language/stats/frequencies.q:1564
 msgid "Percentiles"
 msgstr ""
 
-#: src/language/stats/examine.q:2121
+#: src/language/stats/examine.q:2132
 msgid "Tukey's Hinges"
 msgstr ""
 
-#: src/language/stats/flip.c:101
+#: src/language/stats/flip.c:102
 msgid ""
 "FLIP ignores TEMPORARY.  Temporary transformations will be made permanent."
 msgstr ""
 
-#: src/language/stats/flip.c:243
+#: src/language/stats/flip.c:244
 #, c-format
 msgid "Could not create acceptable variant for variable %s."
 msgstr ""
 
-#: src/language/stats/flip.c:259
+#: src/language/stats/flip.c:260
 msgid "Cannot create more than 99999 variable names."
 msgstr ""
 
-#: src/language/stats/flip.c:296
+#: src/language/stats/flip.c:297
 msgid "Could not create temporary file for FLIP."
 msgstr ""
 
-#: src/language/stats/flip.c:307 src/language/stats/flip.c:373
+#: src/language/stats/flip.c:308 src/language/stats/flip.c:374
 #, c-format
 msgid "Error writing FLIP file: %s."
 msgstr ""
 
-#: src/language/stats/flip.c:420
+#: src/language/stats/flip.c:421
 #, c-format
 msgid "Error rewinding FLIP file: %s."
 msgstr ""
 
-#: src/language/stats/flip.c:427
+#: src/language/stats/flip.c:428
 msgid "Error creating FLIP source file."
 msgstr ""
 
-#: src/language/stats/flip.c:439
+#: src/language/stats/flip.c:440
 #, c-format
 msgid "Error reading FLIP file: %s."
 msgstr ""
 
-#: src/language/stats/flip.c:463
+#: src/language/stats/flip.c:464
 #, c-format
 msgid "Error seeking FLIP source file: %s."
 msgstr ""
 
-#: src/language/stats/flip.c:471
+#: src/language/stats/flip.c:472
 #, c-format
 msgid "Error writing FLIP source file: %s."
 msgstr ""
 
-#: src/language/stats/flip.c:482
+#: src/language/stats/flip.c:483
 #, c-format
 msgid "Error closing FLIP source file: %s."
 msgstr ""
 
-#: src/language/stats/flip.c:490
+#: src/language/stats/flip.c:491
 #, c-format
 msgid "Error rewinding FLIP source file: %s."
 msgstr ""
 
-#: src/language/stats/flip.c:538
+#: src/language/stats/flip.c:539
 #, c-format
 msgid "Error reading FLIP temporary file: %s."
 msgstr ""
 
-#: src/language/stats/flip.c:541
+#: src/language/stats/flip.c:542
 msgid "Unexpected end of file reading FLIP temporary file."
 msgstr ""
 
@@ -3211,98 +3118,98 @@
 msgid "TABLES subcommand may not appear more than once."
 msgstr ""
 
-#: src/language/stats/oneway.q:180
+#: src/language/stats/oneway.q:170
 msgid "Number of contrast coefficients must equal the number of groups"
 msgstr ""
 
-#: src/language/stats/oneway.q:189
+#: src/language/stats/oneway.q:179
 #, c-format
 msgid "Coefficients for contrast %d do not total zero"
 msgstr ""
 
-#: src/language/stats/oneway.q:253
+#: src/language/stats/oneway.q:245
 #, c-format
 msgid "`%s' is not a variable name"
 msgstr ""
 
-#: src/language/stats/oneway.q:287 src/language/stats/regression.q:307
+#: src/language/stats/oneway.q:279 src/language/stats/regression.q:307
 msgid "Sum of Squares"
 msgstr ""
 
-#: src/language/stats/oneway.q:289 src/language/stats/regression.q:309
+#: src/language/stats/oneway.q:281 src/language/stats/regression.q:309
 msgid "Mean Square"
 msgstr ""
 
-#: src/language/stats/oneway.q:290 src/language/stats/regression.q:310
-#: src/language/stats/t-test.q:985
+#: src/language/stats/oneway.q:282 src/language/stats/regression.q:310
+#: src/language/stats/t-test.q:978
 msgid "F"
 msgstr ""
 
-#: src/language/stats/oneway.q:291 src/language/stats/oneway.q:545
+#: src/language/stats/oneway.q:283 src/language/stats/oneway.q:536
 #: src/language/stats/regression.q:215 src/language/stats/regression.q:311
 msgid "Significance"
 msgstr ""
 
-#: src/language/stats/oneway.q:313
+#: src/language/stats/oneway.q:305
 msgid "Between Groups"
 msgstr ""
 
-#: src/language/stats/oneway.q:314
+#: src/language/stats/oneway.q:306
 msgid "Within Groups"
 msgstr ""
 
-#: src/language/stats/oneway.q:361 src/language/stats/regression.q:337
+#: src/language/stats/oneway.q:353 src/language/stats/regression.q:337
 msgid "ANOVA"
 msgstr ""
 
-#: src/language/stats/oneway.q:542
+#: src/language/stats/oneway.q:533
 msgid "Levene Statistic"
 msgstr ""
 
-#: src/language/stats/oneway.q:543
+#: src/language/stats/oneway.q:534
 msgid "df1"
 msgstr ""
 
-#: src/language/stats/oneway.q:544
+#: src/language/stats/oneway.q:535
 msgid "df2"
 msgstr ""
 
-#: src/language/stats/oneway.q:548
+#: src/language/stats/oneway.q:539
 msgid "Test of Homogeneity of Variances"
 msgstr ""
 
-#: src/language/stats/oneway.q:618
+#: src/language/stats/oneway.q:607
 msgid "Contrast Coefficients"
 msgstr ""
 
-#: src/language/stats/oneway.q:620 src/language/stats/oneway.q:687
+#: src/language/stats/oneway.q:609 src/language/stats/oneway.q:676
 msgid "Contrast"
 msgstr ""
 
-#: src/language/stats/oneway.q:685
+#: src/language/stats/oneway.q:674
 msgid "Contrast Tests"
 msgstr ""
 
-#: src/language/stats/oneway.q:688
+#: src/language/stats/oneway.q:677
 msgid "Value of Contrast"
 msgstr ""
 
-#: src/language/stats/oneway.q:690 src/language/stats/regression.q:214
-#: src/language/stats/t-test.q:987 src/language/stats/t-test.q:1179
-#: src/language/stats/t-test.q:1271
+#: src/language/stats/oneway.q:679 src/language/stats/regression.q:214
+#: src/language/stats/t-test.q:980 src/language/stats/t-test.q:1172
+#: src/language/stats/t-test.q:1264
 msgid "t"
 msgstr ""
 
-#: src/language/stats/oneway.q:692 src/language/stats/t-test.q:989
-#: src/language/stats/t-test.q:1181 src/language/stats/t-test.q:1273
+#: src/language/stats/oneway.q:681 src/language/stats/t-test.q:982
+#: src/language/stats/t-test.q:1174 src/language/stats/t-test.q:1266
 msgid "Sig. (2-tailed)"
 msgstr ""
 
-#: src/language/stats/oneway.q:736
+#: src/language/stats/oneway.q:725
 msgid "Assume equal variances"
 msgstr ""
 
-#: src/language/stats/oneway.q:740
+#: src/language/stats/oneway.q:729
 msgid "Does not assume equal"
 msgstr ""
 
@@ -3320,31 +3227,31 @@
 msgid "Cannot create new rank variable.  All candidates in use."
 msgstr ""
 
-#: src/language/stats/rank.q:823
+#: src/language/stats/rank.q:822
 msgid "Variables Created By RANK"
 msgstr ""
 
-#: src/language/stats/rank.q:847
+#: src/language/stats/rank.q:846
 #, c-format
 msgid "%s into %s(%s of %s using %s BY %s)"
 msgstr ""
 
-#: src/language/stats/rank.q:858
+#: src/language/stats/rank.q:857
 #, c-format
 msgid "%s into %s(%s of %s BY %s)"
 msgstr ""
 
-#: src/language/stats/rank.q:872
+#: src/language/stats/rank.q:871
 #, c-format
 msgid "%s into %s(%s of %s using %s)"
 msgstr ""
 
-#: src/language/stats/rank.q:882
+#: src/language/stats/rank.q:881
 #, c-format
 msgid "%s into %s(%s of %s)"
 msgstr ""
 
-#: src/language/stats/rank.q:895
+#: src/language/stats/rank.q:894
 msgid ""
 "FRACTION has been specified, but NORMAL and PROPORTION rank functions have "
 "not been requested.  The FRACTION subcommand will be ignored."
@@ -3443,122 +3350,142 @@
 msgid "One or more VARIABLES must be specified."
 msgstr ""
 
-#: src/language/stats/t-test.q:387
+#: src/language/stats/t-test.q:380
 #, c-format
 msgid "Long string variable %s is not valid here."
 msgstr ""
 
-#: src/language/stats/t-test.q:407 src/language/stats/t-test.q:422
+#: src/language/stats/t-test.q:400 src/language/stats/t-test.q:415
 msgid ""
 "When applying GROUPS to a string variable, two values must be specified."
 msgstr ""
 
-#: src/language/stats/t-test.q:494
+#: src/language/stats/t-test.q:487
 #, c-format
 msgid ""
 "PAIRED was specified but the number of variables preceding WITH (%d) did not "
 "match the number following (%d)."
 msgstr ""
 
-#: src/language/stats/t-test.q:511
+#: src/language/stats/t-test.q:504
 msgid "At least two variables must be specified on PAIRS."
 msgstr ""
 
-#: src/language/stats/t-test.q:688
+#: src/language/stats/t-test.q:681
 msgid "One-Sample Statistics"
 msgstr ""
 
-#: src/language/stats/t-test.q:693 src/language/stats/t-test.q:716
-#: src/language/stats/t-test.q:840
+#: src/language/stats/t-test.q:686 src/language/stats/t-test.q:709
+#: src/language/stats/t-test.q:833
 msgid "SE. Mean"
 msgstr ""
 
-#: src/language/stats/t-test.q:711
+#: src/language/stats/t-test.q:704
 msgid "Group Statistics"
 msgstr ""
 
-#: src/language/stats/t-test.q:834
+#: src/language/stats/t-test.q:827
 msgid "Paired Sample Statistics"
 msgstr ""
 
-#: src/language/stats/t-test.q:856 src/language/stats/t-test.q:1200
-#: src/language/stats/t-test.q:1390
+#: src/language/stats/t-test.q:849 src/language/stats/t-test.q:1193
+#: src/language/stats/t-test.q:1383
 #, c-format
 msgid "Pair %d"
 msgstr ""
 
-#: src/language/stats/t-test.q:973
+#: src/language/stats/t-test.q:966
 msgid "Independent Samples Test"
 msgstr ""
 
-#: src/language/stats/t-test.q:981
+#: src/language/stats/t-test.q:974
 msgid "Levene's Test for Equality of Variances"
 msgstr ""
 
-#: src/language/stats/t-test.q:983
+#: src/language/stats/t-test.q:976
 msgid "t-test for Equality of Means"
 msgstr ""
 
-#: src/language/stats/t-test.q:986 src/language/stats/t-test.q:1375
+#: src/language/stats/t-test.q:979 src/language/stats/t-test.q:1368
 msgid "Sig."
 msgstr ""
 
-#: src/language/stats/t-test.q:990 src/language/stats/t-test.q:1274
+#: src/language/stats/t-test.q:983 src/language/stats/t-test.q:1267
 msgid "Mean Difference"
 msgstr ""
 
-#: src/language/stats/t-test.q:991
+#: src/language/stats/t-test.q:984
 msgid "Std. Error Difference"
 msgstr ""
 
-#: src/language/stats/t-test.q:996 src/language/stats/t-test.q:1171
-#: src/language/stats/t-test.q:1266
+#: src/language/stats/t-test.q:989 src/language/stats/t-test.q:1164
+#: src/language/stats/t-test.q:1259
 #, c-format
 msgid "%g%% Confidence Interval of the Difference"
 msgstr ""
 
-#: src/language/stats/t-test.q:1051
+#: src/language/stats/t-test.q:1044
 msgid "Equal variances assumed"
 msgstr ""
 
-#: src/language/stats/t-test.q:1103
+#: src/language/stats/t-test.q:1096
 msgid "Equal variances not assumed"
 msgstr ""
 
-#: src/language/stats/t-test.q:1161
+#: src/language/stats/t-test.q:1154
 msgid "Paired Samples Test"
 msgstr ""
 
-#: src/language/stats/t-test.q:1164
+#: src/language/stats/t-test.q:1157
 msgid "Paired Differences"
 msgstr ""
 
-#: src/language/stats/t-test.q:1176
+#: src/language/stats/t-test.q:1169
 msgid "Std. Error Mean"
 msgstr ""
 
-#: src/language/stats/t-test.q:1255
+#: src/language/stats/t-test.q:1248
 msgid "One-Sample Test"
 msgstr ""
 
-#: src/language/stats/t-test.q:1260
+#: src/language/stats/t-test.q:1253
 #, c-format
 msgid "Test Value = %f"
 msgstr ""
 
-#: src/language/stats/t-test.q:1370
+#: src/language/stats/t-test.q:1363
 msgid "Paired Samples Correlations"
 msgstr ""
 
-#: src/language/stats/t-test.q:1374
+#: src/language/stats/t-test.q:1367
 msgid "Correlation"
 msgstr ""
 
-#: src/language/stats/t-test.q:1393
+#: src/language/stats/t-test.q:1386
 #, c-format
 msgid "%s & %s"
 msgstr ""
 
+#: src/language/tests/float-format.c:127
+#, c-format
+msgid "%d-byte string needed but %d-byte string supplied."
+msgstr ""
+
+#: src/language/tests/float-format.c:138
+msgid "Hexadecimal floating constant too long."
+msgstr ""
+
+#: src/language/tests/float-format.c:203
+#, c-format
+msgid ""
+"%s conversion of %s from %s to %s should have produced %s but actually "
+"produced %s."
+msgstr ""
+
+#: src/language/tests/float-format.c:249
+msgid "Too many values in single command."
+msgstr ""
+
 #: src/language/tests/moments-test.c:50
 msgid "expecting weight value"
 msgstr ""
@@ -3567,10 +3494,15 @@
 msgid "Only USE ALL is currently implemented."
 msgstr ""
 
-#: src/language/utilities/include.c:43
+#: src/language/utilities/include.c:49
 msgid "expecting file name"
 msgstr ""
 
+#: src/language/utilities/include.c:65
+#, c-format
+msgid "Can't find `%s' in include file search path."
+msgstr ""
+
 #: src/language/utilities/permissions.c:77
 #, c-format
 msgid "Expecting %s or %s."
@@ -3586,129 +3518,139 @@
 msgid "Cannot change mode of %s: %s"
 msgstr ""
 
-#: src/language/utilities/set.q:175 src/language/utilities/set.q:177
-#: src/language/utilities/set.q:179 src/language/utilities/set.q:181
-#: src/language/utilities/set.q:183 src/language/utilities/set.q:185
-#: src/language/utilities/set.q:187 src/language/utilities/set.q:189
-#: src/language/utilities/set.q:191
+#: src/language/utilities/set.q:201 src/language/utilities/set.q:203
+#: src/language/utilities/set.q:205 src/language/utilities/set.q:207
+#: src/language/utilities/set.q:209 src/language/utilities/set.q:211
+#: src/language/utilities/set.q:213 src/language/utilities/set.q:215
+#: src/language/utilities/set.q:217
 #, c-format
 msgid "%s is obsolete."
 msgstr ""
 
-#: src/language/utilities/set.q:194
+#: src/language/utilities/set.q:220
 #, c-format
 msgid "%s is not implemented."
 msgstr ""
 
-#: src/language/utilities/set.q:197
+#: src/language/utilities/set.q:223
 msgid "Active file compression is not implemented."
 msgstr ""
 
-#: src/language/utilities/set.q:272
+#: src/language/utilities/set.q:347
 #, c-format
 msgid ""
-"CC%c: Custom currency string `%s' does not contain exactly three periods or "
-"commas (not both)."
+"%s: Custom currency string `%s' does not contain exactly three periods or "
+"commas (or it contains both)."
 msgstr ""
 
-#: src/language/utilities/set.q:324
+#: src/language/utilities/set.q:403
 msgid "EPOCH must be 1500 or later."
 msgstr ""
 
-#: src/language/utilities/set.q:331
+#: src/language/utilities/set.q:410
 msgid "expecting AUTOMATIC or year"
 msgstr ""
 
-#: src/language/utilities/set.q:352
+#: src/language/utilities/set.q:431
 msgid "LENGTH must be at least 1."
 msgstr ""
 
-#: src/language/utilities/set.q:396
+#: src/language/utilities/set.q:475
 msgid "WIDTH must be at least 40."
 msgstr ""
 
-#: src/language/utilities/set.q:418
+#: src/language/utilities/set.q:498
 #, c-format
 msgid ""
 "FORMAT requires numeric output format as an argument.  Specified format %s "
 "is of type string."
 msgstr ""
 
-#: src/language/utilities/set.q:475
+#: src/language/utilities/set.q:555
 msgid "BLANKS is SYSMIS."
 msgstr ""
 
-#: src/language/utilities/set.q:477
+#: src/language/utilities/set.q:557
 #, c-format
 msgid "BLANKS is %g."
 msgstr ""
 
-#: src/language/utilities/set.q:509
+#: src/language/utilities/set.q:592
 #, c-format
-msgid "CC%c is \"%s\"."
+msgid "%s is \"%s\"."
 msgstr ""
 
-#: src/language/utilities/set.q:546
+#: src/language/utilities/set.q:628
 #, c-format
 msgid "DECIMAL is \"%c\"."
 msgstr ""
 
-#: src/language/utilities/set.q:552
+#: src/language/utilities/set.q:634
 #, c-format
 msgid "ENDCMD is \"%c\"."
 msgstr ""
 
-#: src/language/utilities/set.q:558
+#: src/language/utilities/set.q:642
+#, c-format
+msgid "ERRORS is \"%s\"."
+msgstr ""
+
+#: src/language/utilities/set.q:653
 #, c-format
 msgid "FORMAT is %s."
 msgstr ""
 
-#: src/language/utilities/set.q:564
+#: src/language/utilities/set.q:659
 #, c-format
 msgid "LENGTH is %d."
 msgstr ""
 
-#: src/language/utilities/set.q:570
+#: src/language/utilities/set.q:665
 #, c-format
 msgid "MXERRS is %d."
 msgstr ""
 
-#: src/language/utilities/set.q:576
+#: src/language/utilities/set.q:671
 #, c-format
 msgid "MXLOOPS is %d."
 msgstr ""
 
-#: src/language/utilities/set.q:582
+#: src/language/utilities/set.q:677
 #, c-format
 msgid "MXWARNS is %d."
 msgstr ""
 
-#: src/language/utilities/set.q:589
+#: src/language/utilities/set.q:684 src/language/utilities/set.q:735
+#, c-format
+msgid "%s is %s (%s)."
+msgstr ""
+
+#: src/language/utilities/set.q:756
 msgid "SCOMPRESSION is ON."
 msgstr ""
 
-#: src/language/utilities/set.q:591
+#: src/language/utilities/set.q:758
 msgid "SCOMPRESSION is OFF."
 msgstr ""
 
-#: src/language/utilities/set.q:598
+#: src/language/utilities/set.q:765
 msgid "UNDEFINED is WARN."
 msgstr ""
 
-#: src/language/utilities/set.q:600
+#: src/language/utilities/set.q:767
 msgid "UNDEFINED is NOWARN."
 msgstr ""
 
-#: src/language/utilities/set.q:608
+#: src/language/utilities/set.q:775
 msgid "WEIGHT is off."
 msgstr ""
 
-#: src/language/utilities/set.q:610
+#: src/language/utilities/set.q:777
 #, c-format
 msgid "WEIGHT is variable %s."
 msgstr ""
 
-#: src/language/utilities/set.q:616
+#: src/language/utilities/set.q:795
 #, c-format
 msgid "WIDTH is %d."
 msgstr ""
@@ -3718,25 +3660,25 @@
 msgid "%s: `.' expected after string."
 msgstr ""
 
-#: src/language/utilities/title.c:141
+#: src/language/utilities/title.c:139
 #, c-format
 msgid "Document entered %s by %s:"
 msgstr ""
 
-#: src/language/xforms/compute.c:145 src/language/xforms/compute.c:192
+#: src/language/xforms/compute.c:148 src/language/xforms/compute.c:195
 #, c-format
 msgid ""
 "When executing COMPUTE: SYSMIS is not a valid value as an index into vector %"
 "s."
 msgstr ""
 
-#: src/language/xforms/compute.c:148 src/language/xforms/compute.c:199
+#: src/language/xforms/compute.c:151 src/language/xforms/compute.c:202
 #, c-format
 msgid ""
 "When executing COMPUTE: %g is not a valid value as an index into vector %s."
 msgstr ""
 
-#: src/language/xforms/compute.c:336
+#: src/language/xforms/compute.c:340
 #, c-format
 msgid "There is no vector named %s."
 msgstr ""
@@ -3745,40 +3687,40 @@
 msgid "Destination cannot be a string variable."
 msgstr ""
 
-#: src/language/xforms/recode.c:248
+#: src/language/xforms/recode.c:249
 msgid ""
 "Inconsistent target variable types.  Target variables must be all numeric or "
 "all string."
 msgstr ""
 
-#: src/language/xforms/recode.c:268
+#: src/language/xforms/recode.c:269
 msgid "CONVERT requires string input values and numeric output values."
 msgstr ""
 
-#: src/language/xforms/recode.c:386
+#: src/language/xforms/recode.c:387
 msgid "expecting output value"
 msgstr ""
 
-#: src/language/xforms/recode.c:434
+#: src/language/xforms/recode.c:436
 #, c-format
 msgid ""
 "%u variable(s) cannot be recoded into %u variable(s).  Specify the same "
 "number of variables as source and target variables."
 msgstr ""
 
-#: src/language/xforms/recode.c:449
+#: src/language/xforms/recode.c:451
 #, c-format
 msgid ""
 "There is no variable named %s.  (All string variables specified on INTO must "
 "already exist.  Use the STRING command to create a string variable.)"
 msgstr ""
 
-#: src/language/xforms/recode.c:464
+#: src/language/xforms/recode.c:466
 #, c-format
 msgid "INTO is required with %s input values and %s output values."
 msgstr ""
 
-#: src/language/xforms/recode.c:477
+#: src/language/xforms/recode.c:479
 #, c-format
 msgid "Type mismatch.  Cannot store %s data in %s variable %s."
 msgstr ""
@@ -3829,7 +3771,7 @@
 msgid "Empirical with averaging"
 msgstr ""
 
-#: src/math/sort.c:436
+#: src/math/sort.c:440
 #, c-format
 msgid ""
 "Out of memory.  Could not allocate room for minimum of %d cases of %d bytes "
@@ -4223,12 +4165,12 @@
 msgid "invalid numeric format"
 msgstr ""
 
-#: src/output/table.c:232
+#: src/output/table.c:238
 #, c-format
 msgid "bad vline: x=%d+%d=%d y=(%d+%d=%d,%d+%d=%d) in table size (%d,%d)\n"
 msgstr ""
 
-#: src/output/table.c:303
+#: src/output/table.c:309
 #, c-format
 msgid ""
 "bad box: (%d+%d=%d,%d+%d=%d)-(%d+%d=%d,%d+%d=%d) in table size (%d,%d)\n"
@@ -4270,15 +4212,15 @@
 msgid "Font Selection"
 msgstr ""
 
-#: src/ui/gui/message-dialog.c:136
+#: src/ui/gui/message-dialog.c:128
 msgid "Script Error"
 msgstr ""
 
-#: src/ui/gui/message-dialog.c:140
+#: src/ui/gui/message-dialog.c:132
 msgid "Data File Error"
 msgstr ""
 
-#: src/ui/gui/message-dialog.c:145
+#: src/ui/gui/message-dialog.c:137
 msgid "PSPP Error"
 msgstr ""
 
@@ -4290,17 +4232,17 @@
 msgid "Incorrect range specification"
 msgstr ""
 
-#: src/ui/gui/psppire.c:67
+#: src/ui/gui/psppire.c:71
 msgid "Sorry. The help system hasn't yet been implemented."
 msgstr ""
 
-#: src/ui/gui/psppire-data-store.c:733
+#: src/ui/gui/psppire-data-store.c:724
 msgid "var"
 msgstr ""
 
-#: src/ui/gui/psppire-data-store.c:814 src/ui/gui/psppire-var-store.c:518
-#: src/ui/gui/psppire-var-store.c:528 src/ui/gui/psppire-var-store.c:538
-#: src/ui/gui/psppire-var-store.c:735
+#: src/ui/gui/psppire-data-store.c:805 src/ui/gui/psppire-var-store.c:521
+#: src/ui/gui/psppire-var-store.c:531 src/ui/gui/psppire-var-store.c:541
+#: src/ui/gui/psppire-var-store.c:738
 #, c-format
 msgid "%d"
 msgstr ""
@@ -4645,7 +4587,7 @@
 msgid "Scale"
 msgstr ""
 
-#: src/ui/terminal/command-line.c:215
+#: src/ui/terminal/command-line.c:222
 #, c-format
 msgid ""
 "PSPP, a program for statistical analysis of sample data.\n"
@@ -4664,6 +4606,7 @@
 "defaults\n"
 "\n"
 "Input and output:\n"
+"  -e, --error-file=FILE     send error messages to FILE (appended)\n"
 "  -f, --out-file=FILE       send output to FILE (overwritten)\n"
 "  -p, --pipe                read script from stdin, send output to stdout\n"
 "  -I-, --no-include         clear include path\n"
@@ -4690,37 +4633,42 @@
 "\n"
 msgstr ""
 
-#: src/ui/terminal/command-line.c:249
+#: src/ui/terminal/command-line.c:257
 #, c-format
 msgid ""
 "\n"
 "Report bugs to <%s>.\n"
 msgstr ""
 
-#: src/ui/terminal/main.c:114
+#: src/ui/terminal/main.c:120
 msgid ""
 "Stopping syntax file processing here to avoid a cascade of dependent command "
 "failures."
 msgstr ""
 
-#: src/ui/terminal/msg-ui.c:62
+#: src/ui/terminal/msg-ui.c:66
+#, c-format
+msgid "Cannot open %s (%s). Writing errors to stdout instead.\n"
+msgstr ""
+
+#: src/ui/terminal/msg-ui.c:91
 msgid "Terminating execution of syntax file due to error."
 msgstr ""
 
-#: src/ui/terminal/msg-ui.c:64
+#: src/ui/terminal/msg-ui.c:93
 #, c-format
 msgid "Errors (%d) exceeds limit (%d)."
 msgstr ""
 
-#: src/ui/terminal/msg-ui.c:67
+#: src/ui/terminal/msg-ui.c:96
 #, c-format
 msgid "Warnings (%d) exceed limit (%d)."
 msgstr ""
 
-#: src/ui/terminal/msg-ui.c:116
+#: src/ui/terminal/msg-ui.c:145
 msgid "error"
 msgstr ""
 
-#: src/ui/terminal/msg-ui.c:117
+#: src/ui/terminal/msg-ui.c:146
 msgid "warning"
 msgstr ""
Index: src/language/automake.mk
===================================================================
RCS file: /sources/pspp/pspp/src/language/automake.mk,v
retrieving revision 1.3
diff -b -w -U3 -r1.3 automake.mk
--- src/language/automake.mk	17 Mar 2006 00:41:57 -0000	1.3
+++ src/language/automake.mk	26 Nov 2006 05:09:04 -0000
@@ -13,8 +13,10 @@
 noinst_LIBRARIES += src/language/liblanguage.a 
 
 src_language_liblanguage_a_SOURCES = \
-	src/language/line-buffer.c \
-	src/language/line-buffer.h \
+	src/language/syntax-file.c \
+	src/language/syntax-file.h \
+	src/language/prompt.c \
+	src/language/prompt.h \
 	src/language/command.c \
 	src/language/command.h \
 	src/language/command.def 
Index: src/language/command.c
===================================================================
RCS file: /sources/pspp/pspp/src/language/command.c,v
retrieving revision 1.19
diff -b -w -U3 -r1.19 command.c
--- src/language/command.c	11 Nov 2006 23:10:00 -0000	1.19
+++ src/language/command.c	26 Nov 2006 05:09:04 -0000
@@ -32,7 +32,7 @@
 #include <data/settings.h>
 #include <data/variable.h>
 #include <language/lexer/lexer.h>
-#include <language/line-buffer.h>
+#include <language/prompt.h>
 #include <libpspp/alloc.h>
 #include <libpspp/assertion.h>
 #include <libpspp/compiler.h>
@@ -162,7 +162,7 @@
   enum cmd_result result;
 
   /* Read the command's first token. */
-  getl_set_prompt_style (GETL_PROMPT_FIRST);
+  set_prompt_style (PROMPT_FIRST);
   set_completion_state (state);
   lex_get (lexer);
   if (lex_token (lexer) == T_STOP)
@@ -172,7 +172,7 @@
       /* Null commands can result from extra empty lines. */
       return CMD_SUCCESS; 
     }
-  getl_set_prompt_style (GETL_PROMPT_LATER);
+  set_prompt_style (PROMPT_LATER);
 
   /* Parse the command name. */
   command = parse_command_name (lexer);
Index: src/language/line-buffer.c
===================================================================
RCS file: src/language/line-buffer.c
diff -N src/language/line-buffer.c
--- src/language/line-buffer.c	28 Oct 2006 08:31:22 -0000	1.16
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,587 +0,0 @@
-/* PSPP - computes sample statistics.
-   Copyright (C) 1997-9, 2000 Free Software Foundation, Inc.
-   Written by Ben Pfaff <blp@gnu.org>.
-
-   This program is free software; you can redistribute it and/or
-   modify it under the terms of the GNU General Public License as
-   published by the Free Software Foundation; either version 2 of the
-   License, or (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful, but
-   WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-   02110-1301, USA. */
-
-#include <config.h>
-
-#include <language/line-buffer.h>
-
-#include <stdio.h>
-#include <errno.h>
-#include <stdlib.h>
-
-#include <data/file-name.h>
-#include <data/settings.h>
-#include <data/variable.h>
-#include <language/command.h>
-#include <language/lexer/lexer.h>
-#include <libpspp/alloc.h>
-#include <libpspp/assertion.h>
-#include <libpspp/message.h>
-#include <libpspp/message.h>
-#include <libpspp/str.h>
-#include <libpspp/verbose-msg.h>
-#include <libpspp/version.h>
-#include <output/table.h>
-
-#include "gettext.h"
-#define _(msgid) gettext (msgid)
-
-/* Source file. */
-struct getl_source
-  {
-    struct getl_source *included_from;	/* File that this is nested inside. */
-    struct getl_source *includes;	/* File nested inside this file. */
-    struct getl_source *next;		/* Next file in list. */
-
-    /* Current location. */
-    char *fn;				/* File name. */
-    int ln;				/* Line number. */
-
-    enum getl_source_type
-      {
-        SYNTAX_FILE,
-        FILTER,
-        FUNCTION,
-        INTERACTIVE
-      }
-    type;
-
-    union 
-      {
-        /* SYNTAX_FILE. */
-        FILE *syntax_file;
-
-        /* FILTER. */
-        struct 
-          {
-            void (*filter) (struct string *line, void *aux);
-            void (*close) (void *aux);
-            void *aux;
-          }
-        filter;
-
-        /* FUNCTION. */
-        struct 
-          {
-            bool (*read) (struct string *line, char **fn, int *ln, void *aux);
-            void (*close) (void *aux);
-            void *aux;
-          }
-        function;
-
-        /* INTERACTIVE. */
-        bool (*interactive) (struct string *line, enum getl_prompt_style);
-      }
-    u;
-
-  };
-
-/* List of source files. */
-static struct getl_source *cur_source;
-static struct getl_source *last_source;
-
-static struct string getl_include_path;
-
-
-static void close_source (void);
-
-static void init_prompts (void);
-static void uninit_prompts (void);
-static enum getl_prompt_style get_prompt_style (void);
-
-
-/* Initialize getl. */
-void
-getl_initialize (void)
-{
-  ds_init_cstr (&getl_include_path,
-                fn_getenv_default ("STAT_INCLUDE_PATH", include_path));
-  init_prompts ();
-}
-
-
-/* Delete everything from the include path. */
-void
-getl_clear_include_path (void)
-{
-  ds_clear (&getl_include_path);
-}
-
-/* Add to the include path. */
-void
-getl_add_include_dir (const char *path)
-{
-  if (ds_length (&getl_include_path))
-    ds_put_char (&getl_include_path, ':');
-
-  ds_put_cstr (&getl_include_path, path);
-}
-
-/* Appends source S to the list of source files. */
-static void
-append_source (struct getl_source *s) 
-{
-  s->included_from = s->includes = s->next = NULL;
-  if (last_source == NULL)
-    cur_source = s;
-  else
-    last_source->next = s;
-  last_source = s;
-}
-
-/* Nests source S within the current source file. */
-static void
-include_source (struct getl_source *s) 
-{
-  if (last_source == NULL)
-    append_source (s);
-  else 
-    {
-      s->included_from = cur_source;
-      s->includes = s->next = NULL;
-      s->next = NULL;
-      cur_source->includes = s;
-      cur_source = s;
-    }
-}
-
-/* Creates a source of the given TYPE.
-   Type-specific data must be initialized by the caller. */
-static struct getl_source *
-create_source (enum getl_source_type type) 
-{
-  struct getl_source *s = xmalloc (sizeof *s);
-  s->fn = NULL;
-  s->ln = 0;
-  s->type = type;
-  return s;
-}
-
-/* Creates a syntax file source with file name FN. */
-static struct getl_source *
-create_syntax_file_source (const char *fn) 
-{
-  struct getl_source *s = create_source (SYNTAX_FILE);
-  s->fn = xstrdup (fn);
-  s->u.syntax_file = NULL;
-  return s;
-}
-
-/* Creates a filter source with the given FILTER and CLOSE
-   functions that receive auxiliary data AUX. */
-static struct getl_source *
-create_filter_source (void (*filter) (struct string *, void *aux),
-                      void (*close) (void *aux),
-                      void *aux)
-{
-  struct getl_source *s = create_source (FILTER);
-  s->u.filter.filter = filter;
-  s->u.filter.close = close;
-  s->u.filter.aux = aux;
-  return s;
-}
-
-/* Creates a function source with the given READ and CLOSE
-   functions that receive auxiliary data AUX. */
-static struct getl_source *
-create_function_source (bool (*read) (struct string *line,
-                                      char **fn, int *ln, void *aux),
-                        void (*close) (void *aux),
-                        void *aux)
-{
-  struct getl_source *s = create_source (FUNCTION);
-  s->u.function.read = read;
-  s->u.function.close = close;
-  s->u.function.aux = aux;
-  return s;
-}
-
-/* Creates an interactive source with the given FUNCTION. */
-static struct getl_source *
-create_interactive_source (bool (*function) (struct string *line,
-                                             enum getl_prompt_style)) 
-{
-  struct getl_source *s = xmalloc (sizeof *s);
-  s->fn = NULL;
-  s->ln = 0;
-  s->type = INTERACTIVE;
-  s->u.interactive = function;
-  return s;
-}
-
-/* Adds FN to the tail end of the list of source files to
-   execute. */
-void
-getl_append_syntax_file (const char *fn)
-{
-  append_source (create_syntax_file_source (fn));
-}
-
-/* Inserts the given file with name FN into the current file
-   after the current line. */
-void
-getl_include_syntax_file (const char *fn)
-{
-  if (cur_source != NULL) 
-    {
-      char *found_fn = fn_search_path (fn, ds_cstr (&getl_include_path),
-                                       fn_dir_name (cur_source->fn));
-      if (found_fn != NULL) 
-        {
-          include_source (create_syntax_file_source (found_fn));
-          free (found_fn); 
-        }
-      else
-        msg (SE, _("Can't find `%s' in include file search path."), fn);
-    }
-  else 
-    getl_append_syntax_file (fn); 
-}
-
-/* Inserts the given filter into the current file after the
-   current line.  Each line read while the filter is in place
-   will be passed through FILTER, which may modify it as
-   necessary.  When the filter is closed, CLOSE will be called.
-   AUX will be passed to both functions.
-
-   The filter cannot itself output any new lines, and it will be
-   closed as soon as any line would be read from it.  This means
-   that, for a filter to be useful, another source must be nested
-   inside it with, e.g., getl_include_syntax_file(). */
-void
-getl_include_filter (void (*filter) (struct string *, void *aux),
-                     void (*close) (void *aux),
-                     void *aux) 
-{
-  include_source (create_filter_source (filter, close, aux));
-}
-
-/* Inserts the given functional source into the current file
-   after the current line.  Lines are read by calling READ, which
-   should write the next line in LINE, store the file name and
-   line number of the line in *FN and *LN, and return true.  The
-   string stored in *FN will not be freed by getl.  When no lines
-   are left, READ should return false.
-
-   When the source is closed, CLOSE will be called.
-
-   AUX will be passed to both READ and CLOSE. */
-void
-getl_include_function (bool (*read) (struct string *line,
-                                     char **fn, int *ln, void *aux),
-                       void (*close) (void *aux),
-                       void *aux) 
-{
-  include_source (create_function_source (read, close, aux));
-}
-
-/* Adds an interactive source to the end of the list of sources.
-   FUNCTION will be called to obtain a line.  It should store the
-   line in LINE.  PROMPT is the prompt to be displayed to the
-   user.  FUNCTION should return true when a line has been
-   obtained or false at end of file. */
-void
-getl_append_interactive (bool (*function) (struct string *line,
-                                           enum getl_prompt_style)) 
-{
-  append_source (create_interactive_source (function));
-}
-
-/* Closes all sources until an interactive source is
-   encountered. */
-void
-getl_abort_noninteractive (void) 
-{
-  while (cur_source != NULL && cur_source->type != INTERACTIVE)
-    close_source ();
-}
-
-/* Returns true if the current source is interactive,
-   false otherwise. */
-bool
-getl_is_interactive (void) 
-{
-  return cur_source != NULL && cur_source->type == INTERACTIVE;
-}
-
-/* Closes the current file, whether it be a main file or included
-   file, then moves cur_source to the next file in the chain. */
-static void
-close_source (void)
-{
-  struct getl_source *s;
-
-  s = cur_source;
-  switch (s->type) 
-    {
-    case SYNTAX_FILE:
-      if (s->u.syntax_file && EOF == fn_close (s->fn, s->u.syntax_file))
-        msg (MW, _("Closing `%s': %s."), s->fn, strerror (errno));
-      free (s->fn);
-      break;
-
-    case FILTER:
-      if (s->u.filter.close != NULL)
-        s->u.filter.close (s->u.filter.aux);
-      break;
-
-    case FUNCTION:
-      if (s->u.function.close != NULL)
-        s->u.function.close (s->u.function.aux);
-      break;
-
-    case INTERACTIVE:
-      break;
-    }
-
-  if (s->included_from != NULL)
-    {
-      cur_source = s->included_from;
-      cur_source->includes = NULL;
-    }
-  else
-    {
-      cur_source = s->next;
-      if (cur_source == NULL)
-	last_source = NULL;
-    }
-
-  free (s);
-}
-
-/* Puts the current file and line number in *FN and *LN, respectively,
-   or NULL and -1 if none. */
-void
-getl_location (const char **fn, int *ln)
-{
-  if (fn != NULL)
-    *fn = cur_source ? cur_source->fn : "";
-  if (ln != NULL)
-    *ln = cur_source ? cur_source->ln : -1;
-}
-
-/* File locator stack. */
-static const struct msg_locator **file_loc;
-
-static int nfile_loc, mfile_loc;
-
-/* Close getl. */
-void
-getl_uninitialize (void)
-{
-  while (cur_source != NULL)
-    close_source ();
-  ds_destroy (&getl_include_path);
-  free(file_loc);
-  file_loc = NULL;
-  nfile_loc = mfile_loc = 0;
-  uninit_prompts ();
-}
-
-
-/* File locator stack functions. */
-
-/* Pushes F onto the stack of file locations. */
-void
-msg_push_msg_locator (const struct msg_locator *loc)
-{
-  if (nfile_loc >= mfile_loc)
-    {
-      if (mfile_loc == 0)
-	mfile_loc = 8;
-      else
-	mfile_loc *= 2;
-
-      file_loc = xnrealloc (file_loc, mfile_loc, sizeof *file_loc);
-    }
-
-  file_loc[nfile_loc++] = loc;
-}
-
-/* Pops F off the stack of file locations.
-   Argument F is only used for verification that that is actually the
-   item on top of the stack. */
-void
-msg_pop_msg_locator (const struct msg_locator *loc)
-{
-  assert (nfile_loc >= 0 && file_loc[nfile_loc - 1] == loc);
-  nfile_loc--;
-}
-
-/* Puts the current file and line number into LOC, or NULL and -1 if
-   none. */
-void
-get_msg_location (struct msg_locator *loc)
-{
-  if (nfile_loc)
-    *loc = *file_loc[nfile_loc - 1];
-  else
-    getl_location (&loc->file_name, &loc->line_number);
-}
-
-/* Reads a line from syntax file source S into LINE.
-   Returns true if successful, false at end of file. */
-static bool
-read_syntax_file (struct string *line, struct getl_source *s)
-{
-  /* Open file, if not yet opened. */
-  if (s->u.syntax_file == NULL)
-    {
-      verbose_msg (1, _("opening \"%s\" as syntax file"), s->fn);
-      s->u.syntax_file = fn_open (s->fn, "r");
-
-      if (s->u.syntax_file == NULL)
-        {
-          msg (ME, _("Opening `%s': %s."), s->fn, strerror (errno));
-          return false;
-        }
-    }
-
-  /* Read line from file and remove new-line.
-     Skip initial "#! /usr/bin/pspp" line. */
-  do 
-    {
-      s->ln++;
-      if (!ds_read_line (line, s->u.syntax_file))
-        {
-          if (ferror (s->u.syntax_file))
-            msg (ME, _("Reading `%s': %s."), s->fn, strerror (errno));
-          return false;
-        }
-      ds_chomp (line, '\n');
-    }
-  while (s->ln == 1 && !memcmp (ds_cstr (line), "#!", 2));
-
-  /* Echo to listing file, if configured to do so. */
-  if (get_echo ())
-    tab_output_text (TAB_LEFT | TAB_FIX, ds_cstr (line));
-
-  return true;
-}
-
-/* Reads a line from source S into LINE.
-   Returns true if successful, false at end of file. */
-static bool
-read_line_from_source (struct string *line, struct getl_source *s)
-{
-  ds_clear (line);
-  switch (s->type) 
-    {
-    case SYNTAX_FILE:
-      return read_syntax_file (line, s);
-    case FILTER:
-      return false;
-    case FUNCTION:
-      return s->u.function.read (line, &s->fn, &s->ln, s->u.function.aux);
-    case INTERACTIVE:
-      return s->u.interactive (line, get_prompt_style ());
-    }
-
-  NOT_REACHED ();
-}
-
-/* Reads a single line into LINE.
-   Returns true when a line has been read, false at end of input.
-   If INTERACTIVE is non-null, then when true is returned
-   *INTERACTIVE will be set to true if the line was obtained
-   interactively, false otherwise. */
-bool
-do_read_line (struct string *line, bool *interactive)
-{
-  while (cur_source != NULL)
-    {
-      struct getl_source *s = cur_source;
-      if (read_line_from_source (line, s))
-        {
-          if (interactive != NULL)
-            *interactive = s->type == INTERACTIVE;
-
-          while ((s = s->included_from) != NULL)
-            if (s->type == FILTER)
-              s->u.filter.filter (line, s->u.filter.aux);
-
-          return true;
-        }
-      close_source ();
-    }
-
-  return false;
-}
-
-
-/* Current prompts in each style. */
-static char *prompts[GETL_PROMPT_CNT];
-
-/* Current prompting style. */
-static enum getl_prompt_style current_style;
-
-/* Initializes prompts. */
-static void
-init_prompts (void) 
-{
-  prompts[GETL_PROMPT_FIRST] = xstrdup ("PSPP> ");
-  prompts[GETL_PROMPT_LATER] = xstrdup ("    > ");
-  prompts[GETL_PROMPT_DATA] = xstrdup ("data> ");
-  current_style = GETL_PROMPT_FIRST;
-}
-
-/* Frees prompts. */
-static void
-uninit_prompts (void) 
-{
-  int i;
-
-  for (i = 0; i < GETL_PROMPT_CNT; i++) 
-    {
-      free (prompts[i]);
-      prompts[i] = NULL;
-    }
-}
-
-/* Gets the command prompt for the given STYLE. */
-const char * 
-getl_get_prompt (enum getl_prompt_style style)
-{
-  assert (style < GETL_PROMPT_CNT);
-  return prompts[style];
-}
-
-/* Sets the given STYLE's prompt to STRING. */
-void
-getl_set_prompt (enum getl_prompt_style style, const char *string)
-{
-  assert (style < GETL_PROMPT_CNT);
-  free (prompts[style]);
-  prompts[style] = xstrdup (string);
-}
-
-/* Sets STYLE as the current prompt style. */
-void
-getl_set_prompt_style (enum getl_prompt_style style) 
-{
-  assert (style < GETL_PROMPT_CNT);
-  current_style = style;
-}
-
-/* Returns the current prompt. */
-static enum getl_prompt_style
-get_prompt_style (void) 
-{
-  return current_style;
-}
Index: src/language/line-buffer.h
===================================================================
RCS file: src/language/line-buffer.h
diff -N src/language/line-buffer.h
--- src/language/line-buffer.h	28 Oct 2006 08:31:22 -0000	1.6
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,69 +0,0 @@
-/* PSPP - computes sample statistics.
-   Copyright (C) 1997-9, 2000 Free Software Foundation, Inc.
-   Written by Ben Pfaff <blp@gnu.org>.
-
-   This program is free software; you can redistribute it and/or
-   modify it under the terms of the GNU General Public License as
-   published by the Free Software Foundation; either version 2 of the
-   License, or (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful, but
-   WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-   02110-1301, USA. */
-
-#ifndef GETL_H
-#define GETL_H 1
-
-#include <stdbool.h>
-#include <libpspp/str.h>
-
-enum getl_prompt_style
-  {
-    GETL_PROMPT_FIRST,		/* First line of command. */
-    GETL_PROMPT_LATER,          /* Second or later line of command. */
-    GETL_PROMPT_DATA,		/* Between BEGIN DATA and END DATA. */
-    GETL_PROMPT_CNT
-  };
-
-
-void getl_initialize (void);
-void getl_uninitialize (void);
-
-void getl_clear_include_path (void);
-void getl_add_include_dir (const char *);
-
-void getl_append_syntax_file (const char *);
-void getl_include_syntax_file (const char *);
-void getl_include_filter (void (*filter) (struct string *, void *aux),
-                          void (*close) (void *aux),
-                          void *aux);
-void getl_include_function (bool (*read) (struct string *line,
-                                          char **fn, int *ln, void *aux),
-                            void (*close) (void *aux),
-                            void *aux);
-void getl_append_interactive (bool (*function) (struct string *line,
-                                                enum getl_prompt_style));
-void getl_abort_noninteractive (void);
-bool getl_is_interactive (void);
-
-bool getl_read_line (bool *interactive);
-
-const char *getl_get_prompt (enum getl_prompt_style);
-void getl_set_prompt (enum getl_prompt_style, const char *);
-void getl_set_prompt_style (enum getl_prompt_style);
-
-struct msg_locator;
-void get_msg_location (struct msg_locator *loc);
-
-void getl_location (const char **fn, int *ln);
-
-bool do_read_line (struct string *line, bool *interactive);
-
-
-#endif /* line-buffer.h */
Index: src/language/prompt.c
===================================================================
RCS file: src/language/prompt.c
diff -N src/language/prompt.c
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ src/language/prompt.c	26 Nov 2006 05:09:04 -0000
@@ -0,0 +1,101 @@
+/* PSPP - computes sample statistics.
+   Copyright (C) 1997-9, 2000 Free Software Foundation, Inc.
+   Written by Ben Pfaff <blp@gnu.org>.
+
+   This program is free software; you can redistribute it and/or
+   modify it under the terms of the GNU General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful, but
+   WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+   02110-1301, USA. */
+
+#include <config.h>
+
+#include <stdio.h>
+#include <errno.h>
+#include <stdlib.h>
+
+#include "prompt.h"
+
+#include <data/file-name.h>
+#include <data/settings.h>
+#include <data/variable.h>
+#include <language/command.h>
+#include <language/lexer/lexer.h>
+#include <libpspp/alloc.h>
+#include <libpspp/assertion.h>
+#include <libpspp/message.h>
+#include <libpspp/message.h>
+#include <libpspp/str.h>
+#include <libpspp/verbose-msg.h>
+#include <libpspp/version.h>
+#include <output/table.h>
+
+/* Current prompts in each style. */
+static char *prompts[PROMPT_CNT];
+
+/* Current prompting style. */
+static enum prompt_style current_style;
+
+/* Initializes prompts. */
+void
+init_prompts (void) 
+{
+  prompts[PROMPT_FIRST] = xstrdup ("PSPP> ");
+  prompts[PROMPT_LATER] = xstrdup ("    > ");
+  prompts[PROMPT_DATA] = xstrdup ("data> ");
+  current_style = PROMPT_FIRST;
+}
+
+/* Frees prompts. */
+void
+uninit_prompts (void) 
+{
+  int i;
+
+  for (i = 0; i < PROMPT_CNT; i++) 
+    {
+      free (prompts[i]);
+      prompts[i] = NULL;
+    }
+}
+
+/* Gets the command prompt for the given STYLE. */
+const char * 
+get_prompt (enum prompt_style style)
+{
+  assert (style < PROMPT_CNT);
+  return prompts[style];
+}
+
+/* Sets the given STYLE's prompt to STRING. */
+void
+set_prompt (enum prompt_style style, const char *string)
+{
+  assert (style < PROMPT_CNT);
+  free (prompts[style]);
+  prompts[style] = xstrdup (string);
+}
+
+/* Sets STYLE as the current prompt style. */
+void
+set_prompt_style (enum prompt_style style) 
+{
+  assert (style < PROMPT_CNT);
+  current_style = style;
+}
+
+/* Returns the current prompt. */
+enum prompt_style
+get_prompt_style (void) 
+{
+  return current_style;
+}
Index: src/language/prompt.h
===================================================================
RCS file: src/language/prompt.h
diff -N src/language/prompt.h
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ src/language/prompt.h	26 Nov 2006 05:09:04 -0000
@@ -0,0 +1,44 @@
+/* PSPP - computes sample statistics.
+   Copyright (C) 1997-9, 2000 Free Software Foundation, Inc.
+   Written by Ben Pfaff <blp@gnu.org>.
+
+   This program is free software; you can redistribute it and/or
+   modify it under the terms of the GNU General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful, but
+   WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+   02110-1301, USA. */
+
+#ifndef PROMPT_H
+#define PROMPT_H 1
+
+#include <stdbool.h>
+
+enum prompt_style
+  {
+    PROMPT_FIRST,		/* First line of command. */
+    PROMPT_LATER,          /* Second or later line of command. */
+    PROMPT_DATA,		/* Between BEGIN DATA and END DATA. */
+    PROMPT_CNT
+  };
+
+
+void init_prompts (void);
+void uninit_prompts (void);
+
+enum prompt_style get_prompt_style (void);
+
+const char *get_prompt (enum prompt_style);
+void set_prompt (enum prompt_style, const char *);
+void set_prompt_style (enum prompt_style);
+
+
+#endif /* PROMPT_H */
Index: src/language/syntax-file.c
===================================================================
RCS file: src/language/syntax-file.c
diff -N src/language/syntax-file.c
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ src/language/syntax-file.c	26 Nov 2006 05:09:04 -0000
@@ -0,0 +1,155 @@
+/* PSPP - computes sample statistics.
+   Copyright (C) 1997-9, 2000 Free Software Foundation, Inc.
+   Written by Ben Pfaff <blp@gnu.org>.
+
+   This program is free software; you can redistribute it and/or
+   modify it under the terms of the GNU General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful, but
+   WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+   02110-1301, USA. */
+
+#include <config.h>
+
+#include "syntax-file.h"
+
+#include <stdio.h>
+#include <errno.h>
+#include <stdlib.h>
+
+#include <data/file-name.h>
+#include <data/settings.h>
+#include <data/variable.h>
+#include <language/command.h>
+#include <language/lexer/lexer.h>
+#include <libpspp/alloc.h>
+#include <libpspp/assertion.h>
+#include <libpspp/message.h>
+#include <libpspp/message.h>
+#include <libpspp/str.h>
+#include <libpspp/verbose-msg.h>
+#include <libpspp/version.h>
+#include <output/table.h>
+
+#include <libpspp/ll.h>
+
+#include "prompt.h"
+
+#include "gettext.h"
+#define _(msgid) gettext (msgid)
+
+#include <libpspp/getl.h>
+
+
+struct syntax_file_source 
+  {
+    struct getl_interface parent ;
+
+    FILE *syntax_file;
+
+    /* Current location. */
+    char *fn;				/* File name. */
+    int ln;				/* Line number. */
+  };
+
+static const char *
+name (const struct getl_interface *s)
+{
+  const struct syntax_file_source *sfs = (const struct syntax_file_source *) s;
+  return sfs->fn;
+}
+
+static int
+line_number (const struct getl_interface *s)
+{
+  const struct syntax_file_source *sfs = (const struct syntax_file_source *) s;
+  return sfs->ln;
+}
+
+
+/* Reads a line from syntax file source S into LINE.
+   Returns true if successful, false at end of file. */
+bool
+read_syntax_file (struct getl_interface *s, struct string *line)
+{
+  struct syntax_file_source *sfs = (struct syntax_file_source *) s;
+
+  /* Open file, if not yet opened. */
+  if (sfs->syntax_file == NULL)
+    {
+      verbose_msg (1, _("opening \"%s\" as syntax file"), sfs->fn);
+      sfs->syntax_file = fn_open (sfs->fn, "r");
+
+      if (sfs->syntax_file == NULL)
+        {
+          msg (ME, _("Opening `%s': %s."), sfs->fn, strerror (errno));
+          return false;
+        }
+    }
+
+  /* Read line from file and remove new-line.
+     Skip initial "#! /usr/bin/pspp" line. */
+  do 
+    {
+      sfs->ln++;
+      if (!ds_read_line (line, sfs->syntax_file))
+        {
+          if (ferror (sfs->syntax_file))
+            msg (ME, _("Reading `%s': %s."), sfs->fn, strerror (errno));
+          return false;
+        }
+      ds_chomp (line, '\n');
+    }
+  while (sfs->ln == 1 && !memcmp (ds_cstr (line), "#!", 2));
+
+  /* Echo to listing file, if configured to do so. */
+  if (get_echo ())
+    tab_output_text (TAB_LEFT | TAB_FIX, ds_cstr (line));
+
+  return true;
+}
+
+static void
+syntax_close (struct getl_interface *s)
+{
+  struct syntax_file_source *sfs = (struct syntax_file_source *) s;
+
+  if (sfs->syntax_file && EOF == fn_close (sfs->fn, sfs->syntax_file))
+    msg (MW, _("Closing `%s': %s."), sfs->fn, strerror (errno));
+  free (sfs->fn);
+  free (sfs);
+}
+
+static bool
+always_false (const struct getl_interface *s UNUSED)
+{
+  return false;
+}
+
+
+/* Creates a syntax file source with file name FN. */
+struct getl_interface *
+create_syntax_file_source (const char *fn) 
+{
+  struct syntax_file_source *ss = xzalloc (sizeof (*ss));
+
+  ss->fn = xstrdup (fn);
+
+  ss->parent.interactive = always_false;
+  ss->parent.read = read_syntax_file ;
+  ss->parent.filter = NULL;
+  ss->parent.close = syntax_close ;
+  ss->parent.name = name ;
+  ss->parent.location = line_number;
+
+  return (struct getl_interface *) ss;
+}
+
Index: src/language/syntax-file.h
===================================================================
RCS file: src/language/syntax-file.h
diff -N src/language/syntax-file.h
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ src/language/syntax-file.h	26 Nov 2006 05:09:04 -0000
@@ -0,0 +1,37 @@
+/* PSPP - computes sample statistics.
+   Copyright (C) 1997-9, 2000, 2006 Free Software Foundation, Inc.
+   Written by Ben Pfaff <blp@gnu.org>.
+
+   This program is free software; you can redistribute it and/or
+   modify it under the terms of the GNU General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful, but
+   WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+   02110-1301, USA. */
+
+#if !LB_SYNTAX
+#define LB_SYNTAX 1
+
+#include <stdbool.h>
+
+struct string;
+struct getl_interface;
+struct getl_source;
+
+
+bool read_syntax_file (struct getl_interface *s, struct string *line);
+
+
+/* Creates a syntax file source with file name FN. */
+struct getl_interface * create_syntax_file_source (const char *fn) ;
+
+
+#endif
Index: src/language/control/automake.mk
===================================================================
RCS file: /sources/pspp/pspp/src/language/control/automake.mk,v
retrieving revision 1.2
diff -b -w -U3 -r1.2 automake.mk
--- src/language/control/automake.mk	15 Mar 2006 03:29:10 -0000	1.2
+++ src/language/control/automake.mk	26 Nov 2006 05:09:04 -0000
@@ -10,5 +10,7 @@
 	src/language/control/loop.c \
 	src/language/control/temporary.c \
 	src/language/control/repeat.c \
-	src/language/control/repeat.h
+	src/language/control/repeat.h \
+	src/language/control/function.h \
+	src/language/control/function.c
 
Index: src/language/control/function.c
===================================================================
RCS file: src/language/control/function.c
diff -N src/language/control/function.c
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ src/language/control/function.c	26 Nov 2006 05:09:04 -0000
@@ -0,0 +1,120 @@
+/* PSPP - computes sample statistics.
+   Copyright (C) 1997-9, 2000, 2006 Free Software Foundation, Inc.
+   Written by Ben Pfaff <blp@gnu.org>.
+
+   This program is free software; you can redistribute it and/or
+   modify it under the terms of the GNU General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful, but
+   WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+   02110-1301, USA. */
+
+#include "function.h"
+#include <libpspp/getl.h>
+#include <libpspp/compiler.h>
+#include <libpspp/alloc.h>
+
+#include <stdlib.h>
+
+struct function_source
+  {
+    struct getl_interface parent ;  
+
+    int ln; 
+    char *fn;
+
+    void (*filter) (struct string *, void *aux);
+        bool (*read) (struct string *line, char **fn, int *ln, void *aux);
+    void (*close) (void *aux);
+    void *aux;
+  };
+
+
+static const char *
+name (const struct getl_interface *s)
+{
+  const struct function_source *f = (const struct function_source *) s;
+  
+  return f->fn;
+}
+
+
+static int
+line_number (const struct getl_interface *s)
+{
+  const struct function_source *f = (const struct function_source *) s;
+  
+  return f->ln;
+}
+
+
+
+
+static bool
+read_function (struct getl_interface *s, struct string *line)
+{
+  struct function_source *f = (struct function_source *) s;
+
+  return f->read (line, &f->fn, &f->ln, f->aux);
+}
+
+static void
+function_close (struct getl_interface *s)
+{
+  struct function_source *f = (struct function_source *) s;
+
+  if (f->close != NULL)
+    f->close (f->aux);
+
+  free (f);
+}
+
+static bool
+always_false (const struct getl_interface *s UNUSED)
+{
+  return false;
+}
+
+static void  
+function_filter (struct getl_interface *s, struct string *line)
+{
+  struct function_source *f = (struct function_source *) s;
+
+  f->filter (line, f->aux);
+}
+
+
+/* Creates a function source with the given READ and CLOSE
+   functions that receive auxiliary data AUX. */
+struct getl_interface *
+create_function_source (bool (*read) (struct string *line,
+                                      char **fn, int *ln, void *aux),
+			void (*filter) (struct string *, void *aux),
+                        void (*close) (void *aux),
+                        void *aux)
+{
+  struct function_source *f = xzalloc ( sizeof *f);
+
+  f->read = read;
+  f->close = close;
+  f->aux = aux;
+  f->filter = filter;
+
+  f->parent.interactive = always_false;
+  f->parent.read = read_function;
+  f->parent.filter = filter ? function_filter : NULL;
+  f->parent.close = function_close;
+  f->parent.name = name;
+  f->parent.location = line_number;
+  
+  return (struct getl_interface *) f;
+}
+
Index: src/language/control/function.h
===================================================================
RCS file: src/language/control/function.h
diff -N src/language/control/function.h
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ src/language/control/function.h	26 Nov 2006 05:09:04 -0000
@@ -0,0 +1,36 @@
+/* PSPP - computes sample statistics.
+   Copyright (C) 1997-9, 2000, 2006 Free Software Foundation, Inc.
+   Written by Ben Pfaff <blp@gnu.org>.
+
+   This program is free software; you can redistribute it and/or
+   modify it under the terms of the GNU General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful, but
+   WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+   02110-1301, USA. */
+
+#if !LB_FUNCTION
+#define LB_FUNCTION 1
+
+#include  <stdbool.h>
+
+
+struct string;
+struct getl_interface;
+
+struct getl_interface *
+create_function_source ( bool (*read) (struct string *line,
+                                      char **fn, int *ln, void *aux),
+			void (*filter) (struct string *, void *aux),
+                        void (*close) (void *aux),
+                        void *aux);
+
+#endif
Index: src/language/control/repeat.c
===================================================================
RCS file: /sources/pspp/pspp/src/language/control/repeat.c,v
retrieving revision 1.15
diff -b -w -U3 -r1.15 repeat.c
--- src/language/control/repeat.c	11 Nov 2006 23:10:00 -0000	1.15
+++ src/language/control/repeat.c	26 Nov 2006 05:09:05 -0000
@@ -25,16 +25,17 @@
 #include <math.h>
 #include <stdlib.h>
 
+#include "function.h"
+
 #include <data/dictionary.h>
 #include <data/procedure.h>
 #include <data/settings.h>
+#include <libpspp/getl.h>
 #include <language/command.h>
 #include <language/lexer/lexer.h>
 #include <language/lexer/variable-parser.h>
-#include <language/line-buffer.h>
 #include <libpspp/alloc.h>
 #include <libpspp/message.h>
-#include <libpspp/message.h>
 #include <libpspp/misc.h>
 #include <libpspp/pool.h>
 #include <libpspp/str.h>
@@ -111,8 +112,12 @@
   
   block->cur_line = NULL;
   block->loop_idx = -1;
-  getl_include_filter (do_repeat_filter, do_repeat_close, block);
-  getl_include_function (do_repeat_read, NULL, block);
+
+  getl_include_source 
+    ( create_function_source (do_repeat_read, 
+			      do_repeat_filter, 
+			      do_repeat_close, block)
+      );
 
   return CMD_SUCCESS;
 
@@ -147,7 +152,8 @@
       for (iter = block->macros; iter != NULL; iter = iter->next)
 	if (!strcasecmp (iter->id, lex_tokid (lexer)))
 	  {
-	    msg (SE, _("Dummy variable name \"%s\" is given twice."), lex_tokid (lexer));
+	    msg (SE, _("Dummy variable name \"%s\" is given twice."), 
+		 lex_tokid (lexer));
 	    return false;
 	  }
 
@@ -278,8 +284,8 @@
 
   for (;;)
     {
-      const char *cur_file_name;
-      int cur_line_number;
+      const char *cur_file_name = getl_source_name ();
+      int cur_line_number = getl_source_location ();
       struct line_list *line;
       struct string cur_line_copy;
       bool dot;
@@ -288,7 +294,6 @@
         return false;
 
       /* If the current file has changed then record the fact. */
-      getl_location (&cur_file_name, &cur_line_number);
       if (previous_file_name == NULL 
           || !strcmp (cur_file_name, previous_file_name))
         previous_file_name = pool_strdup (block->pool, cur_file_name);
Index: src/language/data-io/data-reader.c
===================================================================
RCS file: /sources/pspp/pspp/src/language/data-io/data-reader.c,v
retrieving revision 1.17
diff -b -w -U3 -r1.17 data-reader.c
--- src/language/data-io/data-reader.c	22 Nov 2006 04:24:02 -0000	1.17
+++ src/language/data-io/data-reader.c	26 Nov 2006 05:09:05 -0000
@@ -32,7 +32,7 @@
 #include <language/command.h>
 #include <language/data-io/file-handle.h>
 #include <language/lexer/lexer.h>
-#include <language/line-buffer.h>
+#include <language/prompt.h>
 #include <libpspp/alloc.h>
 #include <libpspp/assertion.h>
 #include <libpspp/message.h>
@@ -169,7 +169,7 @@
         lex_get (r->lexer);
       if (!lex_force_match_id (r->lexer, "BEGIN") || !lex_force_match_id (r->lexer, "DATA"))
         return false;
-      getl_set_prompt_style (GETL_PROMPT_DATA);
+      set_prompt_style (PROMPT_DATA);
     }
       
   if (!lex_get_line_raw (r->lexer))
@@ -444,7 +444,7 @@
   r->flags |= DFM_SAW_BEGIN_DATA;
 
   /* Input procedure reads from inline file. */
-  getl_set_prompt_style (GETL_PROMPT_DATA);
+  set_prompt_style (PROMPT_DATA);
   ok = procedure (ds, NULL, NULL);
 
   dfm_close_reader (r);
Index: src/language/data-io/file-handle.q
===================================================================
RCS file: /sources/pspp/pspp/src/language/data-io/file-handle.q,v
retrieving revision 1.9
diff -b -w -U3 -r1.9 file-handle.q
--- src/language/data-io/file-handle.q	11 Nov 2006 23:10:00 -0000	1.9
+++ src/language/data-io/file-handle.q	26 Nov 2006 05:09:05 -0000
@@ -26,7 +26,6 @@
 #include <data/file-name.h>
 #include <language/command.h>
 #include <language/lexer/lexer.h>
-#include <language/line-buffer.h>
 #include <libpspp/assertion.h>
 #include <libpspp/message.h>
 #include <libpspp/magic.h>
Index: src/language/lexer/lexer.c
===================================================================
RCS file: /sources/pspp/pspp/src/language/lexer/lexer.c,v
retrieving revision 1.13
diff -b -w -U3 -r1.13 lexer.c
--- src/language/lexer/lexer.c	14 Nov 2006 12:29:25 -0000	1.13
+++ src/language/lexer/lexer.c	26 Nov 2006 05:09:05 -0000
@@ -30,9 +30,9 @@
 #include <libpspp/assertion.h>
 #include <language/command.h>
 #include <libpspp/message.h>
-#include <language/line-buffer.h>
 #include <libpspp/magic.h>
 #include <data/settings.h>
+#include <libpspp/getl.h>
 #include <libpspp/str.h>
 
 #include "size_max.h"
Index: src/language/utilities/include.c
===================================================================
RCS file: /sources/pspp/pspp/src/language/utilities/include.c,v
retrieving revision 1.6
diff -b -w -U3 -r1.6 include.c
--- src/language/utilities/include.c	11 Nov 2006 23:10:00 -0000	1.6
+++ src/language/utilities/include.c	26 Nov 2006 05:09:05 -0000
@@ -23,9 +23,12 @@
 #include <libpspp/alloc.h>
 #include <language/command.h>
 #include <libpspp/message.h>
-#include <language/line-buffer.h>
+#include <libpspp/getl.h>
+#include <language/syntax-file.h>
 #include <language/lexer/lexer.h>
 #include <libpspp/str.h>
+#include <data/file-name.h>
+
 
 #include "gettext.h"
 #define _(msgid) gettext (msgid)
@@ -33,6 +36,9 @@
 int
 cmd_include (struct lexer *lexer, struct dataset *ds UNUSED)
 {
+  char *found_fn;
+  char *target_fn;
+
   /* Skip optional FILE=. */
   if (lex_match_id (lexer, "FILE"))
     lex_match (lexer, '=');
@@ -43,7 +49,21 @@
       lex_error (lexer, _("expecting file name")); 
       return CMD_CASCADING_FAILURE;
     }
-  getl_include_syntax_file (ds_cstr (lex_tokstr (lexer)));
+
+  target_fn = ds_cstr (lex_tokstr (lexer));
+
+  found_fn = fn_search_path (target_fn,
+			     getl_include_path (),
+			     NULL);
+
+  if (found_fn != NULL) 
+    {
+      getl_include_source (create_syntax_file_source (found_fn));
+      free (found_fn); 
+    }
+  else
+    msg (SE, _("Can't find `%s' in include file search path."), 
+	 target_fn);
 
   lex_get (lexer);
   return lex_end_of_command (lexer);
Index: src/language/utilities/set.q
===================================================================
RCS file: /sources/pspp/pspp/src/language/utilities/set.q,v
retrieving revision 1.20
diff -b -w -U3 -r1.20 set.q
--- src/language/utilities/set.q	22 Nov 2006 04:24:03 -0000	1.20
+++ src/language/utilities/set.q	26 Nov 2006 05:09:05 -0000
@@ -34,7 +34,7 @@
 #include <language/command.h>
 #include <language/lexer/format-parser.h>
 #include <language/lexer/lexer.h>
-#include <language/line-buffer.h>
+#include <language/prompt.h>
 #include <libpspp/alloc.h>
 #include <libpspp/compiler.h>
 #include <libpspp/copyleft.h>
@@ -152,11 +152,11 @@
     do_cc (cmd.s_cce, FMT_CCE);
 
   if (cmd.sbc_prompt)
-    getl_set_prompt (GETL_PROMPT_FIRST, cmd.s_prompt);
+    set_prompt (PROMPT_FIRST, cmd.s_prompt);
   if (cmd.sbc_cprompt)
-    getl_set_prompt (GETL_PROMPT_LATER, cmd.s_cprompt);
+    set_prompt (PROMPT_LATER, cmd.s_cprompt);
   if (cmd.sbc_dprompt)
-    getl_set_prompt (GETL_PROMPT_DATA, cmd.s_dprompt);
+    set_prompt (PROMPT_DATA, cmd.s_dprompt);
 
   if (cmd.sbc_decimal)
     fmt_set_decimal (cmd.dec == STC_DOT ? '.' : ',');
Index: src/libpspp/automake.mk
===================================================================
RCS file: /sources/pspp/pspp/src/libpspp/automake.mk,v
retrieving revision 1.15
diff -b -w -U3 -r1.15 automake.mk
--- src/libpspp/automake.mk	28 Oct 2006 04:01:55 -0000	1.15
+++ src/libpspp/automake.mk	26 Nov 2006 05:09:05 -0000
@@ -25,6 +25,10 @@
 	src/libpspp/i18n.h \
 	src/libpspp/integer-format.c \
 	src/libpspp/integer-format.h \
+	src/libpspp/getl.h \
+	src/libpspp/getl.c \
+	src/libpspp/msg-locator.c \
+	src/libpspp/msg-locator.h \
 	src/libpspp/ll.c \
 	src/libpspp/ll.h \
 	src/libpspp/llx.c \
Index: src/libpspp/getl.c
===================================================================
RCS file: src/libpspp/getl.c
diff -N src/libpspp/getl.c
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ src/libpspp/getl.c	26 Nov 2006 05:09:06 -0000
@@ -0,0 +1,233 @@
+/* PSPP - computes sample statistics.
+   Copyright (C) 1997-9, 2000, 2006 Free Software Foundation, Inc.
+   Written by Ben Pfaff <blp@gnu.org>.
+
+   This program is free software; you can redistribute it and/or
+   modify it under the terms of the GNU General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful, but
+   WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+   02110-1301, USA. */
+
+#include <stdlib.h>
+
+#include <config.h>
+
+#include "getl.h"
+
+#include <libpspp/str.h>
+#include <libpspp/ll.h>
+#include <libpspp/version.h>
+#include <libpspp/alloc.h>
+
+#include <data/file-name.h>
+
+struct getl_source
+  {
+    struct getl_source *included_from;	/* File that this is nested inside. */
+    struct getl_source *includes;	/* File nested inside this file. */
+    
+    struct ll  ll;   /* Element in the sources list */
+
+    struct getl_interface *interface;
+  };
+
+/* List of source files. */
+static struct ll_list sources ;
+
+static struct string the_include_path;
+
+const char *
+getl_include_path (void)
+{
+  return ds_cstr (&the_include_path);
+}
+
+static struct getl_source *
+current_source (struct ll_list *list)
+{
+  const struct ll *ll = ll_head (list);
+  return ll_data (ll, struct getl_source, ll );
+}
+
+/* Initialize getl. */
+void
+getl_initialize (void)
+{
+  ll_init (&sources);
+  ds_init_cstr (&the_include_path,
+                fn_getenv_default ("STAT_INCLUDE_PATH", include_path));
+}
+
+/* Delete everything from the include path. */
+void
+getl_clear_include_path (void)
+{
+  ds_clear (&the_include_path);
+}
+
+/* Add to the include path. */
+void
+getl_add_include_dir (const char *path)
+{
+  if (ds_length (&the_include_path))
+    ds_put_char (&the_include_path, ':');
+
+  ds_put_cstr (&the_include_path, path);
+}
+
+/* Appends source S to the list of source files. */
+void
+getl_append_source (struct getl_interface *i) 
+{
+  struct getl_source *s = xzalloc (sizeof ( struct getl_source ));
+
+  s->interface = i ;
+
+  ll_push_head (&sources, &s->ll);
+}
+
+/* Nests source S within the current source file. */
+void
+getl_include_source (struct getl_interface *i) 
+{
+  struct getl_source *current = current_source (&sources);
+  struct getl_source *s = xzalloc (sizeof ( struct getl_source ));
+
+  s->interface = i;
+
+  s->included_from = current ;
+  s->includes  = NULL;
+  current->includes = s;
+
+  ll_push_head (&sources, &s->ll);
+}
+
+/* Closes the current source, and move  the current source to the 
+   next file in the chain. */
+static void
+close_source (void)
+{
+  struct getl_source *s = current_source (&sources);
+
+  if ( s->interface->close ) 
+    s->interface->close (s->interface);
+
+  ll_pop_head (&sources);
+
+  if (s->included_from != NULL)
+    current_source (&sources)->includes = NULL;
+
+  free (s);
+}
+
+/* Closes all sources until an interactive source is
+   encountered. */
+void
+getl_abort_noninteractive (void) 
+{
+  while ( ! ll_is_empty (&sources))
+    {
+      const struct getl_source *s = current_source (&sources);
+      
+      if ( !s->interface->interactive (s->interface) ) 
+	close_source ();
+    }
+}
+
+/* Returns true if the current source is interactive,
+   false otherwise. */
+bool
+getl_is_interactive (void) 
+{
+  const struct getl_source *s = current_source (&sources);
+
+  if (ll_is_empty (&sources) ) 
+    return false;
+
+  return s->interface->interactive (s->interface);
+}
+
+/* Returns the name of the current source, or NULL if there is no 
+   current source */
+const char *
+getl_source_name (void)
+{
+  const struct getl_source *s = current_source (&sources);
+
+  if ( ll_is_empty (&sources) )
+    return NULL;
+
+  if ( ! s->interface->name ) 
+    return NULL;
+
+  return s->interface->name (s->interface);
+}
+
+/* Returns the location within the current source, or -1 if there is
+   no current source */
+int
+getl_source_location (void)
+{
+  const struct getl_source *s = current_source (&sources);
+
+  if ( ll_is_empty (&sources) )
+    return -1;
+
+  if ( !s->interface->location )
+    return -1;
+
+  return s->interface->location (s->interface);
+}
+
+
+/* Close getl. */
+void
+getl_uninitialize (void)
+{
+  while ( !ll_is_empty (&sources))
+    close_source ();
+  ds_destroy (&the_include_path);
+}
+
+
+/* Reads a single line into LINE.
+   Returns true when a line has been read, false at end of input.
+   If INTERACTIVE is non-null, then when true is returned
+   *INTERACTIVE will be set to true if the line was obtained
+   interactively, false otherwise. */
+bool
+do_read_line (struct string *line, bool *interactive)
+{
+  while (!ll_is_empty (&sources))
+    {
+      struct getl_source *s = current_source (&sources);
+
+      ds_clear (line);
+      if (s->interface->read (s->interface, line))
+        {
+          if (interactive != NULL)
+            *interactive = s->interface->interactive (s->interface);
+
+          while ((s))
+	    {
+	      if (s->interface->filter)
+		s->interface->filter (s->interface, line);
+	      s = s->included_from;
+	    }
+	  
+          return true;
+        }
+      close_source ();
+    }
+
+  return false;
+}
Index: src/libpspp/getl.h
===================================================================
RCS file: src/libpspp/getl.h
diff -N src/libpspp/getl.h
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ src/libpspp/getl.h	26 Nov 2006 05:09:06 -0000
@@ -0,0 +1,74 @@
+/* PSPP - computes sample statistics.
+   Copyright (C) 1997-9, 2000 Free Software Foundation, Inc.
+   Written by Ben Pfaff <blp@gnu.org>.
+
+   This program is free software; you can redistribute it and/or
+   modify it under the terms of the GNU General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful, but
+   WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+   02110-1301, USA. */
+
+#ifndef GETL_H
+#define GETL_H 1
+
+#include <stdbool.h>
+#include <libpspp/ll.h>
+
+struct string; 
+
+struct getl_source;
+
+
+/* An abstract base class for objects which act as line buffers for the 
+   PSPP.  Ie anything which might contain content for the lexer */
+struct getl_interface 
+  {
+    /* Returns true, if the interface is interactive */
+    bool  (*interactive) (const struct getl_interface *); 
+
+    /* Read a line from the interface */
+    bool  (*read)  (struct getl_interface *, struct string *);
+
+    /* Close and destroy the interface */
+    void  (*close) (struct getl_interface *);
+
+    /* Filter for current and all included sources.  May be NULL */
+    void  (*filter) (struct getl_interface *, struct string *line);
+
+    /* Returns the name of the source */
+    const char * (*name) (const struct getl_interface *);
+
+    /* Returns the current location within the source */
+    int (*location) (const struct getl_interface *);
+  };
+
+void getl_initialize (void);
+void getl_uninitialize (void);
+
+void getl_clear_include_path (void);
+void getl_add_include_dir (const char *);
+const char * getl_include_path (void);
+
+void getl_abort_noninteractive (void);
+bool getl_is_interactive (void);
+
+bool getl_read_line (bool *interactive);
+
+bool do_read_line (struct string *line, bool *interactive);
+
+void getl_append_source (struct getl_interface *s) ;
+void getl_include_source (struct getl_interface *s) ;
+
+const char * getl_source_name (void);
+int getl_source_location (void);
+
+#endif /* line-buffer.h */
Index: src/libpspp/message.c
===================================================================
RCS file: /sources/pspp/pspp/src/libpspp/message.c,v
retrieving revision 1.6
diff -b -w -U3 -r1.6 message.c
--- src/libpspp/message.c	18 Jul 2006 04:57:01 -0000	1.6
+++ src/libpspp/message.c	26 Nov 2006 05:09:06 -0000
@@ -19,7 +19,8 @@
 
 #include <config.h>
 
-#include <libpspp/message.h>
+#include "message.h"
+#include "msg-locator.h"
 
 #include <assert.h>
 #include <stdarg.h>
@@ -39,8 +40,6 @@
 
 /* Message handler as set by msg_init(). */
 static void (*msg_handler)  (const struct msg *);
-static void (*msg_location) (struct msg_locator *);
-
 
 /* Disables emitting messages if positive. */
 static int messages_disabled;
@@ -65,11 +64,9 @@
 }
 
 void
-msg_init ( void (*handler) (const struct msg *), 
-	   void (*location) (struct msg_locator *) ) 
+msg_init ( void (*handler) (const struct msg *) )
 {
   msg_handler = handler;
-  msg_location = location;
 }
 
 void
@@ -102,7 +99,7 @@
 void
 msg_emit (struct msg *m) 
 {
-  msg_location (&m->where);
+  get_msg_location (&m->where);
   if (!messages_disabled)
     msg_handler (m);
   free (m->text);
Index: src/libpspp/message.h
===================================================================
RCS file: /sources/pspp/pspp/src/libpspp/message.h,v
retrieving revision 1.13
diff -b -w -U3 -r1.13 message.h
--- src/libpspp/message.h	18 Jul 2006 04:57:01 -0000	1.13
+++ src/libpspp/message.h	26 Nov 2006 05:09:06 -0000
@@ -86,8 +86,7 @@
   };
 
 /* Initialization. */
-void msg_init ( void (*handler) (const struct msg *), 
-		void (*location) (struct msg_locator *) ) ;
+void msg_init ( void (*handler) (const struct msg *) );
 
 void msg_done (void);
 
Index: src/libpspp/msg-locator.c
===================================================================
RCS file: src/libpspp/msg-locator.c
diff -N src/libpspp/msg-locator.c
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ src/libpspp/msg-locator.c	26 Nov 2006 05:09:06 -0000
@@ -0,0 +1,85 @@
+/* PSPP - computes sample statistics.
+   Copyright (C) 1997-9, 2000, 2006 Free Software Foundation, Inc.
+   Written by Ben Pfaff <blp@gnu.org>.
+
+   This program is free software; you can redistribute it and/or
+   modify it under the terms of the GNU General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful, but
+   WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+   02110-1301, USA. */
+
+#include <config.h>
+#include <stdlib.h>
+#include <libpspp/alloc.h>
+#include "msg-locator.h"
+#include <libpspp/message.h>
+#include <libpspp/assertion.h>
+#include "getl.h"
+
+/* File locator stack. */
+static const struct msg_locator **file_loc;
+
+static int nfile_loc, mfile_loc;
+
+void
+msg_locator_done (void)
+{
+  free(file_loc);
+  file_loc = NULL;
+  nfile_loc = mfile_loc = 0;
+}
+
+
+/* File locator stack functions. */
+
+/* Pushes F onto the stack of file locations. */
+void
+msg_push_msg_locator (const struct msg_locator *loc)
+{
+  if (nfile_loc >= mfile_loc)
+    {
+      if (mfile_loc == 0)
+	mfile_loc = 8;
+      else
+	mfile_loc *= 2;
+
+      file_loc = xnrealloc (file_loc, mfile_loc, sizeof *file_loc);
+    }
+
+  file_loc[nfile_loc++] = loc;
+}
+
+/* Pops F off the stack of file locations.
+   Argument F is only used for verification that that is actually the
+   item on top of the stack. */
+void
+msg_pop_msg_locator (const struct msg_locator *loc)
+{
+  assert (nfile_loc >= 0 && file_loc[nfile_loc - 1] == loc);
+  nfile_loc--;
+}
+
+/* Puts the current file and line number into LOC, or NULL and -1 if
+   none. */
+void
+get_msg_location (struct msg_locator *loc)
+{
+  if (nfile_loc)
+    {
+      *loc = *file_loc[nfile_loc - 1];
+    }
+  else
+    {
+      loc->file_name = getl_source_name ();
+      loc->line_number = getl_source_location ();
+    }
+}
Index: src/libpspp/msg-locator.h
===================================================================
RCS file: src/libpspp/msg-locator.h
diff -N src/libpspp/msg-locator.h
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ src/libpspp/msg-locator.h	26 Nov 2006 05:09:06 -0000
@@ -0,0 +1,36 @@
+/* PSPP - computes sample statistics.
+   Copyright (C) 1997-9, 2000, 2006 Free Software Foundation, Inc.
+   Written by Ben Pfaff <blp@gnu.org>.
+
+   This program is free software; you can redistribute it and/or
+   modify it under the terms of the GNU General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful, but
+   WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+   02110-1301, USA. */
+
+struct msg_locator ;
+
+void msg_locator_done (void);
+
+/* File locator stack functions. */
+
+/* Pushes F onto the stack of file locations. */
+void msg_push_msg_locator (const struct msg_locator *loc);
+
+/* Pops F off the stack of file locations.
+   Argument F is only used for verification that that is actually the
+   item on top of the stack. */
+void msg_pop_msg_locator (const struct msg_locator *loc);
+
+/* Puts the current file and line number into LOC, or NULL and -1 if
+   none. */
+void get_msg_location (struct msg_locator *loc);
Index: src/ui/flexifile.c
===================================================================
RCS file: /sources/pspp/pspp/src/ui/flexifile.c,v
retrieving revision 1.3
diff -b -w -U3 -r1.3 flexifile.c
--- src/ui/flexifile.c	14 Nov 2006 11:47:17 -0000	1.3
+++ src/ui/flexifile.c	26 Nov 2006 05:09:06 -0000
@@ -22,6 +22,7 @@
 #include <xalloc.h>
 #include <assert.h>
 #include "flexifile.h"
+#include <string.h>
 #include <data/casefile.h>
 #include <data/casefile-private.h>
 #include <data/case.h>
Index: src/ui/gui/message-dialog.c
===================================================================
RCS file: /sources/pspp/pspp/src/ui/gui/message-dialog.c,v
retrieving revision 1.14
diff -b -w -U3 -r1.14 message-dialog.c
--- src/ui/gui/message-dialog.c	4 Jul 2006 04:39:05 -0000	1.14
+++ src/ui/gui/message-dialog.c	26 Nov 2006 05:09:06 -0000
@@ -29,6 +29,7 @@
 #define N_(msgid) msgid
 
 #include <libpspp/message.h>
+#include <libpspp/msg-locator.h>
 #include "message-dialog.h"
 #include "progname.h"
 
@@ -49,22 +50,13 @@
 static GQueue *message_queue;
 
 
-static void 
-msg_location (struct msg_locator *loc)
-{
-  loc->file_name = NULL; 
-  loc->line_number = -1;
-}
-
-
 void
 message_dialog_init (void) 
 {
   message_queue = g_queue_new();
-  msg_init (enqueue_msg, msg_location);
+  msg_init (enqueue_msg);
 }
 
-
 void
 message_dialog_done (void)
 {
Index: src/ui/gui/psppire.c
===================================================================
RCS file: /sources/pspp/pspp/src/ui/gui/psppire.c,v
retrieving revision 1.19
diff -b -w -U3 -r1.19 psppire.c
--- src/ui/gui/psppire.c	3 Nov 2006 04:53:52 -0000	1.19
+++ src/ui/gui/psppire.c	26 Nov 2006 05:09:06 -0000
@@ -27,6 +27,7 @@
 #include <libpspp/copyleft.h>
 #include <data/format.h>
 #include <data/settings.h>
+#include <libpspp/getl.h>
 
 #include <getopt.h>
 #include <gtk/gtk.h>
@@ -113,11 +114,9 @@
 
   glade_init();
 
-
-
   fmt_init();
   settings_init();
-
+  getl_initialize ();
   message_dialog_init();
 
   the_dictionary = psppire_dict_new();
@@ -169,6 +168,7 @@
   /* start the event loop */
   gtk_main();
 
+  getl_uninitialize ();
   message_dialog_done();
 
   settings_done();
Index: src/ui/terminal/command-line.c
===================================================================
RCS file: /sources/pspp/pspp/src/ui/terminal/command-line.c,v
retrieving revision 1.7
diff -b -w -U3 -r1.7 command-line.c
--- src/ui/terminal/command-line.c	7 Nov 2006 12:59:59 -0000	1.7
+++ src/ui/terminal/command-line.c	26 Nov 2006 05:09:06 -0000
@@ -30,15 +30,16 @@
 #include <libpspp/assertion.h>
 #include <libpspp/copyleft.h>
 #include <libpspp/message.h>
-#include <language/line-buffer.h>
+#include <language/syntax-file.h>
 #include "progname.h"
 #include <data/settings.h>
-#include "read-line.h"
 #include <output/output.h>
 #include <data/file-name.h>
+#include <libpspp/getl.h>
 #include <libpspp/str.h>
 #include <libpspp/version.h>
 #include <libpspp/verbose-msg.h>
+#include "read-line.h"
 
 #include "gettext.h"
 #define _(msgid) gettext (msgid)
@@ -194,7 +195,8 @@
       char *pspprc_fn = fn_search_path ("rc", config_path, NULL);
       if (pspprc_fn != NULL) 
         {
-          getl_append_syntax_file (pspprc_fn);
+	  getl_append_source (create_syntax_file_source (pspprc_fn));
+
           free (pspprc_fn); 
         }
     }
@@ -204,12 +206,12 @@
       outp_configure_macro (argv[i]);
     else 
       {
-        getl_append_syntax_file (argv[i]);
+	getl_append_source (create_syntax_file_source (argv[i]));
         syntax_files++;
       }
 
   if (!syntax_files || interactive_mode)
-    getl_append_interactive (readln_read);
+    getl_append_source (create_readln_source () );
 
   return true;
 }
Index: src/ui/terminal/main.c
===================================================================
RCS file: /sources/pspp/pspp/src/ui/terminal/main.c,v
retrieving revision 1.22
diff -b -w -U3 -r1.22 main.c
--- src/ui/terminal/main.c	16 Nov 2006 12:47:22 -0000	1.22
+++ src/ui/terminal/main.c	26 Nov 2006 05:09:06 -0000
@@ -28,8 +28,10 @@
 #include "progname.h"
 #include "read-line.h"
 
+
 #include <data/dictionary.h>
 #include <data/file-handle-def.h>
+#include <libpspp/getl.h>
 #include <data/file-name.h>
 #include <data/format.h>
 #include <data/procedure.h>
@@ -38,7 +40,7 @@
 #include <gsl/gsl_errno.h>
 #include <language/command.h>
 #include <language/lexer/lexer.h>
-#include <language/line-buffer.h>
+#include <language/prompt.h>
 #include <libpspp/compiler.h>
 #include <libpspp/message.h>
 #include <libpspp/version.h>
@@ -94,6 +96,7 @@
   fn_init ();
   fh_init ();
   getl_initialize ();
+  init_prompts ();
   readln_initialize ();
   settings_init ();
   random_init ();
@@ -194,6 +197,7 @@
       fh_done ();
       lex_destroy (the_lexer);
       getl_uninitialize ();
+      uninit_prompts ();
       readln_uninitialize ();
 
       outp_done ();
Index: src/ui/terminal/msg-ui.c
===================================================================
RCS file: /sources/pspp/pspp/src/ui/terminal/msg-ui.c,v
retrieving revision 1.5
diff -b -w -U3 -r1.5 msg-ui.c
--- src/ui/terminal/msg-ui.c	7 Nov 2006 12:59:59 -0000	1.5
+++ src/ui/terminal/msg-ui.c	26 Nov 2006 05:09:06 -0000
@@ -24,10 +24,14 @@
 #include "exit.h"
 #include "linebreak.h"
 
-#include <language/line-buffer.h>
+#include <libpspp/msg-locator.h>
+#include <libpspp/getl.h>
 #include <data/settings.h>
 #include <libpspp/message.h>
+#include <libpspp/str.h>
 #include <errno.h>
+#include <stdio.h>
+
 
 #include "gettext.h"
 #define _(msgid) gettext (msgid)
@@ -65,7 +69,7 @@
 	  msg_file = stdout;
 	}
     }
-  msg_init (handle_msg, get_msg_location);
+  msg_init (handle_msg);
 }
 
 void
Index: src/ui/terminal/read-line.c
===================================================================
RCS file: /sources/pspp/pspp/src/ui/terminal/read-line.c,v
retrieving revision 1.9
diff -b -w -U3 -r1.9 read-line.c
--- src/ui/terminal/read-line.c	14 Nov 2006 11:47:17 -0000	1.9
+++ src/ui/terminal/read-line.c	26 Nov 2006 05:09:06 -0000
@@ -29,13 +29,12 @@
 #include "msg-ui.h"
 
 #include <data/file-name.h>
-#include <data/file-name.h>
 #include <data/settings.h>
 #include <language/command.h>
 #include <libpspp/message.h>
 #include <libpspp/str.h>
 #include <libpspp/version.h>
-#include <output/table.h>
+#include <language/prompt.h>
 
 #include "xalloc.h"
 
@@ -52,6 +51,16 @@
 static char **dont_complete (const char *, int, int);
 #endif /* HAVE_READLINE */
 
+
+struct readln_source 
+{
+  struct getl_interface parent ;
+
+  bool (*interactive_func) (struct string *line,
+			    enum prompt_style) ;
+};
+
+
 static bool initialised = false;
 
 /* Initialize getl. */
@@ -81,13 +90,29 @@
   initialised = false;
 
 #if HAVE_READLINE && unix
-  if (history_file != NULL)
+  if (history_file != NULL && false == get_testing_mode() )
     write_history (history_file);
   clear_history ();
   free (history_file);
 #endif
 }
 
+
+static bool
+read_interactive (struct getl_interface *s, struct string *line)
+{
+  struct readln_source *is  =
+    (struct readln_source *) s ;
+
+  return is->interactive_func (line, get_prompt_style ());
+}
+
+static bool
+always_true (const struct getl_interface *s UNUSED)
+{
+  return true;
+}
+
 /* Display a welcoming message. */
 static void
 welcome (void)
@@ -113,14 +138,19 @@
 #endif
 }
 
+
+
+
+
+
 /* Gets a line from the user and stores it into LINE.
    Prompts the user with PROMPT.
    Returns true if successful, false at end of file.
-   Suitable for passing to getl_append_interactive(). */
-bool
-readln_read (struct string *line, enum getl_prompt_style style)
+   */
+static bool
+readln_read (struct string *line, enum prompt_style style)
 {
-  const char *prompt = getl_get_prompt (style);
+  const char *prompt = get_prompt (style);
 #if HAVE_READLINE
   char *string;
 #endif
@@ -132,7 +162,7 @@
   welcome ();
 
 #if HAVE_READLINE
-  rl_attempted_completion_function = (style == GETL_PROMPT_FIRST
+  rl_attempted_completion_function = (style == PROMPT_FIRST
                                       ? complete_command_name
                                       : dont_complete);
   string = readline (prompt);
@@ -159,6 +189,29 @@
 #endif
 }
 
+
+static void
+readln_close (struct getl_interface *i)
+{
+  free (i);
+}
+
+/* Creates a source which uses readln to get its line */
+struct getl_interface *
+create_readln_source (void)
+{
+  struct readln_source *rlns  = xzalloc (sizeof (*rlns));
+
+  rlns->interactive_func = readln_read;
+
+  rlns->parent.interactive = always_true;
+  rlns->parent.read = read_interactive;
+  rlns->parent.close = readln_close;
+
+  return (struct getl_interface *) rlns;
+}
+
+
 #if HAVE_READLINE
 static char *command_generator (const char *text, int state);
 
Index: src/ui/terminal/read-line.h
===================================================================
RCS file: /sources/pspp/pspp/src/ui/terminal/read-line.h,v
retrieving revision 1.3
diff -b -w -U3 -r1.3 read-line.h
--- src/ui/terminal/read-line.h	28 Jun 2006 05:49:03 -0000	1.3
+++ src/ui/terminal/read-line.h	26 Nov 2006 05:09:06 -0000
@@ -21,11 +21,14 @@
 #define READLN_H
 
 #include <libpspp/str.h>
-#include <language/line-buffer.h>
+#include <libpspp/getl.h>
 
 void readln_initialize (void);
 void readln_uninitialize (void);
-bool readln_read (struct string *line, enum getl_prompt_style);
+
+struct getl_interface *create_readln_source (void);
+
+
 
 #endif /* READLN_H */
 
Index: tests/bugs/get-no-file.sh
===================================================================
RCS file: /sources/pspp/pspp/tests/bugs/get-no-file.sh,v
retrieving revision 1.5
diff -b -w -U3 -r1.5 get-no-file.sh
--- tests/bugs/get-no-file.sh	11 Mar 2006 07:16:40 -0000	1.5
+++ tests/bugs/get-no-file.sh	26 Nov 2006 05:09:06 -0000
@@ -64,7 +64,7 @@
 # We use the stdinput here, because the bug seems to manifest itself only in 
 # interactive mode.
 activity="run program"
-cat $TESTFILE | $SUPERVISOR $PSPP -o raw-ascii  > /dev/null
+cat $TESTFILE | $SUPERVISOR $PSPP --testing-mode -o raw-ascii  > /dev/null
 if [ $? -ne 0 ] ; then fail ; fi
 
 pass
