From 30728b09540b323fef43b23dd5f1e4d1e8298c92 Mon Sep 17 00:00:00 2001 From: Ben Pfaff Date: Wed, 26 Apr 2006 20:54:07 +0000 Subject: [PATCH] Improve the way we handle the various parsing "states". Until now we've hard-coded the state transitions in the command definition file, but that's error-prone and, worse, it's redundant--we can figure out what state we're in anyhow. We can cleanly handle INPUT PROGRAM and FILE TYPE with a nested command-processing loop. Improve command name completion for readline. --- po/en_GB.po | 1503 ++++++++++---------- po/pspp.pot | 1503 ++++++++++---------- src/ChangeLog | 11 + src/language/ChangeLog | 55 + src/language/command.c | 469 +++--- src/language/command.def | 358 ++--- src/language/command.h | 65 +- src/language/control/loop.c | 4 +- src/language/data-io/ChangeLog | 38 + src/language/data-io/automake.mk | 2 + src/language/data-io/data-list.c | 41 +- src/language/data-io/file-type.c | 47 +- src/language/data-io/file-type.h | 28 + src/language/data-io/get.c | 3 +- src/language/data-io/inpt-pgm.c | 93 +- src/language/data-io/inpt-pgm.h | 28 + src/language/dictionary/formats.c | 4 +- src/language/dictionary/missing-values.c | 4 +- src/language/dictionary/numeric.c | 8 +- src/language/dictionary/value-labels.c | 11 +- src/language/dictionary/variable-display.c | 6 +- src/language/dictionary/variable-label.c | 4 +- src/language/dictionary/vector.c | 2 +- src/language/lexer/ChangeLog | 4 + src/language/lexer/lexer.c | 21 +- src/language/lexer/lexer.h | 1 + src/language/utilities/set.q | 4 +- src/language/xforms/recode.c | 2 +- src/procedure.c | 10 - src/procedure.h | 3 - src/ui/terminal/ChangeLog | 26 + src/ui/terminal/automake.mk | 2 +- src/ui/terminal/main.c | 86 +- src/ui/terminal/read-line.c | 5 +- tests/ChangeLog | 5 + tests/command/missing-values.sh | 3 - 36 files changed, 2270 insertions(+), 2189 deletions(-) create mode 100644 src/language/data-io/file-type.h create mode 100644 src/language/data-io/inpt-pgm.h diff --git a/po/en_GB.po b/po/en_GB.po index 2828fe76..7ab1299e 100644 --- a/po/en_GB.po +++ b/po/en_GB.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PSPP 0.3.1\n" "Report-Msgid-Bugs-To: pspp-dev@gnu.org\n" -"POT-Creation-Date: 2006-04-04 20:32+0800\n" +"POT-Creation-Date: 2006-04-26 13:48-0700\n" "PO-Revision-Date: 2004-01-23 13:04+0800\n" "Last-Translator: John Darrington \n" "Language-Team: John Darrington \n" @@ -75,216 +75,216 @@ msgstr "" msgid "%s: Temporary file ended unexpectedly." msgstr "" -#: src/data/data-in.c:61 +#: src/data/data-in.c:59 #, c-format msgid "(column %d" msgstr "" -#: src/data/data-in.c:63 +#: src/data/data-in.c:61 #, c-format msgid "(columns %d-%d" msgstr "" -#: src/data/data-in.c:64 +#: src/data/data-in.c:62 #, c-format msgid ", field type %s) " msgstr "" -#: src/data/data-in.c:210 +#: src/data/data-in.c:208 msgid "Field does not form a valid floating-point constant." msgstr "" -#: src/data/data-in.c:237 +#: src/data/data-in.c:235 msgid "Field contents followed by garbage." msgstr "" -#: src/data/data-in.c:255 +#: src/data/data-in.c:253 msgid "Underflow in floating-point constant." msgstr "" -#: src/data/data-in.c:266 +#: src/data/data-in.c:264 msgid "Overflow in floating-point constant." msgstr "" -#: src/data/data-in.c:299 +#: src/data/data-in.c:297 msgid "All characters in field must be digits." msgstr "" -#: src/data/data-in.c:323 +#: src/data/data-in.c:321 msgid "Unrecognized character in field." msgstr "" -#: src/data/data-in.c:341 src/data/data-in.c:587 +#: src/data/data-in.c:339 src/data/data-in.c:585 msgid "Field must have even length." msgstr "" -#: src/data/data-in.c:351 src/data/data-in.c:597 +#: src/data/data-in.c:349 src/data/data-in.c:595 msgid "Field must contain only hex digits." msgstr "" -#: src/data/data-in.c:390 +#: src/data/data-in.c:388 #, 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:402 +#: src/data/data-in.c:400 msgid "Zoned decimal field contains fewer than 2 characters." msgstr "" -#: src/data/data-in.c:410 +#: src/data/data-in.c:408 msgid "Bad sign byte in zoned decimal number." msgstr "" -#: src/data/data-in.c:430 +#: src/data/data-in.c:428 msgid "Format error in zoned decimal number." msgstr "" -#: src/data/data-in.c:444 +#: src/data/data-in.c:442 msgid "Error in syntax of zoned decimal number." msgstr "" -#: src/data/data-in.c:637 +#: src/data/data-in.c:635 msgid "Unexpected end of field." msgstr "" -#: src/data/data-in.c:663 +#: src/data/data-in.c:661 msgid "Digit expected in field." msgstr "" -#: src/data/data-in.c:688 +#: src/data/data-in.c:686 #, c-format msgid "Day (%ld) must be between 1 and 31." msgstr "" -#: src/data/data-in.c:713 +#: src/data/data-in.c:711 msgid "Delimiter expected between fields in date." msgstr "" -#: src/data/data-in.c:746 +#: src/data/data-in.c:744 #, c-format msgid "Parse error at `%c' expecting %s." msgstr "" -#: src/data/data-in.c:760 +#: src/data/data-in.c:758 #, c-format msgid "Unknown %s `%.*s'." msgstr "" -#: src/data/data-in.c:810 +#: src/data/data-in.c:808 #, c-format msgid "Month (%ld) must be between 1 and 12." msgstr "" -#: src/data/data-in.c:814 +#: src/data/data-in.c:812 msgid "month" msgstr "" -#: src/data/data-in.c:828 +#: src/data/data-in.c:826 #, c-format msgid "Year (%ld) must be between 1582 and 19999." msgstr "" -#: src/data/data-in.c:839 +#: src/data/data-in.c:837 #, c-format msgid "Trailing garbage \"%s\" following date." msgstr "" -#: src/data/data-in.c:854 +#: src/data/data-in.c:852 #, c-format msgid "Julian day (%d) must be between 1 and 366." msgstr "" -#: src/data/data-in.c:866 +#: src/data/data-in.c:864 #, c-format msgid "Year (%d) must be between 1582 and 19999." msgstr "" -#: src/data/data-in.c:882 +#: src/data/data-in.c:880 #, c-format msgid "Quarter (%ld) must be between 1 and 4." msgstr "" -#: src/data/data-in.c:892 +#: src/data/data-in.c:890 msgid "`Q' expected between quarter and year." msgstr "" -#: src/data/data-in.c:908 +#: src/data/data-in.c:906 #, c-format msgid "Week (%ld) must be between 1 and 53." msgstr "" -#: src/data/data-in.c:920 +#: src/data/data-in.c:918 msgid "`WK' expected between week and year." msgstr "" -#: src/data/data-in.c:943 +#: src/data/data-in.c:941 msgid "Delimiter expected between fields in time." msgstr "" -#: src/data/data-in.c:955 +#: src/data/data-in.c:953 #, c-format msgid "Hour (%ld) must be positive." msgstr "" -#: src/data/data-in.c:967 +#: src/data/data-in.c:965 #, c-format msgid "Minute (%ld) must be between 0 and 59." msgstr "" -#: src/data/data-in.c:1014 +#: src/data/data-in.c:1012 #, c-format msgid "Hour (%ld) must be between 0 and 23." msgstr "" -#: src/data/data-in.c:1042 +#: src/data/data-in.c:1040 msgid "weekday" msgstr "" -#: src/data/data-in.c:1373 +#: src/data/data-in.c:1371 #, c-format msgid "Field too long (%d characters). Truncated after character %d." msgstr "" -#: src/data/data-out.c:247 +#: src/data/data-out.c:245 msgid "" "The N output format cannot be used to output a negative number or the system-" "missing value." msgstr "" -#: src/data/data-out.c:361 +#: src/data/data-out.c:359 #, c-format msgid "" "Quality of zoned decimal (Z) output format code is suspect. Check your " "results. Report bugs to %s." msgstr "" -#: src/data/data-out.c:369 +#: src/data/data-out.c:367 msgid "The system-missing value cannot be output as a zoned decimal number." msgstr "" -#: src/data/data-out.c:382 +#: src/data/data-out.c:380 #, c-format msgid "Number %g too big to fit in field with format Z%d.%d." msgstr "" -#: src/data/data-out.c:776 +#: src/data/data-out.c:774 #, c-format msgid "Time value %g too large in magnitude to convert to alphanumeric time." msgstr "" -#: src/data/data-out.c:827 +#: src/data/data-out.c:825 #, c-format msgid "Weekday index %f does not lie between 1 and 7." msgstr "" -#: src/data/data-out.c:847 +#: src/data/data-out.c:845 #, c-format msgid "Month index %f does not lie between 1 and 12." msgstr "" -#: src/data/data-out.c:960 +#: src/data/data-out.c:958 #, c-format msgid "" "Year %d cannot be represented in four digits for output formatting purposes." @@ -311,21 +311,21 @@ msgstr "" msgid "Can't re-open %s as a %s for %s." msgstr "" -#: src/data/filename.c:253 +#: src/data/file-name.c:236 #, c-format -msgid "Searching for `%s'..." +msgid "searching for \"%s\" in path \"%s\"" msgstr "" -#: src/data/filename.c:261 src/data/filename.c:293 -msgid "Search unsuccessful!" +#: src/data/file-name.c:263 +#, c-format +msgid "...found \"%s\"" msgstr "" -#: src/data/filename.c:286 -#, c-format -msgid "Found `%s'." +#: src/data/file-name.c:271 +msgid "...not found" msgstr "" -#: src/data/filename.c:703 +#: src/data/file-name.c:624 #, c-format msgid "Not opening pipe file `%s' because SAFER option set." msgstr "" @@ -387,30 +387,30 @@ msgid "%s variables are not compatible with %s format %s." msgstr "" #: src/data/format.c:197 src/data/por-file-reader.c:481 -#: src/data/sys-file-reader.c:994 src/data/sys-file-reader.c:1003 +#: src/data/sys-file-reader.c:997 src/data/sys-file-reader.c:1006 #: src/ui/gui/psppire-var-store.c:435 msgid "String" msgstr "" #: src/data/format.c:197 src/data/por-file-reader.c:481 -#: src/data/sys-file-reader.c:994 src/data/sys-file-reader.c:1003 +#: src/data/sys-file-reader.c:997 src/data/sys-file-reader.c:1006 #: src/ui/gui/psppire-var-store.c:428 msgid "Numeric" msgstr "" -#: src/data/format.c:198 src/data/sys-file-reader.c:996 -#: src/data/sys-file-reader.c:1141 src/data/sys-file-reader.c:1142 -#: src/data/variable.c:41 src/language/dictionary/apply-dictionary.c:74 -#: src/language/dictionary/apply-dictionary.c:75 +#: src/data/format.c:198 src/data/sys-file-reader.c:999 +#: src/data/sys-file-reader.c:1144 src/data/sys-file-reader.c:1145 +#: src/data/variable.c:41 src/language/dictionary/apply-dictionary.c:73 +#: src/language/dictionary/apply-dictionary.c:74 #: src/language/xforms/recode.c:465 src/language/xforms/recode.c:466 msgid "numeric" msgstr "" -#: src/data/format.c:198 src/data/sys-file-reader.c:996 -#: src/data/sys-file-reader.c:1141 src/data/sys-file-reader.c:1142 +#: src/data/format.c:198 src/data/sys-file-reader.c:999 +#: src/data/sys-file-reader.c:1144 src/data/sys-file-reader.c:1145 #: src/data/variable.c:41 src/data/variable.c:49 +#: src/language/dictionary/apply-dictionary.c:73 #: src/language/dictionary/apply-dictionary.c:74 -#: src/language/dictionary/apply-dictionary.c:75 #: src/language/xforms/recode.c:465 src/language/xforms/recode.c:466 msgid "string" msgstr "" @@ -430,7 +430,7 @@ msgstr "" msgid "%s: Creating file: %s." msgstr "" -#: src/data/por-file-reader.c:100 +#: src/data/por-file-reader.c:93 #, c-format msgid "portable file %s corrupt at offset %ld: " msgstr "" @@ -477,12 +477,12 @@ msgstr "" msgid "Bad time string length %d." msgstr "" -#: src/data/por-file-reader.c:473 src/data/sys-file-reader.c:986 +#: src/data/por-file-reader.c:473 src/data/sys-file-reader.c:989 #, c-format msgid "%s: Bad format specifier byte (%d)." msgstr "" -#: src/data/por-file-reader.c:480 src/data/sys-file-reader.c:1002 +#: src/data/por-file-reader.c:480 src/data/sys-file-reader.c:1005 #, c-format msgid "%s variable %s has invalid format specifier %s." msgstr "" @@ -547,18 +547,18 @@ msgstr "" msgid "Duplicate label for value `%.*s' for variable %s." msgstr "" -#: src/data/por-file-writer.c:145 +#: src/data/por-file-writer.c:143 #, c-format msgid "Invalid decimal digits count %d. Treating as %d." msgstr "" -#: src/data/por-file-writer.c:165 +#: src/data/por-file-writer.c:163 #, c-format msgid "" "An error occurred while opening \"%s\" for writing as a portable file: %s." msgstr "" -#: src/data/por-file-writer.c:449 +#: src/data/por-file-writer.c:447 #, c-format msgid "An I/O error occurred writing portable file \"%s\"." msgstr "" @@ -575,135 +575,135 @@ msgstr "" msgid "Could not access definition for terminal `%s'." msgstr "" -#: src/data/sys-file-reader.c:134 +#: src/data/sys-file-reader.c:130 msgid "corrupt system file: " msgstr "" -#: src/data/sys-file-reader.c:151 +#: src/data/sys-file-reader.c:154 #, c-format msgid "%s: Closing system file: %s." msgstr "" -#: src/data/sys-file-reader.c:242 +#: src/data/sys-file-reader.c:245 #, c-format msgid "" "An error occurred while opening \"%s\" for reading as a system file: %s." msgstr "" -#: src/data/sys-file-reader.c:259 +#: src/data/sys-file-reader.c:262 #, c-format msgid "" "%s: Index of weighting variable (%d) is not between 0 and number of elements " "per case (%d)." msgstr "" -#: src/data/sys-file-reader.c:268 +#: src/data/sys-file-reader.c:271 #, c-format msgid "" "%s: Weighting variable may not be a continuation of a long string variable." msgstr "" -#: src/data/sys-file-reader.c:271 +#: src/data/sys-file-reader.c:274 #, c-format msgid "%s: Weighting variable may not be a string variable." msgstr "" -#: src/data/sys-file-reader.c:296 +#: src/data/sys-file-reader.c:299 #, c-format msgid "" "%s: Orphaned variable index record (type 4). Type 4 records must always " "immediately follow type 3 records." msgstr "" -#: src/data/sys-file-reader.c:354 +#: src/data/sys-file-reader.c:357 #, c-format msgid "%s: Invalid subrecord length. Record: 7; Subrecord: 11" msgstr "" -#: src/data/sys-file-reader.c:408 +#: src/data/sys-file-reader.c:411 #, c-format msgid "%s: Trailing garbage in long variable name map." msgstr "" -#: src/data/sys-file-reader.c:415 +#: src/data/sys-file-reader.c:418 #, c-format msgid "%s: Long variable mapping to invalid variable name `%s'." msgstr "" -#: src/data/sys-file-reader.c:425 +#: src/data/sys-file-reader.c:428 #, c-format msgid "%s: Long variable mapping for nonexistent variable %s." msgstr "" -#: src/data/sys-file-reader.c:434 +#: src/data/sys-file-reader.c:437 #, c-format msgid "%s: Duplicate long variable name `%s' within system file." msgstr "" -#: src/data/sys-file-reader.c:461 +#: src/data/sys-file-reader.c:464 #, c-format msgid "%s: Unrecognized record type 7, subtype %d encountered in system file." msgstr "" -#: src/data/sys-file-reader.c:486 +#: src/data/sys-file-reader.c:489 #, c-format msgid "%s: Unrecognized record type %d." msgstr "" -#: src/data/sys-file-reader.c:518 +#: src/data/sys-file-reader.c:521 #, c-format msgid "" "%s: Bad size (%d) or count (%d) field on record type 7, subtype 3.\tExpected " "size %d, count 8." msgstr "" -#: src/data/sys-file-reader.c:529 +#: src/data/sys-file-reader.c:532 #, c-format msgid "" "%s: Floating-point representation in system file is not IEEE-754. PSPP " "cannot convert between floating-point formats." msgstr "" -#: src/data/sys-file-reader.c:545 +#: src/data/sys-file-reader.c:548 #, c-format msgid "" "%s: File-indicated endianness (%s) does not match endianness intuited from " "file header (%s)." msgstr "" -#: src/data/sys-file-reader.c:548 src/data/sys-file-reader.c:549 +#: src/data/sys-file-reader.c:551 src/data/sys-file-reader.c:552 msgid "big-endian" msgstr "" -#: src/data/sys-file-reader.c:548 src/data/sys-file-reader.c:549 +#: src/data/sys-file-reader.c:551 src/data/sys-file-reader.c:552 msgid "little-endian" msgstr "" -#: src/data/sys-file-reader.c:550 +#: src/data/sys-file-reader.c:553 msgid "unknown" msgstr "" -#: src/data/sys-file-reader.c:554 +#: src/data/sys-file-reader.c:557 #, c-format msgid "%s: File-indicated character representation code (%s) is not ASCII." msgstr "" -#: src/data/sys-file-reader.c:558 +#: src/data/sys-file-reader.c:561 msgid "DEC Kanji" msgstr "" -#: src/data/sys-file-reader.c:558 src/language/dictionary/sys-file-info.c:119 +#: src/data/sys-file-reader.c:561 src/language/dictionary/sys-file-info.c:120 msgid "Unknown" msgstr "" -#: src/data/sys-file-reader.c:574 +#: src/data/sys-file-reader.c:577 #, c-format msgid "" "%s: Bad size (%d) or count (%d) field on record type 7, subtype 4.\tExpected " "size %d, count 8." msgstr "" -#: src/data/sys-file-reader.c:589 +#: src/data/sys-file-reader.c:592 #, c-format msgid "" "%s: File-indicated value is different from internal value for at least one " @@ -711,213 +711,213 @@ msgid "" "%g; LOWEST: %g, %g." msgstr "" -#: src/data/sys-file-reader.c:616 +#: src/data/sys-file-reader.c:619 #, c-format msgid "" "%s: Bad magic. Proper system files begin with the four characters `$FL2'. " "This file will not be read." msgstr "" -#: src/data/sys-file-reader.c:658 +#: src/data/sys-file-reader.c:661 #, c-format msgid "" "%s: File layout code has unexpected value %d. Value should be 2, in big-" "endian or little-endian format." msgstr "" -#: src/data/sys-file-reader.c:686 +#: src/data/sys-file-reader.c:689 #, c-format msgid "%s: Number of cases in file (%ld) is not between -1 and %d." msgstr "" -#: src/data/sys-file-reader.c:691 +#: src/data/sys-file-reader.c:694 #, c-format msgid "%s: Compression bias (%g) is not the usual value of 100." msgstr "" -#: src/data/sys-file-reader.c:816 +#: src/data/sys-file-reader.c:819 #, c-format msgid "" "%s: position %d: String variable does not have proper number of continuation " "records." msgstr "" -#: src/data/sys-file-reader.c:827 +#: src/data/sys-file-reader.c:830 #, c-format msgid "%s: position %d: Superfluous long string continuation record." msgstr "" -#: src/data/sys-file-reader.c:833 +#: src/data/sys-file-reader.c:836 #, c-format msgid "%s: position %d: Bad variable type code %d." msgstr "" -#: src/data/sys-file-reader.c:836 +#: src/data/sys-file-reader.c:839 #, c-format msgid "%s: position %d: Variable label indicator field is not 0 or 1." msgstr "" -#: src/data/sys-file-reader.c:840 +#: src/data/sys-file-reader.c:843 #, c-format msgid "" "%s: position %d: Missing value indicator field is not -3, -2, 0, 1, 2, or 3." msgstr "" -#: src/data/sys-file-reader.c:845 +#: src/data/sys-file-reader.c:848 #, c-format msgid "%s: position %d: Variable name begins with invalid character." msgstr "" -#: src/data/sys-file-reader.c:864 +#: src/data/sys-file-reader.c:867 #, c-format msgid "%s: Invalid variable name `%s' within system file." msgstr "" -#: src/data/sys-file-reader.c:870 +#: src/data/sys-file-reader.c:873 #, c-format msgid "%s: Duplicate variable name `%s' within system file." msgstr "" -#: src/data/sys-file-reader.c:893 +#: src/data/sys-file-reader.c:896 #, c-format msgid "%s: Variable %s indicates variable label of invalid length %d." msgstr "" -#: src/data/sys-file-reader.c:914 +#: src/data/sys-file-reader.c:917 #, c-format msgid "%s: Long string variable %s may not have missing values." msgstr "" -#: src/data/sys-file-reader.c:935 +#: src/data/sys-file-reader.c:938 #, c-format msgid "" "%s: String variable %s may not have missing values specified as a range." msgstr "" -#: src/data/sys-file-reader.c:962 +#: src/data/sys-file-reader.c:965 #, c-format msgid "%s: Long string continuation records omitted at end of dictionary." msgstr "" -#: src/data/sys-file-reader.c:967 +#: src/data/sys-file-reader.c:970 #, c-format msgid "" "%s: System file header indicates %d variable positions but %d were read from " "file." msgstr "" -#: src/data/sys-file-reader.c:992 +#: src/data/sys-file-reader.c:995 #, c-format msgid "%s: %s variable %s has %s format specifier %s." msgstr "" -#: src/data/sys-file-reader.c:1045 +#: src/data/sys-file-reader.c:1048 #, c-format msgid "%s: Invalid number of labels: %d. Ignoring labels." msgstr "" -#: src/data/sys-file-reader.c:1087 +#: src/data/sys-file-reader.c:1090 #, 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:1098 +#: src/data/sys-file-reader.c:1101 #, 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:1114 +#: src/data/sys-file-reader.c:1117 #, 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:1121 +#: src/data/sys-file-reader.c:1124 #, 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:1126 +#: src/data/sys-file-reader.c:1129 #, c-format msgid "%s: Value labels are not allowed on long string variables (%s)." msgstr "" -#: src/data/sys-file-reader.c:1137 +#: src/data/sys-file-reader.c:1140 #, 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:1178 +#: src/data/sys-file-reader.c:1181 #, c-format msgid "%s: File contains duplicate label for value %g for variable %s." msgstr "" -#: src/data/sys-file-reader.c:1182 +#: src/data/sys-file-reader.c:1185 #, c-format msgid "%s: File contains duplicate label for value `%.*s' for variable %s." msgstr "" -#: src/data/sys-file-reader.c:1224 src/data/sys-file-reader.c:1507 +#: src/data/sys-file-reader.c:1227 src/data/sys-file-reader.c:1510 #, c-format msgid "%s: Reading system file: %s." msgstr "" -#: src/data/sys-file-reader.c:1227 src/data/sys-file-reader.c:1345 -#: src/data/sys-file-reader.c:1386 +#: src/data/sys-file-reader.c:1230 src/data/sys-file-reader.c:1348 +#: src/data/sys-file-reader.c:1389 #, c-format msgid "%s: Unexpected end of file." msgstr "" -#: src/data/sys-file-reader.c:1243 +#: src/data/sys-file-reader.c:1246 #, c-format msgid "%s: Seeking system file: %s." msgstr "" -#: src/data/sys-file-reader.c:1258 +#: src/data/sys-file-reader.c:1261 #, c-format msgid "%s: System file contains multiple type 6 (document) records." msgstr "" -#: src/data/sys-file-reader.c:1264 +#: src/data/sys-file-reader.c:1267 #, c-format msgid "%s: Number of document lines (%ld) must be greater than 0." msgstr "" -#: src/data/sys-file-reader.c:1298 +#: src/data/sys-file-reader.c:1301 #, c-format msgid "%s: Error reading file: %s." msgstr "" -#: src/data/sys-file-reader.c:1337 +#: src/data/sys-file-reader.c:1340 #, c-format msgid "%s: Compressed data is corrupted. Data ends in partial case." msgstr "" -#: src/data/sys-file-reader.c:1513 +#: src/data/sys-file-reader.c:1516 #, c-format msgid "%s: Partial record at end of system file." msgstr "" -#: src/data/sys-file-writer.c:141 +#: src/data/sys-file-writer.c:139 #, c-format msgid "Unknown system file version %d. Treating as version %d." msgstr "" -#: src/data/sys-file-writer.c:250 +#: src/data/sys-file-writer.c:248 #, c-format msgid "Error opening \"%s\" for writing as a system file: %s." msgstr "" -#: src/data/sys-file-writer.c:897 +#: src/data/sys-file-writer.c:895 #, c-format msgid "An I/O error occurred writing system file \"%s\"." msgstr "" @@ -968,83 +968,95 @@ msgstr "" msgid "scratch" msgstr "" -#: src/language/command.c:141 +#: src/language/command.c:159 #, c-format -msgid "%s not allowed inside FILE TYPE/END FILE TYPE." +msgid "%s may be used only in testing mode." msgstr "" -#: src/language/command.c:144 +#: src/language/command.c:164 #, c-format -msgid "%s not allowed inside FILE TYPE GROUPED/END FILE TYPE." +msgid "%s may be used only in enhanced syntax mode." msgstr "" -#: src/language/command.c:147 -msgid "RECORD TYPE must be the first command inside a FILE TYPE structure." +#: src/language/command.c:414 +msgid "expecting command name" msgstr "" -#: src/language/command.c:194 -msgid "expecting command name" +#: src/language/command.c:428 +#, c-format +msgid "Unknown command %s." +msgstr "" + +#: src/language/command.c:550 +msgid "before the active file has been defined" +msgstr "" + +#: src/language/command.c:552 +msgid "after the active file has been defined" +msgstr "" + +#: src/language/command.c:554 +msgid "inside INPUT PROGRAM" +msgstr "" + +#: src/language/command.c:556 +msgid "inside FILE TYPE" msgstr "" -#: src/language/command.c:204 src/language/expressions/parse.c:1222 -#: src/ui/terminal/command-line.c:125 src/ui/terminal/command-line.c:144 -#: src/ui/terminal/command-line.c:156 +#: src/language/command.c:561 #, c-format -msgid "%s is not yet implemented." +msgid "%s or %s" msgstr "" -#: src/language/command.c:223 +#: src/language/command.c:563 #, c-format -msgid "" -"%s is not allowed (1) before a command to specify the input program, such as " -"DATA LIST, (2) between FILE TYPE and END FILE TYPE, (3) between INPUT " -"PROGRAM and END INPUT PROGRAM." +msgid "%s, %s, or %s" msgstr "" -#: src/language/command.c:227 +#: src/language/command.c:567 #, c-format -msgid "%s is not allowed within an input program." +msgid "%s is allowed only %s." msgstr "" -#: src/language/command.c:228 src/language/command.c:229 +#: src/language/command.c:572 #, c-format -msgid "%s is only allowed within an input program." +msgid "%s is not allowed inside INPUT PROGRAM." msgstr "" -#: src/language/command.c:504 +#: src/language/command.c:574 #, c-format -msgid "Unknown command %s." +msgid "%s is not allowed inside FILE TYPE." msgstr "" -#: src/language/command.c:645 src/language/command.c:776 +#: src/language/command.c:666 src/language/command.c:797 #: src/language/utilities/permissions.c:102 msgid "This command not allowed when the SAFER option is set." msgstr "" -#: src/language/command.c:657 +#: src/language/command.c:678 #, c-format msgid "Error removing `%s': %s." msgstr "" -#: src/language/command.c:707 +#: src/language/command.c:728 #, c-format msgid "Couldn't fork: %s." msgstr "" -#: src/language/command.c:749 +#: src/language/command.c:770 #, c-format msgid "Error executing command: %s." msgstr "" -#: src/language/command.c:758 src/language/data-io/matrix-data.c:534 -#: src/language/data-io/print.c:336 src/language/data-io/print.c:1051 +#: src/language/command.c:779 src/language/data-io/matrix-data.c:532 +#: src/language/data-io/print.c:336 src/language/data-io/print.c:1038 #: src/language/dictionary/vector.c:197 src/language/lexer/lexer.c:453 #: src/language/stats/autorecode.c:144 src/language/xforms/select-if.c:57 #: src/language/xforms/select-if.c:137 msgid "expecting end of command" msgstr "" -#: src/language/command.c:797 +#: src/language/command.c:818 msgid "No operating system support for this command." msgstr "" @@ -1067,28 +1079,28 @@ msgstr "" msgid "This command may not follow ELSE in DO IF...END IF." msgstr "" -#: src/language/control/repeat.c:137 +#: src/language/control/repeat.c:135 #, c-format msgid "Dummy variable name \"%s\" hides dictionary variable \"%s\"." msgstr "" -#: src/language/control/repeat.c:143 +#: src/language/control/repeat.c:141 #, c-format msgid "Dummy variable name \"%s\" is given twice." msgstr "" -#: src/language/control/repeat.c:184 +#: src/language/control/repeat.c:182 #, c-format msgid "" "Dummy variable \"%s\" had %d substitutions, so \"%s\" must also, but %d were " "specified." msgstr "" -#: src/language/control/repeat.c:453 +#: src/language/control/repeat.c:451 msgid "String expected." msgstr "" -#: src/language/control/repeat.c:480 +#: src/language/control/repeat.c:478 msgid "No matching DO REPEAT." msgstr "" @@ -1121,7 +1133,7 @@ msgid "" "fields must be listed in order of increasing record number." msgstr "" -#: src/language/data-io/data-list.c:378 src/language/data-io/data-list.c:1727 +#: src/language/data-io/data-list.c:378 src/language/data-io/data-list.c:1729 msgid "" "SPSS-like or FORTRAN-like format specification expected after variable names." msgstr "" @@ -1193,9 +1205,9 @@ msgstr "" #: src/language/data-io/data-list.c:783 src/language/data-io/data-list.c:901 #: src/language/data-io/print.c:798 -#: src/language/dictionary/sys-file-info.c:139 -#: src/language/dictionary/sys-file-info.c:373 -#: src/language/stats/descriptives.c:887 src/procedure.c:886 +#: src/language/dictionary/sys-file-info.c:140 +#: src/language/dictionary/sys-file-info.c:374 +#: src/language/stats/descriptives.c:887 src/procedure.c:878 msgid "Variable" msgstr "" @@ -1247,182 +1259,182 @@ msgid "" "with the system-missing value or blanks, as appropriate." msgstr "" -#: src/language/data-io/data-list.c:1390 +#: src/language/data-io/data-list.c:1392 msgid "" "REPEATING DATA must use the same file as its corresponding DATA LIST or FILE " "TYPE." msgstr "" -#: src/language/data-io/data-list.c:1400 src/language/data-io/data-list.c:1434 -#: src/language/data-io/data-list.c:1447 src/language/data-io/data-list.c:1460 -#: src/language/data-io/data-list.c:1494 +#: src/language/data-io/data-list.c:1402 src/language/data-io/data-list.c:1436 +#: src/language/data-io/data-list.c:1449 src/language/data-io/data-list.c:1462 +#: src/language/data-io/data-list.c:1496 #, c-format msgid "%s subcommand given multiple times." msgstr "" -#: src/language/data-io/data-list.c:1423 +#: src/language/data-io/data-list.c:1425 #, c-format msgid "STARTS beginning column (%d) exceeds STARTS ending column (%d)." msgstr "" -#: src/language/data-io/data-list.c:1480 +#: src/language/data-io/data-list.c:1482 #, c-format msgid "CONTINUED beginning column (%d) exceeds CONTINUED ending column (%d)." msgstr "" -#: src/language/data-io/data-list.c:1503 +#: src/language/data-io/data-list.c:1505 #, c-format msgid "ID beginning column (%ld) must be positive." msgstr "" -#: src/language/data-io/data-list.c:1518 +#: src/language/data-io/data-list.c:1520 #, c-format msgid "ID ending column (%ld) must be positive." msgstr "" -#: src/language/data-io/data-list.c:1524 +#: src/language/data-io/data-list.c:1526 #, c-format msgid "ID ending column (%ld) cannot be less than ID beginning column (%d)." msgstr "" -#: src/language/data-io/data-list.c:1564 +#: src/language/data-io/data-list.c:1566 msgid "Missing required specification STARTS." msgstr "" -#: src/language/data-io/data-list.c:1566 +#: src/language/data-io/data-list.c:1568 msgid "Missing required specification OCCURS." msgstr "" -#: src/language/data-io/data-list.c:1573 +#: src/language/data-io/data-list.c:1575 msgid "ID specified without CONTINUED." msgstr "" -#: src/language/data-io/data-list.c:1584 +#: src/language/data-io/data-list.c:1586 #, c-format msgid "" "STARTS beginning column (%d) exceeds default STARTS ending column taken from " "file's record width (%d)." msgstr "" -#: src/language/data-io/data-list.c:1597 +#: src/language/data-io/data-list.c:1599 #, c-format msgid "" "CONTINUED beginning column (%d) exceeds default CONTINUED ending column " "taken from file's record width (%d)." msgstr "" -#: src/language/data-io/data-list.c:1676 +#: src/language/data-io/data-list.c:1678 msgid "String variable not allowed here." msgstr "" -#: src/language/data-io/data-list.c:1686 +#: src/language/data-io/data-list.c:1688 #, c-format msgid "%s (%d) must be at least 1." msgstr "" -#: src/language/data-io/data-list.c:1692 +#: src/language/data-io/data-list.c:1694 #, c-format msgid "Variable or integer expected for %s." msgstr "" -#: src/language/data-io/data-list.c:1817 +#: src/language/data-io/data-list.c:1819 #, c-format msgid "Encountered mismatched record ID \"%s\" expecting \"%s\"." msgstr "" -#: src/language/data-io/data-list.c:1849 +#: src/language/data-io/data-list.c:1852 #, c-format msgid "" "Variable %s starting in column %d extends beyond physical record length of %" "d." msgstr "" -#: src/language/data-io/data-list.c:1916 +#: src/language/data-io/data-list.c:1919 #, c-format msgid "Invalid value %d for OCCURS." msgstr "" -#: src/language/data-io/data-list.c:1922 +#: src/language/data-io/data-list.c:1925 #, c-format msgid "Beginning column for STARTS (%d) must be at least 1." msgstr "" -#: src/language/data-io/data-list.c:1930 +#: src/language/data-io/data-list.c:1932 #, c-format msgid "Ending column for STARTS (%d) is less than beginning column (%d)." msgstr "" -#: src/language/data-io/data-list.c:1938 +#: src/language/data-io/data-list.c:1940 #, c-format msgid "Invalid value %d for LENGTH." msgstr "" -#: src/language/data-io/data-list.c:1945 +#: src/language/data-io/data-list.c:1947 #, c-format msgid "Beginning column for CONTINUED (%d) must be at least 1." msgstr "" -#: src/language/data-io/data-list.c:1953 +#: src/language/data-io/data-list.c:1955 #, c-format msgid "Ending column for CONTINUED (%d) is less than beginning column (%d)." msgstr "" -#: src/language/data-io/data-list.c:1985 +#: src/language/data-io/data-list.c:1987 #, c-format msgid "" "Number of repetitions specified on OCCURS (%d) exceed number of repetitions " "available in space on STARTS (%d), and CONTINUED not specified." msgstr "" -#: src/language/data-io/data-list.c:2003 +#: src/language/data-io/data-list.c:2005 #, c-format msgid "Unexpected end of file with %d repetitions remaining out of %d." msgstr "" -#: src/language/data-io/data-reader.c:138 +#: src/language/data-io/data-reader.c:131 #, 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:168 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:206 -#: src/language/data-io/data-reader.c:224 +#: src/language/data-io/data-reader.c:199 +#: src/language/data-io/data-reader.c:216 #, c-format msgid "Error reading file %s: %s." msgstr "" -#: src/language/data-io/data-reader.c:227 +#: src/language/data-io/data-reader.c:219 #, c-format msgid "%s: Partial record at end of file." msgstr "" -#: src/language/data-io/data-reader.c:278 +#: src/language/data-io/data-reader.c:270 #, c-format msgid "Attempt to read beyond end-of-file on file %s." msgstr "" -#: src/language/data-io/data-reader.c:281 +#: src/language/data-io/data-reader.c:273 msgid "Attempt to read beyond END DATA." msgstr "" -#: src/language/data-io/data-reader.c:425 +#: src/language/data-io/data-reader.c:417 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:70 +#: src/language/data-io/data-writer.c:62 #, c-format msgid "An error occurred while opening \"%s\" for writing as a data file: %s." msgstr "" -#: src/language/data-io/data-writer.c:136 +#: src/language/data-io/data-writer.c:131 #, c-format msgid "I/O error occurred writing data file \"%s\"." msgstr "" @@ -1469,159 +1481,154 @@ msgstr "" msgid "Handle for %s not allowed here." msgstr "" -#: src/language/data-io/file-type.c:134 +#: src/language/data-io/file-type.c:149 msgid "MIXED, GROUPED, or NESTED expected." msgstr "" -#: src/language/data-io/file-type.c:157 +#: src/language/data-io/file-type.c:172 msgid "The CASE subcommand is not valid on FILE TYPE MIXED." msgstr "" -#: src/language/data-io/file-type.c:175 +#: src/language/data-io/file-type.c:190 msgid "WARN or NOWARN expected after WILD." msgstr "" -#: src/language/data-io/file-type.c:183 +#: src/language/data-io/file-type.c:198 msgid "The DUPLICATE subcommand is not valid on FILE TYPE MIXED." msgstr "" -#: src/language/data-io/file-type.c:197 +#: src/language/data-io/file-type.c:212 msgid "DUPLICATE=CASE is only valid on FILE TYPE NESTED." msgstr "" -#: src/language/data-io/file-type.c:206 +#: src/language/data-io/file-type.c:221 #, c-format msgid "WARN%s expected after DUPLICATE." msgstr "" -#: src/language/data-io/file-type.c:207 +#: src/language/data-io/file-type.c:222 msgid ", NOWARN, or CASE" msgstr "" -#: src/language/data-io/file-type.c:208 +#: src/language/data-io/file-type.c:223 msgid " or NOWARN" msgstr "" -#: src/language/data-io/file-type.c:216 +#: src/language/data-io/file-type.c:231 msgid "The MISSING subcommand is not valid on FILE TYPE MIXED." msgstr "" -#: src/language/data-io/file-type.c:228 +#: src/language/data-io/file-type.c:243 msgid "WARN or NOWARN after MISSING." msgstr "" -#: src/language/data-io/file-type.c:236 +#: src/language/data-io/file-type.c:251 msgid "ORDERED is only valid on FILE TYPE GROUPED." msgstr "" -#: src/language/data-io/file-type.c:247 +#: src/language/data-io/file-type.c:262 msgid "YES or NO expected after ORDERED." msgstr "" -#: src/language/data-io/file-type.c:253 src/language/data-io/file-type.c:548 +#: src/language/data-io/file-type.c:268 src/language/data-io/file-type.c:554 msgid "while expecting a valid subcommand" msgstr "" -#: src/language/data-io/file-type.c:260 +#: src/language/data-io/file-type.c:275 msgid "The required RECORD subcommand was not present." msgstr "" -#: src/language/data-io/file-type.c:268 +#: src/language/data-io/file-type.c:283 msgid "The required CASE subcommand was not present." msgstr "" -#: src/language/data-io/file-type.c:274 +#: src/language/data-io/file-type.c:289 msgid "CASE and RECORD must specify different variable names." msgstr "" -#: src/language/data-io/file-type.c:332 +#: src/language/data-io/file-type.c:347 msgid "Column value must be positive." msgstr "" -#: src/language/data-io/file-type.c:348 +#: src/language/data-io/file-type.c:363 msgid "Ending column precedes beginning column." msgstr "" -#: src/language/data-io/file-type.c:368 +#: src/language/data-io/file-type.c:383 msgid "Bad format specifier name." msgstr "" -#: src/language/data-io/file-type.c:397 src/language/data-io/file-type.c:586 -msgid "" -"This command may only appear within a FILE TYPE/END FILE TYPE structure." -msgstr "" - -#: src/language/data-io/file-type.c:420 +#: src/language/data-io/file-type.c:426 msgid "OTHER may appear only on the last RECORD TYPE command." msgstr "" -#: src/language/data-io/file-type.c:430 +#: src/language/data-io/file-type.c:436 msgid "No input commands (DATA LIST, REPEATING DATA) for above RECORD TYPE." msgstr "" -#: src/language/data-io/file-type.c:481 +#: src/language/data-io/file-type.c:487 msgid "" "The CASE subcommand is not allowed on the RECORD TYPE command for FILE TYPE " "MIXED." msgstr "" -#: src/language/data-io/file-type.c:491 +#: src/language/data-io/file-type.c:497 msgid "" "No variable name may be specified for the CASE subcommand on RECORD TYPE." msgstr "" -#: src/language/data-io/file-type.c:499 +#: src/language/data-io/file-type.c:505 msgid "" "The CASE column specification on RECORD TYPE must give a format specifier " "that is the same type as that of the CASE column specification given on FILE " "TYPE." msgstr "" -#: src/language/data-io/file-type.c:515 +#: src/language/data-io/file-type.c:521 msgid "WARN or NOWARN expected on DUPLICATE subcommand." msgstr "" -#: src/language/data-io/file-type.c:529 +#: src/language/data-io/file-type.c:535 msgid "WARN or NOWARN expected on MISSING subcommand." msgstr "" -#: src/language/data-io/file-type.c:542 +#: src/language/data-io/file-type.c:548 msgid "YES or NO expected on SPREAD subcommand." msgstr "" -#: src/language/data-io/file-type.c:599 +#: src/language/data-io/file-type.c:598 msgid "No input commands (DATA LIST, REPEATING DATA) on above RECORD TYPE." msgstr "" -#: src/language/data-io/file-type.c:606 +#: src/language/data-io/file-type.c:605 msgid "No commands between FILE TYPE and END FILE TYPE." msgstr "" -#: src/language/data-io/file-type.c:675 +#: src/language/data-io/file-type.c:674 #, c-format msgid "Unknown record type \"%.*s\"." msgstr "" -#: src/language/data-io/file-type.c:699 +#: src/language/data-io/file-type.c:698 #, c-format msgid "Unknown record type %g." msgstr "" -#: src/language/data-io/get.c:108 +#: src/language/data-io/get.c:106 msgid "expecting COMM or TAPE" msgstr "" -#: src/language/data-io/get.c:350 src/language/data-io/get.c:364 -#: src/language/data-io/get.c:389 +#: src/language/data-io/get.c:348 src/language/data-io/get.c:362 +#: src/language/data-io/get.c:387 #, c-format msgid "expecting %s or %s" msgstr "" -#: src/language/data-io/get.c:596 src/language/data-io/print.c:180 +#: src/language/data-io/get.c:594 src/language/data-io/print.c:180 msgid "expecting a valid subcommand" msgstr "" -#: src/language/data-io/get.c:629 +#: src/language/data-io/get.c:627 #, c-format msgid "" "Cannot rename %s as %s because there already exists a variable named %s. To " @@ -1629,319 +1636,313 @@ msgid "" "as \"/RENAME (A=B)(B=C)(C=A)\", or equivalently, \"/RENAME (A B C=B C A)\"." msgstr "" -#: src/language/data-io/get.c:654 +#: src/language/data-io/get.c:652 msgid "`=' expected after variable list." msgstr "" -#: src/language/data-io/get.c:661 +#: src/language/data-io/get.c:659 #, c-format msgid "" "Number of variables on left side of `=' (%d) does not match number of " "variables on right side (%d), in parenthesized group %d of RENAME subcommand." msgstr "" -#: src/language/data-io/get.c:674 +#: src/language/data-io/get.c:672 #, c-format msgid "Requested renaming duplicates variable name %s." msgstr "" -#: src/language/data-io/get.c:704 +#: src/language/data-io/get.c:702 msgid "Cannot DROP all variables from dictionary." msgstr "" -#: src/language/data-io/get.c:883 +#: src/language/data-io/get.c:879 msgid "The active file may not be specified more than once." msgstr "" -#: src/language/data-io/get.c:892 +#: src/language/data-io/get.c:887 msgid "Cannot specify the active file since no active file has been defined." msgstr "" -#: src/language/data-io/get.c:900 +#: src/language/data-io/get.c:895 msgid "" "MATCH FILES may not be used after TEMPORARY when the active file is an input " "source. Temporary transformations will be made permanent." msgstr "" -#: src/language/data-io/get.c:938 +#: src/language/data-io/get.c:933 msgid "Multiple IN subcommands for a single FILE or TABLE." msgstr "" -#: src/language/data-io/get.c:958 +#: src/language/data-io/get.c:953 msgid "BY may appear at most once." msgstr "" -#: src/language/data-io/get.c:978 +#: src/language/data-io/get.c:973 #, c-format msgid "File %s lacks BY variable %s." msgstr "" -#: src/language/data-io/get.c:992 +#: src/language/data-io/get.c:987 msgid "FIRST may appear at most once." msgstr "" -#: src/language/data-io/get.c:1006 +#: src/language/data-io/get.c:1001 msgid "LAST may appear at most once." msgstr "" -#: src/language/data-io/get.c:1047 +#: src/language/data-io/get.c:1042 msgid "BY is required when TABLE is specified." msgstr "" -#: src/language/data-io/get.c:1052 +#: src/language/data-io/get.c:1047 msgid "BY is required when IN is specified." msgstr "" -#: src/language/data-io/get.c:1080 +#: src/language/data-io/get.c:1075 #, c-format msgid "IN variable name %s duplicates an existing variable name." msgstr "" -#: src/language/data-io/get.c:1535 +#: src/language/data-io/get.c:1530 #, c-format msgid "" "Variable %s in file %s (%s) has different type or width from the same " "variable in earlier file (%s)." msgstr "" -#: src/language/data-io/inpt-pgm.c:85 -msgid "No matching INPUT PROGRAM command." +#: src/language/data-io/inpt-pgm.c:98 +msgid "Unexpected end-of-file within INPUT PROGRAM." msgstr "" -#: src/language/data-io/inpt-pgm.c:90 +#: src/language/data-io/inpt-pgm.c:107 msgid "" "No data-input or transformation commands specified between INPUT PROGRAM and " "END INPUT PROGRAM." msgstr "" -#: src/language/data-io/inpt-pgm.c:292 src/language/data-io/inpt-pgm.c:411 -msgid "" -"This command may only be executed between INPUT PROGRAM and END INPUT " -"PROGRAM." -msgstr "" - -#: src/language/data-io/inpt-pgm.c:336 +#: src/language/data-io/inpt-pgm.c:354 msgid "COLUMN subcommand multiply specified." msgstr "" -#: src/language/data-io/inpt-pgm.c:384 +#: src/language/data-io/inpt-pgm.c:402 msgid "" "REREAD: Column numbers must be positive finite numbers. Column set to 1." msgstr "" -#: src/language/data-io/list.q:151 src/language/stats/descriptives.c:356 +#: src/language/data-io/list.q:149 src/language/stats/descriptives.c:356 msgid "No variables specified." msgstr "" -#: src/language/data-io/list.q:159 +#: src/language/data-io/list.q:157 #, 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:167 +#: src/language/data-io/list.q:165 #, 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:173 +#: src/language/data-io/list.q:171 #, 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:179 +#: src/language/data-io/list.q:177 #, 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:205 +#: src/language/data-io/list.q:203 msgid "`/FORMAT WEIGHT' specified, but weighting is not on." msgstr "" -#: src/language/data-io/list.q:432 +#: src/language/data-io/list.q:430 msgid "Line" msgstr "" -#: src/language/data-io/matrix-data.c:213 +#: src/language/data-io/matrix-data.c:211 msgid "VARIABLES subcommand multiply specified." msgstr "" -#: src/language/data-io/matrix-data.c:228 +#: src/language/data-io/matrix-data.c:226 msgid "VARNAME_ cannot be explicitly specified on VARIABLES." msgstr "" -#: src/language/data-io/matrix-data.c:289 +#: src/language/data-io/matrix-data.c:287 msgid "in FORMAT subcommand" msgstr "" -#: src/language/data-io/matrix-data.c:300 +#: src/language/data-io/matrix-data.c:298 msgid "SPLIT subcommand multiply specified." msgstr "" -#: src/language/data-io/matrix-data.c:307 +#: src/language/data-io/matrix-data.c:305 msgid "in SPLIT subcommand" msgstr "" -#: src/language/data-io/matrix-data.c:317 +#: src/language/data-io/matrix-data.c:315 msgid "Split variable may not be named ROWTYPE_ or VARNAME_." msgstr "" -#: src/language/data-io/matrix-data.c:351 +#: src/language/data-io/matrix-data.c:349 #, c-format msgid "Split variable %s is already another type." msgstr "" -#: src/language/data-io/matrix-data.c:366 +#: src/language/data-io/matrix-data.c:364 msgid "FACTORS subcommand multiply specified." msgstr "" -#: src/language/data-io/matrix-data.c:385 +#: src/language/data-io/matrix-data.c:383 #, c-format msgid "Factor variable %s is already another type." msgstr "" -#: src/language/data-io/matrix-data.c:400 +#: src/language/data-io/matrix-data.c:398 msgid "CELLS subcommand multiply specified." msgstr "" -#: src/language/data-io/matrix-data.c:406 -#: src/language/data-io/matrix-data.c:425 +#: src/language/data-io/matrix-data.c:404 +#: src/language/data-io/matrix-data.c:423 msgid "expecting positive integer" msgstr "" -#: src/language/data-io/matrix-data.c:419 +#: src/language/data-io/matrix-data.c:417 msgid "N subcommand multiply specified." msgstr "" -#: src/language/data-io/matrix-data.c:440 +#: src/language/data-io/matrix-data.c:438 msgid "CONTENTS subcommand multiply specified." msgstr "" -#: src/language/data-io/matrix-data.c:460 +#: src/language/data-io/matrix-data.c:458 msgid "Nested parentheses not allowed." msgstr "" -#: src/language/data-io/matrix-data.c:470 +#: src/language/data-io/matrix-data.c:468 msgid "Mismatched right parenthesis (`(')." msgstr "" -#: src/language/data-io/matrix-data.c:475 +#: src/language/data-io/matrix-data.c:473 msgid "Empty parentheses not allowed." msgstr "" -#: src/language/data-io/matrix-data.c:488 -#: src/language/data-io/matrix-data.c:496 +#: src/language/data-io/matrix-data.c:486 +#: src/language/data-io/matrix-data.c:494 msgid "in CONTENTS subcommand" msgstr "" -#: src/language/data-io/matrix-data.c:503 +#: src/language/data-io/matrix-data.c:501 #, c-format msgid "Content multiply specified for %s." msgstr "" -#: src/language/data-io/matrix-data.c:520 +#: src/language/data-io/matrix-data.c:518 msgid "Missing right parenthesis." msgstr "" -#: src/language/data-io/matrix-data.c:540 +#: src/language/data-io/matrix-data.c:538 msgid "Missing VARIABLES subcommand." msgstr "" -#: src/language/data-io/matrix-data.c:546 +#: src/language/data-io/matrix-data.c:544 msgid "" "CONTENTS subcommand not specified: assuming file contains only CORR matrix." msgstr "" -#: src/language/data-io/matrix-data.c:556 +#: src/language/data-io/matrix-data.c:554 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:564 +#: src/language/data-io/matrix-data.c:562 msgid "Split file values must be present in the data when ROWTYPE_ is present." msgstr "" -#: src/language/data-io/matrix-data.c:617 +#: src/language/data-io/matrix-data.c:615 msgid "No continuous variables specified." msgstr "" -#: src/language/data-io/matrix-data.c:860 +#: src/language/data-io/matrix-data.c:858 msgid "Scope of string exceeds line." msgstr "" -#: src/language/data-io/matrix-data.c:925 +#: src/language/data-io/matrix-data.c:923 #, c-format msgid "End of line expected %s while reading %s." msgstr "" -#: src/language/data-io/matrix-data.c:1115 +#: src/language/data-io/matrix-data.c:1113 #, c-format msgid "expecting value for %s %s" msgstr "" -#: src/language/data-io/matrix-data.c:1281 +#: src/language/data-io/matrix-data.c:1278 #, c-format msgid "Syntax error expecting SPLIT FILE value %s." msgstr "" -#: src/language/data-io/matrix-data.c:1290 +#: src/language/data-io/matrix-data.c:1287 #, c-format msgid "Expecting value %g for %s." msgstr "" -#: src/language/data-io/matrix-data.c:1331 -#: src/language/data-io/matrix-data.c:1811 +#: src/language/data-io/matrix-data.c:1328 +#: src/language/data-io/matrix-data.c:1805 #, c-format msgid "Syntax error expecting factor value %s." msgstr "" -#: src/language/data-io/matrix-data.c:1340 +#: src/language/data-io/matrix-data.c:1337 #, c-format msgid "Syntax error expecting value %g for %s %s." msgstr "" -#: src/language/data-io/matrix-data.c:1587 +#: src/language/data-io/matrix-data.c:1581 #, c-format msgid "Syntax error %s expecting SPLIT FILE value." msgstr "" -#: src/language/data-io/matrix-data.c:1716 +#: src/language/data-io/matrix-data.c:1710 #, 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:1753 +#: src/language/data-io/matrix-data.c:1747 #, c-format msgid "Multiply specified ROWTYPE_ %s." msgstr "" -#: src/language/data-io/matrix-data.c:1758 +#: src/language/data-io/matrix-data.c:1752 #, c-format msgid "Syntax error %s expecting ROWTYPE_ string." msgstr "" -#: src/language/data-io/matrix-data.c:1778 +#: src/language/data-io/matrix-data.c:1772 #, c-format msgid "Syntax error %s." msgstr "" -#: src/language/data-io/matrix-data.c:1929 +#: src/language/data-io/matrix-data.c:1923 #, c-format msgid "Duplicate specification for %s." msgstr "" -#: src/language/data-io/matrix-data.c:1941 +#: src/language/data-io/matrix-data.c:1935 #, c-format msgid "Too many rows of matrix data for %s." msgstr "" -#: src/language/data-io/matrix-data.c:1989 +#: src/language/data-io/matrix-data.c:1981 #, c-format msgid "Syntax error expecting value for %s %s." msgstr "" @@ -2005,62 +2006,62 @@ msgid_plural "Writing %d records." msgstr[0] "" msgstr[1] "" -#: src/language/data-io/print.c:1091 +#: src/language/data-io/print.c:1078 msgid "The expression on PRINT SPACE evaluated to the system-missing value." msgstr "" -#: src/language/data-io/print.c:1094 +#: src/language/data-io/print.c:1081 #, c-format msgid "The expression on PRINT SPACE evaluated to %g." msgstr "" -#: src/language/dictionary/apply-dictionary.c:71 +#: src/language/dictionary/apply-dictionary.c:70 #, c-format msgid "Variable %s is %s in target file, but %s in source file." msgstr "" -#: src/language/dictionary/apply-dictionary.c:87 +#: src/language/dictionary/apply-dictionary.c:86 #, c-format msgid "Cannot add value labels from source file to long string variable %s." msgstr "" -#: src/language/dictionary/apply-dictionary.c:133 +#: src/language/dictionary/apply-dictionary.c:132 #, c-format msgid "" "Cannot apply missing values from source file to long string variable %s." msgstr "" -#: src/language/dictionary/apply-dictionary.c:153 +#: src/language/dictionary/apply-dictionary.c:152 msgid "No matching variables found between the source and target files." msgstr "" -#: src/language/dictionary/formats.c:89 +#: src/language/dictionary/formats.c:87 msgid "`(' expected after variable list" msgstr "" -#: src/language/dictionary/formats.c:99 src/language/dictionary/numeric.c:68 -#: src/language/dictionary/numeric.c:139 +#: src/language/dictionary/formats.c:97 src/language/dictionary/numeric.c:66 +#: src/language/dictionary/numeric.c:137 msgid "`)' expected after output format." msgstr "" -#: src/language/dictionary/missing-values.c:55 -#: src/language/stats/aggregate.c:432 +#: src/language/dictionary/missing-values.c:53 +#: src/language/stats/aggregate.c:434 msgid "expecting `('" msgstr "" -#: src/language/dictionary/missing-values.c:71 +#: src/language/dictionary/missing-values.c:69 #, c-format msgid "" "Cannot mix numeric variables (e.g. %s) and string variables (e.g. %s) within " "a single list." msgstr "" -#: src/language/dictionary/missing-values.c:111 +#: src/language/dictionary/missing-values.c:109 #, c-format msgid "Truncating missing value to short string length (%d characters)." msgstr "" -#: src/language/dictionary/missing-values.c:130 +#: src/language/dictionary/missing-values.c:128 #, c-format msgid "Missing values provided are too long to assign to variable of width %d." msgstr "" @@ -2137,18 +2138,18 @@ msgstr "" msgid "`/' or `.' expected." msgstr "" -#: src/language/dictionary/numeric.c:61 +#: src/language/dictionary/numeric.c:59 #, c-format msgid "Format type %s may not be used with a numeric variable." msgstr "" -#: src/language/dictionary/numeric.c:80 src/language/dictionary/numeric.c:162 +#: src/language/dictionary/numeric.c:78 src/language/dictionary/numeric.c:160 #: src/language/dictionary/vector.c:159 #, c-format msgid "There is already a variable named %s." msgstr "" -#: src/language/dictionary/numeric.c:132 +#: src/language/dictionary/numeric.c:130 #, c-format msgid "Format type %s may not be used with a string variable." msgstr "" @@ -2183,179 +2184,179 @@ msgstr "" msgid "Renaming would duplicate variable name %s." msgstr "" -#: src/language/dictionary/sys-file-info.c:100 +#: src/language/dictionary/sys-file-info.c:101 msgid "File:" msgstr "" -#: src/language/dictionary/sys-file-info.c:102 +#: src/language/dictionary/sys-file-info.c:103 msgid "Label:" msgstr "" -#: src/language/dictionary/sys-file-info.c:106 +#: src/language/dictionary/sys-file-info.c:107 msgid "No label." msgstr "" -#: src/language/dictionary/sys-file-info.c:109 +#: src/language/dictionary/sys-file-info.c:110 msgid "Created:" msgstr "" -#: src/language/dictionary/sys-file-info.c:112 +#: src/language/dictionary/sys-file-info.c:113 msgid "Endian:" msgstr "" -#: src/language/dictionary/sys-file-info.c:113 +#: src/language/dictionary/sys-file-info.c:114 msgid "Big." msgstr "" -#: src/language/dictionary/sys-file-info.c:113 +#: src/language/dictionary/sys-file-info.c:114 msgid "Little." msgstr "" -#: src/language/dictionary/sys-file-info.c:114 +#: src/language/dictionary/sys-file-info.c:115 msgid "Variables:" msgstr "" -#: src/language/dictionary/sys-file-info.c:117 +#: src/language/dictionary/sys-file-info.c:118 msgid "Cases:" msgstr "" -#: src/language/dictionary/sys-file-info.c:120 +#: src/language/dictionary/sys-file-info.c:121 msgid "Type:" msgstr "" -#: src/language/dictionary/sys-file-info.c:121 +#: src/language/dictionary/sys-file-info.c:122 msgid "System File." msgstr "" -#: src/language/dictionary/sys-file-info.c:122 +#: src/language/dictionary/sys-file-info.c:123 msgid "Weight:" msgstr "" -#: src/language/dictionary/sys-file-info.c:126 +#: src/language/dictionary/sys-file-info.c:127 msgid "Not weighted." msgstr "" -#: src/language/dictionary/sys-file-info.c:128 +#: src/language/dictionary/sys-file-info.c:129 msgid "Mode:" msgstr "" -#: src/language/dictionary/sys-file-info.c:130 +#: src/language/dictionary/sys-file-info.c:131 #, c-format msgid "Compression %s." msgstr "" -#: src/language/dictionary/sys-file-info.c:130 +#: src/language/dictionary/sys-file-info.c:131 msgid "on" msgstr "" -#: src/language/dictionary/sys-file-info.c:130 +#: src/language/dictionary/sys-file-info.c:131 msgid "off" msgstr "" -#: src/language/dictionary/sys-file-info.c:140 -#: src/language/dictionary/sys-file-info.c:378 +#: src/language/dictionary/sys-file-info.c:141 +#: src/language/dictionary/sys-file-info.c:379 msgid "Description" msgstr "" -#: src/language/dictionary/sys-file-info.c:141 -#: src/language/dictionary/sys-file-info.c:376 +#: src/language/dictionary/sys-file-info.c:142 +#: src/language/dictionary/sys-file-info.c:377 msgid "Position" msgstr "" -#: src/language/dictionary/sys-file-info.c:199 +#: src/language/dictionary/sys-file-info.c:200 msgid "The active file does not have a file label." msgstr "" -#: src/language/dictionary/sys-file-info.c:202 +#: src/language/dictionary/sys-file-info.c:203 msgid "File label:" msgstr "" -#: src/language/dictionary/sys-file-info.c:264 +#: src/language/dictionary/sys-file-info.c:265 msgid "No variables to display." msgstr "" -#: src/language/dictionary/sys-file-info.c:283 +#: src/language/dictionary/sys-file-info.c:284 msgid "Macros not supported." msgstr "" -#: src/language/dictionary/sys-file-info.c:293 +#: src/language/dictionary/sys-file-info.c:294 msgid "The active file dictionary does not contain any documents." msgstr "" -#: src/language/dictionary/sys-file-info.c:302 +#: src/language/dictionary/sys-file-info.c:303 msgid "Documents in the active file:" msgstr "" -#: src/language/dictionary/sys-file-info.c:380 -#: src/language/dictionary/sys-file-info.c:519 src/procedure.c:888 +#: src/language/dictionary/sys-file-info.c:381 +#: src/language/dictionary/sys-file-info.c:520 src/procedure.c:880 #: src/ui/gui/var-sheet.c:71 msgid "Label" msgstr "" -#: src/language/dictionary/sys-file-info.c:452 +#: src/language/dictionary/sys-file-info.c:453 #, c-format msgid "Format: %s" msgstr "" -#: src/language/dictionary/sys-file-info.c:459 +#: src/language/dictionary/sys-file-info.c:460 #, c-format msgid "Print Format: %s" msgstr "" -#: src/language/dictionary/sys-file-info.c:462 +#: src/language/dictionary/sys-file-info.c:463 #, c-format msgid "Write Format: %s" msgstr "" -#: src/language/dictionary/sys-file-info.c:474 +#: src/language/dictionary/sys-file-info.c:475 msgid "Missing Values: " msgstr "" -#: src/language/dictionary/sys-file-info.c:518 -#: src/language/stats/crosstabs.q:1111 src/language/stats/crosstabs.q:1138 -#: src/language/stats/crosstabs.q:1158 src/language/stats/crosstabs.q:1180 -#: src/language/stats/examine.q:1138 src/language/stats/frequencies.q:1146 -#: src/language/stats/frequencies.q:1267 src/procedure.c:887 +#: src/language/dictionary/sys-file-info.c:519 +#: src/language/stats/crosstabs.q:1109 src/language/stats/crosstabs.q:1136 +#: src/language/stats/crosstabs.q:1156 src/language/stats/crosstabs.q:1178 +#: src/language/stats/examine.q:1141 src/language/stats/frequencies.q:1145 +#: src/language/stats/frequencies.q:1266 src/procedure.c:879 msgid "Value" msgstr "" -#: src/language/dictionary/sys-file-info.c:575 +#: src/language/dictionary/sys-file-info.c:576 msgid "No vectors defined." msgstr "" -#: src/language/dictionary/sys-file-info.c:590 +#: src/language/dictionary/sys-file-info.c:591 msgid "Vector" msgstr "" -#: src/language/dictionary/value-labels.c:121 +#: src/language/dictionary/value-labels.c:118 #, 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:157 src/language/lexer/lexer.c:590 +#: src/language/dictionary/value-labels.c:154 src/language/lexer/lexer.c:590 msgid "expecting string" msgstr "" -#: src/language/dictionary/value-labels.c:166 src/language/lexer/lexer.c:604 +#: src/language/dictionary/value-labels.c:163 src/language/lexer/lexer.c:604 msgid "expecting integer" msgstr "" -#: src/language/dictionary/value-labels.c:170 +#: src/language/dictionary/value-labels.c:167 #, c-format msgid "Value label `%g' is not integer." msgstr "" -#: src/language/dictionary/value-labels.c:180 +#: src/language/dictionary/value-labels.c:177 msgid "Truncating value label to 60 characters." msgstr "" -#: src/language/dictionary/variable-label.c:50 +#: src/language/dictionary/variable-label.c:48 msgid "String expected for variable label." msgstr "" -#: src/language/dictionary/variable-label.c:56 +#: src/language/dictionary/variable-label.c:54 msgid "Truncating variable label to 255 characters." msgstr "" @@ -2402,37 +2403,37 @@ msgstr "" msgid "expecting number or string" msgstr "" -#: src/language/expressions/helpers.c:36 +#: src/language/expressions/helpers.c:37 msgid "" "One of the arguments to a DATE function is not an integer. The result will " "be system-missing." msgstr "" -#: src/language/expressions/helpers.c:58 +#: src/language/expressions/helpers.c:59 msgid "" "The week argument to DATE.WKYR is not an integer. The result will be system-" "missing." msgstr "" -#: src/language/expressions/helpers.c:64 +#: src/language/expressions/helpers.c:65 msgid "" "The week argument to DATE.WKYR is outside the acceptable range of 1 to 53. " "The result will be system-missing." msgstr "" -#: src/language/expressions/helpers.c:86 +#: src/language/expressions/helpers.c:87 msgid "" "The day argument to DATE.YRDAY is not an integer. The result will be system-" "missing." msgstr "" -#: src/language/expressions/helpers.c:92 +#: src/language/expressions/helpers.c:93 msgid "" "The day argument to DATE.YRDAY is outside the acceptable range of 1 to 366. " "The result will be system-missing." msgstr "" -#: src/language/expressions/helpers.c:114 +#: src/language/expressions/helpers.c:115 msgid "" "The year argument to YRMODA is greater than 47516. The result will be " "system-missing." @@ -2480,7 +2481,7 @@ msgstr "" msgid "Unknown identifier %s." msgstr "" -#: src/language/expressions/parse.c:846 src/language/stats/aggregate.c:488 +#: src/language/expressions/parse.c:846 src/language/stats/aggregate.c:490 msgid "expecting `)'" msgstr "" @@ -2548,6 +2549,12 @@ msgstr "" msgid "%s is a PSPP extension." msgstr "" +#: src/language/expressions/parse.c:1222 src/ui/terminal/command-line.c:126 +#: src/ui/terminal/command-line.c:145 src/ui/terminal/command-line.c:157 +#, c-format +msgid "%s is not yet implemented." +msgstr "" + #: src/language/lexer/format-parser.c:66 msgid "X and T format specifiers not allowed here." msgstr "" @@ -2619,50 +2626,50 @@ msgstr "" msgid "expecting identifier" msgstr "" -#: src/language/lexer/lexer.c:842 +#: src/language/lexer/lexer.c:861 msgid "" msgstr "" -#: src/language/lexer/lexer.c:988 +#: src/language/lexer/lexer.c:1007 msgid "binary" msgstr "" -#: src/language/lexer/lexer.c:993 +#: src/language/lexer/lexer.c:1012 msgid "octal" msgstr "" -#: src/language/lexer/lexer.c:998 +#: src/language/lexer/lexer.c:1017 msgid "hex" msgstr "" -#: src/language/lexer/lexer.c:1008 +#: src/language/lexer/lexer.c:1027 #, c-format msgid "String of %s digits has %d characters, which is not a multiple of %d." msgstr "" -#: src/language/lexer/lexer.c:1037 +#: src/language/lexer/lexer.c:1056 #, c-format msgid "`%c' is not a valid %s digit." msgstr "" -#: src/language/lexer/lexer.c:1068 +#: src/language/lexer/lexer.c:1087 msgid "Unterminated string constant." msgstr "" -#: src/language/lexer/lexer.c:1122 +#: src/language/lexer/lexer.c:1141 msgid "Unexpected end of file in string concatenation." msgstr "" -#: src/language/lexer/lexer.c:1130 +#: src/language/lexer/lexer.c:1149 msgid "String expected following `+'." msgstr "" -#: src/language/lexer/lexer.c:1143 +#: src/language/lexer/lexer.c:1162 #, c-format msgid "String exceeds 255 characters in length (%d characters)." msgstr "" -#: src/language/lexer/lexer.c:1158 +#: src/language/lexer/lexer.c:1177 msgid "" "Sorry, literal strings may not contain null characters. Replacing with " "spaces." @@ -2759,79 +2766,79 @@ msgstr "" msgid "Bad bounds in use of TO convention." msgstr "" -#: src/language/line-buffer.c:246 +#: src/language/line-buffer.c:250 #, c-format msgid "Can't find `%s' in include file search path." msgstr "" -#: src/language/line-buffer.c:330 +#: src/language/line-buffer.c:334 #, c-format msgid "Closing `%s': %s." msgstr "" -#: src/language/line-buffer.c:441 +#: src/language/line-buffer.c:445 #, c-format -msgid "%s: Opening as syntax file." +msgid "opening \"%s\" as syntax file" msgstr "" -#: src/language/line-buffer.c:446 +#: src/language/line-buffer.c:450 #, c-format msgid "Opening `%s': %s." msgstr "" -#: src/language/line-buffer.c:459 +#: src/language/line-buffer.c:463 #, c-format msgid "Reading `%s': %s." msgstr "" -#: src/language/stats/aggregate.c:198 +#: src/language/stats/aggregate.c:200 msgid "while expecting COLUMNWISE" msgstr "" -#: src/language/stats/aggregate.c:227 +#: src/language/stats/aggregate.c:229 msgid "expecting BREAK" msgstr "" -#: src/language/stats/aggregate.c:232 +#: src/language/stats/aggregate.c:234 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:401 +#: src/language/stats/aggregate.c:403 msgid "expecting aggregation function" msgstr "" -#: src/language/stats/aggregate.c:417 +#: src/language/stats/aggregate.c:419 #, c-format msgid "Unknown aggregation function %s." msgstr "" -#: src/language/stats/aggregate.c:469 +#: src/language/stats/aggregate.c:471 #, c-format msgid "Missing argument %d to %s." msgstr "" -#: src/language/stats/aggregate.c:478 +#: src/language/stats/aggregate.c:480 #, c-format msgid "Arguments to %s must be of same type as source variables." msgstr "" -#: src/language/stats/aggregate.c:500 +#: src/language/stats/aggregate.c:502 #, c-format msgid "" "Number of source variables (%u) does not match number of target variables (%" "u)." msgstr "" -#: src/language/stats/aggregate.c:516 +#: src/language/stats/aggregate.c:518 #, 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:583 +#: src/language/stats/aggregate.c:585 #, c-format msgid "" "Variable name %s is not unique within the aggregate file dictionary, which " @@ -2853,311 +2860,311 @@ msgstr "" msgid "Duplicate variable name %s among target variables." msgstr "" -#: src/language/stats/crosstabs.q:267 +#: src/language/stats/crosstabs.q:265 msgid "" "Missing mode REPORT not allowed in general mode. Assuming MISSING=TABLE." msgstr "" -#: src/language/stats/crosstabs.q:277 +#: src/language/stats/crosstabs.q:275 msgid "Write mode ALL not allowed in general mode. Assuming WRITE=CELLS." msgstr "" -#: src/language/stats/crosstabs.q:333 +#: src/language/stats/crosstabs.q:331 msgid "Too many crosstabulation variables or dimensions." msgstr "" -#: src/language/stats/crosstabs.q:343 +#: src/language/stats/crosstabs.q:341 msgid "expecting BY" msgstr "" -#: src/language/stats/crosstabs.q:410 +#: src/language/stats/crosstabs.q:408 msgid "VARIABLES must be specified before TABLES." msgstr "" -#: src/language/stats/crosstabs.q:447 +#: src/language/stats/crosstabs.q:445 #, c-format msgid "Maximum value (%ld) less than minimum value (%ld)." msgstr "" -#: src/language/stats/crosstabs.q:812 +#: src/language/stats/crosstabs.q:810 msgid "Summary." msgstr "" -#: src/language/stats/crosstabs.q:814 src/language/stats/examine.q:923 +#: src/language/stats/crosstabs.q:812 src/language/stats/examine.q:926 msgid "Cases" msgstr "" -#: src/language/stats/crosstabs.q:815 src/language/stats/examine.q:857 -#: src/language/stats/frequencies.q:1144 src/language/stats/frequencies.q:1517 +#: src/language/stats/crosstabs.q:813 src/language/stats/examine.q:860 +#: src/language/stats/frequencies.q:1143 src/language/stats/frequencies.q:1516 msgid "Valid" msgstr "" -#: src/language/stats/crosstabs.q:816 src/language/stats/examine.q:858 -#: src/language/stats/frequencies.q:1212 src/language/stats/frequencies.q:1518 +#: src/language/stats/crosstabs.q:814 src/language/stats/examine.q:861 +#: src/language/stats/frequencies.q:1211 src/language/stats/frequencies.q:1517 #: src/ui/gui/var-sheet.c:73 msgid "Missing" msgstr "" -#: src/language/stats/crosstabs.q:817 src/language/stats/crosstabs.q:1020 -#: src/language/stats/crosstabs.q:1740 src/language/stats/examine.q:859 -#: src/language/stats/frequencies.q:1221 src/language/stats/oneway.q:314 -#: src/language/stats/oneway.q:478 src/language/stats/regression.q:294 +#: src/language/stats/crosstabs.q:815 src/language/stats/crosstabs.q:1018 +#: src/language/stats/crosstabs.q:1738 src/language/stats/examine.q:862 +#: src/language/stats/frequencies.q:1220 src/language/stats/oneway.q:314 +#: src/language/stats/oneway.q:478 src/language/stats/regression.q:308 msgid "Total" msgstr "" -#: src/language/stats/crosstabs.q:827 src/language/stats/examine.q:935 -#: src/language/stats/frequencies.q:1516 src/language/stats/oneway.q:400 +#: src/language/stats/crosstabs.q:825 src/language/stats/examine.q:938 +#: src/language/stats/frequencies.q:1515 src/language/stats/oneway.q:400 #: src/language/stats/t-test.q:682 src/language/stats/t-test.q:705 #: src/language/stats/t-test.q:830 src/language/stats/t-test.q:1365 msgid "N" msgstr "" -#: src/language/stats/crosstabs.q:828 src/language/stats/examine.q:938 -#: src/language/stats/frequencies.q:1148 src/language/stats/frequencies.q:1149 -#: src/language/stats/frequencies.q:1150 +#: src/language/stats/crosstabs.q:826 src/language/stats/examine.q:941 +#: src/language/stats/frequencies.q:1147 src/language/stats/frequencies.q:1148 +#: src/language/stats/frequencies.q:1149 msgid "Percent" msgstr "" -#: src/language/stats/crosstabs.q:1070 +#: src/language/stats/crosstabs.q:1068 msgid "count" msgstr "" -#: src/language/stats/crosstabs.q:1071 +#: src/language/stats/crosstabs.q:1069 msgid "row %" msgstr "" -#: src/language/stats/crosstabs.q:1072 +#: src/language/stats/crosstabs.q:1070 msgid "column %" msgstr "" -#: src/language/stats/crosstabs.q:1073 +#: src/language/stats/crosstabs.q:1071 msgid "total %" msgstr "" -#: src/language/stats/crosstabs.q:1074 +#: src/language/stats/crosstabs.q:1072 msgid "expected" msgstr "" -#: src/language/stats/crosstabs.q:1075 +#: src/language/stats/crosstabs.q:1073 msgid "residual" msgstr "" -#: src/language/stats/crosstabs.q:1076 +#: src/language/stats/crosstabs.q:1074 msgid "std. resid." msgstr "" -#: src/language/stats/crosstabs.q:1077 +#: src/language/stats/crosstabs.q:1075 msgid "adj. resid." msgstr "" -#: src/language/stats/crosstabs.q:1107 +#: src/language/stats/crosstabs.q:1105 msgid "Chi-square tests." msgstr "" -#: src/language/stats/crosstabs.q:1110 src/language/stats/crosstabs.q:1137 -#: src/language/stats/crosstabs.q:1157 src/language/stats/crosstabs.q:1178 -#: src/language/stats/examine.q:1369 +#: src/language/stats/crosstabs.q:1108 src/language/stats/crosstabs.q:1135 +#: src/language/stats/crosstabs.q:1155 src/language/stats/crosstabs.q:1176 +#: src/language/stats/examine.q:1372 msgid "Statistic" msgstr "" -#: src/language/stats/crosstabs.q:1112 src/language/stats/oneway.q:287 -#: src/language/stats/oneway.q:690 src/language/stats/regression.q:287 +#: src/language/stats/crosstabs.q:1110 src/language/stats/oneway.q:287 +#: src/language/stats/oneway.q:690 src/language/stats/regression.q:301 #: src/language/stats/t-test.q:980 src/language/stats/t-test.q:1172 #: src/language/stats/t-test.q:1264 msgid "df" msgstr "" -#: src/language/stats/crosstabs.q:1114 +#: src/language/stats/crosstabs.q:1112 msgid "Asymp. Sig. (2-sided)" msgstr "" -#: src/language/stats/crosstabs.q:1116 +#: src/language/stats/crosstabs.q:1114 msgid "Exact. Sig. (2-sided)" msgstr "" -#: src/language/stats/crosstabs.q:1118 +#: src/language/stats/crosstabs.q:1116 msgid "Exact. Sig. (1-sided)" msgstr "" -#: src/language/stats/crosstabs.q:1133 +#: src/language/stats/crosstabs.q:1131 msgid "Symmetric measures." msgstr "" -#: src/language/stats/crosstabs.q:1136 src/language/stats/crosstabs.q:1177 +#: src/language/stats/crosstabs.q:1134 src/language/stats/crosstabs.q:1175 msgid "Category" msgstr "" -#: src/language/stats/crosstabs.q:1139 src/language/stats/crosstabs.q:1181 +#: src/language/stats/crosstabs.q:1137 src/language/stats/crosstabs.q:1179 msgid "Asymp. Std. Error" msgstr "" -#: src/language/stats/crosstabs.q:1140 src/language/stats/crosstabs.q:1182 +#: src/language/stats/crosstabs.q:1138 src/language/stats/crosstabs.q:1180 msgid "Approx. T" msgstr "" -#: src/language/stats/crosstabs.q:1141 src/language/stats/crosstabs.q:1183 +#: src/language/stats/crosstabs.q:1139 src/language/stats/crosstabs.q:1181 msgid "Approx. Sig." msgstr "" -#: src/language/stats/crosstabs.q:1152 +#: src/language/stats/crosstabs.q:1150 msgid "Risk estimate." msgstr "" -#: src/language/stats/crosstabs.q:1156 +#: src/language/stats/crosstabs.q:1154 #, c-format msgid "95%% Confidence Interval" msgstr "" -#: src/language/stats/crosstabs.q:1159 src/language/stats/t-test.q:984 +#: src/language/stats/crosstabs.q:1157 src/language/stats/t-test.q:984 #: src/language/stats/t-test.q:1169 src/language/stats/t-test.q:1267 msgid "Lower" msgstr "" -#: src/language/stats/crosstabs.q:1160 src/language/stats/t-test.q:985 +#: src/language/stats/crosstabs.q:1158 src/language/stats/t-test.q:985 #: src/language/stats/t-test.q:1170 src/language/stats/t-test.q:1268 msgid "Upper" msgstr "" -#: src/language/stats/crosstabs.q:1174 +#: src/language/stats/crosstabs.q:1172 msgid "Directional measures." msgstr "" -#: src/language/stats/crosstabs.q:1179 src/ui/gui/var-sheet.c:68 +#: src/language/stats/crosstabs.q:1177 src/ui/gui/var-sheet.c:68 msgid "Type" msgstr "" -#: src/language/stats/crosstabs.q:1935 +#: src/language/stats/crosstabs.q:1933 msgid "Pearson Chi-Square" msgstr "" -#: src/language/stats/crosstabs.q:1936 +#: src/language/stats/crosstabs.q:1934 msgid "Likelihood Ratio" msgstr "" -#: src/language/stats/crosstabs.q:1937 +#: src/language/stats/crosstabs.q:1935 msgid "Fisher's Exact Test" msgstr "" -#: src/language/stats/crosstabs.q:1938 +#: src/language/stats/crosstabs.q:1936 msgid "Continuity Correction" msgstr "" -#: src/language/stats/crosstabs.q:1939 +#: src/language/stats/crosstabs.q:1937 msgid "Linear-by-Linear Association" msgstr "" -#: src/language/stats/crosstabs.q:1976 src/language/stats/crosstabs.q:2046 -#: src/language/stats/crosstabs.q:2105 +#: src/language/stats/crosstabs.q:1974 src/language/stats/crosstabs.q:2044 +#: src/language/stats/crosstabs.q:2103 msgid "N of Valid Cases" msgstr "" -#: src/language/stats/crosstabs.q:1992 src/language/stats/crosstabs.q:2121 +#: src/language/stats/crosstabs.q:1990 src/language/stats/crosstabs.q:2119 msgid "Nominal by Nominal" msgstr "" -#: src/language/stats/crosstabs.q:1993 src/language/stats/crosstabs.q:2122 +#: src/language/stats/crosstabs.q:1991 src/language/stats/crosstabs.q:2120 msgid "Ordinal by Ordinal" msgstr "" -#: src/language/stats/crosstabs.q:1994 +#: src/language/stats/crosstabs.q:1992 msgid "Interval by Interval" msgstr "" -#: src/language/stats/crosstabs.q:1995 +#: src/language/stats/crosstabs.q:1993 msgid "Measure of Agreement" msgstr "" -#: src/language/stats/crosstabs.q:2000 +#: src/language/stats/crosstabs.q:1998 msgid "Phi" msgstr "" -#: src/language/stats/crosstabs.q:2001 +#: src/language/stats/crosstabs.q:1999 msgid "Cramer's V" msgstr "" -#: src/language/stats/crosstabs.q:2002 +#: src/language/stats/crosstabs.q:2000 msgid "Contingency Coefficient" msgstr "" -#: src/language/stats/crosstabs.q:2003 +#: src/language/stats/crosstabs.q:2001 msgid "Kendall's tau-b" msgstr "" -#: src/language/stats/crosstabs.q:2004 +#: src/language/stats/crosstabs.q:2002 msgid "Kendall's tau-c" msgstr "" -#: src/language/stats/crosstabs.q:2005 +#: src/language/stats/crosstabs.q:2003 msgid "Gamma" msgstr "" -#: src/language/stats/crosstabs.q:2006 +#: src/language/stats/crosstabs.q:2004 msgid "Spearman Correlation" msgstr "" -#: src/language/stats/crosstabs.q:2007 +#: src/language/stats/crosstabs.q:2005 msgid "Pearson's R" msgstr "" -#: src/language/stats/crosstabs.q:2008 +#: src/language/stats/crosstabs.q:2006 msgid "Kappa" msgstr "" -#: src/language/stats/crosstabs.q:2078 +#: src/language/stats/crosstabs.q:2076 #, c-format msgid "Odds Ratio for %s (%g / %g)" msgstr "" -#: src/language/stats/crosstabs.q:2081 +#: src/language/stats/crosstabs.q:2079 #, c-format msgid "Odds Ratio for %s (%.*s / %.*s)" msgstr "" -#: src/language/stats/crosstabs.q:2089 +#: src/language/stats/crosstabs.q:2087 #, c-format msgid "For cohort %s = %g" msgstr "" -#: src/language/stats/crosstabs.q:2092 +#: src/language/stats/crosstabs.q:2090 #, c-format msgid "For cohort %s = %.*s" msgstr "" -#: src/language/stats/crosstabs.q:2123 +#: src/language/stats/crosstabs.q:2121 msgid "Nominal by Interval" msgstr "" -#: src/language/stats/crosstabs.q:2128 +#: src/language/stats/crosstabs.q:2126 msgid "Lambda" msgstr "" -#: src/language/stats/crosstabs.q:2129 +#: src/language/stats/crosstabs.q:2127 msgid "Goodman and Kruskal tau" msgstr "" -#: src/language/stats/crosstabs.q:2130 +#: src/language/stats/crosstabs.q:2128 msgid "Uncertainty Coefficient" msgstr "" -#: src/language/stats/crosstabs.q:2131 +#: src/language/stats/crosstabs.q:2129 msgid "Somers' d" msgstr "" -#: src/language/stats/crosstabs.q:2132 +#: src/language/stats/crosstabs.q:2130 msgid "Eta" msgstr "" -#: src/language/stats/crosstabs.q:2137 +#: src/language/stats/crosstabs.q:2135 msgid "Symmetric" msgstr "" -#: src/language/stats/crosstabs.q:2138 src/language/stats/crosstabs.q:2139 +#: src/language/stats/crosstabs.q:2136 src/language/stats/crosstabs.q:2137 #, c-format msgid "%s Dependent" msgstr "" -#: src/language/stats/descriptives.c:103 src/language/stats/examine.q:1474 -#: src/language/stats/frequencies.q:120 src/language/stats/oneway.q:401 +#: src/language/stats/descriptives.c:103 src/language/stats/examine.q:1477 +#: src/language/stats/frequencies.q:119 src/language/stats/oneway.q:401 #: src/language/stats/t-test.q:683 src/language/stats/t-test.q:706 #: src/language/stats/t-test.q:829 src/language/stats/t-test.q:1166 msgid "Mean" @@ -3167,17 +3174,17 @@ msgstr "" msgid "S E Mean" msgstr "" -#: src/language/stats/descriptives.c:105 src/language/stats/frequencies.q:124 +#: src/language/stats/descriptives.c:105 src/language/stats/frequencies.q:123 msgid "Std Dev" msgstr "" -#: src/language/stats/descriptives.c:106 src/language/stats/examine.q:1554 -#: src/language/stats/frequencies.q:125 +#: src/language/stats/descriptives.c:106 src/language/stats/examine.q:1557 +#: src/language/stats/frequencies.q:124 msgid "Variance" msgstr "" -#: src/language/stats/descriptives.c:107 src/language/stats/examine.q:1661 -#: src/language/stats/frequencies.q:126 +#: src/language/stats/descriptives.c:107 src/language/stats/examine.q:1664 +#: src/language/stats/frequencies.q:125 msgid "Kurtosis" msgstr "" @@ -3185,8 +3192,8 @@ msgstr "" msgid "S E Kurt" msgstr "" -#: src/language/stats/descriptives.c:109 src/language/stats/examine.q:1641 -#: src/language/stats/frequencies.q:128 +#: src/language/stats/descriptives.c:109 src/language/stats/examine.q:1644 +#: src/language/stats/frequencies.q:127 msgid "Skewness" msgstr "" @@ -3194,22 +3201,22 @@ msgstr "" msgid "S E Skew" msgstr "" -#: src/language/stats/descriptives.c:111 src/language/stats/examine.q:1602 -#: src/language/stats/frequencies.q:130 +#: src/language/stats/descriptives.c:111 src/language/stats/examine.q:1605 +#: src/language/stats/frequencies.q:129 msgid "Range" msgstr "" -#: src/language/stats/descriptives.c:112 src/language/stats/examine.q:1579 -#: src/language/stats/frequencies.q:131 src/language/stats/oneway.q:413 +#: src/language/stats/descriptives.c:112 src/language/stats/examine.q:1582 +#: src/language/stats/frequencies.q:130 src/language/stats/oneway.q:413 msgid "Minimum" msgstr "" -#: src/language/stats/descriptives.c:113 src/language/stats/examine.q:1590 -#: src/language/stats/frequencies.q:132 src/language/stats/oneway.q:414 +#: src/language/stats/descriptives.c:113 src/language/stats/examine.q:1593 +#: src/language/stats/frequencies.q:131 src/language/stats/oneway.q:414 msgid "Maximum" msgstr "" -#: src/language/stats/descriptives.c:114 src/language/stats/frequencies.q:133 +#: src/language/stats/descriptives.c:114 src/language/stats/frequencies.q:132 msgid "Sum" msgstr "" @@ -3257,109 +3264,109 @@ msgstr "" msgid "Valid cases = %g; cases with missing value(s) = %g." msgstr "" -#: src/language/stats/examine.q:478 src/language/stats/examine.q:490 +#: src/language/stats/examine.q:481 src/language/stats/examine.q:493 #, c-format msgid "%s and %s are mutually exclusive" msgstr "" -#: src/language/stats/examine.q:917 +#: src/language/stats/examine.q:920 msgid "Case Processing Summary" msgstr "" -#: src/language/stats/examine.q:1123 +#: src/language/stats/examine.q:1126 msgid "Extreme Values" msgstr "" -#: src/language/stats/examine.q:1139 +#: src/language/stats/examine.q:1142 msgid "Case Number" msgstr "" -#: src/language/stats/examine.q:1224 +#: src/language/stats/examine.q:1227 msgid "Highest" msgstr "" -#: src/language/stats/examine.q:1229 +#: src/language/stats/examine.q:1232 msgid "Lowest" msgstr "" -#: src/language/stats/examine.q:1370 src/language/stats/oneway.q:403 -#: src/language/stats/oneway.q:688 src/language/stats/regression.q:191 +#: src/language/stats/examine.q:1373 src/language/stats/oneway.q:403 +#: src/language/stats/oneway.q:688 src/language/stats/regression.q:205 msgid "Std. Error" msgstr "" -#: src/language/stats/examine.q:1372 src/language/stats/oneway.q:417 +#: src/language/stats/examine.q:1375 src/language/stats/oneway.q:417 msgid "Descriptives" msgstr "" -#: src/language/stats/examine.q:1492 src/language/stats/oneway.q:408 +#: src/language/stats/examine.q:1495 src/language/stats/oneway.q:408 #, c-format msgid "%g%% Confidence Interval for Mean" msgstr "" -#: src/language/stats/examine.q:1498 src/language/stats/oneway.q:410 +#: src/language/stats/examine.q:1501 src/language/stats/oneway.q:410 msgid "Lower Bound" msgstr "" -#: src/language/stats/examine.q:1509 src/language/stats/oneway.q:411 +#: src/language/stats/examine.q:1512 src/language/stats/oneway.q:411 msgid "Upper Bound" msgstr "" -#: src/language/stats/examine.q:1521 +#: src/language/stats/examine.q:1524 #, c-format msgid "5%% Trimmed Mean" msgstr "" -#: src/language/stats/examine.q:1532 src/language/stats/frequencies.q:122 +#: src/language/stats/examine.q:1535 src/language/stats/frequencies.q:121 msgid "Median" msgstr "" -#: src/language/stats/examine.q:1566 src/language/stats/oneway.q:402 +#: src/language/stats/examine.q:1569 src/language/stats/oneway.q:402 #: src/language/stats/t-test.q:684 src/language/stats/t-test.q:707 #: src/language/stats/t-test.q:831 src/language/stats/t-test.q:1167 msgid "Std. Deviation" msgstr "" -#: src/language/stats/examine.q:1614 +#: src/language/stats/examine.q:1617 msgid "Interquartile Range" msgstr "" -#: src/language/stats/examine.q:1766 +#: src/language/stats/examine.q:1769 #, c-format msgid "Boxplot of %s vs. %s" msgstr "" -#: src/language/stats/examine.q:1791 +#: src/language/stats/examine.q:1794 msgid "Boxplot" msgstr "" -#: src/language/stats/examine.q:1833 +#: src/language/stats/examine.q:1836 #, c-format msgid "Normal Q-Q Plot of %s" msgstr "" -#: src/language/stats/examine.q:1834 src/language/stats/examine.q:1840 +#: src/language/stats/examine.q:1837 src/language/stats/examine.q:1843 msgid "Observed Value" msgstr "" -#: src/language/stats/examine.q:1835 +#: src/language/stats/examine.q:1838 msgid "Expected Normal" msgstr "" -#: src/language/stats/examine.q:1838 +#: src/language/stats/examine.q:1841 #, c-format msgid "Detrended Normal Q-Q Plot of %s" msgstr "" -#: src/language/stats/examine.q:1841 +#: src/language/stats/examine.q:1844 msgid "Dev from Normal" msgstr "" -#: src/language/stats/examine.q:1960 src/language/stats/examine.q:1982 -#: src/language/stats/frequencies.q:1528 +#: src/language/stats/examine.q:1963 src/language/stats/examine.q:1985 +#: src/language/stats/frequencies.q:1527 msgid "Percentiles" msgstr "" -#: src/language/stats/examine.q:2107 +#: src/language/stats/examine.q:2110 msgid "Tukey's Hinges" msgstr "" @@ -3381,139 +3388,139 @@ msgstr "" msgid "Could not create temporary file for FLIP." msgstr "" -#: src/language/stats/flip.c:301 src/language/stats/flip.c:371 +#: src/language/stats/flip.c:301 src/language/stats/flip.c:367 #, c-format msgid "Error writing FLIP file: %s." msgstr "" -#: src/language/stats/flip.c:418 +#: src/language/stats/flip.c:414 #, c-format msgid "Error rewinding FLIP file: %s." msgstr "" -#: src/language/stats/flip.c:425 +#: src/language/stats/flip.c:421 msgid "Error creating FLIP source file." msgstr "" -#: src/language/stats/flip.c:437 +#: src/language/stats/flip.c:433 #, c-format msgid "Error reading FLIP file: %s." msgstr "" -#: src/language/stats/flip.c:461 +#: src/language/stats/flip.c:457 #, c-format msgid "Error seeking FLIP source file: %s." msgstr "" -#: src/language/stats/flip.c:469 +#: src/language/stats/flip.c:465 #, c-format msgid "Error writing FLIP source file: %s." msgstr "" -#: src/language/stats/flip.c:484 +#: src/language/stats/flip.c:480 #, c-format msgid "Error rewinding FLIP source file: %s." msgstr "" -#: src/language/stats/flip.c:532 +#: src/language/stats/flip.c:528 #, c-format msgid "Error reading FLIP temporary file: %s." msgstr "" -#: src/language/stats/flip.c:535 +#: src/language/stats/flip.c:531 msgid "Unexpected end of file reading FLIP temporary file." msgstr "" -#: src/language/stats/frequencies.q:121 +#: src/language/stats/frequencies.q:120 msgid "S.E. Mean" msgstr "" -#: src/language/stats/frequencies.q:123 +#: src/language/stats/frequencies.q:122 msgid "Mode" msgstr "" -#: src/language/stats/frequencies.q:127 +#: src/language/stats/frequencies.q:126 msgid "S.E. Kurt" msgstr "" -#: src/language/stats/frequencies.q:129 +#: src/language/stats/frequencies.q:128 msgid "S.E. Skew" msgstr "" -#: src/language/stats/frequencies.q:405 +#: src/language/stats/frequencies.q:404 msgid "" "At most one of BARCHART, HISTOGRAM, or HBAR should be given. HBAR will be " "assumed. Argument values will be given precedence increasing along the " "order given." msgstr "" -#: src/language/stats/frequencies.q:488 +#: src/language/stats/frequencies.q:487 #, c-format msgid "" "MAX must be greater than or equal to MIN, if both are specified. However, " "MIN was specified as %g and MAX as %g. MIN and MAX will be ignored." msgstr "" -#: src/language/stats/frequencies.q:811 +#: src/language/stats/frequencies.q:810 msgid "" "Upper limit of integer mode value range must be greater than lower limit." msgstr "" -#: src/language/stats/frequencies.q:824 +#: src/language/stats/frequencies.q:823 #, c-format msgid "Variable %s specified multiple times on VARIABLES subcommand." msgstr "" -#: src/language/stats/frequencies.q:830 +#: src/language/stats/frequencies.q:829 #, c-format msgid "Integer mode specified, but %s is not a numeric variable." msgstr "" -#: src/language/stats/frequencies.q:896 +#: src/language/stats/frequencies.q:895 msgid "`)' expected after GROUPED interval list." msgstr "" -#: src/language/stats/frequencies.q:908 +#: src/language/stats/frequencies.q:907 #, c-format msgid "Variables %s specified on GROUPED but not on VARIABLES." msgstr "" -#: src/language/stats/frequencies.q:915 +#: src/language/stats/frequencies.q:914 #, c-format msgid "Variables %s specified multiple times on GROUPED subcommand." msgstr "" -#: src/language/stats/frequencies.q:1145 src/language/stats/frequencies.q:1237 -#: src/language/stats/frequencies.q:1238 src/language/stats/frequencies.q:1270 +#: src/language/stats/frequencies.q:1144 src/language/stats/frequencies.q:1236 +#: src/language/stats/frequencies.q:1237 src/language/stats/frequencies.q:1269 msgid "Cum" msgstr "" -#: src/language/stats/frequencies.q:1147 src/output/charts/plot-hist.c:129 +#: src/language/stats/frequencies.q:1146 src/output/charts/plot-hist.c:129 msgid "Frequency" msgstr "" -#: src/language/stats/frequencies.q:1167 +#: src/language/stats/frequencies.q:1166 msgid "Value Label" msgstr "" -#: src/language/stats/frequencies.q:1268 +#: src/language/stats/frequencies.q:1267 msgid "Freq" msgstr "" -#: src/language/stats/frequencies.q:1269 src/language/stats/frequencies.q:1271 +#: src/language/stats/frequencies.q:1268 src/language/stats/frequencies.q:1270 msgid "Pct" msgstr "" -#: src/language/stats/frequencies.q:1490 +#: src/language/stats/frequencies.q:1489 #, c-format msgid "No valid data for variable %s; statistics not displayed." msgstr "" -#: src/language/stats/means.q:104 +#: src/language/stats/means.q:102 msgid "Missing required subcommand TABLES." msgstr "" -#: src/language/stats/means.q:138 +#: src/language/stats/means.q:136 msgid "TABLES subcommand may not appear more than once." msgstr "" @@ -3531,21 +3538,21 @@ msgstr "" msgid "`%s' is not a variable name" msgstr "" -#: src/language/stats/oneway.q:286 src/language/stats/regression.q:286 +#: src/language/stats/oneway.q:286 src/language/stats/regression.q:300 msgid "Sum of Squares" msgstr "" -#: src/language/stats/oneway.q:288 src/language/stats/regression.q:288 +#: src/language/stats/oneway.q:288 src/language/stats/regression.q:302 msgid "Mean Square" msgstr "" -#: src/language/stats/oneway.q:289 src/language/stats/regression.q:289 +#: src/language/stats/oneway.q:289 src/language/stats/regression.q:303 #: src/language/stats/t-test.q:977 msgid "F" msgstr "" #: src/language/stats/oneway.q:290 src/language/stats/oneway.q:544 -#: src/language/stats/regression.q:194 src/language/stats/regression.q:290 +#: src/language/stats/regression.q:208 src/language/stats/regression.q:304 msgid "Significance" msgstr "" @@ -3557,7 +3564,7 @@ msgstr "" msgid "Within Groups" msgstr "" -#: src/language/stats/oneway.q:360 src/language/stats/regression.q:316 +#: src/language/stats/oneway.q:360 src/language/stats/regression.q:330 msgid "ANOVA" msgstr "" @@ -3593,7 +3600,7 @@ msgstr "" msgid "Value of Contrast" msgstr "" -#: src/language/stats/oneway.q:689 src/language/stats/regression.q:193 +#: src/language/stats/oneway.q:689 src/language/stats/regression.q:207 #: src/language/stats/t-test.q:979 src/language/stats/t-test.q:1171 #: src/language/stats/t-test.q:1263 msgid "t" @@ -3612,72 +3619,72 @@ msgstr "" msgid "Does not assume equal" msgstr "" -#: src/language/stats/rank.q:244 +#: src/language/stats/rank.q:245 #, c-format msgid "Variable %s already exists." msgstr "" -#: src/language/stats/rank.q:249 +#: src/language/stats/rank.q:250 msgid "Too many variables in INTO clause." msgstr "" -#: src/language/stats/regression.q:145 +#: src/language/stats/regression.q:159 msgid "R" msgstr "" -#: src/language/stats/regression.q:146 +#: src/language/stats/regression.q:160 msgid "R Square" msgstr "" -#: src/language/stats/regression.q:147 +#: src/language/stats/regression.q:161 msgid "Adjusted R Square" msgstr "" -#: src/language/stats/regression.q:148 +#: src/language/stats/regression.q:162 msgid "Std. Error of the Estimate" msgstr "" -#: src/language/stats/regression.q:153 +#: src/language/stats/regression.q:167 msgid "Model Summary" msgstr "" -#: src/language/stats/regression.q:190 +#: src/language/stats/regression.q:204 msgid "B" msgstr "" -#: src/language/stats/regression.q:192 +#: src/language/stats/regression.q:206 msgid "Beta" msgstr "" -#: src/language/stats/regression.q:195 +#: src/language/stats/regression.q:209 msgid "(Constant)" msgstr "" -#: src/language/stats/regression.q:255 +#: src/language/stats/regression.q:269 msgid "Coefficients" msgstr "" -#: src/language/stats/regression.q:292 +#: src/language/stats/regression.q:306 msgid "Regression" msgstr "" -#: src/language/stats/regression.q:293 +#: src/language/stats/regression.q:307 msgid "Residual" msgstr "" -#: src/language/stats/regression.q:371 +#: src/language/stats/regression.q:385 msgid "Model" msgstr "" -#: src/language/stats/regression.q:372 +#: src/language/stats/regression.q:386 msgid "Covariances" msgstr "" -#: src/language/stats/regression.q:387 +#: src/language/stats/regression.q:401 msgid "Coefficient Correlations" msgstr "" -#: src/language/stats/regression.q:885 +#: src/language/stats/regression.q:1157 msgid "Dependent variable must be numeric." msgstr "" @@ -3830,7 +3837,7 @@ msgid "Only USE ALL is currently implemented." msgstr "" #: src/language/utilities/include.c:43 -msgid "expecting filename" +msgid "expecting file name" msgstr "" #: src/language/utilities/permissions.c:77 @@ -3975,26 +3982,12 @@ msgstr "" msgid "WIDTH is %d." msgstr "" -#: src/language/utilities/title.c:59 -#, c-format -msgid "%s before: %s\n" -msgstr "" - -#: src/language/utilities/title.c:59 -msgid "" -msgstr "" - -#: src/language/utilities/title.c:71 +#: src/language/utilities/title.c:68 #, c-format msgid "%s: `.' expected after string." msgstr "" -#: src/language/utilities/title.c:87 -#, c-format -msgid "%s after: %s\n" -msgstr "" - -#: src/language/utilities/title.c:142 +#: src/language/utilities/title.c:138 #, c-format msgid "Document entered %s by %s:" msgstr "" @@ -4059,11 +4052,11 @@ msgstr "" msgid "Type mismatch. Cannot store %s data in %s variable %s." msgstr "" -#: src/language/xforms/sample.c:77 +#: src/language/xforms/sample.c:75 msgid "The sampling factor must be between 0 and 1 exclusive." msgstr "" -#: src/language/xforms/sample.c:97 +#: src/language/xforms/sample.c:95 #, c-format msgid "Cannot sample %d observations from a population of %d." msgstr "" @@ -4105,43 +4098,13 @@ msgstr "" msgid "Empirical with averaging" msgstr "" -#: src/math/sort.c:431 +#: src/math/sort.c:430 #, c-format msgid "" "Out of memory. Could not allocate room for minimum of %d cases of %d bytes " "each. (PSPP workspace is currently restricted to a maximum of %d KB.)" msgstr "" -#: src/message.c:89 -msgid "Terminating execution of syntax file due to error." -msgstr "" - -#: src/message.c:91 -#, c-format -msgid "Errors (%d) exceeds limit (%d)." -msgstr "" - -#: src/message.c:94 -#, c-format -msgid "Warnings (%d) exceed limit (%d)." -msgstr "" - -#: src/message.c:143 src/message.c:150 src/message.c:153 -msgid "error" -msgstr "" - -#: src/message.c:144 src/message.c:151 src/message.c:154 -msgid "warning" -msgstr "" - -#: src/message.c:145 src/message.c:155 -msgid "note" -msgstr "" - -#: src/message.c:147 src/message.c:148 -msgid "installation error" -msgstr "" - #: src/output/afm.c:150 #, c-format msgid "opening font metrics file \"%s\"" @@ -4209,70 +4172,70 @@ msgstr "" msgid "unexpected end of line expecting string" msgstr "" -#: src/output/ascii.c:161 +#: src/output/ascii.c:160 #, c-format msgid "ascii: opening output file \"%s\"" msgstr "" -#: src/output/ascii.c:172 +#: src/output/ascii.c:171 #, c-format msgid "" "ascii: page excluding margins and headers must be at least 59 characters " "wide by 15 lines long, but as configured is only %d characters by %d lines" msgstr "" -#: src/output/ascii.c:233 +#: src/output/ascii.c:232 #, c-format msgid "ascii: closing output file \"%s\"" msgstr "" -#: src/output/ascii.c:285 +#: src/output/ascii.c:284 #, c-format msgid "" "ascii: bad index value for `box' key: syntax is box[INDEX], 0 <= INDEX < %d " "decimal, with INDEX expressed in base 4" msgstr "" -#: src/output/ascii.c:292 +#: src/output/ascii.c:291 #, c-format msgid "ascii: multiple values for %s" msgstr "" -#: src/output/ascii.c:300 +#: src/output/ascii.c:299 #, c-format msgid "ascii: unknown parameter `%s'" msgstr "" -#: src/output/ascii.c:314 +#: src/output/ascii.c:313 #, c-format msgid "ascii: positive integer required as `%s' value" msgstr "" -#: src/output/ascii.c:340 +#: src/output/ascii.c:339 msgid "ascii: `emphasis' value must be `bold', `underline', or `none'" msgstr "" -#: src/output/ascii.c:353 +#: src/output/ascii.c:352 #, c-format msgid "ascii: zero or positive integer required as `%s' value" msgstr "" -#: src/output/ascii.c:384 +#: src/output/ascii.c:383 #, c-format msgid "ascii: boolean value expected for `%s'" msgstr "" -#: src/output/ascii.c:473 +#: src/output/ascii.c:472 #, c-format msgid "ascii: bad line (%d,%d)-(%d,%d) out of (%d,%d)\n" msgstr "" -#: src/output/ascii.c:683 src/output/postscript.c:832 +#: src/output/ascii.c:682 src/output/postscript.c:831 #, c-format msgid "%s - Page %d" msgstr "" -#: src/output/ascii.c:727 +#: src/output/ascii.c:726 msgid "ascii: charts are unsupported by this driver" msgstr "" @@ -4280,150 +4243,164 @@ msgstr "" msgid "HISTOGRAM" msgstr "" -#: src/output/html.c:68 +#: src/output/html.c:66 #, c-format msgid "opening HTML output file: %s" msgstr "" -#: src/output/html.c:79 +#: src/output/html.c:77 msgid "PSPP Output" msgstr "" -#: src/output/html.c:165 +#: src/output/html.c:163 #, c-format msgid "unknown configuration parameter `%s' for HTML device driver" msgstr "" -#: src/output/output.c:166 +#: src/output/output.c:165 #, c-format -msgid "Unknown output driver `%s'." +msgid "unknown output driver `%s'" msgstr "" -#: src/output/output.c:168 +#: src/output/output.c:167 #, c-format -msgid "Output driver `%s' referenced but never defined." +msgid "output driver `%s' referenced but never defined" msgstr "" #: src/output/output.c:261 -msgid "Using default output driver configuration." +msgid "using default output driver configuration" msgstr "" -#: src/output/output.c:296 -msgid "" -"Cannot find output initialization file. Use `-vvvvv' to view search path." +#: src/output/output.c:293 +msgid "cannot find output initialization file (use `-vv' to view search path)" msgstr "" -#: src/output/output.c:304 src/output/output.c:1067 +#: src/output/output.c:301 #, c-format -msgid "Opening %s: %s." +msgid "cannot open \"%s\"" msgstr "" -#: src/output/output.c:315 src/output/output.c:1078 +#: src/output/output.c:313 #, c-format -msgid "Reading %s: %s." +msgid "reading \"%s\"" msgstr "" -#: src/output/output.c:337 src/output/output.c:503 -msgid "Syntax error." +#: src/output/output.c:335 +msgid "syntax error" msgstr "" -#: src/output/output.c:347 +#: src/output/output.c:344 #, c-format -msgid "Closing %s: %s." +msgid "error closing \"%s\"" msgstr "" -#: src/output/output.c:355 -msgid "No output drivers are active." +#: src/output/output.c:352 +msgid "no active output drivers" msgstr "" -#: src/output/output.c:358 -msgid "Error reading device definition file." +#: src/output/output.c:355 +msgid "error reading device definition file" msgstr "" -#: src/output/output.c:475 +#: src/output/output.c:472 #, c-format msgid "" "Driver classes:\n" "\t" msgstr "" -#: src/output/output.c:604 -msgid "Syntax error in string constant." +#: src/output/output.c:504 +#, c-format +msgid "syntax error parsing options for \"%s\" driver" msgstr "" -#: src/output/output.c:639 -msgid "Syntax error in options." +#: src/output/output.c:521 +#, c-format +msgid "" +"reached end of options inside quoted string parsing options for \"%s\" driver" msgstr "" -#: src/output/output.c:649 -msgid "Syntax error in options (`=' expected)." +#: src/output/output.c:594 +#, c-format +msgid "syntax error in string constant parsing options for \"%s\" driver" msgstr "" -#: src/output/output.c:656 -msgid "Syntax error in options (value expected after `=')." +#: src/output/output.c:639 +#, c-format +msgid "syntax error expecting `=' parsing options for driver \"%s\"" msgstr "" -#: src/output/output.c:698 +#: src/output/output.c:692 #, c-format -msgid "Unknown output driver class `%s'." +msgid "unknown output driver class `%s'" msgstr "" -#: src/output/output.c:719 +#: src/output/output.c:714 #, c-format -msgid "Unknown device type `%s'." +msgid "unknown device type `%s'" msgstr "" -#: src/output/output.c:738 +#: src/output/output.c:733 #, c-format -msgid "Can't initialize output driver `%s' of class `%s'." +msgid "cannot initialize output driver `%s' of class `%s'" msgstr "" -#: src/output/output.c:783 -msgid "Driver definition line missing driver name or class name" +#: src/output/output.c:779 +msgid "driver definition line missing driver name or class name" msgstr "" -#: src/output/output.c:929 +#: src/output/output.c:926 #, c-format -msgid "Unit \"%s\" is unknown in dimension \"%s\"." +msgid "unit \"%s\" is unknown in dimension \"%s\"" msgstr "" -#: src/output/output.c:944 +#: src/output/output.c:941 #, c-format -msgid "Bad dimension \"%s\"." +msgid "bad dimension \"%s\"" msgstr "" -#: src/output/output.c:970 +#: src/output/output.c:967 #, c-format -msgid "`x' expected in paper size `%s'." +msgid "`x' expected in paper size `%s'" msgstr "" -#: src/output/output.c:980 +#: src/output/output.c:977 #, c-format -msgid "Trailing garbage `%s' on paper size `%s'." +msgid "trailing garbage `%s' on paper size `%s'" msgstr "" -#: src/output/output.c:1029 -msgid "Paper size name must not be empty." +#: src/output/output.c:1021 +msgid "paper size name cannot be empty" msgstr "" -#: src/output/output.c:1060 -msgid "Cannot find `papersize' configuration file." +#: src/output/output.c:1039 +msgid "cannot find `papersize' configuration file" msgstr "" -#: src/output/output.c:1105 -msgid "Syntax error in paper size definition." +#: src/output/output.c:1046 +#, c-format +msgid "error opening \"%s\"" msgstr "" -#: src/output/output.c:1134 -msgid "Error reading paper size definition file." +#: src/output/output.c:1057 +#, c-format +msgid "error reading \"%s\"" msgstr "" -#: src/output/postscript.c:164 +#: src/output/output.c:1085 +msgid "syntax error in paper size definition" +msgstr "" + +#: src/output/output.c:1097 +msgid "error reading paper size definition file" +msgstr "" + +#: src/output/postscript.c:163 #, c-format msgid "opening PostScript output file \"%s\"" msgstr "" -#: src/output/postscript.c:202 +#: src/output/postscript.c:201 #, c-format msgid "" "The defined PostScript page is not long enough to hold margins and headers, " @@ -4431,87 +4408,87 @@ msgid "" "lines of each font at the default size of %d.%03d points." msgstr "" -#: src/output/postscript.c:250 +#: src/output/postscript.c:249 #, c-format msgid "closing PostScript output file \"%s\"" msgstr "" -#: src/output/postscript.c:310 +#: src/output/postscript.c:309 #, c-format msgid "unknown configuration parameter `%s' for PostScript device driver" msgstr "" -#: src/output/postscript.c:326 +#: src/output/postscript.c:325 #, c-format msgid "" "unknown orientation `%s' (valid orientations are `portrait' and `landscape')" msgstr "" -#: src/output/postscript.c:338 +#: src/output/postscript.c:337 #, c-format msgid "boolean value expected for %s" msgstr "" -#: src/output/postscript.c:351 +#: src/output/postscript.c:350 #, c-format msgid "positive integer value required for `%s'" msgstr "" -#: src/output/postscript.c:356 +#: src/output/postscript.c:355 #, c-format msgid "default font size must be at least 1 point (value of 1000 for key `%s')" msgstr "" -#: src/output/postscript.c:388 +#: src/output/postscript.c:387 #, c-format msgid "value for `%s' must be a dimension of positive length (i.e., `1in')" msgstr "" -#: src/output/postscript.c:1182 +#: src/output/postscript.c:1181 #, c-format msgid "\"%s\": bad font specification" msgstr "" -#: src/output/postscript.c:1190 +#: src/output/postscript.c:1189 #, c-format msgid "could not find AFM file \"%s\"" msgstr "" -#: src/output/postscript.c:1204 +#: src/output/postscript.c:1203 #, c-format msgid "could not find font \"%s\"" msgstr "" -#: src/output/postscript.c:1213 +#: src/output/postscript.c:1212 #, c-format msgid "could not find encoding \"%s\"" msgstr "" -#: src/output/postscript.c:1313 +#: src/output/postscript.c:1312 #, c-format msgid "cannot open font file \"%s\"" msgstr "" -#: src/output/postscript.c:1354 +#: src/output/postscript.c:1353 #, c-format msgid "reading font file \"%s\"" msgstr "" -#: src/output/postscript.c:1376 +#: src/output/postscript.c:1375 #, c-format msgid "cannot open font encoding file \"%s\"" msgstr "" -#: src/output/postscript.c:1405 +#: src/output/postscript.c:1404 msgid "invalid numeric format" msgstr "" -#: src/output/table.c:239 +#: src/output/table.c:236 #, 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:310 +#: src/output/table.c:307 #, c-format msgid "" "bad box: (%d+%d=%d,%d+%d=%d)-(%d+%d=%d,%d+%d=%d) in table size (%d,%d)\n" @@ -4549,26 +4526,18 @@ msgstr "" msgid "Font Selection" msgstr "" -#: src/ui/gui/message-dialog.c:78 +#: src/ui/gui/message-dialog.c:75 msgid "Script Error" msgstr "" -#: src/ui/gui/message-dialog.c:83 -msgid "Installation Error" -msgstr "" - -#: src/ui/gui/message-dialog.c:88 +#: src/ui/gui/message-dialog.c:79 msgid "Data File Error" msgstr "" -#: src/ui/gui/message-dialog.c:95 +#: src/ui/gui/message-dialog.c:84 msgid "PSPP Error" msgstr "" -#: src/ui/gui/message-dialog.c:155 -msgid "Terminating NOW due to fatal error" -msgstr "" - #: src/ui/gui/missing-val-dialog.c:113 src/ui/gui/missing-val-dialog.c:158 msgid "Incorrect value for variable type" msgstr "" @@ -4657,7 +4626,7 @@ msgstr "" msgid "Scale" msgstr "" -#: src/ui/terminal/command-line.c:213 +#: src/ui/terminal/command-line.c:214 #, c-format msgid "" "PSPP, a program for statistical analysis of sample data.\n" @@ -4702,41 +4671,17 @@ msgid "" "\n" msgstr "" -#: src/ui/terminal/command-line.c:247 +#: src/ui/terminal/command-line.c:248 #, c-format msgid "" "\n" "Report bugs to <%s>.\n" msgstr "" -#: src/ui/terminal/main.c:154 -msgid "This command not executed. Stopping here to avoid cascading failures." -msgstr "" - -#: src/ui/terminal/main.c:164 -msgid "This command not executed." -msgstr "" - -#: src/ui/terminal/main.c:168 -msgid "" -"Skipping the rest of this command. Part of this command may have been " -"executed." -msgstr "" - -#: src/ui/terminal/main.c:173 +#: src/ui/terminal/main.c:111 msgid "" -"Skipping the rest of this command. This command was fully executed up to " -"this point." -msgstr "" - -#: src/ui/terminal/main.c:178 -msgid "" -"Trailing garbage was encountered following this command. The command was " -"fully executed to this point." -msgstr "" - -#: src/ui/terminal/main.c:194 -msgid "The rest of this command has been discarded." +"Stopping syntax file processing here to avoid a cascade of dependent command " +"failures." msgstr "" #~ msgid "Text color must be in range 0-15." diff --git a/po/pspp.pot b/po/pspp.pot index ccd74ae1..592b3c2a 100644 --- a/po/pspp.pot +++ b/po/pspp.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: pspp-dev@gnu.org\n" -"POT-Creation-Date: 2006-04-04 20:32+0800\n" +"POT-Creation-Date: 2006-04-26 13:48-0700\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -76,216 +76,216 @@ msgstr "" msgid "%s: Temporary file ended unexpectedly." msgstr "" -#: src/data/data-in.c:61 +#: src/data/data-in.c:59 #, c-format msgid "(column %d" msgstr "" -#: src/data/data-in.c:63 +#: src/data/data-in.c:61 #, c-format msgid "(columns %d-%d" msgstr "" -#: src/data/data-in.c:64 +#: src/data/data-in.c:62 #, c-format msgid ", field type %s) " msgstr "" -#: src/data/data-in.c:210 +#: src/data/data-in.c:208 msgid "Field does not form a valid floating-point constant." msgstr "" -#: src/data/data-in.c:237 +#: src/data/data-in.c:235 msgid "Field contents followed by garbage." msgstr "" -#: src/data/data-in.c:255 +#: src/data/data-in.c:253 msgid "Underflow in floating-point constant." msgstr "" -#: src/data/data-in.c:266 +#: src/data/data-in.c:264 msgid "Overflow in floating-point constant." msgstr "" -#: src/data/data-in.c:299 +#: src/data/data-in.c:297 msgid "All characters in field must be digits." msgstr "" -#: src/data/data-in.c:323 +#: src/data/data-in.c:321 msgid "Unrecognized character in field." msgstr "" -#: src/data/data-in.c:341 src/data/data-in.c:587 +#: src/data/data-in.c:339 src/data/data-in.c:585 msgid "Field must have even length." msgstr "" -#: src/data/data-in.c:351 src/data/data-in.c:597 +#: src/data/data-in.c:349 src/data/data-in.c:595 msgid "Field must contain only hex digits." msgstr "" -#: src/data/data-in.c:390 +#: src/data/data-in.c:388 #, 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:402 +#: src/data/data-in.c:400 msgid "Zoned decimal field contains fewer than 2 characters." msgstr "" -#: src/data/data-in.c:410 +#: src/data/data-in.c:408 msgid "Bad sign byte in zoned decimal number." msgstr "" -#: src/data/data-in.c:430 +#: src/data/data-in.c:428 msgid "Format error in zoned decimal number." msgstr "" -#: src/data/data-in.c:444 +#: src/data/data-in.c:442 msgid "Error in syntax of zoned decimal number." msgstr "" -#: src/data/data-in.c:637 +#: src/data/data-in.c:635 msgid "Unexpected end of field." msgstr "" -#: src/data/data-in.c:663 +#: src/data/data-in.c:661 msgid "Digit expected in field." msgstr "" -#: src/data/data-in.c:688 +#: src/data/data-in.c:686 #, c-format msgid "Day (%ld) must be between 1 and 31." msgstr "" -#: src/data/data-in.c:713 +#: src/data/data-in.c:711 msgid "Delimiter expected between fields in date." msgstr "" -#: src/data/data-in.c:746 +#: src/data/data-in.c:744 #, c-format msgid "Parse error at `%c' expecting %s." msgstr "" -#: src/data/data-in.c:760 +#: src/data/data-in.c:758 #, c-format msgid "Unknown %s `%.*s'." msgstr "" -#: src/data/data-in.c:810 +#: src/data/data-in.c:808 #, c-format msgid "Month (%ld) must be between 1 and 12." msgstr "" -#: src/data/data-in.c:814 +#: src/data/data-in.c:812 msgid "month" msgstr "" -#: src/data/data-in.c:828 +#: src/data/data-in.c:826 #, c-format msgid "Year (%ld) must be between 1582 and 19999." msgstr "" -#: src/data/data-in.c:839 +#: src/data/data-in.c:837 #, c-format msgid "Trailing garbage \"%s\" following date." msgstr "" -#: src/data/data-in.c:854 +#: src/data/data-in.c:852 #, c-format msgid "Julian day (%d) must be between 1 and 366." msgstr "" -#: src/data/data-in.c:866 +#: src/data/data-in.c:864 #, c-format msgid "Year (%d) must be between 1582 and 19999." msgstr "" -#: src/data/data-in.c:882 +#: src/data/data-in.c:880 #, c-format msgid "Quarter (%ld) must be between 1 and 4." msgstr "" -#: src/data/data-in.c:892 +#: src/data/data-in.c:890 msgid "`Q' expected between quarter and year." msgstr "" -#: src/data/data-in.c:908 +#: src/data/data-in.c:906 #, c-format msgid "Week (%ld) must be between 1 and 53." msgstr "" -#: src/data/data-in.c:920 +#: src/data/data-in.c:918 msgid "`WK' expected between week and year." msgstr "" -#: src/data/data-in.c:943 +#: src/data/data-in.c:941 msgid "Delimiter expected between fields in time." msgstr "" -#: src/data/data-in.c:955 +#: src/data/data-in.c:953 #, c-format msgid "Hour (%ld) must be positive." msgstr "" -#: src/data/data-in.c:967 +#: src/data/data-in.c:965 #, c-format msgid "Minute (%ld) must be between 0 and 59." msgstr "" -#: src/data/data-in.c:1014 +#: src/data/data-in.c:1012 #, c-format msgid "Hour (%ld) must be between 0 and 23." msgstr "" -#: src/data/data-in.c:1042 +#: src/data/data-in.c:1040 msgid "weekday" msgstr "" -#: src/data/data-in.c:1373 +#: src/data/data-in.c:1371 #, c-format msgid "Field too long (%d characters). Truncated after character %d." msgstr "" -#: src/data/data-out.c:247 +#: src/data/data-out.c:245 msgid "" "The N output format cannot be used to output a negative number or the system-" "missing value." msgstr "" -#: src/data/data-out.c:361 +#: src/data/data-out.c:359 #, c-format msgid "" "Quality of zoned decimal (Z) output format code is suspect. Check your " "results. Report bugs to %s." msgstr "" -#: src/data/data-out.c:369 +#: src/data/data-out.c:367 msgid "The system-missing value cannot be output as a zoned decimal number." msgstr "" -#: src/data/data-out.c:382 +#: src/data/data-out.c:380 #, c-format msgid "Number %g too big to fit in field with format Z%d.%d." msgstr "" -#: src/data/data-out.c:776 +#: src/data/data-out.c:774 #, c-format msgid "Time value %g too large in magnitude to convert to alphanumeric time." msgstr "" -#: src/data/data-out.c:827 +#: src/data/data-out.c:825 #, c-format msgid "Weekday index %f does not lie between 1 and 7." msgstr "" -#: src/data/data-out.c:847 +#: src/data/data-out.c:845 #, c-format msgid "Month index %f does not lie between 1 and 12." msgstr "" -#: src/data/data-out.c:960 +#: src/data/data-out.c:958 #, c-format msgid "" "Year %d cannot be represented in four digits for output formatting purposes." @@ -312,21 +312,21 @@ msgstr "" msgid "Can't re-open %s as a %s for %s." msgstr "" -#: src/data/filename.c:253 +#: src/data/file-name.c:236 #, c-format -msgid "Searching for `%s'..." +msgid "searching for \"%s\" in path \"%s\"" msgstr "" -#: src/data/filename.c:261 src/data/filename.c:293 -msgid "Search unsuccessful!" +#: src/data/file-name.c:263 +#, c-format +msgid "...found \"%s\"" msgstr "" -#: src/data/filename.c:286 -#, c-format -msgid "Found `%s'." +#: src/data/file-name.c:271 +msgid "...not found" msgstr "" -#: src/data/filename.c:703 +#: src/data/file-name.c:624 #, c-format msgid "Not opening pipe file `%s' because SAFER option set." msgstr "" @@ -388,30 +388,30 @@ msgid "%s variables are not compatible with %s format %s." msgstr "" #: src/data/format.c:197 src/data/por-file-reader.c:481 -#: src/data/sys-file-reader.c:994 src/data/sys-file-reader.c:1003 +#: src/data/sys-file-reader.c:997 src/data/sys-file-reader.c:1006 #: src/ui/gui/psppire-var-store.c:435 msgid "String" msgstr "" #: src/data/format.c:197 src/data/por-file-reader.c:481 -#: src/data/sys-file-reader.c:994 src/data/sys-file-reader.c:1003 +#: src/data/sys-file-reader.c:997 src/data/sys-file-reader.c:1006 #: src/ui/gui/psppire-var-store.c:428 msgid "Numeric" msgstr "" -#: src/data/format.c:198 src/data/sys-file-reader.c:996 -#: src/data/sys-file-reader.c:1141 src/data/sys-file-reader.c:1142 -#: src/data/variable.c:41 src/language/dictionary/apply-dictionary.c:74 -#: src/language/dictionary/apply-dictionary.c:75 +#: src/data/format.c:198 src/data/sys-file-reader.c:999 +#: src/data/sys-file-reader.c:1144 src/data/sys-file-reader.c:1145 +#: src/data/variable.c:41 src/language/dictionary/apply-dictionary.c:73 +#: src/language/dictionary/apply-dictionary.c:74 #: src/language/xforms/recode.c:465 src/language/xforms/recode.c:466 msgid "numeric" msgstr "" -#: src/data/format.c:198 src/data/sys-file-reader.c:996 -#: src/data/sys-file-reader.c:1141 src/data/sys-file-reader.c:1142 +#: src/data/format.c:198 src/data/sys-file-reader.c:999 +#: src/data/sys-file-reader.c:1144 src/data/sys-file-reader.c:1145 #: src/data/variable.c:41 src/data/variable.c:49 +#: src/language/dictionary/apply-dictionary.c:73 #: src/language/dictionary/apply-dictionary.c:74 -#: src/language/dictionary/apply-dictionary.c:75 #: src/language/xforms/recode.c:465 src/language/xforms/recode.c:466 msgid "string" msgstr "" @@ -431,7 +431,7 @@ msgstr "" msgid "%s: Creating file: %s." msgstr "" -#: src/data/por-file-reader.c:100 +#: src/data/por-file-reader.c:93 #, c-format msgid "portable file %s corrupt at offset %ld: " msgstr "" @@ -478,12 +478,12 @@ msgstr "" msgid "Bad time string length %d." msgstr "" -#: src/data/por-file-reader.c:473 src/data/sys-file-reader.c:986 +#: src/data/por-file-reader.c:473 src/data/sys-file-reader.c:989 #, c-format msgid "%s: Bad format specifier byte (%d)." msgstr "" -#: src/data/por-file-reader.c:480 src/data/sys-file-reader.c:1002 +#: src/data/por-file-reader.c:480 src/data/sys-file-reader.c:1005 #, c-format msgid "%s variable %s has invalid format specifier %s." msgstr "" @@ -548,18 +548,18 @@ msgstr "" msgid "Duplicate label for value `%.*s' for variable %s." msgstr "" -#: src/data/por-file-writer.c:145 +#: src/data/por-file-writer.c:143 #, c-format msgid "Invalid decimal digits count %d. Treating as %d." msgstr "" -#: src/data/por-file-writer.c:165 +#: src/data/por-file-writer.c:163 #, c-format msgid "" "An error occurred while opening \"%s\" for writing as a portable file: %s." msgstr "" -#: src/data/por-file-writer.c:449 +#: src/data/por-file-writer.c:447 #, c-format msgid "An I/O error occurred writing portable file \"%s\"." msgstr "" @@ -576,135 +576,135 @@ msgstr "" msgid "Could not access definition for terminal `%s'." msgstr "" -#: src/data/sys-file-reader.c:134 +#: src/data/sys-file-reader.c:130 msgid "corrupt system file: " msgstr "" -#: src/data/sys-file-reader.c:151 +#: src/data/sys-file-reader.c:154 #, c-format msgid "%s: Closing system file: %s." msgstr "" -#: src/data/sys-file-reader.c:242 +#: src/data/sys-file-reader.c:245 #, c-format msgid "" "An error occurred while opening \"%s\" for reading as a system file: %s." msgstr "" -#: src/data/sys-file-reader.c:259 +#: src/data/sys-file-reader.c:262 #, c-format msgid "" "%s: Index of weighting variable (%d) is not between 0 and number of elements " "per case (%d)." msgstr "" -#: src/data/sys-file-reader.c:268 +#: src/data/sys-file-reader.c:271 #, c-format msgid "" "%s: Weighting variable may not be a continuation of a long string variable." msgstr "" -#: src/data/sys-file-reader.c:271 +#: src/data/sys-file-reader.c:274 #, c-format msgid "%s: Weighting variable may not be a string variable." msgstr "" -#: src/data/sys-file-reader.c:296 +#: src/data/sys-file-reader.c:299 #, c-format msgid "" "%s: Orphaned variable index record (type 4). Type 4 records must always " "immediately follow type 3 records." msgstr "" -#: src/data/sys-file-reader.c:354 +#: src/data/sys-file-reader.c:357 #, c-format msgid "%s: Invalid subrecord length. Record: 7; Subrecord: 11" msgstr "" -#: src/data/sys-file-reader.c:408 +#: src/data/sys-file-reader.c:411 #, c-format msgid "%s: Trailing garbage in long variable name map." msgstr "" -#: src/data/sys-file-reader.c:415 +#: src/data/sys-file-reader.c:418 #, c-format msgid "%s: Long variable mapping to invalid variable name `%s'." msgstr "" -#: src/data/sys-file-reader.c:425 +#: src/data/sys-file-reader.c:428 #, c-format msgid "%s: Long variable mapping for nonexistent variable %s." msgstr "" -#: src/data/sys-file-reader.c:434 +#: src/data/sys-file-reader.c:437 #, c-format msgid "%s: Duplicate long variable name `%s' within system file." msgstr "" -#: src/data/sys-file-reader.c:461 +#: src/data/sys-file-reader.c:464 #, c-format msgid "%s: Unrecognized record type 7, subtype %d encountered in system file." msgstr "" -#: src/data/sys-file-reader.c:486 +#: src/data/sys-file-reader.c:489 #, c-format msgid "%s: Unrecognized record type %d." msgstr "" -#: src/data/sys-file-reader.c:518 +#: src/data/sys-file-reader.c:521 #, c-format msgid "" "%s: Bad size (%d) or count (%d) field on record type 7, subtype 3.\tExpected " "size %d, count 8." msgstr "" -#: src/data/sys-file-reader.c:529 +#: src/data/sys-file-reader.c:532 #, c-format msgid "" "%s: Floating-point representation in system file is not IEEE-754. PSPP " "cannot convert between floating-point formats." msgstr "" -#: src/data/sys-file-reader.c:545 +#: src/data/sys-file-reader.c:548 #, c-format msgid "" "%s: File-indicated endianness (%s) does not match endianness intuited from " "file header (%s)." msgstr "" -#: src/data/sys-file-reader.c:548 src/data/sys-file-reader.c:549 +#: src/data/sys-file-reader.c:551 src/data/sys-file-reader.c:552 msgid "big-endian" msgstr "" -#: src/data/sys-file-reader.c:548 src/data/sys-file-reader.c:549 +#: src/data/sys-file-reader.c:551 src/data/sys-file-reader.c:552 msgid "little-endian" msgstr "" -#: src/data/sys-file-reader.c:550 +#: src/data/sys-file-reader.c:553 msgid "unknown" msgstr "" -#: src/data/sys-file-reader.c:554 +#: src/data/sys-file-reader.c:557 #, c-format msgid "%s: File-indicated character representation code (%s) is not ASCII." msgstr "" -#: src/data/sys-file-reader.c:558 +#: src/data/sys-file-reader.c:561 msgid "DEC Kanji" msgstr "" -#: src/data/sys-file-reader.c:558 src/language/dictionary/sys-file-info.c:119 +#: src/data/sys-file-reader.c:561 src/language/dictionary/sys-file-info.c:120 msgid "Unknown" msgstr "" -#: src/data/sys-file-reader.c:574 +#: src/data/sys-file-reader.c:577 #, c-format msgid "" "%s: Bad size (%d) or count (%d) field on record type 7, subtype 4.\tExpected " "size %d, count 8." msgstr "" -#: src/data/sys-file-reader.c:589 +#: src/data/sys-file-reader.c:592 #, c-format msgid "" "%s: File-indicated value is different from internal value for at least one " @@ -712,213 +712,213 @@ msgid "" "%g; LOWEST: %g, %g." msgstr "" -#: src/data/sys-file-reader.c:616 +#: src/data/sys-file-reader.c:619 #, c-format msgid "" "%s: Bad magic. Proper system files begin with the four characters `$FL2'. " "This file will not be read." msgstr "" -#: src/data/sys-file-reader.c:658 +#: src/data/sys-file-reader.c:661 #, c-format msgid "" "%s: File layout code has unexpected value %d. Value should be 2, in big-" "endian or little-endian format." msgstr "" -#: src/data/sys-file-reader.c:686 +#: src/data/sys-file-reader.c:689 #, c-format msgid "%s: Number of cases in file (%ld) is not between -1 and %d." msgstr "" -#: src/data/sys-file-reader.c:691 +#: src/data/sys-file-reader.c:694 #, c-format msgid "%s: Compression bias (%g) is not the usual value of 100." msgstr "" -#: src/data/sys-file-reader.c:816 +#: src/data/sys-file-reader.c:819 #, c-format msgid "" "%s: position %d: String variable does not have proper number of continuation " "records." msgstr "" -#: src/data/sys-file-reader.c:827 +#: src/data/sys-file-reader.c:830 #, c-format msgid "%s: position %d: Superfluous long string continuation record." msgstr "" -#: src/data/sys-file-reader.c:833 +#: src/data/sys-file-reader.c:836 #, c-format msgid "%s: position %d: Bad variable type code %d." msgstr "" -#: src/data/sys-file-reader.c:836 +#: src/data/sys-file-reader.c:839 #, c-format msgid "%s: position %d: Variable label indicator field is not 0 or 1." msgstr "" -#: src/data/sys-file-reader.c:840 +#: src/data/sys-file-reader.c:843 #, c-format msgid "" "%s: position %d: Missing value indicator field is not -3, -2, 0, 1, 2, or 3." msgstr "" -#: src/data/sys-file-reader.c:845 +#: src/data/sys-file-reader.c:848 #, c-format msgid "%s: position %d: Variable name begins with invalid character." msgstr "" -#: src/data/sys-file-reader.c:864 +#: src/data/sys-file-reader.c:867 #, c-format msgid "%s: Invalid variable name `%s' within system file." msgstr "" -#: src/data/sys-file-reader.c:870 +#: src/data/sys-file-reader.c:873 #, c-format msgid "%s: Duplicate variable name `%s' within system file." msgstr "" -#: src/data/sys-file-reader.c:893 +#: src/data/sys-file-reader.c:896 #, c-format msgid "%s: Variable %s indicates variable label of invalid length %d." msgstr "" -#: src/data/sys-file-reader.c:914 +#: src/data/sys-file-reader.c:917 #, c-format msgid "%s: Long string variable %s may not have missing values." msgstr "" -#: src/data/sys-file-reader.c:935 +#: src/data/sys-file-reader.c:938 #, c-format msgid "" "%s: String variable %s may not have missing values specified as a range." msgstr "" -#: src/data/sys-file-reader.c:962 +#: src/data/sys-file-reader.c:965 #, c-format msgid "%s: Long string continuation records omitted at end of dictionary." msgstr "" -#: src/data/sys-file-reader.c:967 +#: src/data/sys-file-reader.c:970 #, c-format msgid "" "%s: System file header indicates %d variable positions but %d were read from " "file." msgstr "" -#: src/data/sys-file-reader.c:992 +#: src/data/sys-file-reader.c:995 #, c-format msgid "%s: %s variable %s has %s format specifier %s." msgstr "" -#: src/data/sys-file-reader.c:1045 +#: src/data/sys-file-reader.c:1048 #, c-format msgid "%s: Invalid number of labels: %d. Ignoring labels." msgstr "" -#: src/data/sys-file-reader.c:1087 +#: src/data/sys-file-reader.c:1090 #, 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:1098 +#: src/data/sys-file-reader.c:1101 #, 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:1114 +#: src/data/sys-file-reader.c:1117 #, 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:1121 +#: src/data/sys-file-reader.c:1124 #, 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:1126 +#: src/data/sys-file-reader.c:1129 #, c-format msgid "%s: Value labels are not allowed on long string variables (%s)." msgstr "" -#: src/data/sys-file-reader.c:1137 +#: src/data/sys-file-reader.c:1140 #, 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:1178 +#: src/data/sys-file-reader.c:1181 #, c-format msgid "%s: File contains duplicate label for value %g for variable %s." msgstr "" -#: src/data/sys-file-reader.c:1182 +#: src/data/sys-file-reader.c:1185 #, c-format msgid "%s: File contains duplicate label for value `%.*s' for variable %s." msgstr "" -#: src/data/sys-file-reader.c:1224 src/data/sys-file-reader.c:1507 +#: src/data/sys-file-reader.c:1227 src/data/sys-file-reader.c:1510 #, c-format msgid "%s: Reading system file: %s." msgstr "" -#: src/data/sys-file-reader.c:1227 src/data/sys-file-reader.c:1345 -#: src/data/sys-file-reader.c:1386 +#: src/data/sys-file-reader.c:1230 src/data/sys-file-reader.c:1348 +#: src/data/sys-file-reader.c:1389 #, c-format msgid "%s: Unexpected end of file." msgstr "" -#: src/data/sys-file-reader.c:1243 +#: src/data/sys-file-reader.c:1246 #, c-format msgid "%s: Seeking system file: %s." msgstr "" -#: src/data/sys-file-reader.c:1258 +#: src/data/sys-file-reader.c:1261 #, c-format msgid "%s: System file contains multiple type 6 (document) records." msgstr "" -#: src/data/sys-file-reader.c:1264 +#: src/data/sys-file-reader.c:1267 #, c-format msgid "%s: Number of document lines (%ld) must be greater than 0." msgstr "" -#: src/data/sys-file-reader.c:1298 +#: src/data/sys-file-reader.c:1301 #, c-format msgid "%s: Error reading file: %s." msgstr "" -#: src/data/sys-file-reader.c:1337 +#: src/data/sys-file-reader.c:1340 #, c-format msgid "%s: Compressed data is corrupted. Data ends in partial case." msgstr "" -#: src/data/sys-file-reader.c:1513 +#: src/data/sys-file-reader.c:1516 #, c-format msgid "%s: Partial record at end of system file." msgstr "" -#: src/data/sys-file-writer.c:141 +#: src/data/sys-file-writer.c:139 #, c-format msgid "Unknown system file version %d. Treating as version %d." msgstr "" -#: src/data/sys-file-writer.c:250 +#: src/data/sys-file-writer.c:248 #, c-format msgid "Error opening \"%s\" for writing as a system file: %s." msgstr "" -#: src/data/sys-file-writer.c:897 +#: src/data/sys-file-writer.c:895 #, c-format msgid "An I/O error occurred writing system file \"%s\"." msgstr "" @@ -969,83 +969,95 @@ msgstr "" msgid "scratch" msgstr "" -#: src/language/command.c:141 +#: src/language/command.c:159 #, c-format -msgid "%s not allowed inside FILE TYPE/END FILE TYPE." +msgid "%s may be used only in testing mode." msgstr "" -#: src/language/command.c:144 +#: src/language/command.c:164 #, c-format -msgid "%s not allowed inside FILE TYPE GROUPED/END FILE TYPE." +msgid "%s may be used only in enhanced syntax mode." msgstr "" -#: src/language/command.c:147 -msgid "RECORD TYPE must be the first command inside a FILE TYPE structure." +#: src/language/command.c:414 +msgid "expecting command name" msgstr "" -#: src/language/command.c:194 -msgid "expecting command name" +#: src/language/command.c:428 +#, c-format +msgid "Unknown command %s." +msgstr "" + +#: src/language/command.c:550 +msgid "before the active file has been defined" +msgstr "" + +#: src/language/command.c:552 +msgid "after the active file has been defined" +msgstr "" + +#: src/language/command.c:554 +msgid "inside INPUT PROGRAM" +msgstr "" + +#: src/language/command.c:556 +msgid "inside FILE TYPE" msgstr "" -#: src/language/command.c:204 src/language/expressions/parse.c:1222 -#: src/ui/terminal/command-line.c:125 src/ui/terminal/command-line.c:144 -#: src/ui/terminal/command-line.c:156 +#: src/language/command.c:561 #, c-format -msgid "%s is not yet implemented." +msgid "%s or %s" msgstr "" -#: src/language/command.c:223 +#: src/language/command.c:563 #, c-format -msgid "" -"%s is not allowed (1) before a command to specify the input program, such as " -"DATA LIST, (2) between FILE TYPE and END FILE TYPE, (3) between INPUT " -"PROGRAM and END INPUT PROGRAM." +msgid "%s, %s, or %s" msgstr "" -#: src/language/command.c:227 +#: src/language/command.c:567 #, c-format -msgid "%s is not allowed within an input program." +msgid "%s is allowed only %s." msgstr "" -#: src/language/command.c:228 src/language/command.c:229 +#: src/language/command.c:572 #, c-format -msgid "%s is only allowed within an input program." +msgid "%s is not allowed inside INPUT PROGRAM." msgstr "" -#: src/language/command.c:504 +#: src/language/command.c:574 #, c-format -msgid "Unknown command %s." +msgid "%s is not allowed inside FILE TYPE." msgstr "" -#: src/language/command.c:645 src/language/command.c:776 +#: src/language/command.c:666 src/language/command.c:797 #: src/language/utilities/permissions.c:102 msgid "This command not allowed when the SAFER option is set." msgstr "" -#: src/language/command.c:657 +#: src/language/command.c:678 #, c-format msgid "Error removing `%s': %s." msgstr "" -#: src/language/command.c:707 +#: src/language/command.c:728 #, c-format msgid "Couldn't fork: %s." msgstr "" -#: src/language/command.c:749 +#: src/language/command.c:770 #, c-format msgid "Error executing command: %s." msgstr "" -#: src/language/command.c:758 src/language/data-io/matrix-data.c:534 -#: src/language/data-io/print.c:336 src/language/data-io/print.c:1051 +#: src/language/command.c:779 src/language/data-io/matrix-data.c:532 +#: src/language/data-io/print.c:336 src/language/data-io/print.c:1038 #: src/language/dictionary/vector.c:197 src/language/lexer/lexer.c:453 #: src/language/stats/autorecode.c:144 src/language/xforms/select-if.c:57 #: src/language/xforms/select-if.c:137 msgid "expecting end of command" msgstr "" -#: src/language/command.c:797 +#: src/language/command.c:818 msgid "No operating system support for this command." msgstr "" @@ -1068,28 +1080,28 @@ msgstr "" msgid "This command may not follow ELSE in DO IF...END IF." msgstr "" -#: src/language/control/repeat.c:137 +#: src/language/control/repeat.c:135 #, c-format msgid "Dummy variable name \"%s\" hides dictionary variable \"%s\"." msgstr "" -#: src/language/control/repeat.c:143 +#: src/language/control/repeat.c:141 #, c-format msgid "Dummy variable name \"%s\" is given twice." msgstr "" -#: src/language/control/repeat.c:184 +#: src/language/control/repeat.c:182 #, c-format msgid "" "Dummy variable \"%s\" had %d substitutions, so \"%s\" must also, but %d were " "specified." msgstr "" -#: src/language/control/repeat.c:453 +#: src/language/control/repeat.c:451 msgid "String expected." msgstr "" -#: src/language/control/repeat.c:480 +#: src/language/control/repeat.c:478 msgid "No matching DO REPEAT." msgstr "" @@ -1122,7 +1134,7 @@ msgid "" "fields must be listed in order of increasing record number." msgstr "" -#: src/language/data-io/data-list.c:378 src/language/data-io/data-list.c:1727 +#: src/language/data-io/data-list.c:378 src/language/data-io/data-list.c:1729 msgid "" "SPSS-like or FORTRAN-like format specification expected after variable names." msgstr "" @@ -1194,9 +1206,9 @@ msgstr "" #: src/language/data-io/data-list.c:783 src/language/data-io/data-list.c:901 #: src/language/data-io/print.c:798 -#: src/language/dictionary/sys-file-info.c:139 -#: src/language/dictionary/sys-file-info.c:373 -#: src/language/stats/descriptives.c:887 src/procedure.c:886 +#: src/language/dictionary/sys-file-info.c:140 +#: src/language/dictionary/sys-file-info.c:374 +#: src/language/stats/descriptives.c:887 src/procedure.c:878 msgid "Variable" msgstr "" @@ -1248,182 +1260,182 @@ msgid "" "with the system-missing value or blanks, as appropriate." msgstr "" -#: src/language/data-io/data-list.c:1390 +#: src/language/data-io/data-list.c:1392 msgid "" "REPEATING DATA must use the same file as its corresponding DATA LIST or FILE " "TYPE." msgstr "" -#: src/language/data-io/data-list.c:1400 src/language/data-io/data-list.c:1434 -#: src/language/data-io/data-list.c:1447 src/language/data-io/data-list.c:1460 -#: src/language/data-io/data-list.c:1494 +#: src/language/data-io/data-list.c:1402 src/language/data-io/data-list.c:1436 +#: src/language/data-io/data-list.c:1449 src/language/data-io/data-list.c:1462 +#: src/language/data-io/data-list.c:1496 #, c-format msgid "%s subcommand given multiple times." msgstr "" -#: src/language/data-io/data-list.c:1423 +#: src/language/data-io/data-list.c:1425 #, c-format msgid "STARTS beginning column (%d) exceeds STARTS ending column (%d)." msgstr "" -#: src/language/data-io/data-list.c:1480 +#: src/language/data-io/data-list.c:1482 #, c-format msgid "CONTINUED beginning column (%d) exceeds CONTINUED ending column (%d)." msgstr "" -#: src/language/data-io/data-list.c:1503 +#: src/language/data-io/data-list.c:1505 #, c-format msgid "ID beginning column (%ld) must be positive." msgstr "" -#: src/language/data-io/data-list.c:1518 +#: src/language/data-io/data-list.c:1520 #, c-format msgid "ID ending column (%ld) must be positive." msgstr "" -#: src/language/data-io/data-list.c:1524 +#: src/language/data-io/data-list.c:1526 #, c-format msgid "ID ending column (%ld) cannot be less than ID beginning column (%d)." msgstr "" -#: src/language/data-io/data-list.c:1564 +#: src/language/data-io/data-list.c:1566 msgid "Missing required specification STARTS." msgstr "" -#: src/language/data-io/data-list.c:1566 +#: src/language/data-io/data-list.c:1568 msgid "Missing required specification OCCURS." msgstr "" -#: src/language/data-io/data-list.c:1573 +#: src/language/data-io/data-list.c:1575 msgid "ID specified without CONTINUED." msgstr "" -#: src/language/data-io/data-list.c:1584 +#: src/language/data-io/data-list.c:1586 #, c-format msgid "" "STARTS beginning column (%d) exceeds default STARTS ending column taken from " "file's record width (%d)." msgstr "" -#: src/language/data-io/data-list.c:1597 +#: src/language/data-io/data-list.c:1599 #, c-format msgid "" "CONTINUED beginning column (%d) exceeds default CONTINUED ending column " "taken from file's record width (%d)." msgstr "" -#: src/language/data-io/data-list.c:1676 +#: src/language/data-io/data-list.c:1678 msgid "String variable not allowed here." msgstr "" -#: src/language/data-io/data-list.c:1686 +#: src/language/data-io/data-list.c:1688 #, c-format msgid "%s (%d) must be at least 1." msgstr "" -#: src/language/data-io/data-list.c:1692 +#: src/language/data-io/data-list.c:1694 #, c-format msgid "Variable or integer expected for %s." msgstr "" -#: src/language/data-io/data-list.c:1817 +#: src/language/data-io/data-list.c:1819 #, c-format msgid "Encountered mismatched record ID \"%s\" expecting \"%s\"." msgstr "" -#: src/language/data-io/data-list.c:1849 +#: src/language/data-io/data-list.c:1852 #, c-format msgid "" "Variable %s starting in column %d extends beyond physical record length of %" "d." msgstr "" -#: src/language/data-io/data-list.c:1916 +#: src/language/data-io/data-list.c:1919 #, c-format msgid "Invalid value %d for OCCURS." msgstr "" -#: src/language/data-io/data-list.c:1922 +#: src/language/data-io/data-list.c:1925 #, c-format msgid "Beginning column for STARTS (%d) must be at least 1." msgstr "" -#: src/language/data-io/data-list.c:1930 +#: src/language/data-io/data-list.c:1932 #, c-format msgid "Ending column for STARTS (%d) is less than beginning column (%d)." msgstr "" -#: src/language/data-io/data-list.c:1938 +#: src/language/data-io/data-list.c:1940 #, c-format msgid "Invalid value %d for LENGTH." msgstr "" -#: src/language/data-io/data-list.c:1945 +#: src/language/data-io/data-list.c:1947 #, c-format msgid "Beginning column for CONTINUED (%d) must be at least 1." msgstr "" -#: src/language/data-io/data-list.c:1953 +#: src/language/data-io/data-list.c:1955 #, c-format msgid "Ending column for CONTINUED (%d) is less than beginning column (%d)." msgstr "" -#: src/language/data-io/data-list.c:1985 +#: src/language/data-io/data-list.c:1987 #, c-format msgid "" "Number of repetitions specified on OCCURS (%d) exceed number of repetitions " "available in space on STARTS (%d), and CONTINUED not specified." msgstr "" -#: src/language/data-io/data-list.c:2003 +#: src/language/data-io/data-list.c:2005 #, c-format msgid "Unexpected end of file with %d repetitions remaining out of %d." msgstr "" -#: src/language/data-io/data-reader.c:138 +#: src/language/data-io/data-reader.c:131 #, 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:168 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:206 -#: src/language/data-io/data-reader.c:224 +#: src/language/data-io/data-reader.c:199 +#: src/language/data-io/data-reader.c:216 #, c-format msgid "Error reading file %s: %s." msgstr "" -#: src/language/data-io/data-reader.c:227 +#: src/language/data-io/data-reader.c:219 #, c-format msgid "%s: Partial record at end of file." msgstr "" -#: src/language/data-io/data-reader.c:278 +#: src/language/data-io/data-reader.c:270 #, c-format msgid "Attempt to read beyond end-of-file on file %s." msgstr "" -#: src/language/data-io/data-reader.c:281 +#: src/language/data-io/data-reader.c:273 msgid "Attempt to read beyond END DATA." msgstr "" -#: src/language/data-io/data-reader.c:425 +#: src/language/data-io/data-reader.c:417 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:70 +#: src/language/data-io/data-writer.c:62 #, c-format msgid "An error occurred while opening \"%s\" for writing as a data file: %s." msgstr "" -#: src/language/data-io/data-writer.c:136 +#: src/language/data-io/data-writer.c:131 #, c-format msgid "I/O error occurred writing data file \"%s\"." msgstr "" @@ -1470,159 +1482,154 @@ msgstr "" msgid "Handle for %s not allowed here." msgstr "" -#: src/language/data-io/file-type.c:134 +#: src/language/data-io/file-type.c:149 msgid "MIXED, GROUPED, or NESTED expected." msgstr "" -#: src/language/data-io/file-type.c:157 +#: src/language/data-io/file-type.c:172 msgid "The CASE subcommand is not valid on FILE TYPE MIXED." msgstr "" -#: src/language/data-io/file-type.c:175 +#: src/language/data-io/file-type.c:190 msgid "WARN or NOWARN expected after WILD." msgstr "" -#: src/language/data-io/file-type.c:183 +#: src/language/data-io/file-type.c:198 msgid "The DUPLICATE subcommand is not valid on FILE TYPE MIXED." msgstr "" -#: src/language/data-io/file-type.c:197 +#: src/language/data-io/file-type.c:212 msgid "DUPLICATE=CASE is only valid on FILE TYPE NESTED." msgstr "" -#: src/language/data-io/file-type.c:206 +#: src/language/data-io/file-type.c:221 #, c-format msgid "WARN%s expected after DUPLICATE." msgstr "" -#: src/language/data-io/file-type.c:207 +#: src/language/data-io/file-type.c:222 msgid ", NOWARN, or CASE" msgstr "" -#: src/language/data-io/file-type.c:208 +#: src/language/data-io/file-type.c:223 msgid " or NOWARN" msgstr "" -#: src/language/data-io/file-type.c:216 +#: src/language/data-io/file-type.c:231 msgid "The MISSING subcommand is not valid on FILE TYPE MIXED." msgstr "" -#: src/language/data-io/file-type.c:228 +#: src/language/data-io/file-type.c:243 msgid "WARN or NOWARN after MISSING." msgstr "" -#: src/language/data-io/file-type.c:236 +#: src/language/data-io/file-type.c:251 msgid "ORDERED is only valid on FILE TYPE GROUPED." msgstr "" -#: src/language/data-io/file-type.c:247 +#: src/language/data-io/file-type.c:262 msgid "YES or NO expected after ORDERED." msgstr "" -#: src/language/data-io/file-type.c:253 src/language/data-io/file-type.c:548 +#: src/language/data-io/file-type.c:268 src/language/data-io/file-type.c:554 msgid "while expecting a valid subcommand" msgstr "" -#: src/language/data-io/file-type.c:260 +#: src/language/data-io/file-type.c:275 msgid "The required RECORD subcommand was not present." msgstr "" -#: src/language/data-io/file-type.c:268 +#: src/language/data-io/file-type.c:283 msgid "The required CASE subcommand was not present." msgstr "" -#: src/language/data-io/file-type.c:274 +#: src/language/data-io/file-type.c:289 msgid "CASE and RECORD must specify different variable names." msgstr "" -#: src/language/data-io/file-type.c:332 +#: src/language/data-io/file-type.c:347 msgid "Column value must be positive." msgstr "" -#: src/language/data-io/file-type.c:348 +#: src/language/data-io/file-type.c:363 msgid "Ending column precedes beginning column." msgstr "" -#: src/language/data-io/file-type.c:368 +#: src/language/data-io/file-type.c:383 msgid "Bad format specifier name." msgstr "" -#: src/language/data-io/file-type.c:397 src/language/data-io/file-type.c:586 -msgid "" -"This command may only appear within a FILE TYPE/END FILE TYPE structure." -msgstr "" - -#: src/language/data-io/file-type.c:420 +#: src/language/data-io/file-type.c:426 msgid "OTHER may appear only on the last RECORD TYPE command." msgstr "" -#: src/language/data-io/file-type.c:430 +#: src/language/data-io/file-type.c:436 msgid "No input commands (DATA LIST, REPEATING DATA) for above RECORD TYPE." msgstr "" -#: src/language/data-io/file-type.c:481 +#: src/language/data-io/file-type.c:487 msgid "" "The CASE subcommand is not allowed on the RECORD TYPE command for FILE TYPE " "MIXED." msgstr "" -#: src/language/data-io/file-type.c:491 +#: src/language/data-io/file-type.c:497 msgid "" "No variable name may be specified for the CASE subcommand on RECORD TYPE." msgstr "" -#: src/language/data-io/file-type.c:499 +#: src/language/data-io/file-type.c:505 msgid "" "The CASE column specification on RECORD TYPE must give a format specifier " "that is the same type as that of the CASE column specification given on FILE " "TYPE." msgstr "" -#: src/language/data-io/file-type.c:515 +#: src/language/data-io/file-type.c:521 msgid "WARN or NOWARN expected on DUPLICATE subcommand." msgstr "" -#: src/language/data-io/file-type.c:529 +#: src/language/data-io/file-type.c:535 msgid "WARN or NOWARN expected on MISSING subcommand." msgstr "" -#: src/language/data-io/file-type.c:542 +#: src/language/data-io/file-type.c:548 msgid "YES or NO expected on SPREAD subcommand." msgstr "" -#: src/language/data-io/file-type.c:599 +#: src/language/data-io/file-type.c:598 msgid "No input commands (DATA LIST, REPEATING DATA) on above RECORD TYPE." msgstr "" -#: src/language/data-io/file-type.c:606 +#: src/language/data-io/file-type.c:605 msgid "No commands between FILE TYPE and END FILE TYPE." msgstr "" -#: src/language/data-io/file-type.c:675 +#: src/language/data-io/file-type.c:674 #, c-format msgid "Unknown record type \"%.*s\"." msgstr "" -#: src/language/data-io/file-type.c:699 +#: src/language/data-io/file-type.c:698 #, c-format msgid "Unknown record type %g." msgstr "" -#: src/language/data-io/get.c:108 +#: src/language/data-io/get.c:106 msgid "expecting COMM or TAPE" msgstr "" -#: src/language/data-io/get.c:350 src/language/data-io/get.c:364 -#: src/language/data-io/get.c:389 +#: src/language/data-io/get.c:348 src/language/data-io/get.c:362 +#: src/language/data-io/get.c:387 #, c-format msgid "expecting %s or %s" msgstr "" -#: src/language/data-io/get.c:596 src/language/data-io/print.c:180 +#: src/language/data-io/get.c:594 src/language/data-io/print.c:180 msgid "expecting a valid subcommand" msgstr "" -#: src/language/data-io/get.c:629 +#: src/language/data-io/get.c:627 #, c-format msgid "" "Cannot rename %s as %s because there already exists a variable named %s. To " @@ -1630,319 +1637,313 @@ msgid "" "as \"/RENAME (A=B)(B=C)(C=A)\", or equivalently, \"/RENAME (A B C=B C A)\"." msgstr "" -#: src/language/data-io/get.c:654 +#: src/language/data-io/get.c:652 msgid "`=' expected after variable list." msgstr "" -#: src/language/data-io/get.c:661 +#: src/language/data-io/get.c:659 #, c-format msgid "" "Number of variables on left side of `=' (%d) does not match number of " "variables on right side (%d), in parenthesized group %d of RENAME subcommand." msgstr "" -#: src/language/data-io/get.c:674 +#: src/language/data-io/get.c:672 #, c-format msgid "Requested renaming duplicates variable name %s." msgstr "" -#: src/language/data-io/get.c:704 +#: src/language/data-io/get.c:702 msgid "Cannot DROP all variables from dictionary." msgstr "" -#: src/language/data-io/get.c:883 +#: src/language/data-io/get.c:879 msgid "The active file may not be specified more than once." msgstr "" -#: src/language/data-io/get.c:892 +#: src/language/data-io/get.c:887 msgid "Cannot specify the active file since no active file has been defined." msgstr "" -#: src/language/data-io/get.c:900 +#: src/language/data-io/get.c:895 msgid "" "MATCH FILES may not be used after TEMPORARY when the active file is an input " "source. Temporary transformations will be made permanent." msgstr "" -#: src/language/data-io/get.c:938 +#: src/language/data-io/get.c:933 msgid "Multiple IN subcommands for a single FILE or TABLE." msgstr "" -#: src/language/data-io/get.c:958 +#: src/language/data-io/get.c:953 msgid "BY may appear at most once." msgstr "" -#: src/language/data-io/get.c:978 +#: src/language/data-io/get.c:973 #, c-format msgid "File %s lacks BY variable %s." msgstr "" -#: src/language/data-io/get.c:992 +#: src/language/data-io/get.c:987 msgid "FIRST may appear at most once." msgstr "" -#: src/language/data-io/get.c:1006 +#: src/language/data-io/get.c:1001 msgid "LAST may appear at most once." msgstr "" -#: src/language/data-io/get.c:1047 +#: src/language/data-io/get.c:1042 msgid "BY is required when TABLE is specified." msgstr "" -#: src/language/data-io/get.c:1052 +#: src/language/data-io/get.c:1047 msgid "BY is required when IN is specified." msgstr "" -#: src/language/data-io/get.c:1080 +#: src/language/data-io/get.c:1075 #, c-format msgid "IN variable name %s duplicates an existing variable name." msgstr "" -#: src/language/data-io/get.c:1535 +#: src/language/data-io/get.c:1530 #, c-format msgid "" "Variable %s in file %s (%s) has different type or width from the same " "variable in earlier file (%s)." msgstr "" -#: src/language/data-io/inpt-pgm.c:85 -msgid "No matching INPUT PROGRAM command." +#: src/language/data-io/inpt-pgm.c:98 +msgid "Unexpected end-of-file within INPUT PROGRAM." msgstr "" -#: src/language/data-io/inpt-pgm.c:90 +#: src/language/data-io/inpt-pgm.c:107 msgid "" "No data-input or transformation commands specified between INPUT PROGRAM and " "END INPUT PROGRAM." msgstr "" -#: src/language/data-io/inpt-pgm.c:292 src/language/data-io/inpt-pgm.c:411 -msgid "" -"This command may only be executed between INPUT PROGRAM and END INPUT " -"PROGRAM." -msgstr "" - -#: src/language/data-io/inpt-pgm.c:336 +#: src/language/data-io/inpt-pgm.c:354 msgid "COLUMN subcommand multiply specified." msgstr "" -#: src/language/data-io/inpt-pgm.c:384 +#: src/language/data-io/inpt-pgm.c:402 msgid "" "REREAD: Column numbers must be positive finite numbers. Column set to 1." msgstr "" -#: src/language/data-io/list.q:151 src/language/stats/descriptives.c:356 +#: src/language/data-io/list.q:149 src/language/stats/descriptives.c:356 msgid "No variables specified." msgstr "" -#: src/language/data-io/list.q:159 +#: src/language/data-io/list.q:157 #, 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:167 +#: src/language/data-io/list.q:165 #, 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:173 +#: src/language/data-io/list.q:171 #, 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:179 +#: src/language/data-io/list.q:177 #, 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:205 +#: src/language/data-io/list.q:203 msgid "`/FORMAT WEIGHT' specified, but weighting is not on." msgstr "" -#: src/language/data-io/list.q:432 +#: src/language/data-io/list.q:430 msgid "Line" msgstr "" -#: src/language/data-io/matrix-data.c:213 +#: src/language/data-io/matrix-data.c:211 msgid "VARIABLES subcommand multiply specified." msgstr "" -#: src/language/data-io/matrix-data.c:228 +#: src/language/data-io/matrix-data.c:226 msgid "VARNAME_ cannot be explicitly specified on VARIABLES." msgstr "" -#: src/language/data-io/matrix-data.c:289 +#: src/language/data-io/matrix-data.c:287 msgid "in FORMAT subcommand" msgstr "" -#: src/language/data-io/matrix-data.c:300 +#: src/language/data-io/matrix-data.c:298 msgid "SPLIT subcommand multiply specified." msgstr "" -#: src/language/data-io/matrix-data.c:307 +#: src/language/data-io/matrix-data.c:305 msgid "in SPLIT subcommand" msgstr "" -#: src/language/data-io/matrix-data.c:317 +#: src/language/data-io/matrix-data.c:315 msgid "Split variable may not be named ROWTYPE_ or VARNAME_." msgstr "" -#: src/language/data-io/matrix-data.c:351 +#: src/language/data-io/matrix-data.c:349 #, c-format msgid "Split variable %s is already another type." msgstr "" -#: src/language/data-io/matrix-data.c:366 +#: src/language/data-io/matrix-data.c:364 msgid "FACTORS subcommand multiply specified." msgstr "" -#: src/language/data-io/matrix-data.c:385 +#: src/language/data-io/matrix-data.c:383 #, c-format msgid "Factor variable %s is already another type." msgstr "" -#: src/language/data-io/matrix-data.c:400 +#: src/language/data-io/matrix-data.c:398 msgid "CELLS subcommand multiply specified." msgstr "" -#: src/language/data-io/matrix-data.c:406 -#: src/language/data-io/matrix-data.c:425 +#: src/language/data-io/matrix-data.c:404 +#: src/language/data-io/matrix-data.c:423 msgid "expecting positive integer" msgstr "" -#: src/language/data-io/matrix-data.c:419 +#: src/language/data-io/matrix-data.c:417 msgid "N subcommand multiply specified." msgstr "" -#: src/language/data-io/matrix-data.c:440 +#: src/language/data-io/matrix-data.c:438 msgid "CONTENTS subcommand multiply specified." msgstr "" -#: src/language/data-io/matrix-data.c:460 +#: src/language/data-io/matrix-data.c:458 msgid "Nested parentheses not allowed." msgstr "" -#: src/language/data-io/matrix-data.c:470 +#: src/language/data-io/matrix-data.c:468 msgid "Mismatched right parenthesis (`(')." msgstr "" -#: src/language/data-io/matrix-data.c:475 +#: src/language/data-io/matrix-data.c:473 msgid "Empty parentheses not allowed." msgstr "" -#: src/language/data-io/matrix-data.c:488 -#: src/language/data-io/matrix-data.c:496 +#: src/language/data-io/matrix-data.c:486 +#: src/language/data-io/matrix-data.c:494 msgid "in CONTENTS subcommand" msgstr "" -#: src/language/data-io/matrix-data.c:503 +#: src/language/data-io/matrix-data.c:501 #, c-format msgid "Content multiply specified for %s." msgstr "" -#: src/language/data-io/matrix-data.c:520 +#: src/language/data-io/matrix-data.c:518 msgid "Missing right parenthesis." msgstr "" -#: src/language/data-io/matrix-data.c:540 +#: src/language/data-io/matrix-data.c:538 msgid "Missing VARIABLES subcommand." msgstr "" -#: src/language/data-io/matrix-data.c:546 +#: src/language/data-io/matrix-data.c:544 msgid "" "CONTENTS subcommand not specified: assuming file contains only CORR matrix." msgstr "" -#: src/language/data-io/matrix-data.c:556 +#: src/language/data-io/matrix-data.c:554 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:564 +#: src/language/data-io/matrix-data.c:562 msgid "Split file values must be present in the data when ROWTYPE_ is present." msgstr "" -#: src/language/data-io/matrix-data.c:617 +#: src/language/data-io/matrix-data.c:615 msgid "No continuous variables specified." msgstr "" -#: src/language/data-io/matrix-data.c:860 +#: src/language/data-io/matrix-data.c:858 msgid "Scope of string exceeds line." msgstr "" -#: src/language/data-io/matrix-data.c:925 +#: src/language/data-io/matrix-data.c:923 #, c-format msgid "End of line expected %s while reading %s." msgstr "" -#: src/language/data-io/matrix-data.c:1115 +#: src/language/data-io/matrix-data.c:1113 #, c-format msgid "expecting value for %s %s" msgstr "" -#: src/language/data-io/matrix-data.c:1281 +#: src/language/data-io/matrix-data.c:1278 #, c-format msgid "Syntax error expecting SPLIT FILE value %s." msgstr "" -#: src/language/data-io/matrix-data.c:1290 +#: src/language/data-io/matrix-data.c:1287 #, c-format msgid "Expecting value %g for %s." msgstr "" -#: src/language/data-io/matrix-data.c:1331 -#: src/language/data-io/matrix-data.c:1811 +#: src/language/data-io/matrix-data.c:1328 +#: src/language/data-io/matrix-data.c:1805 #, c-format msgid "Syntax error expecting factor value %s." msgstr "" -#: src/language/data-io/matrix-data.c:1340 +#: src/language/data-io/matrix-data.c:1337 #, c-format msgid "Syntax error expecting value %g for %s %s." msgstr "" -#: src/language/data-io/matrix-data.c:1587 +#: src/language/data-io/matrix-data.c:1581 #, c-format msgid "Syntax error %s expecting SPLIT FILE value." msgstr "" -#: src/language/data-io/matrix-data.c:1716 +#: src/language/data-io/matrix-data.c:1710 #, 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:1753 +#: src/language/data-io/matrix-data.c:1747 #, c-format msgid "Multiply specified ROWTYPE_ %s." msgstr "" -#: src/language/data-io/matrix-data.c:1758 +#: src/language/data-io/matrix-data.c:1752 #, c-format msgid "Syntax error %s expecting ROWTYPE_ string." msgstr "" -#: src/language/data-io/matrix-data.c:1778 +#: src/language/data-io/matrix-data.c:1772 #, c-format msgid "Syntax error %s." msgstr "" -#: src/language/data-io/matrix-data.c:1929 +#: src/language/data-io/matrix-data.c:1923 #, c-format msgid "Duplicate specification for %s." msgstr "" -#: src/language/data-io/matrix-data.c:1941 +#: src/language/data-io/matrix-data.c:1935 #, c-format msgid "Too many rows of matrix data for %s." msgstr "" -#: src/language/data-io/matrix-data.c:1989 +#: src/language/data-io/matrix-data.c:1981 #, c-format msgid "Syntax error expecting value for %s %s." msgstr "" @@ -2006,62 +2007,62 @@ msgid_plural "Writing %d records." msgstr[0] "" msgstr[1] "" -#: src/language/data-io/print.c:1091 +#: src/language/data-io/print.c:1078 msgid "The expression on PRINT SPACE evaluated to the system-missing value." msgstr "" -#: src/language/data-io/print.c:1094 +#: src/language/data-io/print.c:1081 #, c-format msgid "The expression on PRINT SPACE evaluated to %g." msgstr "" -#: src/language/dictionary/apply-dictionary.c:71 +#: src/language/dictionary/apply-dictionary.c:70 #, c-format msgid "Variable %s is %s in target file, but %s in source file." msgstr "" -#: src/language/dictionary/apply-dictionary.c:87 +#: src/language/dictionary/apply-dictionary.c:86 #, c-format msgid "Cannot add value labels from source file to long string variable %s." msgstr "" -#: src/language/dictionary/apply-dictionary.c:133 +#: src/language/dictionary/apply-dictionary.c:132 #, c-format msgid "" "Cannot apply missing values from source file to long string variable %s." msgstr "" -#: src/language/dictionary/apply-dictionary.c:153 +#: src/language/dictionary/apply-dictionary.c:152 msgid "No matching variables found between the source and target files." msgstr "" -#: src/language/dictionary/formats.c:89 +#: src/language/dictionary/formats.c:87 msgid "`(' expected after variable list" msgstr "" -#: src/language/dictionary/formats.c:99 src/language/dictionary/numeric.c:68 -#: src/language/dictionary/numeric.c:139 +#: src/language/dictionary/formats.c:97 src/language/dictionary/numeric.c:66 +#: src/language/dictionary/numeric.c:137 msgid "`)' expected after output format." msgstr "" -#: src/language/dictionary/missing-values.c:55 -#: src/language/stats/aggregate.c:432 +#: src/language/dictionary/missing-values.c:53 +#: src/language/stats/aggregate.c:434 msgid "expecting `('" msgstr "" -#: src/language/dictionary/missing-values.c:71 +#: src/language/dictionary/missing-values.c:69 #, c-format msgid "" "Cannot mix numeric variables (e.g. %s) and string variables (e.g. %s) within " "a single list." msgstr "" -#: src/language/dictionary/missing-values.c:111 +#: src/language/dictionary/missing-values.c:109 #, c-format msgid "Truncating missing value to short string length (%d characters)." msgstr "" -#: src/language/dictionary/missing-values.c:130 +#: src/language/dictionary/missing-values.c:128 #, c-format msgid "Missing values provided are too long to assign to variable of width %d." msgstr "" @@ -2138,18 +2139,18 @@ msgstr "" msgid "`/' or `.' expected." msgstr "" -#: src/language/dictionary/numeric.c:61 +#: src/language/dictionary/numeric.c:59 #, c-format msgid "Format type %s may not be used with a numeric variable." msgstr "" -#: src/language/dictionary/numeric.c:80 src/language/dictionary/numeric.c:162 +#: src/language/dictionary/numeric.c:78 src/language/dictionary/numeric.c:160 #: src/language/dictionary/vector.c:159 #, c-format msgid "There is already a variable named %s." msgstr "" -#: src/language/dictionary/numeric.c:132 +#: src/language/dictionary/numeric.c:130 #, c-format msgid "Format type %s may not be used with a string variable." msgstr "" @@ -2184,179 +2185,179 @@ msgstr "" msgid "Renaming would duplicate variable name %s." msgstr "" -#: src/language/dictionary/sys-file-info.c:100 +#: src/language/dictionary/sys-file-info.c:101 msgid "File:" msgstr "" -#: src/language/dictionary/sys-file-info.c:102 +#: src/language/dictionary/sys-file-info.c:103 msgid "Label:" msgstr "" -#: src/language/dictionary/sys-file-info.c:106 +#: src/language/dictionary/sys-file-info.c:107 msgid "No label." msgstr "" -#: src/language/dictionary/sys-file-info.c:109 +#: src/language/dictionary/sys-file-info.c:110 msgid "Created:" msgstr "" -#: src/language/dictionary/sys-file-info.c:112 +#: src/language/dictionary/sys-file-info.c:113 msgid "Endian:" msgstr "" -#: src/language/dictionary/sys-file-info.c:113 +#: src/language/dictionary/sys-file-info.c:114 msgid "Big." msgstr "" -#: src/language/dictionary/sys-file-info.c:113 +#: src/language/dictionary/sys-file-info.c:114 msgid "Little." msgstr "" -#: src/language/dictionary/sys-file-info.c:114 +#: src/language/dictionary/sys-file-info.c:115 msgid "Variables:" msgstr "" -#: src/language/dictionary/sys-file-info.c:117 +#: src/language/dictionary/sys-file-info.c:118 msgid "Cases:" msgstr "" -#: src/language/dictionary/sys-file-info.c:120 +#: src/language/dictionary/sys-file-info.c:121 msgid "Type:" msgstr "" -#: src/language/dictionary/sys-file-info.c:121 +#: src/language/dictionary/sys-file-info.c:122 msgid "System File." msgstr "" -#: src/language/dictionary/sys-file-info.c:122 +#: src/language/dictionary/sys-file-info.c:123 msgid "Weight:" msgstr "" -#: src/language/dictionary/sys-file-info.c:126 +#: src/language/dictionary/sys-file-info.c:127 msgid "Not weighted." msgstr "" -#: src/language/dictionary/sys-file-info.c:128 +#: src/language/dictionary/sys-file-info.c:129 msgid "Mode:" msgstr "" -#: src/language/dictionary/sys-file-info.c:130 +#: src/language/dictionary/sys-file-info.c:131 #, c-format msgid "Compression %s." msgstr "" -#: src/language/dictionary/sys-file-info.c:130 +#: src/language/dictionary/sys-file-info.c:131 msgid "on" msgstr "" -#: src/language/dictionary/sys-file-info.c:130 +#: src/language/dictionary/sys-file-info.c:131 msgid "off" msgstr "" -#: src/language/dictionary/sys-file-info.c:140 -#: src/language/dictionary/sys-file-info.c:378 +#: src/language/dictionary/sys-file-info.c:141 +#: src/language/dictionary/sys-file-info.c:379 msgid "Description" msgstr "" -#: src/language/dictionary/sys-file-info.c:141 -#: src/language/dictionary/sys-file-info.c:376 +#: src/language/dictionary/sys-file-info.c:142 +#: src/language/dictionary/sys-file-info.c:377 msgid "Position" msgstr "" -#: src/language/dictionary/sys-file-info.c:199 +#: src/language/dictionary/sys-file-info.c:200 msgid "The active file does not have a file label." msgstr "" -#: src/language/dictionary/sys-file-info.c:202 +#: src/language/dictionary/sys-file-info.c:203 msgid "File label:" msgstr "" -#: src/language/dictionary/sys-file-info.c:264 +#: src/language/dictionary/sys-file-info.c:265 msgid "No variables to display." msgstr "" -#: src/language/dictionary/sys-file-info.c:283 +#: src/language/dictionary/sys-file-info.c:284 msgid "Macros not supported." msgstr "" -#: src/language/dictionary/sys-file-info.c:293 +#: src/language/dictionary/sys-file-info.c:294 msgid "The active file dictionary does not contain any documents." msgstr "" -#: src/language/dictionary/sys-file-info.c:302 +#: src/language/dictionary/sys-file-info.c:303 msgid "Documents in the active file:" msgstr "" -#: src/language/dictionary/sys-file-info.c:380 -#: src/language/dictionary/sys-file-info.c:519 src/procedure.c:888 +#: src/language/dictionary/sys-file-info.c:381 +#: src/language/dictionary/sys-file-info.c:520 src/procedure.c:880 #: src/ui/gui/var-sheet.c:71 msgid "Label" msgstr "" -#: src/language/dictionary/sys-file-info.c:452 +#: src/language/dictionary/sys-file-info.c:453 #, c-format msgid "Format: %s" msgstr "" -#: src/language/dictionary/sys-file-info.c:459 +#: src/language/dictionary/sys-file-info.c:460 #, c-format msgid "Print Format: %s" msgstr "" -#: src/language/dictionary/sys-file-info.c:462 +#: src/language/dictionary/sys-file-info.c:463 #, c-format msgid "Write Format: %s" msgstr "" -#: src/language/dictionary/sys-file-info.c:474 +#: src/language/dictionary/sys-file-info.c:475 msgid "Missing Values: " msgstr "" -#: src/language/dictionary/sys-file-info.c:518 -#: src/language/stats/crosstabs.q:1111 src/language/stats/crosstabs.q:1138 -#: src/language/stats/crosstabs.q:1158 src/language/stats/crosstabs.q:1180 -#: src/language/stats/examine.q:1138 src/language/stats/frequencies.q:1146 -#: src/language/stats/frequencies.q:1267 src/procedure.c:887 +#: src/language/dictionary/sys-file-info.c:519 +#: src/language/stats/crosstabs.q:1109 src/language/stats/crosstabs.q:1136 +#: src/language/stats/crosstabs.q:1156 src/language/stats/crosstabs.q:1178 +#: src/language/stats/examine.q:1141 src/language/stats/frequencies.q:1145 +#: src/language/stats/frequencies.q:1266 src/procedure.c:879 msgid "Value" msgstr "" -#: src/language/dictionary/sys-file-info.c:575 +#: src/language/dictionary/sys-file-info.c:576 msgid "No vectors defined." msgstr "" -#: src/language/dictionary/sys-file-info.c:590 +#: src/language/dictionary/sys-file-info.c:591 msgid "Vector" msgstr "" -#: src/language/dictionary/value-labels.c:121 +#: src/language/dictionary/value-labels.c:118 #, 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:157 src/language/lexer/lexer.c:590 +#: src/language/dictionary/value-labels.c:154 src/language/lexer/lexer.c:590 msgid "expecting string" msgstr "" -#: src/language/dictionary/value-labels.c:166 src/language/lexer/lexer.c:604 +#: src/language/dictionary/value-labels.c:163 src/language/lexer/lexer.c:604 msgid "expecting integer" msgstr "" -#: src/language/dictionary/value-labels.c:170 +#: src/language/dictionary/value-labels.c:167 #, c-format msgid "Value label `%g' is not integer." msgstr "" -#: src/language/dictionary/value-labels.c:180 +#: src/language/dictionary/value-labels.c:177 msgid "Truncating value label to 60 characters." msgstr "" -#: src/language/dictionary/variable-label.c:50 +#: src/language/dictionary/variable-label.c:48 msgid "String expected for variable label." msgstr "" -#: src/language/dictionary/variable-label.c:56 +#: src/language/dictionary/variable-label.c:54 msgid "Truncating variable label to 255 characters." msgstr "" @@ -2403,37 +2404,37 @@ msgstr "" msgid "expecting number or string" msgstr "" -#: src/language/expressions/helpers.c:36 +#: src/language/expressions/helpers.c:37 msgid "" "One of the arguments to a DATE function is not an integer. The result will " "be system-missing." msgstr "" -#: src/language/expressions/helpers.c:58 +#: src/language/expressions/helpers.c:59 msgid "" "The week argument to DATE.WKYR is not an integer. The result will be system-" "missing." msgstr "" -#: src/language/expressions/helpers.c:64 +#: src/language/expressions/helpers.c:65 msgid "" "The week argument to DATE.WKYR is outside the acceptable range of 1 to 53. " "The result will be system-missing." msgstr "" -#: src/language/expressions/helpers.c:86 +#: src/language/expressions/helpers.c:87 msgid "" "The day argument to DATE.YRDAY is not an integer. The result will be system-" "missing." msgstr "" -#: src/language/expressions/helpers.c:92 +#: src/language/expressions/helpers.c:93 msgid "" "The day argument to DATE.YRDAY is outside the acceptable range of 1 to 366. " "The result will be system-missing." msgstr "" -#: src/language/expressions/helpers.c:114 +#: src/language/expressions/helpers.c:115 msgid "" "The year argument to YRMODA is greater than 47516. The result will be " "system-missing." @@ -2481,7 +2482,7 @@ msgstr "" msgid "Unknown identifier %s." msgstr "" -#: src/language/expressions/parse.c:846 src/language/stats/aggregate.c:488 +#: src/language/expressions/parse.c:846 src/language/stats/aggregate.c:490 msgid "expecting `)'" msgstr "" @@ -2549,6 +2550,12 @@ msgstr "" msgid "%s is a PSPP extension." msgstr "" +#: src/language/expressions/parse.c:1222 src/ui/terminal/command-line.c:126 +#: src/ui/terminal/command-line.c:145 src/ui/terminal/command-line.c:157 +#, c-format +msgid "%s is not yet implemented." +msgstr "" + #: src/language/lexer/format-parser.c:66 msgid "X and T format specifiers not allowed here." msgstr "" @@ -2620,50 +2627,50 @@ msgstr "" msgid "expecting identifier" msgstr "" -#: src/language/lexer/lexer.c:842 +#: src/language/lexer/lexer.c:861 msgid "" msgstr "" -#: src/language/lexer/lexer.c:988 +#: src/language/lexer/lexer.c:1007 msgid "binary" msgstr "" -#: src/language/lexer/lexer.c:993 +#: src/language/lexer/lexer.c:1012 msgid "octal" msgstr "" -#: src/language/lexer/lexer.c:998 +#: src/language/lexer/lexer.c:1017 msgid "hex" msgstr "" -#: src/language/lexer/lexer.c:1008 +#: src/language/lexer/lexer.c:1027 #, c-format msgid "String of %s digits has %d characters, which is not a multiple of %d." msgstr "" -#: src/language/lexer/lexer.c:1037 +#: src/language/lexer/lexer.c:1056 #, c-format msgid "`%c' is not a valid %s digit." msgstr "" -#: src/language/lexer/lexer.c:1068 +#: src/language/lexer/lexer.c:1087 msgid "Unterminated string constant." msgstr "" -#: src/language/lexer/lexer.c:1122 +#: src/language/lexer/lexer.c:1141 msgid "Unexpected end of file in string concatenation." msgstr "" -#: src/language/lexer/lexer.c:1130 +#: src/language/lexer/lexer.c:1149 msgid "String expected following `+'." msgstr "" -#: src/language/lexer/lexer.c:1143 +#: src/language/lexer/lexer.c:1162 #, c-format msgid "String exceeds 255 characters in length (%d characters)." msgstr "" -#: src/language/lexer/lexer.c:1158 +#: src/language/lexer/lexer.c:1177 msgid "" "Sorry, literal strings may not contain null characters. Replacing with " "spaces." @@ -2760,79 +2767,79 @@ msgstr "" msgid "Bad bounds in use of TO convention." msgstr "" -#: src/language/line-buffer.c:246 +#: src/language/line-buffer.c:250 #, c-format msgid "Can't find `%s' in include file search path." msgstr "" -#: src/language/line-buffer.c:330 +#: src/language/line-buffer.c:334 #, c-format msgid "Closing `%s': %s." msgstr "" -#: src/language/line-buffer.c:441 +#: src/language/line-buffer.c:445 #, c-format -msgid "%s: Opening as syntax file." +msgid "opening \"%s\" as syntax file" msgstr "" -#: src/language/line-buffer.c:446 +#: src/language/line-buffer.c:450 #, c-format msgid "Opening `%s': %s." msgstr "" -#: src/language/line-buffer.c:459 +#: src/language/line-buffer.c:463 #, c-format msgid "Reading `%s': %s." msgstr "" -#: src/language/stats/aggregate.c:198 +#: src/language/stats/aggregate.c:200 msgid "while expecting COLUMNWISE" msgstr "" -#: src/language/stats/aggregate.c:227 +#: src/language/stats/aggregate.c:229 msgid "expecting BREAK" msgstr "" -#: src/language/stats/aggregate.c:232 +#: src/language/stats/aggregate.c:234 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:401 +#: src/language/stats/aggregate.c:403 msgid "expecting aggregation function" msgstr "" -#: src/language/stats/aggregate.c:417 +#: src/language/stats/aggregate.c:419 #, c-format msgid "Unknown aggregation function %s." msgstr "" -#: src/language/stats/aggregate.c:469 +#: src/language/stats/aggregate.c:471 #, c-format msgid "Missing argument %d to %s." msgstr "" -#: src/language/stats/aggregate.c:478 +#: src/language/stats/aggregate.c:480 #, c-format msgid "Arguments to %s must be of same type as source variables." msgstr "" -#: src/language/stats/aggregate.c:500 +#: src/language/stats/aggregate.c:502 #, c-format msgid "" "Number of source variables (%u) does not match number of target variables (%" "u)." msgstr "" -#: src/language/stats/aggregate.c:516 +#: src/language/stats/aggregate.c:518 #, 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:583 +#: src/language/stats/aggregate.c:585 #, c-format msgid "" "Variable name %s is not unique within the aggregate file dictionary, which " @@ -2854,311 +2861,311 @@ msgstr "" msgid "Duplicate variable name %s among target variables." msgstr "" -#: src/language/stats/crosstabs.q:267 +#: src/language/stats/crosstabs.q:265 msgid "" "Missing mode REPORT not allowed in general mode. Assuming MISSING=TABLE." msgstr "" -#: src/language/stats/crosstabs.q:277 +#: src/language/stats/crosstabs.q:275 msgid "Write mode ALL not allowed in general mode. Assuming WRITE=CELLS." msgstr "" -#: src/language/stats/crosstabs.q:333 +#: src/language/stats/crosstabs.q:331 msgid "Too many crosstabulation variables or dimensions." msgstr "" -#: src/language/stats/crosstabs.q:343 +#: src/language/stats/crosstabs.q:341 msgid "expecting BY" msgstr "" -#: src/language/stats/crosstabs.q:410 +#: src/language/stats/crosstabs.q:408 msgid "VARIABLES must be specified before TABLES." msgstr "" -#: src/language/stats/crosstabs.q:447 +#: src/language/stats/crosstabs.q:445 #, c-format msgid "Maximum value (%ld) less than minimum value (%ld)." msgstr "" -#: src/language/stats/crosstabs.q:812 +#: src/language/stats/crosstabs.q:810 msgid "Summary." msgstr "" -#: src/language/stats/crosstabs.q:814 src/language/stats/examine.q:923 +#: src/language/stats/crosstabs.q:812 src/language/stats/examine.q:926 msgid "Cases" msgstr "" -#: src/language/stats/crosstabs.q:815 src/language/stats/examine.q:857 -#: src/language/stats/frequencies.q:1144 src/language/stats/frequencies.q:1517 +#: src/language/stats/crosstabs.q:813 src/language/stats/examine.q:860 +#: src/language/stats/frequencies.q:1143 src/language/stats/frequencies.q:1516 msgid "Valid" msgstr "" -#: src/language/stats/crosstabs.q:816 src/language/stats/examine.q:858 -#: src/language/stats/frequencies.q:1212 src/language/stats/frequencies.q:1518 +#: src/language/stats/crosstabs.q:814 src/language/stats/examine.q:861 +#: src/language/stats/frequencies.q:1211 src/language/stats/frequencies.q:1517 #: src/ui/gui/var-sheet.c:73 msgid "Missing" msgstr "" -#: src/language/stats/crosstabs.q:817 src/language/stats/crosstabs.q:1020 -#: src/language/stats/crosstabs.q:1740 src/language/stats/examine.q:859 -#: src/language/stats/frequencies.q:1221 src/language/stats/oneway.q:314 -#: src/language/stats/oneway.q:478 src/language/stats/regression.q:294 +#: src/language/stats/crosstabs.q:815 src/language/stats/crosstabs.q:1018 +#: src/language/stats/crosstabs.q:1738 src/language/stats/examine.q:862 +#: src/language/stats/frequencies.q:1220 src/language/stats/oneway.q:314 +#: src/language/stats/oneway.q:478 src/language/stats/regression.q:308 msgid "Total" msgstr "" -#: src/language/stats/crosstabs.q:827 src/language/stats/examine.q:935 -#: src/language/stats/frequencies.q:1516 src/language/stats/oneway.q:400 +#: src/language/stats/crosstabs.q:825 src/language/stats/examine.q:938 +#: src/language/stats/frequencies.q:1515 src/language/stats/oneway.q:400 #: src/language/stats/t-test.q:682 src/language/stats/t-test.q:705 #: src/language/stats/t-test.q:830 src/language/stats/t-test.q:1365 msgid "N" msgstr "" -#: src/language/stats/crosstabs.q:828 src/language/stats/examine.q:938 -#: src/language/stats/frequencies.q:1148 src/language/stats/frequencies.q:1149 -#: src/language/stats/frequencies.q:1150 +#: src/language/stats/crosstabs.q:826 src/language/stats/examine.q:941 +#: src/language/stats/frequencies.q:1147 src/language/stats/frequencies.q:1148 +#: src/language/stats/frequencies.q:1149 msgid "Percent" msgstr "" -#: src/language/stats/crosstabs.q:1070 +#: src/language/stats/crosstabs.q:1068 msgid "count" msgstr "" -#: src/language/stats/crosstabs.q:1071 +#: src/language/stats/crosstabs.q:1069 msgid "row %" msgstr "" -#: src/language/stats/crosstabs.q:1072 +#: src/language/stats/crosstabs.q:1070 msgid "column %" msgstr "" -#: src/language/stats/crosstabs.q:1073 +#: src/language/stats/crosstabs.q:1071 msgid "total %" msgstr "" -#: src/language/stats/crosstabs.q:1074 +#: src/language/stats/crosstabs.q:1072 msgid "expected" msgstr "" -#: src/language/stats/crosstabs.q:1075 +#: src/language/stats/crosstabs.q:1073 msgid "residual" msgstr "" -#: src/language/stats/crosstabs.q:1076 +#: src/language/stats/crosstabs.q:1074 msgid "std. resid." msgstr "" -#: src/language/stats/crosstabs.q:1077 +#: src/language/stats/crosstabs.q:1075 msgid "adj. resid." msgstr "" -#: src/language/stats/crosstabs.q:1107 +#: src/language/stats/crosstabs.q:1105 msgid "Chi-square tests." msgstr "" -#: src/language/stats/crosstabs.q:1110 src/language/stats/crosstabs.q:1137 -#: src/language/stats/crosstabs.q:1157 src/language/stats/crosstabs.q:1178 -#: src/language/stats/examine.q:1369 +#: src/language/stats/crosstabs.q:1108 src/language/stats/crosstabs.q:1135 +#: src/language/stats/crosstabs.q:1155 src/language/stats/crosstabs.q:1176 +#: src/language/stats/examine.q:1372 msgid "Statistic" msgstr "" -#: src/language/stats/crosstabs.q:1112 src/language/stats/oneway.q:287 -#: src/language/stats/oneway.q:690 src/language/stats/regression.q:287 +#: src/language/stats/crosstabs.q:1110 src/language/stats/oneway.q:287 +#: src/language/stats/oneway.q:690 src/language/stats/regression.q:301 #: src/language/stats/t-test.q:980 src/language/stats/t-test.q:1172 #: src/language/stats/t-test.q:1264 msgid "df" msgstr "" -#: src/language/stats/crosstabs.q:1114 +#: src/language/stats/crosstabs.q:1112 msgid "Asymp. Sig. (2-sided)" msgstr "" -#: src/language/stats/crosstabs.q:1116 +#: src/language/stats/crosstabs.q:1114 msgid "Exact. Sig. (2-sided)" msgstr "" -#: src/language/stats/crosstabs.q:1118 +#: src/language/stats/crosstabs.q:1116 msgid "Exact. Sig. (1-sided)" msgstr "" -#: src/language/stats/crosstabs.q:1133 +#: src/language/stats/crosstabs.q:1131 msgid "Symmetric measures." msgstr "" -#: src/language/stats/crosstabs.q:1136 src/language/stats/crosstabs.q:1177 +#: src/language/stats/crosstabs.q:1134 src/language/stats/crosstabs.q:1175 msgid "Category" msgstr "" -#: src/language/stats/crosstabs.q:1139 src/language/stats/crosstabs.q:1181 +#: src/language/stats/crosstabs.q:1137 src/language/stats/crosstabs.q:1179 msgid "Asymp. Std. Error" msgstr "" -#: src/language/stats/crosstabs.q:1140 src/language/stats/crosstabs.q:1182 +#: src/language/stats/crosstabs.q:1138 src/language/stats/crosstabs.q:1180 msgid "Approx. T" msgstr "" -#: src/language/stats/crosstabs.q:1141 src/language/stats/crosstabs.q:1183 +#: src/language/stats/crosstabs.q:1139 src/language/stats/crosstabs.q:1181 msgid "Approx. Sig." msgstr "" -#: src/language/stats/crosstabs.q:1152 +#: src/language/stats/crosstabs.q:1150 msgid "Risk estimate." msgstr "" -#: src/language/stats/crosstabs.q:1156 +#: src/language/stats/crosstabs.q:1154 #, c-format msgid "95%% Confidence Interval" msgstr "" -#: src/language/stats/crosstabs.q:1159 src/language/stats/t-test.q:984 +#: src/language/stats/crosstabs.q:1157 src/language/stats/t-test.q:984 #: src/language/stats/t-test.q:1169 src/language/stats/t-test.q:1267 msgid "Lower" msgstr "" -#: src/language/stats/crosstabs.q:1160 src/language/stats/t-test.q:985 +#: src/language/stats/crosstabs.q:1158 src/language/stats/t-test.q:985 #: src/language/stats/t-test.q:1170 src/language/stats/t-test.q:1268 msgid "Upper" msgstr "" -#: src/language/stats/crosstabs.q:1174 +#: src/language/stats/crosstabs.q:1172 msgid "Directional measures." msgstr "" -#: src/language/stats/crosstabs.q:1179 src/ui/gui/var-sheet.c:68 +#: src/language/stats/crosstabs.q:1177 src/ui/gui/var-sheet.c:68 msgid "Type" msgstr "" -#: src/language/stats/crosstabs.q:1935 +#: src/language/stats/crosstabs.q:1933 msgid "Pearson Chi-Square" msgstr "" -#: src/language/stats/crosstabs.q:1936 +#: src/language/stats/crosstabs.q:1934 msgid "Likelihood Ratio" msgstr "" -#: src/language/stats/crosstabs.q:1937 +#: src/language/stats/crosstabs.q:1935 msgid "Fisher's Exact Test" msgstr "" -#: src/language/stats/crosstabs.q:1938 +#: src/language/stats/crosstabs.q:1936 msgid "Continuity Correction" msgstr "" -#: src/language/stats/crosstabs.q:1939 +#: src/language/stats/crosstabs.q:1937 msgid "Linear-by-Linear Association" msgstr "" -#: src/language/stats/crosstabs.q:1976 src/language/stats/crosstabs.q:2046 -#: src/language/stats/crosstabs.q:2105 +#: src/language/stats/crosstabs.q:1974 src/language/stats/crosstabs.q:2044 +#: src/language/stats/crosstabs.q:2103 msgid "N of Valid Cases" msgstr "" -#: src/language/stats/crosstabs.q:1992 src/language/stats/crosstabs.q:2121 +#: src/language/stats/crosstabs.q:1990 src/language/stats/crosstabs.q:2119 msgid "Nominal by Nominal" msgstr "" -#: src/language/stats/crosstabs.q:1993 src/language/stats/crosstabs.q:2122 +#: src/language/stats/crosstabs.q:1991 src/language/stats/crosstabs.q:2120 msgid "Ordinal by Ordinal" msgstr "" -#: src/language/stats/crosstabs.q:1994 +#: src/language/stats/crosstabs.q:1992 msgid "Interval by Interval" msgstr "" -#: src/language/stats/crosstabs.q:1995 +#: src/language/stats/crosstabs.q:1993 msgid "Measure of Agreement" msgstr "" -#: src/language/stats/crosstabs.q:2000 +#: src/language/stats/crosstabs.q:1998 msgid "Phi" msgstr "" -#: src/language/stats/crosstabs.q:2001 +#: src/language/stats/crosstabs.q:1999 msgid "Cramer's V" msgstr "" -#: src/language/stats/crosstabs.q:2002 +#: src/language/stats/crosstabs.q:2000 msgid "Contingency Coefficient" msgstr "" -#: src/language/stats/crosstabs.q:2003 +#: src/language/stats/crosstabs.q:2001 msgid "Kendall's tau-b" msgstr "" -#: src/language/stats/crosstabs.q:2004 +#: src/language/stats/crosstabs.q:2002 msgid "Kendall's tau-c" msgstr "" -#: src/language/stats/crosstabs.q:2005 +#: src/language/stats/crosstabs.q:2003 msgid "Gamma" msgstr "" -#: src/language/stats/crosstabs.q:2006 +#: src/language/stats/crosstabs.q:2004 msgid "Spearman Correlation" msgstr "" -#: src/language/stats/crosstabs.q:2007 +#: src/language/stats/crosstabs.q:2005 msgid "Pearson's R" msgstr "" -#: src/language/stats/crosstabs.q:2008 +#: src/language/stats/crosstabs.q:2006 msgid "Kappa" msgstr "" -#: src/language/stats/crosstabs.q:2078 +#: src/language/stats/crosstabs.q:2076 #, c-format msgid "Odds Ratio for %s (%g / %g)" msgstr "" -#: src/language/stats/crosstabs.q:2081 +#: src/language/stats/crosstabs.q:2079 #, c-format msgid "Odds Ratio for %s (%.*s / %.*s)" msgstr "" -#: src/language/stats/crosstabs.q:2089 +#: src/language/stats/crosstabs.q:2087 #, c-format msgid "For cohort %s = %g" msgstr "" -#: src/language/stats/crosstabs.q:2092 +#: src/language/stats/crosstabs.q:2090 #, c-format msgid "For cohort %s = %.*s" msgstr "" -#: src/language/stats/crosstabs.q:2123 +#: src/language/stats/crosstabs.q:2121 msgid "Nominal by Interval" msgstr "" -#: src/language/stats/crosstabs.q:2128 +#: src/language/stats/crosstabs.q:2126 msgid "Lambda" msgstr "" -#: src/language/stats/crosstabs.q:2129 +#: src/language/stats/crosstabs.q:2127 msgid "Goodman and Kruskal tau" msgstr "" -#: src/language/stats/crosstabs.q:2130 +#: src/language/stats/crosstabs.q:2128 msgid "Uncertainty Coefficient" msgstr "" -#: src/language/stats/crosstabs.q:2131 +#: src/language/stats/crosstabs.q:2129 msgid "Somers' d" msgstr "" -#: src/language/stats/crosstabs.q:2132 +#: src/language/stats/crosstabs.q:2130 msgid "Eta" msgstr "" -#: src/language/stats/crosstabs.q:2137 +#: src/language/stats/crosstabs.q:2135 msgid "Symmetric" msgstr "" -#: src/language/stats/crosstabs.q:2138 src/language/stats/crosstabs.q:2139 +#: src/language/stats/crosstabs.q:2136 src/language/stats/crosstabs.q:2137 #, c-format msgid "%s Dependent" msgstr "" -#: src/language/stats/descriptives.c:103 src/language/stats/examine.q:1474 -#: src/language/stats/frequencies.q:120 src/language/stats/oneway.q:401 +#: src/language/stats/descriptives.c:103 src/language/stats/examine.q:1477 +#: src/language/stats/frequencies.q:119 src/language/stats/oneway.q:401 #: src/language/stats/t-test.q:683 src/language/stats/t-test.q:706 #: src/language/stats/t-test.q:829 src/language/stats/t-test.q:1166 msgid "Mean" @@ -3168,17 +3175,17 @@ msgstr "" msgid "S E Mean" msgstr "" -#: src/language/stats/descriptives.c:105 src/language/stats/frequencies.q:124 +#: src/language/stats/descriptives.c:105 src/language/stats/frequencies.q:123 msgid "Std Dev" msgstr "" -#: src/language/stats/descriptives.c:106 src/language/stats/examine.q:1554 -#: src/language/stats/frequencies.q:125 +#: src/language/stats/descriptives.c:106 src/language/stats/examine.q:1557 +#: src/language/stats/frequencies.q:124 msgid "Variance" msgstr "" -#: src/language/stats/descriptives.c:107 src/language/stats/examine.q:1661 -#: src/language/stats/frequencies.q:126 +#: src/language/stats/descriptives.c:107 src/language/stats/examine.q:1664 +#: src/language/stats/frequencies.q:125 msgid "Kurtosis" msgstr "" @@ -3186,8 +3193,8 @@ msgstr "" msgid "S E Kurt" msgstr "" -#: src/language/stats/descriptives.c:109 src/language/stats/examine.q:1641 -#: src/language/stats/frequencies.q:128 +#: src/language/stats/descriptives.c:109 src/language/stats/examine.q:1644 +#: src/language/stats/frequencies.q:127 msgid "Skewness" msgstr "" @@ -3195,22 +3202,22 @@ msgstr "" msgid "S E Skew" msgstr "" -#: src/language/stats/descriptives.c:111 src/language/stats/examine.q:1602 -#: src/language/stats/frequencies.q:130 +#: src/language/stats/descriptives.c:111 src/language/stats/examine.q:1605 +#: src/language/stats/frequencies.q:129 msgid "Range" msgstr "" -#: src/language/stats/descriptives.c:112 src/language/stats/examine.q:1579 -#: src/language/stats/frequencies.q:131 src/language/stats/oneway.q:413 +#: src/language/stats/descriptives.c:112 src/language/stats/examine.q:1582 +#: src/language/stats/frequencies.q:130 src/language/stats/oneway.q:413 msgid "Minimum" msgstr "" -#: src/language/stats/descriptives.c:113 src/language/stats/examine.q:1590 -#: src/language/stats/frequencies.q:132 src/language/stats/oneway.q:414 +#: src/language/stats/descriptives.c:113 src/language/stats/examine.q:1593 +#: src/language/stats/frequencies.q:131 src/language/stats/oneway.q:414 msgid "Maximum" msgstr "" -#: src/language/stats/descriptives.c:114 src/language/stats/frequencies.q:133 +#: src/language/stats/descriptives.c:114 src/language/stats/frequencies.q:132 msgid "Sum" msgstr "" @@ -3258,109 +3265,109 @@ msgstr "" msgid "Valid cases = %g; cases with missing value(s) = %g." msgstr "" -#: src/language/stats/examine.q:478 src/language/stats/examine.q:490 +#: src/language/stats/examine.q:481 src/language/stats/examine.q:493 #, c-format msgid "%s and %s are mutually exclusive" msgstr "" -#: src/language/stats/examine.q:917 +#: src/language/stats/examine.q:920 msgid "Case Processing Summary" msgstr "" -#: src/language/stats/examine.q:1123 +#: src/language/stats/examine.q:1126 msgid "Extreme Values" msgstr "" -#: src/language/stats/examine.q:1139 +#: src/language/stats/examine.q:1142 msgid "Case Number" msgstr "" -#: src/language/stats/examine.q:1224 +#: src/language/stats/examine.q:1227 msgid "Highest" msgstr "" -#: src/language/stats/examine.q:1229 +#: src/language/stats/examine.q:1232 msgid "Lowest" msgstr "" -#: src/language/stats/examine.q:1370 src/language/stats/oneway.q:403 -#: src/language/stats/oneway.q:688 src/language/stats/regression.q:191 +#: src/language/stats/examine.q:1373 src/language/stats/oneway.q:403 +#: src/language/stats/oneway.q:688 src/language/stats/regression.q:205 msgid "Std. Error" msgstr "" -#: src/language/stats/examine.q:1372 src/language/stats/oneway.q:417 +#: src/language/stats/examine.q:1375 src/language/stats/oneway.q:417 msgid "Descriptives" msgstr "" -#: src/language/stats/examine.q:1492 src/language/stats/oneway.q:408 +#: src/language/stats/examine.q:1495 src/language/stats/oneway.q:408 #, c-format msgid "%g%% Confidence Interval for Mean" msgstr "" -#: src/language/stats/examine.q:1498 src/language/stats/oneway.q:410 +#: src/language/stats/examine.q:1501 src/language/stats/oneway.q:410 msgid "Lower Bound" msgstr "" -#: src/language/stats/examine.q:1509 src/language/stats/oneway.q:411 +#: src/language/stats/examine.q:1512 src/language/stats/oneway.q:411 msgid "Upper Bound" msgstr "" -#: src/language/stats/examine.q:1521 +#: src/language/stats/examine.q:1524 #, c-format msgid "5%% Trimmed Mean" msgstr "" -#: src/language/stats/examine.q:1532 src/language/stats/frequencies.q:122 +#: src/language/stats/examine.q:1535 src/language/stats/frequencies.q:121 msgid "Median" msgstr "" -#: src/language/stats/examine.q:1566 src/language/stats/oneway.q:402 +#: src/language/stats/examine.q:1569 src/language/stats/oneway.q:402 #: src/language/stats/t-test.q:684 src/language/stats/t-test.q:707 #: src/language/stats/t-test.q:831 src/language/stats/t-test.q:1167 msgid "Std. Deviation" msgstr "" -#: src/language/stats/examine.q:1614 +#: src/language/stats/examine.q:1617 msgid "Interquartile Range" msgstr "" -#: src/language/stats/examine.q:1766 +#: src/language/stats/examine.q:1769 #, c-format msgid "Boxplot of %s vs. %s" msgstr "" -#: src/language/stats/examine.q:1791 +#: src/language/stats/examine.q:1794 msgid "Boxplot" msgstr "" -#: src/language/stats/examine.q:1833 +#: src/language/stats/examine.q:1836 #, c-format msgid "Normal Q-Q Plot of %s" msgstr "" -#: src/language/stats/examine.q:1834 src/language/stats/examine.q:1840 +#: src/language/stats/examine.q:1837 src/language/stats/examine.q:1843 msgid "Observed Value" msgstr "" -#: src/language/stats/examine.q:1835 +#: src/language/stats/examine.q:1838 msgid "Expected Normal" msgstr "" -#: src/language/stats/examine.q:1838 +#: src/language/stats/examine.q:1841 #, c-format msgid "Detrended Normal Q-Q Plot of %s" msgstr "" -#: src/language/stats/examine.q:1841 +#: src/language/stats/examine.q:1844 msgid "Dev from Normal" msgstr "" -#: src/language/stats/examine.q:1960 src/language/stats/examine.q:1982 -#: src/language/stats/frequencies.q:1528 +#: src/language/stats/examine.q:1963 src/language/stats/examine.q:1985 +#: src/language/stats/frequencies.q:1527 msgid "Percentiles" msgstr "" -#: src/language/stats/examine.q:2107 +#: src/language/stats/examine.q:2110 msgid "Tukey's Hinges" msgstr "" @@ -3382,139 +3389,139 @@ msgstr "" msgid "Could not create temporary file for FLIP." msgstr "" -#: src/language/stats/flip.c:301 src/language/stats/flip.c:371 +#: src/language/stats/flip.c:301 src/language/stats/flip.c:367 #, c-format msgid "Error writing FLIP file: %s." msgstr "" -#: src/language/stats/flip.c:418 +#: src/language/stats/flip.c:414 #, c-format msgid "Error rewinding FLIP file: %s." msgstr "" -#: src/language/stats/flip.c:425 +#: src/language/stats/flip.c:421 msgid "Error creating FLIP source file." msgstr "" -#: src/language/stats/flip.c:437 +#: src/language/stats/flip.c:433 #, c-format msgid "Error reading FLIP file: %s." msgstr "" -#: src/language/stats/flip.c:461 +#: src/language/stats/flip.c:457 #, c-format msgid "Error seeking FLIP source file: %s." msgstr "" -#: src/language/stats/flip.c:469 +#: src/language/stats/flip.c:465 #, c-format msgid "Error writing FLIP source file: %s." msgstr "" -#: src/language/stats/flip.c:484 +#: src/language/stats/flip.c:480 #, c-format msgid "Error rewinding FLIP source file: %s." msgstr "" -#: src/language/stats/flip.c:532 +#: src/language/stats/flip.c:528 #, c-format msgid "Error reading FLIP temporary file: %s." msgstr "" -#: src/language/stats/flip.c:535 +#: src/language/stats/flip.c:531 msgid "Unexpected end of file reading FLIP temporary file." msgstr "" -#: src/language/stats/frequencies.q:121 +#: src/language/stats/frequencies.q:120 msgid "S.E. Mean" msgstr "" -#: src/language/stats/frequencies.q:123 +#: src/language/stats/frequencies.q:122 msgid "Mode" msgstr "" -#: src/language/stats/frequencies.q:127 +#: src/language/stats/frequencies.q:126 msgid "S.E. Kurt" msgstr "" -#: src/language/stats/frequencies.q:129 +#: src/language/stats/frequencies.q:128 msgid "S.E. Skew" msgstr "" -#: src/language/stats/frequencies.q:405 +#: src/language/stats/frequencies.q:404 msgid "" "At most one of BARCHART, HISTOGRAM, or HBAR should be given. HBAR will be " "assumed. Argument values will be given precedence increasing along the " "order given." msgstr "" -#: src/language/stats/frequencies.q:488 +#: src/language/stats/frequencies.q:487 #, c-format msgid "" "MAX must be greater than or equal to MIN, if both are specified. However, " "MIN was specified as %g and MAX as %g. MIN and MAX will be ignored." msgstr "" -#: src/language/stats/frequencies.q:811 +#: src/language/stats/frequencies.q:810 msgid "" "Upper limit of integer mode value range must be greater than lower limit." msgstr "" -#: src/language/stats/frequencies.q:824 +#: src/language/stats/frequencies.q:823 #, c-format msgid "Variable %s specified multiple times on VARIABLES subcommand." msgstr "" -#: src/language/stats/frequencies.q:830 +#: src/language/stats/frequencies.q:829 #, c-format msgid "Integer mode specified, but %s is not a numeric variable." msgstr "" -#: src/language/stats/frequencies.q:896 +#: src/language/stats/frequencies.q:895 msgid "`)' expected after GROUPED interval list." msgstr "" -#: src/language/stats/frequencies.q:908 +#: src/language/stats/frequencies.q:907 #, c-format msgid "Variables %s specified on GROUPED but not on VARIABLES." msgstr "" -#: src/language/stats/frequencies.q:915 +#: src/language/stats/frequencies.q:914 #, c-format msgid "Variables %s specified multiple times on GROUPED subcommand." msgstr "" -#: src/language/stats/frequencies.q:1145 src/language/stats/frequencies.q:1237 -#: src/language/stats/frequencies.q:1238 src/language/stats/frequencies.q:1270 +#: src/language/stats/frequencies.q:1144 src/language/stats/frequencies.q:1236 +#: src/language/stats/frequencies.q:1237 src/language/stats/frequencies.q:1269 msgid "Cum" msgstr "" -#: src/language/stats/frequencies.q:1147 src/output/charts/plot-hist.c:129 +#: src/language/stats/frequencies.q:1146 src/output/charts/plot-hist.c:129 msgid "Frequency" msgstr "" -#: src/language/stats/frequencies.q:1167 +#: src/language/stats/frequencies.q:1166 msgid "Value Label" msgstr "" -#: src/language/stats/frequencies.q:1268 +#: src/language/stats/frequencies.q:1267 msgid "Freq" msgstr "" -#: src/language/stats/frequencies.q:1269 src/language/stats/frequencies.q:1271 +#: src/language/stats/frequencies.q:1268 src/language/stats/frequencies.q:1270 msgid "Pct" msgstr "" -#: src/language/stats/frequencies.q:1490 +#: src/language/stats/frequencies.q:1489 #, c-format msgid "No valid data for variable %s; statistics not displayed." msgstr "" -#: src/language/stats/means.q:104 +#: src/language/stats/means.q:102 msgid "Missing required subcommand TABLES." msgstr "" -#: src/language/stats/means.q:138 +#: src/language/stats/means.q:136 msgid "TABLES subcommand may not appear more than once." msgstr "" @@ -3532,21 +3539,21 @@ msgstr "" msgid "`%s' is not a variable name" msgstr "" -#: src/language/stats/oneway.q:286 src/language/stats/regression.q:286 +#: src/language/stats/oneway.q:286 src/language/stats/regression.q:300 msgid "Sum of Squares" msgstr "" -#: src/language/stats/oneway.q:288 src/language/stats/regression.q:288 +#: src/language/stats/oneway.q:288 src/language/stats/regression.q:302 msgid "Mean Square" msgstr "" -#: src/language/stats/oneway.q:289 src/language/stats/regression.q:289 +#: src/language/stats/oneway.q:289 src/language/stats/regression.q:303 #: src/language/stats/t-test.q:977 msgid "F" msgstr "" #: src/language/stats/oneway.q:290 src/language/stats/oneway.q:544 -#: src/language/stats/regression.q:194 src/language/stats/regression.q:290 +#: src/language/stats/regression.q:208 src/language/stats/regression.q:304 msgid "Significance" msgstr "" @@ -3558,7 +3565,7 @@ msgstr "" msgid "Within Groups" msgstr "" -#: src/language/stats/oneway.q:360 src/language/stats/regression.q:316 +#: src/language/stats/oneway.q:360 src/language/stats/regression.q:330 msgid "ANOVA" msgstr "" @@ -3594,7 +3601,7 @@ msgstr "" msgid "Value of Contrast" msgstr "" -#: src/language/stats/oneway.q:689 src/language/stats/regression.q:193 +#: src/language/stats/oneway.q:689 src/language/stats/regression.q:207 #: src/language/stats/t-test.q:979 src/language/stats/t-test.q:1171 #: src/language/stats/t-test.q:1263 msgid "t" @@ -3613,72 +3620,72 @@ msgstr "" msgid "Does not assume equal" msgstr "" -#: src/language/stats/rank.q:244 +#: src/language/stats/rank.q:245 #, c-format msgid "Variable %s already exists." msgstr "" -#: src/language/stats/rank.q:249 +#: src/language/stats/rank.q:250 msgid "Too many variables in INTO clause." msgstr "" -#: src/language/stats/regression.q:145 +#: src/language/stats/regression.q:159 msgid "R" msgstr "" -#: src/language/stats/regression.q:146 +#: src/language/stats/regression.q:160 msgid "R Square" msgstr "" -#: src/language/stats/regression.q:147 +#: src/language/stats/regression.q:161 msgid "Adjusted R Square" msgstr "" -#: src/language/stats/regression.q:148 +#: src/language/stats/regression.q:162 msgid "Std. Error of the Estimate" msgstr "" -#: src/language/stats/regression.q:153 +#: src/language/stats/regression.q:167 msgid "Model Summary" msgstr "" -#: src/language/stats/regression.q:190 +#: src/language/stats/regression.q:204 msgid "B" msgstr "" -#: src/language/stats/regression.q:192 +#: src/language/stats/regression.q:206 msgid "Beta" msgstr "" -#: src/language/stats/regression.q:195 +#: src/language/stats/regression.q:209 msgid "(Constant)" msgstr "" -#: src/language/stats/regression.q:255 +#: src/language/stats/regression.q:269 msgid "Coefficients" msgstr "" -#: src/language/stats/regression.q:292 +#: src/language/stats/regression.q:306 msgid "Regression" msgstr "" -#: src/language/stats/regression.q:293 +#: src/language/stats/regression.q:307 msgid "Residual" msgstr "" -#: src/language/stats/regression.q:371 +#: src/language/stats/regression.q:385 msgid "Model" msgstr "" -#: src/language/stats/regression.q:372 +#: src/language/stats/regression.q:386 msgid "Covariances" msgstr "" -#: src/language/stats/regression.q:387 +#: src/language/stats/regression.q:401 msgid "Coefficient Correlations" msgstr "" -#: src/language/stats/regression.q:885 +#: src/language/stats/regression.q:1157 msgid "Dependent variable must be numeric." msgstr "" @@ -3831,7 +3838,7 @@ msgid "Only USE ALL is currently implemented." msgstr "" #: src/language/utilities/include.c:43 -msgid "expecting filename" +msgid "expecting file name" msgstr "" #: src/language/utilities/permissions.c:77 @@ -3976,26 +3983,12 @@ msgstr "" msgid "WIDTH is %d." msgstr "" -#: src/language/utilities/title.c:59 -#, c-format -msgid "%s before: %s\n" -msgstr "" - -#: src/language/utilities/title.c:59 -msgid "" -msgstr "" - -#: src/language/utilities/title.c:71 +#: src/language/utilities/title.c:68 #, c-format msgid "%s: `.' expected after string." msgstr "" -#: src/language/utilities/title.c:87 -#, c-format -msgid "%s after: %s\n" -msgstr "" - -#: src/language/utilities/title.c:142 +#: src/language/utilities/title.c:138 #, c-format msgid "Document entered %s by %s:" msgstr "" @@ -4060,11 +4053,11 @@ msgstr "" msgid "Type mismatch. Cannot store %s data in %s variable %s." msgstr "" -#: src/language/xforms/sample.c:77 +#: src/language/xforms/sample.c:75 msgid "The sampling factor must be between 0 and 1 exclusive." msgstr "" -#: src/language/xforms/sample.c:97 +#: src/language/xforms/sample.c:95 #, c-format msgid "Cannot sample %d observations from a population of %d." msgstr "" @@ -4106,43 +4099,13 @@ msgstr "" msgid "Empirical with averaging" msgstr "" -#: src/math/sort.c:431 +#: src/math/sort.c:430 #, c-format msgid "" "Out of memory. Could not allocate room for minimum of %d cases of %d bytes " "each. (PSPP workspace is currently restricted to a maximum of %d KB.)" msgstr "" -#: src/message.c:89 -msgid "Terminating execution of syntax file due to error." -msgstr "" - -#: src/message.c:91 -#, c-format -msgid "Errors (%d) exceeds limit (%d)." -msgstr "" - -#: src/message.c:94 -#, c-format -msgid "Warnings (%d) exceed limit (%d)." -msgstr "" - -#: src/message.c:143 src/message.c:150 src/message.c:153 -msgid "error" -msgstr "" - -#: src/message.c:144 src/message.c:151 src/message.c:154 -msgid "warning" -msgstr "" - -#: src/message.c:145 src/message.c:155 -msgid "note" -msgstr "" - -#: src/message.c:147 src/message.c:148 -msgid "installation error" -msgstr "" - #: src/output/afm.c:150 #, c-format msgid "opening font metrics file \"%s\"" @@ -4210,70 +4173,70 @@ msgstr "" msgid "unexpected end of line expecting string" msgstr "" -#: src/output/ascii.c:161 +#: src/output/ascii.c:160 #, c-format msgid "ascii: opening output file \"%s\"" msgstr "" -#: src/output/ascii.c:172 +#: src/output/ascii.c:171 #, c-format msgid "" "ascii: page excluding margins and headers must be at least 59 characters " "wide by 15 lines long, but as configured is only %d characters by %d lines" msgstr "" -#: src/output/ascii.c:233 +#: src/output/ascii.c:232 #, c-format msgid "ascii: closing output file \"%s\"" msgstr "" -#: src/output/ascii.c:285 +#: src/output/ascii.c:284 #, c-format msgid "" "ascii: bad index value for `box' key: syntax is box[INDEX], 0 <= INDEX < %d " "decimal, with INDEX expressed in base 4" msgstr "" -#: src/output/ascii.c:292 +#: src/output/ascii.c:291 #, c-format msgid "ascii: multiple values for %s" msgstr "" -#: src/output/ascii.c:300 +#: src/output/ascii.c:299 #, c-format msgid "ascii: unknown parameter `%s'" msgstr "" -#: src/output/ascii.c:314 +#: src/output/ascii.c:313 #, c-format msgid "ascii: positive integer required as `%s' value" msgstr "" -#: src/output/ascii.c:340 +#: src/output/ascii.c:339 msgid "ascii: `emphasis' value must be `bold', `underline', or `none'" msgstr "" -#: src/output/ascii.c:353 +#: src/output/ascii.c:352 #, c-format msgid "ascii: zero or positive integer required as `%s' value" msgstr "" -#: src/output/ascii.c:384 +#: src/output/ascii.c:383 #, c-format msgid "ascii: boolean value expected for `%s'" msgstr "" -#: src/output/ascii.c:473 +#: src/output/ascii.c:472 #, c-format msgid "ascii: bad line (%d,%d)-(%d,%d) out of (%d,%d)\n" msgstr "" -#: src/output/ascii.c:683 src/output/postscript.c:832 +#: src/output/ascii.c:682 src/output/postscript.c:831 #, c-format msgid "%s - Page %d" msgstr "" -#: src/output/ascii.c:727 +#: src/output/ascii.c:726 msgid "ascii: charts are unsupported by this driver" msgstr "" @@ -4281,150 +4244,164 @@ msgstr "" msgid "HISTOGRAM" msgstr "" -#: src/output/html.c:68 +#: src/output/html.c:66 #, c-format msgid "opening HTML output file: %s" msgstr "" -#: src/output/html.c:79 +#: src/output/html.c:77 msgid "PSPP Output" msgstr "" -#: src/output/html.c:165 +#: src/output/html.c:163 #, c-format msgid "unknown configuration parameter `%s' for HTML device driver" msgstr "" -#: src/output/output.c:166 +#: src/output/output.c:165 #, c-format -msgid "Unknown output driver `%s'." +msgid "unknown output driver `%s'" msgstr "" -#: src/output/output.c:168 +#: src/output/output.c:167 #, c-format -msgid "Output driver `%s' referenced but never defined." +msgid "output driver `%s' referenced but never defined" msgstr "" #: src/output/output.c:261 -msgid "Using default output driver configuration." +msgid "using default output driver configuration" msgstr "" -#: src/output/output.c:296 -msgid "" -"Cannot find output initialization file. Use `-vvvvv' to view search path." +#: src/output/output.c:293 +msgid "cannot find output initialization file (use `-vv' to view search path)" msgstr "" -#: src/output/output.c:304 src/output/output.c:1067 +#: src/output/output.c:301 #, c-format -msgid "Opening %s: %s." +msgid "cannot open \"%s\"" msgstr "" -#: src/output/output.c:315 src/output/output.c:1078 +#: src/output/output.c:313 #, c-format -msgid "Reading %s: %s." +msgid "reading \"%s\"" msgstr "" -#: src/output/output.c:337 src/output/output.c:503 -msgid "Syntax error." +#: src/output/output.c:335 +msgid "syntax error" msgstr "" -#: src/output/output.c:347 +#: src/output/output.c:344 #, c-format -msgid "Closing %s: %s." +msgid "error closing \"%s\"" msgstr "" -#: src/output/output.c:355 -msgid "No output drivers are active." +#: src/output/output.c:352 +msgid "no active output drivers" msgstr "" -#: src/output/output.c:358 -msgid "Error reading device definition file." +#: src/output/output.c:355 +msgid "error reading device definition file" msgstr "" -#: src/output/output.c:475 +#: src/output/output.c:472 #, c-format msgid "" "Driver classes:\n" "\t" msgstr "" -#: src/output/output.c:604 -msgid "Syntax error in string constant." +#: src/output/output.c:504 +#, c-format +msgid "syntax error parsing options for \"%s\" driver" msgstr "" -#: src/output/output.c:639 -msgid "Syntax error in options." +#: src/output/output.c:521 +#, c-format +msgid "" +"reached end of options inside quoted string parsing options for \"%s\" driver" msgstr "" -#: src/output/output.c:649 -msgid "Syntax error in options (`=' expected)." +#: src/output/output.c:594 +#, c-format +msgid "syntax error in string constant parsing options for \"%s\" driver" msgstr "" -#: src/output/output.c:656 -msgid "Syntax error in options (value expected after `=')." +#: src/output/output.c:639 +#, c-format +msgid "syntax error expecting `=' parsing options for driver \"%s\"" msgstr "" -#: src/output/output.c:698 +#: src/output/output.c:692 #, c-format -msgid "Unknown output driver class `%s'." +msgid "unknown output driver class `%s'" msgstr "" -#: src/output/output.c:719 +#: src/output/output.c:714 #, c-format -msgid "Unknown device type `%s'." +msgid "unknown device type `%s'" msgstr "" -#: src/output/output.c:738 +#: src/output/output.c:733 #, c-format -msgid "Can't initialize output driver `%s' of class `%s'." +msgid "cannot initialize output driver `%s' of class `%s'" msgstr "" -#: src/output/output.c:783 -msgid "Driver definition line missing driver name or class name" +#: src/output/output.c:779 +msgid "driver definition line missing driver name or class name" msgstr "" -#: src/output/output.c:929 +#: src/output/output.c:926 #, c-format -msgid "Unit \"%s\" is unknown in dimension \"%s\"." +msgid "unit \"%s\" is unknown in dimension \"%s\"" msgstr "" -#: src/output/output.c:944 +#: src/output/output.c:941 #, c-format -msgid "Bad dimension \"%s\"." +msgid "bad dimension \"%s\"" msgstr "" -#: src/output/output.c:970 +#: src/output/output.c:967 #, c-format -msgid "`x' expected in paper size `%s'." +msgid "`x' expected in paper size `%s'" msgstr "" -#: src/output/output.c:980 +#: src/output/output.c:977 #, c-format -msgid "Trailing garbage `%s' on paper size `%s'." +msgid "trailing garbage `%s' on paper size `%s'" msgstr "" -#: src/output/output.c:1029 -msgid "Paper size name must not be empty." +#: src/output/output.c:1021 +msgid "paper size name cannot be empty" msgstr "" -#: src/output/output.c:1060 -msgid "Cannot find `papersize' configuration file." +#: src/output/output.c:1039 +msgid "cannot find `papersize' configuration file" msgstr "" -#: src/output/output.c:1105 -msgid "Syntax error in paper size definition." +#: src/output/output.c:1046 +#, c-format +msgid "error opening \"%s\"" msgstr "" -#: src/output/output.c:1134 -msgid "Error reading paper size definition file." +#: src/output/output.c:1057 +#, c-format +msgid "error reading \"%s\"" msgstr "" -#: src/output/postscript.c:164 +#: src/output/output.c:1085 +msgid "syntax error in paper size definition" +msgstr "" + +#: src/output/output.c:1097 +msgid "error reading paper size definition file" +msgstr "" + +#: src/output/postscript.c:163 #, c-format msgid "opening PostScript output file \"%s\"" msgstr "" -#: src/output/postscript.c:202 +#: src/output/postscript.c:201 #, c-format msgid "" "The defined PostScript page is not long enough to hold margins and headers, " @@ -4432,87 +4409,87 @@ msgid "" "lines of each font at the default size of %d.%03d points." msgstr "" -#: src/output/postscript.c:250 +#: src/output/postscript.c:249 #, c-format msgid "closing PostScript output file \"%s\"" msgstr "" -#: src/output/postscript.c:310 +#: src/output/postscript.c:309 #, c-format msgid "unknown configuration parameter `%s' for PostScript device driver" msgstr "" -#: src/output/postscript.c:326 +#: src/output/postscript.c:325 #, c-format msgid "" "unknown orientation `%s' (valid orientations are `portrait' and `landscape')" msgstr "" -#: src/output/postscript.c:338 +#: src/output/postscript.c:337 #, c-format msgid "boolean value expected for %s" msgstr "" -#: src/output/postscript.c:351 +#: src/output/postscript.c:350 #, c-format msgid "positive integer value required for `%s'" msgstr "" -#: src/output/postscript.c:356 +#: src/output/postscript.c:355 #, c-format msgid "default font size must be at least 1 point (value of 1000 for key `%s')" msgstr "" -#: src/output/postscript.c:388 +#: src/output/postscript.c:387 #, c-format msgid "value for `%s' must be a dimension of positive length (i.e., `1in')" msgstr "" -#: src/output/postscript.c:1182 +#: src/output/postscript.c:1181 #, c-format msgid "\"%s\": bad font specification" msgstr "" -#: src/output/postscript.c:1190 +#: src/output/postscript.c:1189 #, c-format msgid "could not find AFM file \"%s\"" msgstr "" -#: src/output/postscript.c:1204 +#: src/output/postscript.c:1203 #, c-format msgid "could not find font \"%s\"" msgstr "" -#: src/output/postscript.c:1213 +#: src/output/postscript.c:1212 #, c-format msgid "could not find encoding \"%s\"" msgstr "" -#: src/output/postscript.c:1313 +#: src/output/postscript.c:1312 #, c-format msgid "cannot open font file \"%s\"" msgstr "" -#: src/output/postscript.c:1354 +#: src/output/postscript.c:1353 #, c-format msgid "reading font file \"%s\"" msgstr "" -#: src/output/postscript.c:1376 +#: src/output/postscript.c:1375 #, c-format msgid "cannot open font encoding file \"%s\"" msgstr "" -#: src/output/postscript.c:1405 +#: src/output/postscript.c:1404 msgid "invalid numeric format" msgstr "" -#: src/output/table.c:239 +#: src/output/table.c:236 #, 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:310 +#: src/output/table.c:307 #, c-format msgid "" "bad box: (%d+%d=%d,%d+%d=%d)-(%d+%d=%d,%d+%d=%d) in table size (%d,%d)\n" @@ -4550,26 +4527,18 @@ msgstr "" msgid "Font Selection" msgstr "" -#: src/ui/gui/message-dialog.c:78 +#: src/ui/gui/message-dialog.c:75 msgid "Script Error" msgstr "" -#: src/ui/gui/message-dialog.c:83 -msgid "Installation Error" -msgstr "" - -#: src/ui/gui/message-dialog.c:88 +#: src/ui/gui/message-dialog.c:79 msgid "Data File Error" msgstr "" -#: src/ui/gui/message-dialog.c:95 +#: src/ui/gui/message-dialog.c:84 msgid "PSPP Error" msgstr "" -#: src/ui/gui/message-dialog.c:155 -msgid "Terminating NOW due to fatal error" -msgstr "" - #: src/ui/gui/missing-val-dialog.c:113 src/ui/gui/missing-val-dialog.c:158 msgid "Incorrect value for variable type" msgstr "" @@ -4658,7 +4627,7 @@ msgstr "" msgid "Scale" msgstr "" -#: src/ui/terminal/command-line.c:213 +#: src/ui/terminal/command-line.c:214 #, c-format msgid "" "PSPP, a program for statistical analysis of sample data.\n" @@ -4703,39 +4672,15 @@ msgid "" "\n" msgstr "" -#: src/ui/terminal/command-line.c:247 +#: src/ui/terminal/command-line.c:248 #, c-format msgid "" "\n" "Report bugs to <%s>.\n" msgstr "" -#: src/ui/terminal/main.c:154 -msgid "This command not executed. Stopping here to avoid cascading failures." -msgstr "" - -#: src/ui/terminal/main.c:164 -msgid "This command not executed." -msgstr "" - -#: src/ui/terminal/main.c:168 -msgid "" -"Skipping the rest of this command. Part of this command may have been " -"executed." -msgstr "" - -#: src/ui/terminal/main.c:173 +#: src/ui/terminal/main.c:111 msgid "" -"Skipping the rest of this command. This command was fully executed up to " -"this point." -msgstr "" - -#: src/ui/terminal/main.c:178 -msgid "" -"Trailing garbage was encountered following this command. The command was " -"fully executed to this point." -msgstr "" - -#: src/ui/terminal/main.c:194 -msgid "The rest of this command has been discarded." +"Stopping syntax file processing here to avoid a cascade of dependent command " +"failures." msgstr "" diff --git a/src/ChangeLog b/src/ChangeLog index e4e5014f..33f5f5f1 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,14 @@ +Wed Apr 26 12:58:46 2006 Ben Pfaff + + Improve the way we handle the various parsing "states". Until now + we've hard-coded the state transitions in the command definition + file, but that's error-prone and, worse, it's redundant--we can + figure out what state we're in anyhow. We can cleanly handle + INPUT PROGRAM and FILE TYPE with a nested command-processing loop. + + * procedure.c (case_source_is_complex): Removed. + (discard_variables) No need to set pgm_state anymore. + Tue Apr 25 11:06:49 2006 Ben Pfaff Finish reforming error message support. In this phase, move diff --git a/src/language/ChangeLog b/src/language/ChangeLog index ce8805cd..48aecc94 100644 --- a/src/language/ChangeLog +++ b/src/language/ChangeLog @@ -1,3 +1,58 @@ +Wed Apr 26 13:06:42 2006 Ben Pfaff + + Work on readline completion. + + * command.c: (pspp_completion_function) Removed. + (pspp_attempted_completion_function) New function. + (command_generator) New function. + +Wed Apr 26 13:04:48 2006 Ben Pfaff + + Improve the way we handle the various parsing "states". Until now + we've hard-coded the state transitions in the command definition + file, but that's error-prone and, worse, it's redundant--we can + figure out what state we're in anyhow. We can cleanly handle + INPUT PROGRAM and FILE TYPE with a nested command-processing loop. + + * command.c: (cmd_result_is_success) New function. + (cmd_result_is_failure) New function. + (enum states) New enum. + (enum flags) New enum. + (struct command) Add states, flags members. Remove transition, + skip_entire_name, debug members. Renamed func member as function. + (macro DEFCMD) Removed. + (macro DBGCMD) Removed. + (macro SPCCMD) Removed. + (macro UNIMPL) Removed. + (macro DEF_CMD) New. + (macro UNIMPL_CMD) New. + (macro COMMAND_CNT) Changed to static const var, renamed + command_cnt. Updated all references. + (FILE_TYPE_okay) Removed. + (cmd_parse) Rewrote in terms of do_parse_command(). + (do_parse_command) New function. + (find_command) New function. + (unknown_command_error) Use struct string to simplify code. + (parse_command_name) Recognize comment command names. Handle + flags. Don't reject testing-mode-only commands here--let higher + level do it. + (verify_valid_command) New function. + (cmd_comment) New function. + + * command.def: Completely rewritten and now sensibly organized. + + * command.h: (enum STATE_*) Renamed CMD_STATE_*. + (CMD_*) Now "enum cmd_result". Added CMD_QUIT. New + CMD_END_SUBLOOP. Removed CMD_TRAILING_GARBAGE, CMD_PART_SUCCESS, + CMD_PART_SUCCESS_MAYBE and replaced all references by CMD_FAILURE. + Added CMD_NOT_IMPLEMENTED. + (macro DEFCMD) Removed. + (macro DBGCMD) Removed. + (macro SPCCMD) Removed. + (macro UNIMPL) Removed. + (macro DEF_CMD) New. + (macro UNIMPL_CMD) New. + Mon Apr 3 11:03:36 2006 Ben Pfaff * list.q: (write_all_headers) Adapt to new html and output diff --git a/src/language/command.c b/src/language/command.c index c9e93cc9..b842084e 100644 --- a/src/language/command.c +++ b/src/language/command.c @@ -18,251 +18,164 @@ 02110-1301, USA. */ #include -#include + #include + #include #include #include #include #include + +#include +#include +#include +#include #include #include -#include #include -#include -#include -#include +#include #include +#include #include -#include #include #if HAVE_SYS_WAIT_H #include #endif +#if HAVE_READLINE +#include +#endif + #include "gettext.h" #define _(msgid) gettext (msgid) #define N_(msgid) msgid -/* Global variables. */ +/* Returns true if RESULT indicates success, + false otherwise. */ +bool +cmd_result_is_success (enum cmd_result result) +{ + return (result == CMD_SUCCESS || result == CMD_EOF + || result == CMD_QUIT || result == CMD_END_SUBLOOP); +} -/* A STATE_* constant giving the current program state. */ -int pgm_state; +/* Returns true if RESULT indicates failure, + false otherwise. */ +bool +cmd_result_is_failure (enum cmd_result result) +{ + return !cmd_result_is_success (result); +} -/* Static variables. */ +/* Command processing states. */ +enum states + { + S_INITIAL = 0x01, /* Allowed before active file defined. */ + S_DATA = 0x02, /* Allowed after active file defined. */ + S_INPUT_PROGRAM = 0x04, /* Allowed in INPUT PROGRAM. */ + S_FILE_TYPE = 0x08, /* Allowed in FILE TYPE. */ + S_ANY = 0x0f /* Allowed anywhere. */ + }; + +/* Other command requirements. */ +enum flags + { + F_ENHANCED = 0x10, /* Allowed only in enhanced syntax mode. */ + F_TESTING = 0x20, /* Allowed only in testing mode. */ + F_KEEP_FINAL_TOKEN = 0x40 /* Don't skip final token in command name. */ + }; /* A single command. */ struct command { + enum states states; /* States in which command is allowed. */ + enum flags flags; /* Other command requirements. */ const char *name; /* Command name. */ - int transition[4]; /* Transitions to make from each state. */ - int (*func) (void); /* Function to call. */ - int skip_entire_name; /* If zero, we don't skip the - final token in the command name. */ - short debug; /* Set if this cmd available only in test mode*/ + int (*function) (void); /* Function to call. */ }; /* Define the command array. */ -#define DEFCMD(NAME, T1, T2, T3, T4, FUNC) \ - {NAME, {T1, T2, T3, T4}, FUNC, 1, 0}, -#define DBGCMD(NAME, T1, T2, T3, T4, FUNC) \ - {NAME, {T1, T2, T3, T4}, FUNC, 1, 1}, -#define SPCCMD(NAME, T1, T2, T3, T4, FUNC) \ - {NAME, {T1, T2, T3, T4}, FUNC, 0, 0}, -#define UNIMPL(NAME, T1, T2, T3, T4, DESC) \ - {NAME, {T1, T2, T3, T4}, NULL, 1, 0}, +#define DEF_CMD(STATES, FLAGS, NAME, FUNCTION) {STATES, FLAGS, NAME, FUNCTION}, +#define UNIMPL_CMD(NAME, DESCRIPTION) {S_ANY, 0, NAME, NULL}, static const struct command commands[] = { #include "command.def" }; -#undef DEFCMD -#undef DBGCMD -#undef UNIMPL +#undef DEF_CMD +#undef UNIMPL_CMD +static const size_t command_cnt = sizeof commands / sizeof *commands; -/* Complete the line using the name of a command, - * based upon the current prg_state - */ -char * -pspp_completion_function (const char *text, int state) -{ - static int skip=0; - const struct command *cmd = 0; - - for(;;) - { - if ( state + skip >= sizeof(commands)/ sizeof(struct command)) - { - skip = 0; - return 0; - } - - cmd = &commands[state + skip]; - - if ( cmd->transition[pgm_state] == STATE_ERROR || ( cmd->debug && ! get_testing_mode () ) ) - { - skip++; - continue; - } - - if ( text == 0 || 0 == strncasecmp (cmd->name, text, strlen(text))) - { - break; - } - - skip++; - } - - - return xstrdup(cmd->name); -} - - - -#define COMMAND_CNT (sizeof commands / sizeof *commands) +static bool verify_valid_command (const struct command *, enum cmd_state); +static const struct command *find_command (const char *name); /* Command parser. */ static const struct command *parse_command_name (void); +static enum cmd_result do_parse_command (enum cmd_state); -/* Determines whether command C is appropriate to call in this - part of a FILE TYPE structure. */ -static int -FILE_TYPE_okay (const struct command *c UNUSED) -#if 0 +/* Parses an entire command, from command name to terminating + dot. On failure, skips to the terminating dot. + Returns the command's success or failure result. */ +enum cmd_result +cmd_parse (enum cmd_state state) { - int okay = 0; + int result; - if (c->func != cmd_record_type - && c->func != cmd_data_list - && c->func != cmd_repeating_data - && c->func != cmd_end_file_type) - msg (SE, _("%s not allowed inside FILE TYPE/END FILE TYPE."), c->name); - /* FIXME */ - else if (c->func == cmd_repeating_data && fty.type == FTY_GROUPED) - msg (SE, _("%s not allowed inside FILE TYPE GROUPED/END FILE TYPE."), - c->name); - else if (!fty.had_rec_type && c->func != cmd_record_type) - msg (SE, _("RECORD TYPE must be the first command inside a " - "FILE TYPE structure.")); - else - okay = 1; + som_new_series (); - if (c->func == cmd_record_type) - fty.had_rec_type = 1; + result = do_parse_command (state); + if (cmd_result_is_failure (result)) + lex_discard_rest_of_command (); - return okay; -} -#else -{ - return 1; + unset_cmd_algorithm (); + dict_clear_aux (default_dict); + + return result; } -#endif -/* Parses an entire PSPP command. This includes everything from the - command name to the terminating dot. Does most of its work by - passing it off to the respective command dispatchers. Only called - by parse() in main.c. */ -int -cmd_parse (void) +/* Parses an entire command, from command name to terminating + dot. */ +static enum cmd_result +do_parse_command (enum cmd_state state) { - const struct command *cp; /* Iterator used to find the proper command. */ - -#if C_ALLOCA - /* The generic alloca package performs garbage collection when it is - called with an argument of zero. */ - alloca (0); -#endif /* C_ALLOCA */ + const struct command *command; + enum cmd_result result; /* Null commands can result from extra empty lines. */ if (token == '.') return CMD_SUCCESS; - /* Parse comments. */ - if ((token == T_ID && !strcasecmp (tokid, "COMMENT")) - || token == T_EXP || token == '*' || token == '[') - { - lex_skip_comment (); - return CMD_SUCCESS; - } - - /* Otherwise the line must begin with a command name, which is - always an ID token. */ - if (token != T_ID) - { - lex_error (_("expecting command name")); - return CMD_FAILURE; - } - /* Parse the command name. */ - cp = parse_command_name (); - if (cp == NULL) + command = parse_command_name (); + if (command == NULL) return CMD_FAILURE; - if (cp->func == NULL) + else if (command->function == NULL) + return CMD_NOT_IMPLEMENTED; + else if ((command->flags & F_TESTING) && !get_testing_mode ()) { - msg (SE, _("%s is not yet implemented."), cp->name); - while (token && token != '.') - lex_get (); - return CMD_SUCCESS; + msg (SE, _("%s may be used only in testing mode."), command->name); + return CMD_FAILURE; } - - /* If we're in a FILE TYPE structure, only certain commands can be - allowed. */ - if (pgm_state == STATE_INPUT - && case_source_is_class (vfm_source, &file_type_source_class) - && !FILE_TYPE_okay (cp)) - return CMD_FAILURE; - - /* Certain state transitions are not allowed. Check for these. */ - assert (pgm_state >= 0 && pgm_state < STATE_ERROR); - if (cp->transition[pgm_state] == STATE_ERROR) + else if ((command->flags & F_ENHANCED) && get_syntax () != ENHANCED) { - static const char *state_name[4] = - { - N_("%s is not allowed (1) before a command to specify the " - "input program, such as DATA LIST, (2) between FILE TYPE " - "and END FILE TYPE, (3) between INPUT PROGRAM and END " - "INPUT PROGRAM."), - N_("%s is not allowed within an input program."), - N_("%s is only allowed within an input program."), - N_("%s is only allowed within an input program."), - }; - - msg (SE, gettext (state_name[pgm_state]), cp->name); - return CMD_FAILURE; + msg (SE, _("%s may be used only in enhanced syntax mode."), + command->name); + return CMD_FAILURE; } + else if (!verify_valid_command (command, state)) + return CMD_FAILURE; - /* The structured output manager numbers all its tables. Increment - the major table number for each separate procedure. */ - som_new_series (); - - { - int result; - - /* Call the command dispatcher. */ - msg_set_command_name (cp->name); - tab_set_command_name (cp->name); - result = cp->func (); - msg_set_command_name (NULL); - tab_set_command_name (NULL); + /* Execute command. */ + msg_set_command_name (command->name); + tab_set_command_name (command->name); + result = command->function (); + tab_set_command_name (NULL); + msg_set_command_name (NULL); - /* Perform the state transition if the command completed - successfully (at least in part). */ - if (result != CMD_FAILURE && result != CMD_CASCADING_FAILURE) - { - pgm_state = cp->transition[pgm_state]; - - if (pgm_state == STATE_ERROR) - { - discard_variables (); - pgm_state = STATE_INIT; - } - } - - /* Pass the command's success value up to the caller. */ - return result; - } + return result; } static size_t @@ -349,11 +262,11 @@ conflicting_3char_prefixes (const char *a, const char *b) static int conflicting_3char_prefix_command (const struct command *cmd) { - assert (cmd >= commands && cmd < commands + COMMAND_CNT); + assert (cmd >= commands && cmd < commands + command_cnt); return ((cmd > commands && conflicting_3char_prefixes (cmd[-1].name, cmd[0].name)) - || (cmd < commands + COMMAND_CNT + || (cmd < commands + command_cnt && conflicting_3char_prefixes (cmd[0].name, cmd[1].name))); } @@ -447,7 +360,7 @@ count_matching_commands (char *const words[], size_t word_cnt, cmd_match_count = 0; *dash_possible = 0; - for (cmd = commands; cmd < commands + COMMAND_CNT; cmd++) + for (cmd = commands; cmd < commands + command_cnt; cmd++) if (cmd_match_words (cmd, words, word_cnt, dash_possible) != MISMATCH) cmd_match_count++; @@ -462,13 +375,26 @@ get_complete_match (char *const words[], size_t word_cnt) { const struct command *cmd; - for (cmd = commands; cmd < commands + COMMAND_CNT; cmd++) + for (cmd = commands; cmd < commands + command_cnt; cmd++) if (cmd_match_words (cmd, words, word_cnt, NULL) == COMPLETE_MATCH) return cmd; return NULL; } +/* Returns the command with the given exact NAME. + Aborts if no such command exists. */ +static const struct command * +find_command (const char *name) +{ + const struct command *cmd; + + for (cmd = commands; cmd < commands + command_cnt; cmd++) + if (!strcmp (cmd->name, name)) + return cmd; + abort (); +} + /* Frees the WORD_CNT words in WORDS. */ static void free_words (char *words[], size_t word_cnt) @@ -484,29 +410,27 @@ free_words (char *words[], size_t word_cnt) static void unknown_command_error (char *const words[], size_t word_cnt) { - size_t idx; - size_t words_len; - char *name, *cp; - - words_len = 0; - for (idx = 0; idx < word_cnt; idx++) - words_len += strlen (words[idx]); - - cp = name = xmalloc (words_len + word_cnt + 16); - for (idx = 0; idx < word_cnt; idx++) + if (word_cnt == 0) + lex_error (_("expecting command name")); + else { - if (idx != 0) - *cp++ = ' '; - cp = stpcpy (cp, words[idx]); - } - *cp = '\0'; + struct string s; + size_t i; + + ds_init (&s, 0); + for (i = 0; i < word_cnt; i++) + { + if (i != 0) + ds_putc (&s, ' '); + ds_puts (&s, words[i]); + } - msg (SE, _("Unknown command %s."), name); + msg (SE, _("Unknown command %s."), ds_c_str (&s)); - free (name); + ds_destroy (&s); + } } - /* Parse the command name and return a pointer to the corresponding struct command if successful. If not successful, return a null pointer. */ @@ -518,6 +442,9 @@ parse_command_name (void) int complete_word_cnt; int dash_possible; + if (token == T_EXP || token == '*' || token == '[') + return find_command ("COMMENT"); + dash_possible = 0; word_cnt = complete_word_cnt = 0; while (token == T_ID || (dash_possible && token == '-')) @@ -525,11 +452,13 @@ parse_command_name (void) int cmd_match_cnt; assert (word_cnt < sizeof words / sizeof *words); - if (token == T_ID) - words[word_cnt] = xstrdup (ds_c_str (&tokstr)); - else + if (token == T_ID) + { + words[word_cnt] = xstrdup (ds_c_str (&tokstr)); + str_uppercase (words[word_cnt]); + } + else if (token == '-') words[word_cnt] = xstrdup ("-"); - str_uppercase (words[word_cnt]); word_cnt++; cmd_match_cnt = count_matching_commands (words, word_cnt, @@ -541,10 +470,8 @@ parse_command_name (void) const struct command *command = get_complete_match (words, word_cnt); if (command != NULL) { - if (command->skip_entire_name) + if (!(command->flags & F_KEEP_FINAL_TOKEN)) lex_get (); - if ( command->debug & !get_testing_mode () ) - goto error; free_words (words, word_cnt); return command; } @@ -572,7 +499,7 @@ parse_command_name (void) /* Figure out how many words we want to keep. We normally want to swallow the entire command. */ pushback_word_cnt = complete_word_cnt + 1; - if (!command->skip_entire_name) + if (command->flags & F_KEEP_FINAL_TOKEN) pushback_word_cnt--; /* FIXME: We only support one-token pushback. */ @@ -588,18 +515,112 @@ parse_command_name (void) free (words[word_cnt]); } - if ( command->debug && !get_testing_mode () ) - goto error; - free_words (words, word_cnt); return command; } -error: + /* We didn't get a valid command name. */ unknown_command_error (words, word_cnt); free_words (words, word_cnt); return NULL; } + +/* Returns true if COMMAND is allowed in STATE, + false otherwise. + If COMMAND is not allowed, emits an appropriate error + message. */ +static bool +verify_valid_command (const struct command *command, enum cmd_state state) +{ + if ((state == CMD_STATE_INITIAL && command->states & S_INITIAL) + || (state == CMD_STATE_DATA && command->states & S_DATA) + || (state == CMD_STATE_INPUT_PROGRAM + && command->states & S_INPUT_PROGRAM) + || (state == CMD_STATE_FILE_TYPE && command->states & S_FILE_TYPE)) + return true; + + if (state == CMD_STATE_INITIAL || state == CMD_STATE_DATA) + { + const char *allowed[3]; + int allowed_cnt; + char *s; + + allowed_cnt = 0; + if (command->states & S_INITIAL) + allowed[allowed_cnt++] = _("before the active file has been defined"); + else if (command->states & S_DATA) + allowed[allowed_cnt++] = _("after the active file has been defined"); + if (command->states & S_INPUT_PROGRAM) + allowed[allowed_cnt++] = _("inside INPUT PROGRAM"); + if (command->states & S_FILE_TYPE) + allowed[allowed_cnt++] = _("inside FILE TYPE"); + + if (allowed_cnt == 1) + s = xstrdup (allowed[0]); + else if (allowed_cnt == 2) + s = xasprintf (_("%s or %s"), allowed[0], allowed[1]); + else if (allowed_cnt == 3) + s = xasprintf (_("%s, %s, or %s"), allowed[0], allowed[1], allowed[2]); + else + abort (); + + msg (SE, _("%s is allowed only %s."), command->name, s); + + free (s); + } + else if (state == CMD_STATE_INPUT_PROGRAM) + msg (SE, _("%s is not allowed inside INPUT PROGRAM."), command->name); + else if (state == CMD_STATE_FILE_TYPE) + msg (SE, _("%s is not allowed inside FILE TYPE."), command->name); + + return false; +} + +/* Readline command name completion. */ + +#if HAVE_READLINE +static char *command_generator (const char *text, int state); + +/* Returns a set of completions for TEXT. + This is of the proper form for assigning to + rl_attempted_completion_function. */ +char ** +pspp_attempted_completion_function (const char *text, + int start, int end UNUSED) +{ + if (start == 0) + { + /* Complete command name at start of line. */ + return rl_completion_matches (text, command_generator); + } + else + { + /* Otherwise don't do any completion. */ + rl_attempted_completion_over = 1; + return NULL; + } +} + +/* If STATE is 0, returns the first command name matching TEXT. + Otherwise, returns the next command name matching TEXT. + Returns a null pointer when no matches are left. */ +static char * +command_generator (const char *text, int state) +{ + static const struct command *cmd; + + if (!state) + cmd = commands; + + for (; cmd < commands + command_cnt; cmd++) + if (!memcasecmp (cmd->name, text, strlen (text)) + && (!(cmd->flags & F_TESTING) || get_testing_mode ()) + && (!(cmd->flags & F_ENHANCED) || get_syntax () == ENHANCED)) + return xstrdup (cmd++->name); + + return NULL; +} +#endif /* HAVE_READLINE */ /* Simple commands. */ @@ -607,7 +628,7 @@ error: int cmd_finish (void) { - return CMD_EOF; + return CMD_QUIT; } /* Parses the N command. */ @@ -756,7 +777,7 @@ run_command (void) if (token != '.') { lex_error (_("expecting end of command")); - return CMD_TRAILING_GARBAGE; + return CMD_FAILURE; } } else @@ -783,7 +804,7 @@ cmd_host (void) if (lex_look_ahead () == '.') { lex_get (); - code = shell () ? CMD_PART_SUCCESS_MAYBE : CMD_SUCCESS; + code = shell () ? CMD_FAILURE : CMD_SUCCESS; } else code = run_command (); @@ -821,3 +842,11 @@ cmd_clear_transformations (void) return CMD_SUCCESS; } + +/* Parses a comment. */ +int +cmd_comment (void) +{ + lex_skip_comment (); + return CMD_SUCCESS; +} diff --git a/src/language/command.def b/src/language/command.def index 35440c07..2954271e 100644 --- a/src/language/command.def +++ b/src/language/command.def @@ -1,5 +1,5 @@ /* PSPP - computes sample statistics. - Copyright (C) 1997-9, 2000 Free Software Foundation, Inc. + Copyright (C) 2006 Free Software Foundation, Inc. Written by Ben Pfaff . This program is free software; you can redistribute it and/or @@ -17,177 +17,187 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -/* State abbreviations. */ -#define INIT STATE_INIT -#define INPU STATE_INPUT -#define TRAN STATE_TRANS -#define PROC STATE_PROC -#define ERRO STATE_ERROR +/* Utility commands acceptable anywhere. */ +DEF_CMD (S_ANY, F_ENHANCED, "CLOSE FILE HANDLE", cmd_close_file_handle) +DEF_CMD (S_ANY, F_KEEP_FINAL_TOKEN, "COMMENT", cmd_comment) +DEF_CMD (S_ANY, 0, "ECHO", cmd_echo) +DEF_CMD (S_ANY, 0, "ERASE", cmd_erase) +DEF_CMD (S_ANY, 0, "EXIT", cmd_finish) +DEF_CMD (S_ANY, 0, "FILE HANDLE", cmd_file_handle) +DEF_CMD (S_ANY, F_KEEP_FINAL_TOKEN, "FILE LABEL", cmd_file_label) +DEF_CMD (S_ANY, 0, "FINISH", cmd_finish) +DEF_CMD (S_ANY, 0, "HOST", cmd_host) +DEF_CMD (S_ANY, 0, "INCLUDE", cmd_include) +DEF_CMD (S_ANY, 0, "N OF CASES", cmd_n_of_cases) +DEF_CMD (S_ANY, 0, "N", cmd_n_of_cases) +DEF_CMD (S_ANY, 0, "NEW FILE", cmd_new_file) +DEF_CMD (S_ANY, 0, "PERMISSIONS", cmd_permissions) +DEF_CMD (S_ANY, 0, "Q", cmd_finish) +DEF_CMD (S_ANY, 0, "QUIT", cmd_finish) +DEF_CMD (S_ANY, 0, "SET", cmd_set) +DEF_CMD (S_ANY, 0, "SHOW", cmd_show) +DEF_CMD (S_ANY, F_KEEP_FINAL_TOKEN, "SUBTITLE", cmd_subtitle) +DEF_CMD (S_ANY, 0, "SYSFILE INFO", cmd_sysfile_info) +DEF_CMD (S_ANY, F_KEEP_FINAL_TOKEN, "TITLE", cmd_title) -UNIMPL ("ACF", ERRO, ERRO, ERRO, ERRO, "Autocorrelation function") -UNIMPL ("ADD FILES", ERRO, ERRO, ERRO, ERRO, "Add files to dictionary") -DEFCMD ("ADD VALUE LABELS", ERRO, INPU, TRAN, TRAN, cmd_add_value_labels) -DEFCMD ("AGGREGATE", ERRO, ERRO, PROC, TRAN, cmd_aggregate) -UNIMPL ("ALSCAL", ERRO, ERRO, ERRO, ERRO, "Multidimensional scaling") -UNIMPL ("ANOVA", ERRO, ERRO, ERRO, ERRO, "Factorial analysis of variance") -DEFCMD ("APPLY DICTIONARY", ERRO, ERRO, TRAN, TRAN, cmd_apply_dictionary) -DEFCMD ("AUTORECODE", ERRO, ERRO, PROC, PROC, cmd_autorecode) -SPCCMD ("BEGIN DATA", ERRO, ERRO, PROC, PROC, cmd_begin_data) -DEFCMD ("BREAK", ERRO, INPU, TRAN, TRAN, cmd_break) -UNIMPL ("CASEPLOT", ERRO, ERRO, ERRO, ERRO, "Plot time series") -UNIMPL ("CASESTOVARS", ERRO, ERRO, ERRO, ERRO, "Restructure complex data") -UNIMPL ("CCF", ERRO, ERRO, ERRO, ERRO, "Time series cross correlation") -DEFCMD ("CLEAR TRANSFORMATIONS", ERRO, INPU, TRAN, TRAN, cmd_clear_transformations) -DEFCMD ("CLOSE FILE HANDLE", INIT, INPU, TRAN, PROC, cmd_close_file_handle) -UNIMPL ("CLUSTER", ERRO, ERRO, ERRO, ERRO, "Hierachial clustering") -DEFCMD ("COMPUTE", ERRO, INPU, TRAN, TRAN, cmd_compute) -UNIMPL ("CONJOINT", ERRO, ERRO, ERRO, ERRO, "Analyse full concept data") -DEFCMD ("CORRELATIONS", ERRO, ERRO, PROC, PROC, cmd_correlations) -DEFCMD ("COUNT", ERRO, INPU, TRAN, TRAN, cmd_count) -UNIMPL ("COXREG", ERRO, ERRO, ERRO, ERRO, "Cox proportional hazards regression") -UNIMPL ("CREATE", ERRO, ERRO, ERRO, ERRO, "Create time series data") -DEFCMD ("CROSSTABS", ERRO, ERRO, PROC, PROC, cmd_crosstabs) -UNIMPL ("CURVEFIT", ERRO, ERRO, ERRO, ERRO, "Fit curve to line plot") -DEFCMD ("DATA LIST", TRAN, INPU, TRAN, TRAN, cmd_data_list) -UNIMPL ("DATE", ERRO, ERRO, ERRO, ERRO, "Create time series data") -DBGCMD ("DEBUG CASEFILE", INIT, INPU, TRAN, PROC, cmd_debug_casefile) -DBGCMD ("DEBUG EVALUATE", INIT, INPU, TRAN, PROC, cmd_debug_evaluate) -DBGCMD ("DEBUG MOMENTS", INIT, INPU, TRAN, PROC, cmd_debug_moments) -DBGCMD ("DEBUG POOL", INIT, INPU, TRAN, PROC, cmd_debug_pool) -DEFCMD ("DESCRIPTIVES", ERRO, ERRO, PROC, PROC, cmd_descriptives) -UNIMPL ("DISCRIMINANT", ERRO, ERRO, ERRO, ERRO, "Linear discriminant analysis") -DEFCMD ("DISPLAY", ERRO, INPU, TRAN, PROC, cmd_display) -SPCCMD ("DOCUMENT", ERRO, INPU, TRAN, TRAN, cmd_document) -DEFCMD ("DO IF", ERRO, INPU, TRAN, TRAN, cmd_do_if) -DEFCMD ("DO REPEAT", ERRO, INPU, TRAN, TRAN, cmd_do_repeat) -DEFCMD ("DROP DOCUMENTS", INIT, INPU, TRAN, PROC, cmd_drop_documents) -DEFCMD ("ECHO", INIT, INPU, TRAN, PROC, cmd_echo) -UNIMPL ("EDIT", ERRO, ERRO, ERRO, ERRO, "obsolete") -DEFCMD ("ELSE", ERRO, INPU, TRAN, TRAN, cmd_else) -DEFCMD ("ELSE IF", ERRO, INPU, TRAN, TRAN, cmd_else_if) -DEFCMD ("END CASE", ERRO, INPU, ERRO, ERRO, cmd_end_case) -DEFCMD ("END FILE", ERRO, INPU, ERRO, ERRO, cmd_end_file) -UNIMPL ("END FILE TYPE", ERRO, TRAN, ERRO, ERRO, "Ends complex data input") -DEFCMD ("END IF", ERRO, INPU, TRAN, TRAN, cmd_end_if) -DEFCMD ("END INPUT PROGRAM", ERRO, TRAN, ERRO, ERRO, cmd_end_input_program) -DEFCMD ("END LOOP", ERRO, INPU, TRAN, TRAN, cmd_end_loop) -DEFCMD ("END REPEAT", ERRO, INPU, TRAN, TRAN, cmd_end_repeat) -DEFCMD ("ERASE", INIT, INPU, TRAN, PROC, cmd_erase) -DEFCMD ("EXAMINE", ERRO, ERRO, PROC, PROC, cmd_examine) -DEFCMD ("EXECUTE", ERRO, ERRO, PROC, PROC, cmd_execute) -DEFCMD ("EXIT", INIT, INPU, TRAN, PROC, cmd_finish) -DEFCMD ("EXPORT", ERRO, ERRO, PROC, PROC, cmd_export) -UNIMPL ("FACTOR", ERRO, ERRO, ERRO, ERRO, "Factor analysis") -DEFCMD ("FILE HANDLE", INIT, INPU, TRAN, PROC, cmd_file_handle) -SPCCMD ("FILE LABEL", INIT, INPU, TRAN, PROC, cmd_file_label) -UNIMPL ("FILE TYPE", INPU, ERRO, INPU, INPU, "Complex data input") -DEFCMD ("FILTER", ERRO, ERRO, TRAN, TRAN, cmd_filter) -DEFCMD ("FINISH", INIT, INPU, TRAN, PROC, cmd_finish) -UNIMPL ("FIT", ERRO, ERRO, ERRO, ERRO, "Goodness of Fit") -DEFCMD ("FLIP", ERRO, ERRO, PROC, PROC, cmd_flip) -DEFCMD ("FORMATS", INIT, INPU, TRAN, PROC, cmd_formats) -DEFCMD ("FREQUENCIES", ERRO, ERRO, PROC, PROC, cmd_frequencies) -DEFCMD ("GET", TRAN, ERRO, TRAN, TRAN, cmd_get) -UNIMPL ("GET TRANSLATE", ERRO, ERRO, ERRO, ERRO, "Read other file formats") -UNIMPL ("GLM", ERRO, ERRO, ERRO, ERRO, "General Linear Model") -UNIMPL ("GRAPH", ERRO, ERRO, ERRO, ERRO, "Draw graphs") -DEFCMD ("HOST", INIT, INPU, TRAN, PROC, cmd_host) -DEFCMD ("IF", ERRO, INPU, TRAN, TRAN, cmd_if) -UNIMPL ("IGRAPH", ERRO, ERRO, ERRO, ERRO, "Interactive graphs") -DEFCMD ("IMPORT", TRAN, ERRO, TRAN, TRAN, cmd_import) -DEFCMD ("INCLUDE", INIT, INPU, TRAN, PROC, cmd_include) -UNIMPL ("INFO", ERRO, ERRO, ERRO, ERRO, "Local Documentation") -DEFCMD ("INPUT PROGRAM", INPU, ERRO, INPU, INPU, cmd_input_program) -UNIMPL ("KEYED DATA LIST", ERRO, ERRO, ERRO, ERRO, "Read nonsequential data") -UNIMPL ("KM", ERRO, ERRO, ERRO, ERRO, "Kaplan-Meier") -DEFCMD ("LEAVE", ERRO, INPU, TRAN, TRAN, cmd_leave) -DEFCMD ("LIST", ERRO, ERRO, PROC, PROC, cmd_list) -UNIMPL ("LOGISTIC REGRESSION", ERRO, ERRO, ERRO, ERRO, "Regression Analysis") -DEFCMD ("LOOP", ERRO, INPU, TRAN, TRAN, cmd_loop) -DEFCMD ("MATCH FILES", TRAN, ERRO, TRAN, PROC, cmd_match_files) -DEFCMD ("MATRIX DATA", TRAN, ERRO, TRAN, TRAN, cmd_matrix_data) -UNIMPL ("MCONVERT", ERRO, ERRO, ERRO, ERRO, "Convert covariance/correlation matrices") -DEFCMD ("MEANS", ERRO, ERRO, PROC, PROC, cmd_means) -DEFCMD ("MISSING VALUES", ERRO, INPU, TRAN, TRAN, cmd_missing_values) -DEFCMD ("MODIFY VARS", ERRO, ERRO, TRAN, PROC, cmd_modify_vars) -UNIMPL ("MULT RESPONSE", ERRO, ERRO, ERRO, ERRO, "Multiple reponse analysis") -UNIMPL ("MVA", ERRO, ERRO, ERRO, ERRO, "Missing value analysis") -DEFCMD ("NEW FILE", INIT, ERRO, INIT, INIT, cmd_new_file) -DEFCMD ("N", INIT, INPU, TRAN, TRAN, cmd_n_of_cases) -DEFCMD ("N OF CASES", INIT, INPU, TRAN, TRAN, cmd_n_of_cases) -UNIMPL ("NLR", ERRO, ERRO, ERRO, ERRO, "Non Linear Regression") -UNIMPL ("NONPAR CORR", ERRO, ERRO, ERRO, ERRO, "Nonparametric correlation") -UNIMPL ("NPAR TESTS", ERRO, ERRO, ERRO, ERRO, "Nonparametric tests") -UNIMPL ("NUMBERED", ERRO, ERRO, ERRO, ERRO, "") -DEFCMD ("NUMERIC", ERRO, INPU, TRAN, TRAN, cmd_numeric) -DEFCMD ("ONEWAY", ERRO, ERRO, PROC, PROC, cmd_oneway) -UNIMPL ("PACF", ERRO, ERRO, ERRO, ERRO, "Partial autocorrelation") -UNIMPL ("PARTIAL CORR", ERRO, ERRO, ERRO, ERRO, "Partial correlation") -DEFCMD ("PEARSON CORRELATIONS", ERRO, ERRO, PROC, PROC, cmd_correlations) -DEFCMD ("PERMISSIONS", INIT, INPU, TRAN, PROC, cmd_permissions) -UNIMPL ("POINT", ERRO, ERRO, ERRO, ERRO, "Marker in keyed file") -UNIMPL ("PPLOT", ERRO, ERRO, ERRO, ERRO, "Plot time series variables") -UNIMPL ("PREDICT", ERRO, ERRO, ERRO, ERRO, "Specify forecast period") -UNIMPL ("PRESERVE", ERRO, ERRO, ERRO, ERRO, "Push settings") -DEFCMD ("PRINT EJECT", ERRO, INPU, TRAN, TRAN, cmd_print_eject) -DEFCMD ("PRINT", ERRO, INPU, TRAN, TRAN, cmd_print) -DEFCMD ("PRINT FORMATS", ERRO, INPU, TRAN, TRAN, cmd_print_formats) -DEFCMD ("PRINT SPACE", ERRO, INPU, TRAN, TRAN, cmd_print_space) -UNIMPL ("PROCEDURE OUTPUT", ERRO, ERRO, ERRO, ERRO, "Specify output file") -UNIMPL ("PROBIT", ERRO, ERRO, ERRO, ERRO, "Probit analysis") -DEFCMD ("PROCESS IF", ERRO, ERRO, TRAN, TRAN, cmd_process_if) -UNIMPL ("PROXIMITIES", ERRO, ERRO, ERRO, ERRO, "Pairwise similarity") -DEFCMD ("Q", INIT, INPU, TRAN, PROC, cmd_finish) -UNIMPL ("QUICK CLUSTER", ERRO, ERRO, ERRO, ERRO, "Fast clustering") -DEFCMD ("QUIT", INIT, INPU, TRAN, PROC, cmd_finish) -UNIMPL ("RANK", ERRO, ERRO, ERRO, ERRO, "Create rank scores") -DEFCMD ("RECODE", ERRO, INPU, TRAN, TRAN, cmd_recode) -DEFCMD ("RECORD TYPE", ERRO, INPU, ERRO, ERRO, cmd_record_type) -UNIMPL ("REFORMAT", ERRO, ERRO, ERRO, ERRO, "Read obsolete files") -DEFCMD ("REGRESSION", ERRO, ERRO, PROC, PROC, cmd_regression) -DEFCMD ("RENAME VARIABLES", ERRO, INPU, TRAN, PROC, cmd_rename_variables) -UNIMPL ("REPEATING DATA", ERRO, INPU, ERRO, ERRO, "Specify multiple cases per input record") -UNIMPL ("REPORT", ERRO, ERRO, ERRO, ERRO, "Pretty print working file") -DEFCMD ("REREAD", ERRO, INPU, ERRO, ERRO, cmd_reread) -UNIMPL ("RESTORE", ERRO, ERRO, ERRO, ERRO, "Restore settings") -UNIMPL ("ROC", ERRO, ERRO, ERRO, ERRO, "Receiver operating characteristic") -UNIMPL ("RMV", ERRO, ERRO, ERRO, ERRO, "Replace missing values") -DEFCMD ("SAMPLE", ERRO, ERRO, TRAN, TRAN, cmd_sample) -DEFCMD ("SAVE", ERRO, ERRO, PROC, PROC, cmd_save) -UNIMPL ("SAVE TRANSLATE", ERRO, ERRO, ERRO, ERRO, "Save to foriegn format") -UNIMPL ("SCRIPT", ERRO, ERRO, ERRO, ERRO, "Run script file") -DEFCMD ("SELECT IF", ERRO, ERRO, TRAN, TRAN, cmd_select_if) -DEFCMD ("SET", INIT, INPU, TRAN, PROC, cmd_set) -DEFCMD ("SHOW", INIT, INPU, TRAN, PROC, cmd_show) -DEFCMD ("SORT CASES", ERRO, ERRO, PROC, PROC, cmd_sort_cases) -DEFCMD ("SORT", ERRO, ERRO, PROC, PROC, cmd_sort_cases) -UNIMPL ("SPCHART", ERRO, ERRO, ERRO, ERRO, "Plot control charts") -DEFCMD ("SPLIT FILE", ERRO, INPU, TRAN, TRAN, cmd_split_file) -DEFCMD ("STRING", ERRO, INPU, TRAN, TRAN, cmd_string) -SPCCMD ("SUBTITLE", INIT, INPU, TRAN, PROC, cmd_subtitle) -UNIMPL ("SUMMARIZE", ERRO, ERRO, ERRO, ERRO, "Univariate statistics") -UNIMPL ("SURVIVAL", ERRO, ERRO, ERRO, ERRO, "Survival analysis") -DEFCMD ("SYSFILE INFO", INIT, INPU, TRAN, PROC, cmd_sysfile_info) -DEFCMD ("TEMPORARY", ERRO, ERRO, TRAN, TRAN, cmd_temporary) -SPCCMD ("TITLE", INIT, INPU, TRAN, PROC, cmd_title) -UNIMPL ("TSET", ERRO, ERRO, ERRO, ERRO, "Set time sequence variables") -UNIMPL ("TSHOW", ERRO, ERRO, ERRO, ERRO, "Show time sequence variables") -UNIMPL ("TSPLOT", ERRO, ERRO, ERRO, ERRO, "Plot time sequence variables") -DEFCMD ("T-TEST", ERRO, ERRO, PROC, PROC, cmd_t_test) -UNIMPL ("UNIANOVA", ERRO, ERRO, ERRO, ERRO, "Univariate analysis") -UNIMPL ("UNNUMBERED", ERRO, ERRO, ERRO, ERRO, "obsolete") -UNIMPL ("UPDATE", ERRO, ERRO, ERRO, ERRO, "Update working file") -DEFCMD ("USE", ERRO, ERRO, TRAN, TRAN, cmd_use) -DEFCMD ("VALUE LABELS", ERRO, INPU, TRAN, TRAN, cmd_value_labels) -DEFCMD ("VARIABLE LABELS", ERRO, INPU, TRAN, TRAN, cmd_variable_labels) -DEFCMD ("VARIABLE ALIGNMENT", ERRO, INPU, TRAN, TRAN, cmd_variable_alignment) -DEFCMD ("VARIABLE LEVEL", ERRO, INPU, TRAN, TRAN, cmd_variable_level) -DEFCMD ("VARIABLE WIDTH", ERRO, INPU, TRAN, TRAN, cmd_variable_width) -UNIMPL ("VARSTOCASES", ERRO, ERRO, ERRO, ERRO, "Restructure complex data") -DEFCMD ("VECTOR", ERRO, INPU, TRAN, TRAN, cmd_vector) -UNIMPL ("VERIFY", ERRO, ERRO, ERRO, ERRO, "Report time series") -DEFCMD ("WEIGHT", ERRO, INPU, TRAN, TRAN, cmd_weight) -DEFCMD ("WRITE", ERRO, INPU, TRAN, TRAN, cmd_write) -DEFCMD ("WRITE FORMATS", ERRO, INPU, TRAN, TRAN, cmd_write_formats) -DEFCMD ("XEXPORT", ERRO, INPU, TRAN, TRAN, cmd_xexport) -DEFCMD ("XSAVE", ERRO, INPU, TRAN, TRAN, cmd_xsave) +/* Commands that define (or replace) the active file. */ +DEF_CMD (S_INITIAL | S_DATA | S_INPUT_PROGRAM | S_FILE_TYPE, 0, "DATA LIST", cmd_data_list) +DEF_CMD (S_INITIAL | S_DATA, 0, "GET", cmd_get) +DEF_CMD (S_INITIAL | S_DATA, 0, "IMPORT", cmd_import) +DEF_CMD (S_INITIAL | S_DATA, 0, "INPUT PROGRAM", cmd_input_program) +DEF_CMD (S_INITIAL | S_DATA, 0, "MATRIX DATA", cmd_matrix_data) + +/* Transformations and utilities that may appear after active + file definition or within INPUT PROGRAM. */ +DEF_CMD (S_DATA | S_INPUT_PROGRAM, 0, "ADD VALUE LABELS", cmd_add_value_labels) +DEF_CMD (S_DATA | S_INPUT_PROGRAM, 0, "APPLY DICTIONARY", cmd_apply_dictionary) +DEF_CMD (S_DATA | S_INPUT_PROGRAM, 0, "BREAK", cmd_break) +DEF_CMD (S_DATA | S_INPUT_PROGRAM, 0, "COMPUTE", cmd_compute) +DEF_CMD (S_DATA | S_INPUT_PROGRAM, 0, "DISPLAY", cmd_display) +DEF_CMD (S_DATA | S_INPUT_PROGRAM, F_KEEP_FINAL_TOKEN, "DOCUMENT", cmd_document) +DEF_CMD (S_DATA | S_INPUT_PROGRAM, 0, "DO IF", cmd_do_if) +DEF_CMD (S_DATA | S_INPUT_PROGRAM, 0, "DO REPEAT", cmd_do_repeat) +DEF_CMD (S_DATA | S_INPUT_PROGRAM, 0, "END REPEAT", cmd_end_repeat) +DEF_CMD (S_DATA | S_INPUT_PROGRAM, 0, "DROP DOCUMENTS", cmd_drop_documents) +DEF_CMD (S_DATA | S_INPUT_PROGRAM, 0, "ELSE IF", cmd_else_if) +DEF_CMD (S_DATA | S_INPUT_PROGRAM, 0, "ELSE", cmd_else) +DEF_CMD (S_DATA | S_INPUT_PROGRAM, 0, "END IF", cmd_end_if) +DEF_CMD (S_DATA | S_INPUT_PROGRAM, 0, "END LOOP", cmd_end_loop) +DEF_CMD (S_DATA | S_INPUT_PROGRAM, 0, "FORMATS", cmd_formats) +DEF_CMD (S_DATA | S_INPUT_PROGRAM, 0, "IF", cmd_if) +DEF_CMD (S_DATA | S_INPUT_PROGRAM, 0, "LEAVE", cmd_leave) +DEF_CMD (S_DATA | S_INPUT_PROGRAM, 0, "LOOP", cmd_loop) +DEF_CMD (S_DATA | S_INPUT_PROGRAM, 0, "MISSING VALUES", cmd_missing_values) +DEF_CMD (S_DATA | S_INPUT_PROGRAM, 0, "NUMERIC", cmd_numeric) +DEF_CMD (S_DATA | S_INPUT_PROGRAM, 0, "PRINT EJECT", cmd_print_eject) +DEF_CMD (S_DATA | S_INPUT_PROGRAM, 0, "PRINT FORMATS", cmd_print_formats) +DEF_CMD (S_DATA | S_INPUT_PROGRAM, 0, "PRINT SPACE", cmd_print_space) +DEF_CMD (S_DATA | S_INPUT_PROGRAM, 0, "PRINT", cmd_print) +DEF_CMD (S_DATA | S_INPUT_PROGRAM, 0, "RECODE", cmd_recode) +DEF_CMD (S_DATA | S_INPUT_PROGRAM, 0, "SELECT IF", cmd_select_if) +DEF_CMD (S_DATA | S_INPUT_PROGRAM, 0, "SPLIT FILE", cmd_split_file) +DEF_CMD (S_DATA | S_INPUT_PROGRAM, 0, "STRING", cmd_string) +DEF_CMD (S_DATA | S_INPUT_PROGRAM, 0, "VALUE LABELS", cmd_value_labels) +DEF_CMD (S_DATA | S_INPUT_PROGRAM, 0, "VARIABLE ALIGNMENT", cmd_variable_alignment) +DEF_CMD (S_DATA | S_INPUT_PROGRAM, 0, "VARIABLE LABELS", cmd_variable_labels) +DEF_CMD (S_DATA | S_INPUT_PROGRAM, 0, "VARIABLE LEVEL", cmd_variable_level) +DEF_CMD (S_DATA | S_INPUT_PROGRAM, 0, "VARIABLE WIDTH", cmd_variable_width) +DEF_CMD (S_DATA | S_INPUT_PROGRAM, 0, "VECTOR", cmd_vector) +DEF_CMD (S_DATA | S_INPUT_PROGRAM, 0, "WEIGHT", cmd_weight) +DEF_CMD (S_DATA | S_INPUT_PROGRAM, 0, "WRITE FORMATS", cmd_write_formats) +DEF_CMD (S_DATA | S_INPUT_PROGRAM, 0, "WRITE", cmd_write) +DEF_CMD (S_DATA | S_INPUT_PROGRAM, F_ENHANCED, "XEXPORT", cmd_xexport) +DEF_CMD (S_DATA | S_INPUT_PROGRAM, 0, "XSAVE", cmd_xsave) + +/* Commands that may appear after active file definition. */ +DEF_CMD (S_DATA, 0, "AGGREGATE", cmd_aggregate) +DEF_CMD (S_DATA, 0, "AUTORECODE", cmd_autorecode) +DEF_CMD (S_DATA, F_KEEP_FINAL_TOKEN, "BEGIN DATA", cmd_begin_data) +DEF_CMD (S_DATA, 0, "CLEAR TRANSFORMATIONS", cmd_clear_transformations) +DEF_CMD (S_DATA, 0, "CORRELATIONS", cmd_correlations) +DEF_CMD (S_DATA, 0, "COUNT", cmd_count) +DEF_CMD (S_DATA, 0, "CROSSTABS", cmd_crosstabs) +DEF_CMD (S_DATA, 0, "DESCRIPTIVES", cmd_descriptives) +DEF_CMD (S_DATA, 0, "EXAMINE", cmd_examine) +DEF_CMD (S_DATA, 0, "EXECUTE", cmd_execute) +DEF_CMD (S_DATA, 0, "EXPORT", cmd_export) +DEF_CMD (S_DATA, 0, "FILTER", cmd_filter) +DEF_CMD (S_DATA, 0, "FLIP", cmd_flip) +DEF_CMD (S_DATA, 0, "FREQUENCIES", cmd_frequencies) +DEF_CMD (S_DATA, 0, "LIST", cmd_list) +DEF_CMD (S_DATA, 0, "MATCH FILES", cmd_match_files) +DEF_CMD (S_DATA, 0, "MEANS", cmd_means) +DEF_CMD (S_DATA, 0, "MODIFY VARS", cmd_modify_vars) +DEF_CMD (S_DATA, 0, "ONEWAY", cmd_oneway) +DEF_CMD (S_DATA, 0, "PEARSON CORRELATIONS", cmd_correlations) +DEF_CMD (S_DATA, 0, "PROCESS IF", cmd_process_if) +DEF_CMD (S_DATA, 0, "REGRESSION", cmd_regression) +DEF_CMD (S_DATA, 0, "RENAME VARIABLES", cmd_rename_variables) +DEF_CMD (S_DATA, 0, "SAMPLE", cmd_sample) +DEF_CMD (S_DATA, 0, "SAVE", cmd_save) +DEF_CMD (S_DATA, 0, "SORT CASES", cmd_sort_cases) +DEF_CMD (S_DATA, 0, "SORT", cmd_sort_cases) +DEF_CMD (S_DATA, 0, "T-TEST", cmd_t_test) +DEF_CMD (S_DATA, 0, "TEMPORARY", cmd_temporary) +DEF_CMD (S_DATA, 0, "USE", cmd_use) + +/* FILE TYPE. */ +DEF_CMD (S_FILE_TYPE, 0, "RECORD TYPE", cmd_record_type) + +/* Commands valid only with INPUT PROGRAM. */ +DEF_CMD (S_INPUT_PROGRAM, 0, "END CASE", cmd_end_case) +DEF_CMD (S_INPUT_PROGRAM, 0, "END FILE", cmd_end_file) +DEF_CMD (S_INPUT_PROGRAM, 0, "END INPUT PROGRAM", cmd_end_input_program) +DEF_CMD (S_INPUT_PROGRAM, 0, "REREAD", cmd_reread) + +/* Commands for testing PSPP. */ +DEF_CMD (S_ANY, F_TESTING, "DEBUG CASEFILE", cmd_debug_casefile) +DEF_CMD (S_ANY, F_TESTING, "DEBUG EVALUATE", cmd_debug_evaluate) +DEF_CMD (S_ANY, F_TESTING, "DEBUG MOMENTS", cmd_debug_moments) +DEF_CMD (S_ANY, F_TESTING, "DEBUG POOL", cmd_debug_pool) + +/* Unimplemented commands. */ +UNIMPL_CMD ("ACF", "Autocorrelation function") +UNIMPL_CMD ("ADD FILES", "Add files to dictionary") +UNIMPL_CMD ("ALSCAL", "Multidimensional scaling") +UNIMPL_CMD ("ANOVA", "Factorial analysis of variance") +UNIMPL_CMD ("CASEPLOT", "Plot time series") +UNIMPL_CMD ("CASESTOVARS", "Restructure complex data") +UNIMPL_CMD ("CCF", "Time series cross correlation") +UNIMPL_CMD ("CLUSTER", "Hierachial clustering") +UNIMPL_CMD ("CONJOINT", "Analyse full concept data") +UNIMPL_CMD ("COXREG", "Cox proportional hazards regression") +UNIMPL_CMD ("CREATE", "Create time series data") +UNIMPL_CMD ("CURVEFIT", "Fit curve to line plot") +UNIMPL_CMD ("DATE", "Create time series data") +UNIMPL_CMD ("DISCRIMINANT", "Linear discriminant analysis") +UNIMPL_CMD ("EDIT", "obsolete") +UNIMPL_CMD ("END FILE TYPE", "Ends complex data input") +UNIMPL_CMD ("FACTOR", "Factor analysis") +UNIMPL_CMD ("FILE TYPE", "Complex data input") +UNIMPL_CMD ("FIT", "Goodness of Fit") +UNIMPL_CMD ("GET TRANSLATE", "Read other file formats") +UNIMPL_CMD ("GLM", "General Linear Model") +UNIMPL_CMD ("GRAPH", "Draw graphs") +UNIMPL_CMD ("IGRAPH", "Interactive graphs") +UNIMPL_CMD ("INFO", "Local Documentation") +UNIMPL_CMD ("KEYED DATA LIST", "Read nonsequential data") +UNIMPL_CMD ("KM", "Kaplan-Meier") +UNIMPL_CMD ("LOGISTIC REGRESSION", "Regression Analysis") +UNIMPL_CMD ("MCONVERT", "Convert covariance/correlation matrices") +UNIMPL_CMD ("MULT RESPONSE", "Multiple reponse analysis") +UNIMPL_CMD ("MVA", "Missing value analysis") +UNIMPL_CMD ("NLR", "Non Linear Regression") +UNIMPL_CMD ("NONPAR CORR", "Nonparametric correlation") +UNIMPL_CMD ("NPAR TESTS", "Nonparametric tests") +UNIMPL_CMD ("NUMBERED", "") +UNIMPL_CMD ("PACF", "Partial autocorrelation") +UNIMPL_CMD ("PARTIAL CORR", "Partial correlation") +UNIMPL_CMD ("POINT", "Marker in keyed file") +UNIMPL_CMD ("PPLOT", "Plot time series variables") +UNIMPL_CMD ("PREDICT", "Specify forecast period") +UNIMPL_CMD ("PRESERVE", "Push settings") +UNIMPL_CMD ("PROBIT", "Probit analysis") +UNIMPL_CMD ("PROCEDURE OUTPUT", "Specify output file") +UNIMPL_CMD ("PROXIMITIES", "Pairwise similarity") +UNIMPL_CMD ("QUICK CLUSTER", "Fast clustering") +UNIMPL_CMD ("RANK", "Create rank scores") +UNIMPL_CMD ("REFORMAT", "Read obsolete files") +UNIMPL_CMD ("REPEATING DATA", "Specify multiple cases per input record") +UNIMPL_CMD ("REPORT", "Pretty print working file") +UNIMPL_CMD ("RESTORE", "Restore settings") +UNIMPL_CMD ("RMV", "Replace missing values") +UNIMPL_CMD ("ROC", "Receiver operating characteristic") +UNIMPL_CMD ("SAVE TRANSLATE", "Save to foriegn format") +UNIMPL_CMD ("SCRIPT", "Run script file") +UNIMPL_CMD ("SPCHART", "Plot control charts") +UNIMPL_CMD ("SUMMARIZE", "Univariate statistics") +UNIMPL_CMD ("SURVIVAL", "Survival analysis") +UNIMPL_CMD ("TSET", "Set time sequence variables") +UNIMPL_CMD ("TSHOW", "Show time sequence variables") +UNIMPL_CMD ("TSPLOT", "Plot time sequence variables") +UNIMPL_CMD ("UNIANOVA", "Univariate analysis") +UNIMPL_CMD ("UNNUMBERED", "obsolete") +UNIMPL_CMD ("UPDATE", "Update working file") +UNIMPL_CMD ("VARSTOCASES", "Restructure complex data") +UNIMPL_CMD ("VERIFY", "Report time series") diff --git a/src/language/command.h b/src/language/command.h index ba14c0bb..2e34583c 100644 --- a/src/language/command.h +++ b/src/language/command.h @@ -1,5 +1,5 @@ /* PSPP - computes sample statistics. - Copyright (C) 1997-9, 2000 Free Software Foundation, Inc. + Copyright (C) 1997-9, 2000, 2006 Free Software Foundation, Inc. Written by Ben Pfaff . This program is free software; you can redistribute it and/or @@ -17,52 +17,49 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -#if !command_h -#define command_h 1 +#ifndef COMMAND_H +#define COMMAND_H 1 -/* Current program state. */ -enum - { - STATE_INIT, /* Initialization state. */ - STATE_INPUT, /* Input state. */ - STATE_TRANS, /* Transformation state. */ - STATE_PROC, /* Procedure state. */ - STATE_ERROR /* Invalid state transition. */ - }; +#include /* Command return values. */ -enum +enum cmd_result { /* Successful return values. */ - CMD_SUCCESS = 0x1000, /* Successfully parsed and executed. */ - CMD_EOF, /* Requested exit. */ + CMD_SUCCESS = 1, /* Successfully parsed and executed. */ + CMD_EOF, /* No commands left. */ + CMD_QUIT, /* Requested exit. */ + CMD_END_SUBLOOP, /* End of INPUT PROGRAM or FILE TYPE. */ - /* Various kinds of failures, in increasing order of severity. */ - CMD_TRAILING_GARBAGE, /* Followed by garbage. */ - CMD_PART_SUCCESS, /* Fully executed up to error. */ - CMD_PART_SUCCESS_MAYBE, /* May have been partially executed. */ + /* Various kinds of failures. */ CMD_FAILURE, /* Not executed at all. */ + CMD_NOT_IMPLEMENTED, /* Command not implemented. */ CMD_CASCADING_FAILURE /* Serious error: don't continue. */ }; -extern int pgm_state; +bool cmd_result_is_success (enum cmd_result); +bool cmd_result_is_failure (enum cmd_result); + +/* Command processing state. */ +enum cmd_state + { + CMD_STATE_INITIAL, /* No active file yet defined. */ + CMD_STATE_DATA, /* Active file has been defined. */ + CMD_STATE_INPUT_PROGRAM, /* Inside INPUT PROGRAM. */ + CMD_STATE_FILE_TYPE /* Inside FILE TYPE. */ + }; -char *pspp_completion_function (const char *text, int state); +#if HAVE_READLINE +char **pspp_attempted_completion_function (const char *, int start, int end); +#endif -int cmd_parse (void); +enum cmd_result cmd_parse (enum cmd_state); /* Prototype all the command functions. */ -#define DEFCMD(NAME, T1, T2, T3, T4, FUNC) \ - int FUNC (void); -#define SPCCMD(NAME, T1, T2, T3, T4, FUNC) \ - int FUNC (void); -#define DBGCMD(NAME, T1, T2, T3, T4, FUNC) \ - int FUNC (void); -#define UNIMPL(NAME, T1, T2, T3, T4, DESC) +#define DEF_CMD(STATES, FLAGS, NAME, FUNCTION) int FUNCTION (void); +#define UNIMPL_CMD(NAME, DESCRIPTION) #include "command.def" -#undef DEFCMD -#undef SPCCMD -#undef UNIMPL -#undef DBGCMD +#undef DEF_CMD +#undef UNIMPL_CMD -#endif /* !command_h */ +#endif /* command.h */ diff --git a/src/language/control/loop.c b/src/language/control/loop.c index da1dc2fc..80a4d214 100644 --- a/src/language/control/loop.c +++ b/src/language/control/loop.c @@ -116,7 +116,7 @@ cmd_loop (void) if (!ok) loop->max_pass_count = 0; - return ok ? CMD_SUCCESS : CMD_PART_SUCCESS; + return ok ? CMD_SUCCESS : CMD_FAILURE; } /* Parses END LOOP. */ @@ -141,7 +141,7 @@ cmd_end_loop (void) ctl_stack_pop (loop); - return ok ? CMD_SUCCESS : CMD_PART_SUCCESS; + return ok ? CMD_SUCCESS : CMD_FAILURE; } /* Parses BREAK. */ diff --git a/src/language/data-io/ChangeLog b/src/language/data-io/ChangeLog index 9cdd1e54..71aafa44 100644 --- a/src/language/data-io/ChangeLog +++ b/src/language/data-io/ChangeLog @@ -1,3 +1,41 @@ +Wed Apr 26 13:41:05 2006 Ben Pfaff + +Wed Apr 26 13:16:28 2006 Ben Pfaff + + Improve the way we handle the various parsing "states". Until now + we've hard-coded the state transitions in the command definition + file, but that's error-prone and, worse, it's redundant--we can + figure out what state we're in anyhow. We can cleanly handle + INPUT PROGRAM and FILE TYPE with a nested command-processing loop. + + * data-list.c: (cmd_data_list) Use in_file_type() or + in_input_program() in place of case_source_is_class() or + case_source_is_complex(). + + * file-type.c: NB: Not really fixed except minimally to compile, + because it doesn't work anyway. + (in_file_type) New function. + (cmd_record_type) No need to check that we're in FILE TYPE. + (cmd_end_file_type) Ditto. + (var file_type_source_class) Make static. + + * get.c: (cmd_match_files) Check vfm_source instead of pgm_state. + + * inpt-pgm.c: (in_input_program) New function. + (cmd_input_program) Rewrite to include nested command processing + loop. + (cmd_end_input_program) Just return CMD_END_SUBLOOP. + (var input_program_source_class) Make static. + (cmd_end_case) No need to check that we're in INPUT PROGRAM. + (cmd_end_file) Ditto. + + * automake.mk (src_language_data_io_libdata_io_a_SOURCES): Add + file-type.h, inpt-pgm.h. + + * file-type.h: New file. + + * inpt-pgm.h: New file. + Tue Apr 25 13:11:55 2006 Ben Pfaff * print.c: Don't special-case MS-DOS line terminators. diff --git a/src/language/data-io/automake.mk b/src/language/data-io/automake.mk index def4c384..a0510cae 100644 --- a/src/language/data-io/automake.mk +++ b/src/language/data-io/automake.mk @@ -14,8 +14,10 @@ CLEANFILES += $(src_language_data_io_q_sources_c) src_language_data_io_libdata_io_a_SOURCES = \ src/language/data-io/data-list.c \ src/language/data-io/file-type.c \ + src/language/data-io/file-type.h \ src/language/data-io/get.c \ src/language/data-io/inpt-pgm.c \ + src/language/data-io/inpt-pgm.h \ src/language/data-io/print.c \ src/language/data-io/matrix-data.c \ src/language/data-io/data-list.h \ diff --git a/src/language/data-io/data-list.c b/src/language/data-io/data-list.c index 6002b1e9..3a6f807c 100644 --- a/src/language/data-io/data-list.c +++ b/src/language/data-io/data-list.c @@ -18,32 +18,36 @@ 02110-1301, USA. */ #include -#include -#include + +#include "data-list.h" + #include #include #include #include -#include + #include -#include -#include #include -#include #include -#include -#include #include +#include +#include +#include +#include +#include +#include +#include +#include #include +#include +#include +#include +#include #include -#include #include #include -#include #include -#include "data-list.h" - #include "gettext.h" #define _(msgid) gettext (msgid) @@ -116,7 +120,7 @@ cmd_data_list (void) int table = -1; /* Print table if nonzero, -1=undecided. */ struct file_handle *fh = fh_inline_file (); - if (!case_source_is_complex (vfm_source)) + if (!in_input_program () && !in_file_type ()) discard_variables (); dls = xmalloc (sizeof *dls); @@ -136,8 +140,7 @@ cmd_data_list (void) fh = fh_parse (FH_REF_FILE | FH_REF_INLINE); if (fh == NULL) goto error; - if (case_source_is_class (vfm_source, &file_type_source_class) - && fh != fh_get_default_handle ()) + if (in_file_type () && fh != fh_get_default_handle ()) { msg (SE, _("DATA LIST must use the same file " "as the enclosing FILE TYPE.")); @@ -542,7 +545,7 @@ fixed_parse_compatible (struct fixed_parsing_state *fx, { convert_fmt_ItoO (&input, &v->print); v->write = v->print; - if (!case_source_is_complex (vfm_source)) + if (!in_input_program () && !in_file_type ()) v->init = 0; } else @@ -650,7 +653,7 @@ dump_fmt_list (struct fixed_parsing_state *fx, struct fmt_list *f, return 0; } - if (!case_source_is_complex (vfm_source)) + if (!in_input_program () && !in_file_type ()) v->init = 0; spec = xmalloc (sizeof *spec); @@ -859,7 +862,7 @@ parse_free (struct dls_var_spec **first, struct dls_var_spec **last) } v->print = v->write = output; - if (!case_source_is_complex (vfm_source)) + if (!in_input_program () && !in_file_type ()) v->init = 0; spec = xmalloc (sizeof *spec); @@ -1360,7 +1363,7 @@ cmd_repeating_data (void) bool saw_id = false; /* Saw ID subcommand? */ struct file_handle *const fh = fh_get_default_handle (); - assert (case_source_is_complex (vfm_source)); + assert (in_input_program () || in_file_type ()); rpd = xmalloc (sizeof *rpd); rpd->reader = dfm_open_reader (fh); diff --git a/src/language/data-io/file-type.c b/src/language/data-io/file-type.c index 99a5d050..4633c7c0 100644 --- a/src/language/data-io/file-type.c +++ b/src/language/data-io/file-type.c @@ -18,20 +18,24 @@ 02110-1301, USA. */ #include + +#include + #include -#include + #include -#include -#include #include -#include #include -#include -#include #include +#include +#include +#include +#include #include +#include +#include +#include #include -#include #include #include "gettext.h" @@ -96,6 +100,17 @@ struct file_type_pgm static int parse_col_spec (struct col_spec *, const char *); static void create_col_var (struct col_spec *c); +static const struct case_source_class file_type_source_class; + +static bool inside_file_type; + +/* Returns true if we're parsing the inside of a FILE TYPE...END + FILE TYPE construct, false otherwise. */ +bool +in_file_type (void) +{ + return inside_file_type; +} int cmd_file_type (void); @@ -390,15 +405,6 @@ cmd_record_type (void) struct file_type_pgm *fty; struct record_type *rct; - /* Make sure we're inside a FILE TYPE structure. */ - if (pgm_state != STATE_INPUT - || !case_source_is_class (vfm_source, &file_type_source_class)) - { - msg (SE, _("This command may only appear within a " - "FILE TYPE/END FILE TYPE structure.")); - return CMD_CASCADING_FAILURE; - } - fty = vfm_source->aux; /* Initialize the record_type structure. */ @@ -580,13 +586,6 @@ cmd_end_file_type (void) { struct file_type_pgm *fty; - if (pgm_state != STATE_INPUT - || case_source_is_class (vfm_source, &file_type_source_class)) - { - msg (SE, _("This command may only appear within a " - "FILE TYPE/END FILE TYPE structure.")); - return CMD_CASCADING_FAILURE; - } fty = vfm_source->aux; fty->case_size = dict_get_case_size (default_dict); @@ -735,7 +734,7 @@ file_type_source_destroy (struct case_source *source) } } -const struct case_source_class file_type_source_class = +static const struct case_source_class file_type_source_class = { "FILE TYPE", NULL, diff --git a/src/language/data-io/file-type.h b/src/language/data-io/file-type.h new file mode 100644 index 00000000..5c4d63d1 --- /dev/null +++ b/src/language/data-io/file-type.h @@ -0,0 +1,28 @@ +/* PSPP - computes sample statistics. + Copyright (C) 1997-9, 2000 Free Software Foundation, Inc. + Written by Ben Pfaff . + + 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 FILE_TYPE_H +#define FILE_TYPE_H 1 + +#include + +bool in_file_type (void); +void cancel_file_type (void); + +#endif /* file-type.h */ diff --git a/src/language/data-io/get.c b/src/language/data-io/get.c index 78e91c3d..25387d8b 100644 --- a/src/language/data-io/get.c +++ b/src/language/data-io/get.c @@ -882,8 +882,7 @@ cmd_match_files (void) } used_active_file = true; - assert (pgm_state != STATE_INPUT); - if (pgm_state == STATE_INIT) + if (vfm_source == NULL) { msg (SE, _("Cannot specify the active file since no active " "file has been defined.")); diff --git a/src/language/data-io/inpt-pgm.c b/src/language/data-io/inpt-pgm.c index 1fcf0f09..abda6c93 100644 --- a/src/language/data-io/inpt-pgm.c +++ b/src/language/data-io/inpt-pgm.c @@ -18,23 +18,27 @@ 02110-1301, USA. */ #include -#include + +#include + #include #include -#include + #include +#include +#include #include -#include #include #include -#include -#include -#include #include +#include #include +#include +#include +#include +#include #include #include -#include #include #include "gettext.h" @@ -59,34 +63,49 @@ struct input_program_pgm static trns_proc_func end_case_trns_proc, reread_trns_proc, end_file_trns_proc; static trns_free_func reread_trns_free; +static const struct case_source_class input_program_source_class; +static bool inside_input_program; -int -cmd_input_program (void) +/* Returns true if we're parsing the inside of a INPUT + PROGRAM...END INPUT PROGRAM construct, false otherwise. */ +bool +in_input_program (void) { - discard_variables (); - - /* FIXME: we shouldn't do this here, but I'm afraid that other - code will check the class of vfm_source. */ - vfm_source = create_case_source (&input_program_source_class, NULL); - - return lex_end_of_command (); + return inside_input_program; } int -cmd_end_input_program (void) +cmd_input_program (void) { struct input_program_pgm *inp; size_t i; - if (!case_source_is_class (vfm_source, &input_program_source_class)) + discard_variables (); + if (token != '.') + return lex_end_of_command (); + + inside_input_program = true; + for (;;) { - msg (SE, _("No matching INPUT PROGRAM command.")); - return CMD_CASCADING_FAILURE; + enum cmd_result result; + lex_get (); + result = cmd_parse (CMD_STATE_INPUT_PROGRAM); + if (result == CMD_END_SUBLOOP) + break; + if (result == CMD_EOF || result == CMD_QUIT || result == CMD_CASCADING_FAILURE) + { + if (result == CMD_EOF) + msg (SE, _("Unexpected end-of-file within INPUT PROGRAM.")); + discard_variables (); + inside_input_program = false; + return result; + } } - + inside_input_program = false; + if (dict_get_next_value_idx (default_dict) == 0) msg (SW, _("No data-input or transformation commands specified " - "between INPUT PROGRAM and END INPUT PROGRAM.")); + "between INPUT PROGRAM and END INPUT PROGRAM.")); /* Mark the boundary between INPUT PROGRAM transformations and ordinary transformations. */ @@ -114,10 +133,17 @@ cmd_end_input_program (void) assert (inp->init[i] != -1); inp->case_size = dict_get_case_size (default_dict); - /* Put inp into vfm_source for later use. */ - vfm_source->aux = inp; + /* Create vfm_source. */ + vfm_source = create_case_source (&input_program_source_class, inp); - return lex_end_of_command (); + return CMD_SUCCESS; +} + +int +cmd_end_input_program (void) +{ + assert (in_input_program ()); + return CMD_END_SUBLOOP; } /* Initializes case C. Called before the first case is read. */ @@ -274,7 +300,7 @@ input_program_source_destroy (struct case_source *source) } } -const struct case_source_class input_program_source_class = +static const struct case_source_class input_program_source_class = { "INPUT PROGRAM", NULL, @@ -285,13 +311,7 @@ const struct case_source_class input_program_source_class = int cmd_end_case (void) { - if (!case_source_is_class (vfm_source, &input_program_source_class)) - { - msg (SE, _("This command may only be executed between INPUT PROGRAM " - "and END INPUT PROGRAM.")); - return CMD_CASCADING_FAILURE; - } - + assert (in_input_program ()); add_transformation (end_case_trns_proc, NULL, NULL); return lex_end_of_command (); @@ -404,12 +424,7 @@ reread_trns_free (void *t_) int cmd_end_file (void) { - if (!case_source_is_class (vfm_source, &input_program_source_class)) - { - msg (SE, _("This command may only be executed between INPUT PROGRAM " - "and END INPUT PROGRAM.")); - return CMD_CASCADING_FAILURE; - } + assert (in_input_program ()); add_transformation (end_file_trns_proc, NULL, NULL); diff --git a/src/language/data-io/inpt-pgm.h b/src/language/data-io/inpt-pgm.h new file mode 100644 index 00000000..626a7f42 --- /dev/null +++ b/src/language/data-io/inpt-pgm.h @@ -0,0 +1,28 @@ +/* PSPP - computes sample statistics. + Copyright (C) 2006 Free Software Foundation, Inc. + Written by Ben Pfaff . + + 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 INPT_PGM_H +#define INPT_PGM_H 1 + +#include + +bool in_input_program (void); +void cancel_input_program (void); + +#endif /* inpt-pgm.h */ diff --git a/src/language/dictionary/formats.c b/src/language/dictionary/formats.c index 79a6711e..c325b408 100644 --- a/src/language/dictionary/formats.c +++ b/src/language/dictionary/formats.c @@ -79,7 +79,7 @@ internal_cmd_formats (int which) break; if (!parse_variables (default_dict, &v, &cv, PV_NUMERIC)) - return CMD_PART_SUCCESS_MAYBE; + return CMD_FAILURE; type = v[0]->type; if (!lex_match ('(')) @@ -112,5 +112,5 @@ internal_cmd_formats (int which) fail: free (v); - return CMD_PART_SUCCESS_MAYBE; + return CMD_FAILURE; } diff --git a/src/language/dictionary/missing-values.c b/src/language/dictionary/missing-values.c index fde8ba47..6b25cb07 100644 --- a/src/language/dictionary/missing-values.c +++ b/src/language/dictionary/missing-values.c @@ -38,7 +38,7 @@ cmd_missing_values (void) struct variable **v; size_t nv; - int retval = CMD_PART_SUCCESS_MAYBE; + int retval = CMD_FAILURE; bool deferred_errors = false; while (token != '.') @@ -147,7 +147,7 @@ cmd_missing_values (void) done: free (v); if (deferred_errors) - retval = CMD_PART_SUCCESS_MAYBE; + retval = CMD_FAILURE; return retval; } diff --git a/src/language/dictionary/numeric.c b/src/language/dictionary/numeric.c index 3e3d7651..0cc3adb9 100644 --- a/src/language/dictionary/numeric.c +++ b/src/language/dictionary/numeric.c @@ -47,7 +47,7 @@ cmd_numeric (void) do { if (!parse_DATA_LIST_vars (&v, &nv, PV_NONE)) - return CMD_PART_SUCCESS_MAYBE; + return CMD_FAILURE; /* Get the optional format specification. */ if (lex_match ('(')) @@ -98,7 +98,7 @@ fail: for (i = 0; i < nv; i++) free (v[i]); free (v); - return CMD_PART_SUCCESS_MAYBE; + return CMD_FAILURE; } /* Parses the STRING command. */ @@ -120,7 +120,7 @@ cmd_string (void) do { if (!parse_DATA_LIST_vars (&v, &nv, PV_NONE)) - return CMD_PART_SUCCESS_MAYBE; + return CMD_FAILURE; if (!lex_force_match ('(') || !parse_format_specifier (&f, 0)) @@ -177,7 +177,7 @@ fail: for (i = 0; i < nv; i++) free (v[i]); free (v); - return CMD_PART_SUCCESS_MAYBE; + return CMD_FAILURE; } /* Parses the LEAVE command. */ diff --git a/src/language/dictionary/value-labels.c b/src/language/dictionary/value-labels.c index 976d5479..8479fe7f 100644 --- a/src/language/dictionary/value-labels.c +++ b/src/language/dictionary/value-labels.c @@ -92,17 +92,14 @@ do_value_labels (int erase) free (vars); } - if (token != '.') - { - lex_error (NULL); - return CMD_TRAILING_GARBAGE; - } + if (parse_err) + return CMD_FAILURE; - return parse_err ? CMD_PART_SUCCESS_MAYBE : CMD_SUCCESS; + return lex_end_of_command (); lossage: free (vars); - return CMD_PART_SUCCESS_MAYBE; + return CMD_FAILURE; } /* Verifies that none of the VAR_CNT variables in VARS are long diff --git a/src/language/dictionary/variable-display.c b/src/language/dictionary/variable-display.c index e5e3e69f..2632ce9e 100644 --- a/src/language/dictionary/variable-display.c +++ b/src/language/dictionary/variable-display.c @@ -44,7 +44,7 @@ cmd_variable_alignment (void) if (!parse_variables (default_dict, &v, &nv, PV_NONE)) - return CMD_PART_SUCCESS_MAYBE; + return CMD_FAILURE; if ( lex_force_match('(') ) { @@ -95,7 +95,7 @@ cmd_variable_width (void) size_t i; if (!parse_variables (default_dict, &v, &nv, PV_NONE)) - return CMD_PART_SUCCESS_MAYBE; + return CMD_FAILURE; if ( lex_force_match('(') ) { @@ -130,7 +130,7 @@ cmd_variable_level (void) size_t i; if (!parse_variables (default_dict, &v, &nv, PV_NONE)) - return CMD_PART_SUCCESS_MAYBE; + return CMD_FAILURE; if ( lex_force_match('(') ) { diff --git a/src/language/dictionary/variable-label.c b/src/language/dictionary/variable-label.c index acf5f054..a663dc9d 100644 --- a/src/language/dictionary/variable-label.c +++ b/src/language/dictionary/variable-label.c @@ -41,13 +41,13 @@ cmd_variable_labels (void) size_t i; if (!parse_variables (default_dict, &v, &nv, PV_NONE)) - return CMD_PART_SUCCESS_MAYBE; + return CMD_FAILURE; if (token != T_STRING) { msg (SE, _("String expected for variable label.")); free (v); - return CMD_PART_SUCCESS_MAYBE; + return CMD_FAILURE; } if (ds_length (&tokstr) > 255) { diff --git a/src/language/dictionary/vector.c b/src/language/dictionary/vector.c index 20cb5f84..7553ba2c 100644 --- a/src/language/dictionary/vector.c +++ b/src/language/dictionary/vector.c @@ -201,5 +201,5 @@ cmd_vector (void) fail: free (vecnames); - return CMD_PART_SUCCESS_MAYBE; + return CMD_FAILURE; } diff --git a/src/language/lexer/ChangeLog b/src/language/lexer/ChangeLog index dec6835f..d9634c22 100644 --- a/src/language/lexer/ChangeLog +++ b/src/language/lexer/ChangeLog @@ -1,3 +1,7 @@ +Wed Apr 26 13:30:41 2006 Ben Pfaff + + * lexer.c: (lex_discard_rest_of_command) New function. + Mon Apr 24 14:12:08 2006 Ben Pfaff * q2c.c: Use exit.h from gnulib instead of checking for and diff --git a/src/language/lexer/lexer.c b/src/language/lexer/lexer.c index 3d2e29ac..4cb3f593 100644 --- a/src/language/lexer/lexer.c +++ b/src/language/lexer/lexer.c @@ -451,7 +451,7 @@ lex_end_of_command (void) if (token != '.') { lex_error (_("expecting end of command")); - return CMD_TRAILING_GARBAGE; + return CMD_FAILURE; } else return CMD_SUCCESS; @@ -736,6 +736,25 @@ lex_set_prog (char *p) { prog = p; } + +/* Discards the rest of the current command. + When we're reading commands from a file, we skip tokens until + a terminal dot or EOF. + When we're reading commands interactively from the user, + that's just discarding the current line, because presumably + the user doesn't want to finish typing a command that will be + ignored anyway. */ +void +lex_discard_rest_of_command (void) +{ + if (!getl_is_interactive ()) + { + while (token != T_STOP && token != '.') + lex_get (); + } + else + lex_discard_line (); +} /* Weird line reading functions. */ diff --git a/src/language/lexer/lexer.h b/src/language/lexer/lexer.h index 4ea80707..36d79d3a 100644 --- a/src/language/lexer/lexer.h +++ b/src/language/lexer/lexer.h @@ -74,6 +74,7 @@ const char *lex_entire_line (void); const char *lex_rest_of_line (int *end_dot); void lex_discard_line (void); void lex_set_prog (char *p); +void lex_discard_rest_of_command (void); /* Weird line reading functions. */ bool lex_get_line (void); diff --git a/src/language/utilities/set.q b/src/language/utilities/set.q index 66ababdd..1e093419 100644 --- a/src/language/utilities/set.q +++ b/src/language/utilities/set.q @@ -700,14 +700,14 @@ cmd_show (void) goto found; } lex_error (NULL); - return CMD_PART_SUCCESS_MAYBE; + return CMD_FAILURE; found: ; } else { lex_error (NULL); - return CMD_PART_SUCCESS_MAYBE; + return CMD_FAILURE; } lex_match ('/'); diff --git a/src/language/xforms/recode.c b/src/language/xforms/recode.c index d2548f31..b89071a3 100644 --- a/src/language/xforms/recode.c +++ b/src/language/xforms/recode.c @@ -139,7 +139,7 @@ cmd_recode (void) || !parse_dst_vars (trns)) { recode_trns_free (trns); - return CMD_PART_SUCCESS; + return CMD_FAILURE; } /* Ensure that all the output strings are at least as wide diff --git a/src/procedure.c b/src/procedure.c index 7f48709e..422e7c05 100644 --- a/src/procedure.c +++ b/src/procedure.c @@ -726,14 +726,6 @@ free_case_source (struct case_source *source) } } -/* Returns nonzero if a case source is "complex". */ -int -case_source_is_complex (const struct case_source *source) -{ - return source != NULL && (source->class == &input_program_source_class - || source->class == &file_type_source_class); -} - /* Returns nonzero if CLASS is the class of SOURCE. */ int case_source_is_class (const struct case_source *source, @@ -1012,6 +1004,4 @@ discard_variables (void) process_if_expr = NULL; cancel_temporary (); - - pgm_state = STATE_INIT; } diff --git a/src/procedure.h b/src/procedure.h index ce216842..b35878e3 100644 --- a/src/procedure.h +++ b/src/procedure.h @@ -58,15 +58,12 @@ struct case_source_class }; extern const struct case_source_class storage_source_class; -extern const struct case_source_class file_type_source_class; -extern const struct case_source_class input_program_source_class; struct dictionary; struct case_source *create_case_source (const struct case_source_class *, void *); void free_case_source (struct case_source *); -int case_source_is_complex (const struct case_source *); int case_source_is_class (const struct case_source *, const struct case_source_class *); diff --git a/src/ui/terminal/ChangeLog b/src/ui/terminal/ChangeLog index 070f19bc..1d081010 100644 --- a/src/ui/terminal/ChangeLog +++ b/src/ui/terminal/ChangeLog @@ -1,3 +1,29 @@ +Wed Apr 26 13:34:54 2006 Ben Pfaff + + Improve command name completion in readline. + + * read-line.c (readln_initialize): Set up readline to only break + words for completion at new-line. That way we can complete a + whole command name. Also, set rl_attempted_completion_function + instead of rl_completion_entry_function so we can disable + completing on file names, which is usually not what we want in + PSPP. + +Wed Apr 26 13:31:00 2006 Ben Pfaff + + Improve the way we handle the various parsing "states". Until now + we've hard-coded the state transitions in the command definition + file, but that's error-prone and, worse, it's redundant--we can + figure out what state we're in anyhow. We can cleanly handle + INPUT PROGRAM and FILE TYPE with a nested command-processing loop. + + * automake.mk (src_ui_terminal_pspp_LDADD): Move libui earlier to + avoid link errors. + + * main.c (main): Handle new CMD_* results. + (execute_command) Move most per-command actions into cmd_parse(). + (handle_error) Removed. cmd_parse() handles command failure. + Tue Apr 25 11:08:17 2006 Ben Pfaff Finish reforming error message support. In this phase, move diff --git a/src/ui/terminal/automake.mk b/src/ui/terminal/automake.mk index 328c546d..c1377146 100644 --- a/src/ui/terminal/automake.mk +++ b/src/ui/terminal/automake.mk @@ -19,6 +19,7 @@ src_ui_terminal_pspp_SOURCES = \ src/procedure.h src_ui_terminal_pspp_LDADD = \ + $(top_builddir)/src/ui/terminal/libui.a \ $(top_builddir)/src/language/expressions/libexpressions.a \ $(top_builddir)/src/language/liblanguage.a \ $(top_builddir)/src/language/tests/libtests.a \ @@ -33,7 +34,6 @@ src_ui_terminal_pspp_LDADD = \ $(top_builddir)/src/output/liboutput.a \ $(top_builddir)/src/math/libpspp_math.a \ $(top_builddir)/src/math/linreg/libpspp_linreg.a \ - $(top_builddir)/src/ui/terminal/libui.a \ $(top_builddir)/lib/linreg/liblinreg.a \ $(top_builddir)/lib/gsl-extras/libgsl-extras.a \ $(top_builddir)/src/data/libdata.a \ diff --git a/src/ui/terminal/main.c b/src/ui/terminal/main.c index 16058e45..018ba8aa 100644 --- a/src/ui/terminal/main.c +++ b/src/ui/terminal/main.c @@ -22,6 +22,7 @@ #include "command-line.h" #include "msg-ui.h" #include "progname.h" +#include "procedure.h" #include "read-line.h" #include @@ -61,7 +62,6 @@ static void i18n_init (void); static void fpu_init (void); -static void handle_error (int code); static int execute_command (void); static void terminate (bool success) NO_RETURN; @@ -103,27 +103,27 @@ main (int argc, char **argv) for (;;) { - int retval; - - check_msg_count (); - - retval = execute_command (); - if (retval == CMD_EOF) + int result = execute_command (); + if (result == CMD_EOF || result == CMD_QUIT) break; - if (retval != CMD_SUCCESS) - handle_error (retval); + if (result == CMD_CASCADING_FAILURE && !getl_is_interactive ()) + { + msg (SE, _("Stopping syntax file processing here to avoid " + "a cascade of dependent command failures.")); + getl_abort_noninteractive (); + } + else + check_msg_count (); } } terminate (!any_errors ()); } -/* Parse and execute a command, returning its return code. */ +/* Parses a command and returns the result. */ static int execute_command (void) { - int result; - /* Read the command's first token. The first token is part of the first line of the command. */ getl_set_prompt_style (GETL_PROMPT_FIRST); @@ -135,67 +135,7 @@ execute_command (void) Any lines read after the first token must be continuation lines. */ getl_set_prompt_style (GETL_PROMPT_LATER); - result = cmd_parse (); - - /* Unset the /ALGORITHM subcommand if it was used */ - unset_cmd_algorithm (); - - /* Clear any auxiliary data from the dictionary. */ - dict_clear_aux (default_dict); - - return result; -} - -/* Print an error message corresponding to the command return code - CODE. */ -static void -handle_error (int code) -{ - if (code == CMD_CASCADING_FAILURE && !getl_is_interactive ()) - { - msg (SW, _("This command not executed. Stopping here " - "to avoid cascading failures.")); - getl_abort_noninteractive (); - return; - } - - switch (code) - { - case CMD_FAILURE: - case CMD_CASCADING_FAILURE: - msg (SW, _("This command not executed.")); - break; - - case CMD_PART_SUCCESS_MAYBE: - msg (SW, _("Skipping the rest of this command. Part of " - "this command may have been executed.")); - break; - - case CMD_PART_SUCCESS: - msg (SW, _("Skipping the rest of this command. This " - "command was fully executed up to this point.")); - break; - - case CMD_TRAILING_GARBAGE: - msg (SW, _("Trailing garbage was encountered following " - "this command. The command was fully executed " - "to this point.")); - break; - - default: - abort (); - } - - if (!getl_is_interactive ()) - { - while (token != T_STOP && token != '.') - lex_get (); - } - else - { - msg (SW, _("The rest of this command has been discarded.")); - lex_discard_line (); - } + return cmd_parse (vfm_source != NULL ? CMD_STATE_DATA : CMD_STATE_INITIAL); } static void diff --git a/src/ui/terminal/read-line.c b/src/ui/terminal/read-line.c index 2a0bfd5e..a89a953b 100644 --- a/src/ui/terminal/read-line.c +++ b/src/ui/terminal/read-line.c @@ -56,8 +56,9 @@ readln_initialize (void) { initialised = true; -#if HAVE_READLINE - rl_completion_entry_function = pspp_completion_function; +#if HAVE_READLINE + rl_basic_word_break_characters = "\n"; + rl_attempted_completion_function = pspp_attempted_completion_function; #ifdef unix if (history_file == NULL) { diff --git a/tests/ChangeLog b/tests/ChangeLog index bfd3507a..dbd54924 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -1,3 +1,8 @@ +Wed Apr 26 13:36:42 2006 Ben Pfaff + + * command/missing-values.sh: Update output to match behavior + changes. + Mon Apr 3 12:32:36 2006 Ben Pfaff * Updated tests to match changes in output formatting. diff --git a/tests/command/missing-values.sh b/tests/command/missing-values.sh index 8e452312..56edebec 100755 --- a/tests/command/missing-values.sh +++ b/tests/command/missing-values.sh @@ -116,12 +116,9 @@ if [ $? -eq 0 ] ; then fail ; fi activity="compare error messages" diff -w $TEMPDIR/errs - <