passed into its functions. Dealt with the consequences.
msgstr ""
"Project-Id-Version: PSPP 0.4.2\n"
"Report-Msgid-Bugs-To: pspp-dev@gnu.org\n"
-"POT-Creation-Date: 2006-10-06 17:58+0800\n"
+"POT-Creation-Date: 2006-10-19 16:31+0800\n"
"PO-Revision-Date: 2006-05-26 17:49+0800\n"
"Last-Translator: John Darrington <john@darrington.wattle.id.au>\n"
"Language-Team: German <pspp-dev@gnu.org>\n"
#: src/data/sys-file-reader.c:1368 src/data/sys-file-reader.c:1369
#: src/data/variable.c:42 src/language/dictionary/apply-dictionary.c:76
#: src/language/dictionary/apply-dictionary.c:77
-#: src/language/xforms/recode.c:478 src/language/xforms/recode.c:479
+#: src/language/xforms/recode.c:479 src/language/xforms/recode.c:480
msgid "numeric"
msgstr "numerisch"
#: src/data/variable.c:42 src/data/variable.c:50
#: src/language/dictionary/apply-dictionary.c:76
#: src/language/dictionary/apply-dictionary.c:77
-#: src/language/xforms/recode.c:478 src/language/xforms/recode.c:479
+#: src/language/xforms/recode.c:479 src/language/xforms/recode.c:480
msgid "string"
msgstr "kette"
msgid "scratch"
msgstr ""
-#: src/language/command.c:185
+#: src/language/command.c:183
+#, c-format
+msgid "%s is unimplemented."
+msgstr ""
+
+#: src/language/command.c:188
#, c-format
msgid "%s may be used only in testing mode."
msgstr ""
-#: src/language/command.c:190
+#: src/language/command.c:193
#, c-format
msgid "%s may be used only in enhanced syntax mode."
msgstr ""
-#: src/language/command.c:444
+#: src/language/command.c:447
msgid "expecting command name"
msgstr ""
-#: src/language/command.c:458
+#: src/language/command.c:461
#, c-format
msgid "Unknown command %s."
msgstr ""
-#: src/language/command.c:584
+#: src/language/command.c:587
msgid "before the active file has been defined"
msgstr ""
-#: src/language/command.c:586
+#: src/language/command.c:589
msgid "after the active file has been defined"
msgstr ""
-#: src/language/command.c:588
+#: src/language/command.c:591
msgid "inside INPUT PROGRAM"
msgstr ""
-#: src/language/command.c:590
+#: src/language/command.c:593
msgid "inside FILE TYPE"
msgstr ""
-#: src/language/command.c:595
+#: src/language/command.c:598
#, c-format
msgid "%s or %s"
msgstr ""
-#: src/language/command.c:597
+#: src/language/command.c:600
#, c-format
msgid "%s, %s, or %s"
msgstr ""
-#: src/language/command.c:601
+#: src/language/command.c:604
#, c-format
msgid "%s is allowed only %s."
msgstr ""
-#: src/language/command.c:606
+#: src/language/command.c:609
#, c-format
msgid "%s is not allowed inside INPUT PROGRAM."
msgstr ""
-#: src/language/command.c:608
+#: src/language/command.c:611
#, c-format
msgid "%s is not allowed inside FILE TYPE."
msgstr ""
-#: src/language/command.c:686 src/language/command.c:817
+#: src/language/command.c:689 src/language/command.c:820
#: src/language/utilities/permissions.c:102
msgid "This command not allowed when the SAFER option is set."
msgstr ""
-#: src/language/command.c:698
+#: src/language/command.c:701
#, c-format
msgid "Error removing `%s': %s."
msgstr ""
-#: src/language/command.c:748
+#: src/language/command.c:751
#, c-format
msgid "Couldn't fork: %s."
msgstr ""
-#: src/language/command.c:790
+#: src/language/command.c:793
#, c-format
msgid "Error executing command: %s."
msgstr ""
-#: src/language/command.c:799 src/language/data-io/matrix-data.c:539
+#: src/language/command.c:802 src/language/data-io/matrix-data.c:539
#: src/language/data-io/print-space.c:76 src/language/dictionary/vector.c:201
#: src/language/lexer/lexer.c:453 src/language/stats/autorecode.c:154
#: src/language/xforms/select-if.c:62
msgid "expecting end of command"
msgstr ""
-#: src/language/command.c:838
+#: src/language/command.c:841
msgid "No operating system support for this command."
msgstr ""
msgid "Only one of FIXED, FREE, or LIST may be specified."
msgstr ""
-#: src/language/data-io/data-list.c:336 src/language/data-io/data-list.c:471
+#: src/language/data-io/data-list.c:337 src/language/data-io/data-list.c:472
#, c-format
msgid "%s is a duplicate variable name."
msgstr ""
-#: src/language/data-io/data-list.c:343
+#: src/language/data-io/data-list.c:344
#, c-format
msgid "There is already a variable %s of a different type."
msgstr ""
-#: src/language/data-io/data-list.c:350
+#: src/language/data-io/data-list.c:351
#, c-format
msgid "There is already a string variable %s of a different width."
msgstr ""
-#: src/language/data-io/data-list.c:371
+#: src/language/data-io/data-list.c:372
msgid "At least one variable must be specified."
msgstr ""
-#: src/language/data-io/data-list.c:378
+#: src/language/data-io/data-list.c:379
msgid ""
"Variables are specified on records that should not exist according to "
"RECORDS subcommand."
msgstr ""
-#: src/language/data-io/data-list.c:403 src/language/data-io/data-list.c:503
+#: src/language/data-io/data-list.c:404 src/language/data-io/data-list.c:504
#: src/language/data-io/print.c:370 src/language/dictionary/split-file.c:84
#: src/language/dictionary/sys-file-info.c:144
#: src/language/dictionary/sys-file-info.c:378
-#: src/language/stats/descriptives.c:894
+#: src/language/stats/descriptives.c:897
msgid "Variable"
msgstr ""
-#: src/language/data-io/data-list.c:404 src/language/data-io/print.c:371
+#: src/language/data-io/data-list.c:405 src/language/data-io/print.c:371
msgid "Record"
msgstr ""
-#: src/language/data-io/data-list.c:405 src/language/data-io/print.c:372
+#: src/language/data-io/data-list.c:406 src/language/data-io/print.c:372
#: src/ui/gui/var-sheet.c:78
msgid "Columns"
msgstr "Spalten"
-#: src/language/data-io/data-list.c:406 src/language/data-io/data-list.c:504
+#: src/language/data-io/data-list.c:407 src/language/data-io/data-list.c:505
#: src/language/data-io/print.c:373
msgid "Format"
msgstr ""
-#: src/language/data-io/data-list.c:422
+#: src/language/data-io/data-list.c:423
#, c-format
msgid "Reading %d record from %s."
msgid_plural "Reading %d records from %s."
msgstr[0] ""
msgstr[1] ""
-#: src/language/data-io/data-list.c:517
+#: src/language/data-io/data-list.c:518
#, c-format
msgid "Reading free-form data from %s."
msgstr ""
-#: src/language/data-io/data-list.c:563
+#: src/language/data-io/data-list.c:564
msgid "Quoted string extends beyond end of line."
msgstr ""
-#: src/language/data-io/data-list.c:648
+#: src/language/data-io/data-list.c:649
#, c-format
msgid "Partial case of %d of %d records discarded."
msgstr ""
-#: src/language/data-io/data-list.c:697
+#: src/language/data-io/data-list.c:698
#, c-format
msgid "Partial case discarded. The first variable missing was %s."
msgstr ""
-#: src/language/data-io/data-list.c:733
+#: src/language/data-io/data-list.c:734
#, c-format
msgid ""
"Missing value(s) for all variables from %s onward. These will be filled "
msgid "expecting COMM or TAPE"
msgstr ""
-#: src/language/data-io/get.c:358 src/language/data-io/get.c:372
-#: src/language/data-io/get.c:397
+#: src/language/data-io/get.c:359 src/language/data-io/get.c:373
+#: src/language/data-io/get.c:398
#, c-format
msgid "expecting %s or %s"
msgstr ""
-#: src/language/data-io/get.c:606 src/language/data-io/print.c:174
+#: src/language/data-io/get.c:607 src/language/data-io/print.c:174
msgid "expecting a valid subcommand"
msgstr ""
-#: src/language/data-io/get.c:639
+#: src/language/data-io/get.c:640
#, c-format
msgid ""
"Cannot rename %s as %s because there already exists a variable named %s. To "
"as \"/RENAME (A=B)(B=C)(C=A)\", or equivalently, \"/RENAME (A B C=B C A)\"."
msgstr ""
-#: src/language/data-io/get.c:664
+#: src/language/data-io/get.c:665
msgid "`=' expected after variable list."
msgstr ""
-#: src/language/data-io/get.c:671
+#: src/language/data-io/get.c:672
#, 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:684
+#: src/language/data-io/get.c:685
#, c-format
msgid "Requested renaming duplicates variable name %s."
msgstr ""
-#: src/language/data-io/get.c:714
+#: src/language/data-io/get.c:715
msgid "Cannot DROP all variables from dictionary."
msgstr ""
-#: src/language/data-io/get.c:891
+#: src/language/data-io/get.c:892
msgid "The active file may not be specified more than once."
msgstr ""
-#: src/language/data-io/get.c:899
+#: src/language/data-io/get.c:900
msgid "Cannot specify the active file since no active file has been defined."
msgstr ""
-#: src/language/data-io/get.c:906
+#: src/language/data-io/get.c:907
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:942
+#: src/language/data-io/get.c:943
msgid "Multiple IN subcommands for a single FILE or TABLE."
msgstr ""
-#: src/language/data-io/get.c:962
+#: src/language/data-io/get.c:963
msgid "BY may appear at most once."
msgstr ""
-#: src/language/data-io/get.c:982
+#: src/language/data-io/get.c:983
#, c-format
msgid "File %s lacks BY variable %s."
msgstr ""
-#: src/language/data-io/get.c:996
+#: src/language/data-io/get.c:997
msgid "FIRST may appear at most once."
msgstr ""
-#: src/language/data-io/get.c:1010
+#: src/language/data-io/get.c:1011
msgid "LAST may appear at most once."
msgstr ""
-#: src/language/data-io/get.c:1051
+#: src/language/data-io/get.c:1052
msgid "BY is required when TABLE is specified."
msgstr ""
-#: src/language/data-io/get.c:1056
+#: src/language/data-io/get.c:1057
msgid "BY is required when IN is specified."
msgstr ""
-#: src/language/data-io/get.c:1084
+#: src/language/data-io/get.c:1085
#, c-format
msgid "IN variable name %s duplicates an existing variable name."
msgstr ""
-#: src/language/data-io/get.c:1538
+#: src/language/data-io/get.c:1541
#, c-format
msgid ""
"Variable %s in file %s (%s) has different type or width from the same "
msgid "Input program did not create any variables."
msgstr ""
-#: src/language/data-io/inpt-pgm.c:337
+#: src/language/data-io/inpt-pgm.c:338
msgid "COLUMN subcommand multiply specified."
msgstr ""
-#: src/language/data-io/inpt-pgm.c:384
+#: src/language/data-io/inpt-pgm.c:385
msgid ""
"REREAD: Column numbers must be positive finite numbers. Column set to 1."
msgstr ""
-#: src/language/data-io/list.q:152 src/language/stats/descriptives.c:361
+#: src/language/data-io/list.q:152 src/language/stats/descriptives.c:362
msgid "No variables specified."
msgstr ""
msgid "No continuous variables specified."
msgstr ""
-#: src/language/data-io/matrix-data.c:840
+#: src/language/data-io/matrix-data.c:841
msgid "Scope of string exceeds line."
msgstr ""
-#: src/language/data-io/matrix-data.c:901
+#: src/language/data-io/matrix-data.c:902
#, c-format
msgid "End of line expected %s while reading %s."
msgstr ""
-#: src/language/data-io/matrix-data.c:1090
+#: src/language/data-io/matrix-data.c:1091
#, c-format
msgid "expecting value for %s %s"
msgstr ""
-#: src/language/data-io/matrix-data.c:1255
+#: src/language/data-io/matrix-data.c:1256
#, c-format
msgid "Syntax error expecting SPLIT FILE value %s."
msgstr ""
-#: src/language/data-io/matrix-data.c:1264
+#: src/language/data-io/matrix-data.c:1265
#, c-format
msgid "Expecting value %g for %s."
msgstr ""
-#: src/language/data-io/matrix-data.c:1305
-#: src/language/data-io/matrix-data.c:1782
+#: src/language/data-io/matrix-data.c:1306
+#: src/language/data-io/matrix-data.c:1784
#, c-format
msgid "Syntax error expecting factor value %s."
msgstr ""
-#: src/language/data-io/matrix-data.c:1314
+#: src/language/data-io/matrix-data.c:1315
#, c-format
msgid "Syntax error expecting value %g for %s %s."
msgstr ""
-#: src/language/data-io/matrix-data.c:1558
+#: src/language/data-io/matrix-data.c:1560
#, c-format
msgid "Syntax error %s expecting SPLIT FILE value."
msgstr ""
-#: src/language/data-io/matrix-data.c:1687
+#: src/language/data-io/matrix-data.c:1689
#, c-format
msgid ""
"Expected %d lines of data for %s content; actually saw %d lines. No data "
"will be output for this content."
msgstr ""
-#: src/language/data-io/matrix-data.c:1724
+#: src/language/data-io/matrix-data.c:1726
#, c-format
msgid "Multiply specified ROWTYPE_ %s."
msgstr ""
-#: src/language/data-io/matrix-data.c:1729
+#: src/language/data-io/matrix-data.c:1731
#, c-format
msgid "Syntax error %s expecting ROWTYPE_ string."
msgstr ""
-#: src/language/data-io/matrix-data.c:1749
+#: src/language/data-io/matrix-data.c:1751
#, c-format
msgid "Syntax error %s."
msgstr ""
-#: src/language/data-io/matrix-data.c:1900
+#: src/language/data-io/matrix-data.c:1902
#, c-format
msgid "Duplicate specification for %s."
msgstr ""
-#: src/language/data-io/matrix-data.c:1912
+#: src/language/data-io/matrix-data.c:1914
#, c-format
msgid "Too many rows of matrix data for %s."
msgstr ""
-#: src/language/data-io/matrix-data.c:1956
+#: src/language/data-io/matrix-data.c:1958
#, c-format
msgid "Syntax error expecting value for %s %s."
msgstr ""
msgstr[0] ""
msgstr[1] ""
-#: src/language/data-io/print-space.c:116
+#: src/language/data-io/print-space.c:117
msgid "The expression on PRINT SPACE evaluated to the system-missing value."
msgstr ""
-#: src/language/data-io/print-space.c:119
+#: src/language/data-io/print-space.c:120
#, c-format
msgid "The expression on PRINT SPACE evaluated to %g."
msgstr ""
msgstr ""
#: src/language/dictionary/missing-values.c:57
-#: src/language/stats/aggregate.c:447
+#: src/language/stats/aggregate.c:450
msgid "expecting `('"
msgstr ""
#: src/language/dictionary/split-file.c:85
#: src/language/dictionary/sys-file-info.c:523
-#: src/language/stats/crosstabs.q:1115 src/language/stats/crosstabs.q:1142
-#: src/language/stats/crosstabs.q:1162 src/language/stats/crosstabs.q:1184
+#: src/language/stats/crosstabs.q:1116 src/language/stats/crosstabs.q:1143
+#: src/language/stats/crosstabs.q:1163 src/language/stats/crosstabs.q:1185
#: src/language/stats/examine.q:1149 src/language/stats/frequencies.q:1177
#: src/language/stats/frequencies.q:1301
msgid "Value"
msgid "Unknown identifier %s."
msgstr ""
-#: src/language/expressions/parse.c:854 src/language/stats/aggregate.c:503
+#: src/language/expressions/parse.c:854 src/language/stats/aggregate.c:506
msgid "expecting `)'"
msgstr ""
msgid "%s is not yet implemented."
msgstr ""
-#: src/language/expressions/parse.c:1235
+#: src/language/expressions/parse.c:1236
#, c-format
msgid "%s may not appear after TEMPORARY."
msgstr ""
msgid "expecting identifier"
msgstr ""
-#: src/language/lexer/lexer.c:861
+#: src/language/lexer/lexer.c:862
msgid "<ERROR>"
msgstr ""
-#: src/language/lexer/lexer.c:1007
+#: src/language/lexer/lexer.c:1008
msgid "binary"
msgstr ""
-#: src/language/lexer/lexer.c:1012
+#: src/language/lexer/lexer.c:1013
msgid "octal"
msgstr ""
-#: src/language/lexer/lexer.c:1017
+#: src/language/lexer/lexer.c:1018
msgid "hex"
msgstr ""
-#: src/language/lexer/lexer.c:1027
+#: src/language/lexer/lexer.c:1028
#, c-format
msgid "String of %s digits has %d characters, which is not a multiple of %d."
msgstr ""
-#: src/language/lexer/lexer.c:1056
+#: src/language/lexer/lexer.c:1057
#, c-format
msgid "`%c' is not a valid %s digit."
msgstr ""
-#: src/language/lexer/lexer.c:1087
+#: src/language/lexer/lexer.c:1088
msgid "Unterminated string constant."
msgstr ""
-#: src/language/lexer/lexer.c:1141
+#: src/language/lexer/lexer.c:1142
msgid "Unexpected end of file in string concatenation."
msgstr ""
-#: src/language/lexer/lexer.c:1149
+#: src/language/lexer/lexer.c:1150
msgid "String expected following `+'."
msgstr ""
-#: src/language/lexer/lexer.c:1162
+#: src/language/lexer/lexer.c:1163
#, c-format
msgid "String exceeds 255 characters in length (%d characters)."
msgstr ""
-#: src/language/lexer/lexer.c:1177
+#: src/language/lexer/lexer.c:1178
msgid ""
"Sorry, literal strings may not contain null characters. Replacing with "
"spaces."
"has no effect. Output data will be sorted the same way as the input data."
msgstr ""
-#: src/language/stats/aggregate.c:416
+#: src/language/stats/aggregate.c:419
msgid "expecting aggregation function"
msgstr ""
-#: src/language/stats/aggregate.c:432
+#: src/language/stats/aggregate.c:435
#, c-format
msgid "Unknown aggregation function %s."
msgstr ""
-#: src/language/stats/aggregate.c:484
+#: src/language/stats/aggregate.c:487
#, c-format
msgid "Missing argument %d to %s."
msgstr ""
-#: src/language/stats/aggregate.c:493
+#: src/language/stats/aggregate.c:496
#, c-format
msgid "Arguments to %s must be of same type as source variables."
msgstr ""
-#: src/language/stats/aggregate.c:515
+#: src/language/stats/aggregate.c:518
#, c-format
msgid ""
"Number of source variables (%u) does not match number of target variables (%"
"u)."
msgstr ""
-#: src/language/stats/aggregate.c:531
+#: src/language/stats/aggregate.c:534
#, 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:598
+#: src/language/stats/aggregate.c:601
#, c-format
msgid ""
"Variable name %s is not unique within the aggregate file dictionary, which "
msgid "Maximum value (%ld) less than minimum value (%ld)."
msgstr ""
-#: src/language/stats/crosstabs.q:816
+#: src/language/stats/crosstabs.q:817
msgid "Summary."
msgstr ""
-#: src/language/stats/crosstabs.q:818 src/language/stats/examine.q:934
+#: src/language/stats/crosstabs.q:819 src/language/stats/examine.q:934
msgid "Cases"
msgstr ""
-#: src/language/stats/crosstabs.q:819 src/language/stats/examine.q:868
+#: src/language/stats/crosstabs.q:820 src/language/stats/examine.q:868
#: src/language/stats/frequencies.q:1175 src/language/stats/frequencies.q:1551
msgid "Valid"
msgstr ""
-#: src/language/stats/crosstabs.q:820 src/language/stats/examine.q:869
+#: src/language/stats/crosstabs.q:821 src/language/stats/examine.q:869
#: src/language/stats/frequencies.q:1244 src/language/stats/frequencies.q:1552
#: src/ui/gui/var-sheet.c:77
msgid "Missing"
msgstr "Löse"
-#: src/language/stats/crosstabs.q:821 src/language/stats/crosstabs.q:1024
-#: src/language/stats/crosstabs.q:1744 src/language/stats/examine.q:870
+#: src/language/stats/crosstabs.q:822 src/language/stats/crosstabs.q:1025
+#: src/language/stats/crosstabs.q:1745 src/language/stats/examine.q:870
#: src/language/stats/frequencies.q:1253 src/language/stats/oneway.q:317
#: src/language/stats/oneway.q:481 src/language/stats/regression.q:314
msgid "Total"
msgstr ""
-#: src/language/stats/crosstabs.q:831 src/language/stats/examine.q:946
+#: src/language/stats/crosstabs.q:832 src/language/stats/examine.q:946
#: src/language/stats/frequencies.q:1550 src/language/stats/oneway.q:403
#: src/language/stats/t-test.q:688 src/language/stats/t-test.q:711
#: src/language/stats/t-test.q:836 src/language/stats/t-test.q:1371
msgid "N"
msgstr ""
-#: src/language/stats/crosstabs.q:832 src/language/stats/examine.q:949
+#: src/language/stats/crosstabs.q:833 src/language/stats/examine.q:949
#: src/language/stats/frequencies.q:1179 src/language/stats/frequencies.q:1180
#: src/language/stats/frequencies.q:1181
msgid "Percent"
msgstr "Prozent"
-#: src/language/stats/crosstabs.q:1074
+#: src/language/stats/crosstabs.q:1075
msgid "count"
msgstr ""
-#: src/language/stats/crosstabs.q:1075
+#: src/language/stats/crosstabs.q:1076
msgid "row %"
msgstr ""
-#: src/language/stats/crosstabs.q:1076
+#: src/language/stats/crosstabs.q:1077
msgid "column %"
msgstr ""
-#: src/language/stats/crosstabs.q:1077
+#: src/language/stats/crosstabs.q:1078
msgid "total %"
msgstr ""
-#: src/language/stats/crosstabs.q:1078
+#: src/language/stats/crosstabs.q:1079
msgid "expected"
msgstr ""
-#: src/language/stats/crosstabs.q:1079
+#: src/language/stats/crosstabs.q:1080
msgid "residual"
msgstr ""
-#: src/language/stats/crosstabs.q:1080
+#: src/language/stats/crosstabs.q:1081
msgid "std. resid."
msgstr ""
-#: src/language/stats/crosstabs.q:1081
+#: src/language/stats/crosstabs.q:1082
msgid "adj. resid."
msgstr ""
-#: src/language/stats/crosstabs.q:1111
+#: src/language/stats/crosstabs.q:1112
msgid "Chi-square tests."
msgstr ""
-#: src/language/stats/crosstabs.q:1114 src/language/stats/crosstabs.q:1141
-#: src/language/stats/crosstabs.q:1161 src/language/stats/crosstabs.q:1182
+#: src/language/stats/crosstabs.q:1115 src/language/stats/crosstabs.q:1142
+#: src/language/stats/crosstabs.q:1162 src/language/stats/crosstabs.q:1183
#: src/language/stats/examine.q:1380
msgid "Statistic"
msgstr ""
-#: src/language/stats/crosstabs.q:1116 src/language/stats/oneway.q:290
+#: src/language/stats/crosstabs.q:1117 src/language/stats/oneway.q:290
#: src/language/stats/oneway.q:693 src/language/stats/regression.q:307
#: src/language/stats/t-test.q:986 src/language/stats/t-test.q:1178
#: src/language/stats/t-test.q:1270
msgid "df"
msgstr ""
-#: src/language/stats/crosstabs.q:1118
+#: src/language/stats/crosstabs.q:1119
msgid "Asymp. Sig. (2-sided)"
msgstr ""
-#: src/language/stats/crosstabs.q:1120
+#: src/language/stats/crosstabs.q:1121
msgid "Exact. Sig. (2-sided)"
msgstr ""
-#: src/language/stats/crosstabs.q:1122
+#: src/language/stats/crosstabs.q:1123
msgid "Exact. Sig. (1-sided)"
msgstr ""
-#: src/language/stats/crosstabs.q:1137
+#: src/language/stats/crosstabs.q:1138
msgid "Symmetric measures."
msgstr ""
-#: src/language/stats/crosstabs.q:1140 src/language/stats/crosstabs.q:1181
+#: src/language/stats/crosstabs.q:1141 src/language/stats/crosstabs.q:1182
msgid "Category"
msgstr ""
-#: src/language/stats/crosstabs.q:1143 src/language/stats/crosstabs.q:1185
+#: src/language/stats/crosstabs.q:1144 src/language/stats/crosstabs.q:1186
msgid "Asymp. Std. Error"
msgstr ""
-#: src/language/stats/crosstabs.q:1144 src/language/stats/crosstabs.q:1186
+#: src/language/stats/crosstabs.q:1145 src/language/stats/crosstabs.q:1187
msgid "Approx. T"
msgstr ""
-#: src/language/stats/crosstabs.q:1145 src/language/stats/crosstabs.q:1187
+#: src/language/stats/crosstabs.q:1146 src/language/stats/crosstabs.q:1188
msgid "Approx. Sig."
msgstr ""
-#: src/language/stats/crosstabs.q:1156
+#: src/language/stats/crosstabs.q:1157
msgid "Risk estimate."
msgstr ""
-#: src/language/stats/crosstabs.q:1160
+#: src/language/stats/crosstabs.q:1161
#, c-format
msgid "95%% Confidence Interval"
msgstr ""
-#: src/language/stats/crosstabs.q:1163 src/language/stats/t-test.q:990
+#: src/language/stats/crosstabs.q:1164 src/language/stats/t-test.q:990
#: src/language/stats/t-test.q:1175 src/language/stats/t-test.q:1273
msgid "Lower"
msgstr ""
-#: src/language/stats/crosstabs.q:1164 src/language/stats/t-test.q:991
+#: src/language/stats/crosstabs.q:1165 src/language/stats/t-test.q:991
#: src/language/stats/t-test.q:1176 src/language/stats/t-test.q:1274
msgid "Upper"
msgstr ""
-#: src/language/stats/crosstabs.q:1178
+#: src/language/stats/crosstabs.q:1179
msgid "Directional measures."
msgstr ""
-#: src/language/stats/crosstabs.q:1183 src/ui/gui/var-sheet.c:72
+#: src/language/stats/crosstabs.q:1184 src/ui/gui/var-sheet.c:72
msgid "Type"
msgstr "Typ"
-#: src/language/stats/crosstabs.q:1936
+#: src/language/stats/crosstabs.q:1937
msgid "Pearson Chi-Square"
msgstr ""
-#: src/language/stats/crosstabs.q:1937
+#: src/language/stats/crosstabs.q:1938
msgid "Likelihood Ratio"
msgstr ""
-#: src/language/stats/crosstabs.q:1938
+#: src/language/stats/crosstabs.q:1939
msgid "Fisher's Exact Test"
msgstr ""
-#: src/language/stats/crosstabs.q:1939
+#: src/language/stats/crosstabs.q:1940
msgid "Continuity Correction"
msgstr ""
-#: src/language/stats/crosstabs.q:1940
+#: src/language/stats/crosstabs.q:1941
msgid "Linear-by-Linear Association"
msgstr ""
-#: src/language/stats/crosstabs.q:1977 src/language/stats/crosstabs.q:2047
-#: src/language/stats/crosstabs.q:2106
+#: src/language/stats/crosstabs.q:1978 src/language/stats/crosstabs.q:2048
+#: src/language/stats/crosstabs.q:2107
msgid "N of Valid Cases"
msgstr ""
-#: src/language/stats/crosstabs.q:1993 src/language/stats/crosstabs.q:2122
+#: src/language/stats/crosstabs.q:1994 src/language/stats/crosstabs.q:2123
msgid "Nominal by Nominal"
msgstr ""
-#: src/language/stats/crosstabs.q:1994 src/language/stats/crosstabs.q:2123
+#: src/language/stats/crosstabs.q:1995 src/language/stats/crosstabs.q:2124
msgid "Ordinal by Ordinal"
msgstr ""
-#: src/language/stats/crosstabs.q:1995
+#: src/language/stats/crosstabs.q:1996
msgid "Interval by Interval"
msgstr ""
-#: src/language/stats/crosstabs.q:1996
+#: src/language/stats/crosstabs.q:1997
msgid "Measure of Agreement"
msgstr ""
-#: src/language/stats/crosstabs.q:2001
+#: src/language/stats/crosstabs.q:2002
msgid "Phi"
msgstr ""
-#: src/language/stats/crosstabs.q:2002
+#: src/language/stats/crosstabs.q:2003
msgid "Cramer's V"
msgstr ""
-#: src/language/stats/crosstabs.q:2003
+#: src/language/stats/crosstabs.q:2004
msgid "Contingency Coefficient"
msgstr ""
-#: src/language/stats/crosstabs.q:2004
+#: src/language/stats/crosstabs.q:2005
msgid "Kendall's tau-b"
msgstr ""
-#: src/language/stats/crosstabs.q:2005
+#: src/language/stats/crosstabs.q:2006
msgid "Kendall's tau-c"
msgstr ""
-#: src/language/stats/crosstabs.q:2006
+#: src/language/stats/crosstabs.q:2007
msgid "Gamma"
msgstr ""
-#: src/language/stats/crosstabs.q:2007
+#: src/language/stats/crosstabs.q:2008
msgid "Spearman Correlation"
msgstr ""
-#: src/language/stats/crosstabs.q:2008
+#: src/language/stats/crosstabs.q:2009
msgid "Pearson's R"
msgstr ""
-#: src/language/stats/crosstabs.q:2009
+#: src/language/stats/crosstabs.q:2010
msgid "Kappa"
msgstr ""
-#: src/language/stats/crosstabs.q:2079
+#: src/language/stats/crosstabs.q:2080
#, c-format
msgid "Odds Ratio for %s (%g / %g)"
msgstr ""
-#: src/language/stats/crosstabs.q:2082
+#: src/language/stats/crosstabs.q:2083
#, c-format
msgid "Odds Ratio for %s (%.*s / %.*s)"
msgstr ""
-#: src/language/stats/crosstabs.q:2090
+#: src/language/stats/crosstabs.q:2091
#, c-format
msgid "For cohort %s = %g"
msgstr ""
-#: src/language/stats/crosstabs.q:2093
+#: src/language/stats/crosstabs.q:2094
#, c-format
msgid "For cohort %s = %.*s"
msgstr ""
-#: src/language/stats/crosstabs.q:2124
+#: src/language/stats/crosstabs.q:2125
msgid "Nominal by Interval"
msgstr ""
-#: src/language/stats/crosstabs.q:2129
+#: src/language/stats/crosstabs.q:2130
msgid "Lambda"
msgstr ""
-#: src/language/stats/crosstabs.q:2130
+#: src/language/stats/crosstabs.q:2131
msgid "Goodman and Kruskal tau"
msgstr ""
-#: src/language/stats/crosstabs.q:2131
+#: src/language/stats/crosstabs.q:2132
msgid "Uncertainty Coefficient"
msgstr ""
-#: src/language/stats/crosstabs.q:2132
+#: src/language/stats/crosstabs.q:2133
msgid "Somers' d"
msgstr ""
-#: src/language/stats/crosstabs.q:2133
+#: src/language/stats/crosstabs.q:2134
msgid "Eta"
msgstr ""
-#: src/language/stats/crosstabs.q:2138
+#: src/language/stats/crosstabs.q:2139
msgid "Symmetric"
msgstr ""
-#: src/language/stats/crosstabs.q:2139 src/language/stats/crosstabs.q:2140
+#: src/language/stats/crosstabs.q:2140 src/language/stats/crosstabs.q:2141
#, c-format
msgid "%s Dependent"
msgstr ""
-#: src/language/stats/descriptives.c:107 src/language/stats/examine.q:1485
+#: src/language/stats/descriptives.c:108 src/language/stats/examine.q:1485
#: src/language/stats/frequencies.q:123 src/language/stats/oneway.q:404
#: src/language/stats/t-test.q:689 src/language/stats/t-test.q:712
#: src/language/stats/t-test.q:835 src/language/stats/t-test.q:1172
msgid "Mean"
msgstr ""
-#: src/language/stats/descriptives.c:108
+#: src/language/stats/descriptives.c:109
msgid "S E Mean"
msgstr ""
-#: src/language/stats/descriptives.c:109 src/language/stats/frequencies.q:127
+#: src/language/stats/descriptives.c:110 src/language/stats/frequencies.q:127
msgid "Std Dev"
msgstr ""
-#: src/language/stats/descriptives.c:110 src/language/stats/examine.q:1565
+#: src/language/stats/descriptives.c:111 src/language/stats/examine.q:1565
#: src/language/stats/frequencies.q:128
msgid "Variance"
msgstr ""
-#: src/language/stats/descriptives.c:111 src/language/stats/examine.q:1672
+#: src/language/stats/descriptives.c:112 src/language/stats/examine.q:1672
#: src/language/stats/frequencies.q:129
msgid "Kurtosis"
msgstr ""
-#: src/language/stats/descriptives.c:112
+#: src/language/stats/descriptives.c:113
msgid "S E Kurt"
msgstr ""
-#: src/language/stats/descriptives.c:113 src/language/stats/examine.q:1652
+#: src/language/stats/descriptives.c:114 src/language/stats/examine.q:1652
#: src/language/stats/frequencies.q:131
msgid "Skewness"
msgstr ""
-#: src/language/stats/descriptives.c:114
+#: src/language/stats/descriptives.c:115
msgid "S E Skew"
msgstr ""
-#: src/language/stats/descriptives.c:115 src/language/stats/examine.q:1613
+#: src/language/stats/descriptives.c:116 src/language/stats/examine.q:1613
#: src/language/stats/frequencies.q:133
msgid "Range"
msgstr ""
-#: src/language/stats/descriptives.c:116 src/language/stats/examine.q:1590
+#: src/language/stats/descriptives.c:117 src/language/stats/examine.q:1590
#: src/language/stats/frequencies.q:134 src/language/stats/oneway.q:416
msgid "Minimum"
msgstr ""
-#: src/language/stats/descriptives.c:117 src/language/stats/examine.q:1601
+#: src/language/stats/descriptives.c:118 src/language/stats/examine.q:1601
#: src/language/stats/frequencies.q:135 src/language/stats/oneway.q:417
msgid "Maximum"
msgstr ""
-#: src/language/stats/descriptives.c:118 src/language/stats/frequencies.q:136
+#: src/language/stats/descriptives.c:119 src/language/stats/frequencies.q:136
msgid "Sum"
msgstr ""
-#: src/language/stats/descriptives.c:343
+#: src/language/stats/descriptives.c:344
#, c-format
msgid "Z-score variable name %s would be a duplicate variable name."
msgstr ""
-#: src/language/stats/descriptives.c:445
+#: src/language/stats/descriptives.c:446
msgid "expecting statistic name: reverting to default"
msgstr ""
-#: src/language/stats/descriptives.c:517
+#: src/language/stats/descriptives.c:518
msgid ""
"Ran out of generic names for Z-score variables. There are only 126 generic "
"names: ZSC001-ZSC0999, STDZ01-STDZ09, ZZZZ01-ZZZZ09, ZQZQ01-ZQZQ09."
msgstr ""
-#: src/language/stats/descriptives.c:548
+#: src/language/stats/descriptives.c:550
msgid "Mapping of variables to corresponding Z-scores."
msgstr ""
-#: src/language/stats/descriptives.c:553
+#: src/language/stats/descriptives.c:555
msgid "Source"
msgstr ""
-#: src/language/stats/descriptives.c:554
+#: src/language/stats/descriptives.c:556
msgid "Target"
msgstr ""
-#: src/language/stats/descriptives.c:672 src/language/stats/descriptives.c:678
+#: src/language/stats/descriptives.c:674 src/language/stats/descriptives.c:680
msgid "Z-score of "
msgstr ""
-#: src/language/stats/descriptives.c:897
+#: src/language/stats/descriptives.c:900
msgid "Valid N"
msgstr ""
-#: src/language/stats/descriptives.c:898
+#: src/language/stats/descriptives.c:901
msgid "Missing N"
msgstr ""
-#: src/language/stats/descriptives.c:925
+#: src/language/stats/descriptives.c:928
#, c-format
msgid "Valid cases = %g; cases with missing value(s) = %g."
msgstr ""
msgid "%s of %s"
msgstr ""
-#: src/language/stats/rank.q:710
+#: src/language/stats/rank.q:718
msgid "Cannot create new rank variable. All candidates in use."
msgstr ""
-#: src/language/stats/rank.q:810
+#: src/language/stats/rank.q:818
msgid "Variables Created By RANK"
msgstr ""
-#: src/language/stats/rank.q:834
+#: src/language/stats/rank.q:842
#, c-format
msgid "%s into %s(%s of %s using %s BY %s)"
msgstr ""
-#: src/language/stats/rank.q:845
+#: src/language/stats/rank.q:853
#, c-format
msgid "%s into %s(%s of %s BY %s)"
msgstr ""
-#: src/language/stats/rank.q:859
+#: src/language/stats/rank.q:867
#, c-format
msgid "%s into %s(%s of %s using %s)"
msgstr ""
-#: src/language/stats/rank.q:869
+#: src/language/stats/rank.q:877
#, c-format
msgid "%s into %s(%s of %s)"
msgstr ""
-#: src/language/stats/rank.q:882
+#: src/language/stats/rank.q:890
msgid ""
"FRACTION has been specified, but NORMAL and PROPORTION rank functions have "
"not been requested. The FRACTION subcommand will be ignored."
msgstr ""
-#: src/language/stats/rank.q:974
+#: src/language/stats/rank.q:982
#, c-format
msgid "Variable %s already exists."
msgstr ""
-#: src/language/stats/rank.q:979
+#: src/language/stats/rank.q:987
msgid "Too many variables in INTO clause."
msgstr ""
msgid "Document entered %s by %s:"
msgstr ""
-#: src/language/xforms/compute.c:143 src/language/xforms/compute.c:190
+#: src/language/xforms/compute.c:144 src/language/xforms/compute.c:191
#, c-format
msgid ""
"When executing COMPUTE: SYSMIS is not a valid value as an index into vector %"
"s."
msgstr ""
-#: src/language/xforms/compute.c:146 src/language/xforms/compute.c:197
+#: src/language/xforms/compute.c:147 src/language/xforms/compute.c:198
#, c-format
msgid ""
"When executing COMPUTE: %g is not a valid value as an index into vector %s."
msgstr ""
-#: src/language/xforms/compute.c:331
+#: src/language/xforms/compute.c:333
#, c-format
msgid "There is no vector named %s."
msgstr ""
msgid "Destination cannot be a string variable."
msgstr ""
-#: src/language/xforms/recode.c:247
+#: src/language/xforms/recode.c:248
msgid ""
"Inconsistent target variable types. Target variables must be all numeric or "
"all string."
msgstr ""
-#: src/language/xforms/recode.c:267
+#: src/language/xforms/recode.c:268
msgid "CONVERT requires string input values and numeric output values."
msgstr ""
-#: src/language/xforms/recode.c:385
+#: src/language/xforms/recode.c:386
msgid "expecting output value"
msgstr ""
-#: src/language/xforms/recode.c:432
+#: src/language/xforms/recode.c:433
#, c-format
msgid ""
"%u variable(s) cannot be recoded into %u variable(s). Specify the same "
"number of variables as source and target variables."
msgstr ""
-#: src/language/xforms/recode.c:448
+#: src/language/xforms/recode.c:449
#, c-format
msgid ""
"There is no variable named %s. (All string variables specified on INTO must "
"already exist. Use the STRING command to create a string variable.)"
msgstr ""
-#: src/language/xforms/recode.c:463
+#: src/language/xforms/recode.c:464
#, c-format
msgid "INTO is required with %s input values and %s output values."
msgstr ""
-#: src/language/xforms/recode.c:476
+#: src/language/xforms/recode.c:477
#, c-format
msgid "Type mismatch. Cannot store %s data in %s variable %s."
msgstr ""
msgid "The filter variable may not be scratch."
msgstr ""
-#: src/libpspp/hash.c:601
+#: src/libpspp/hash.c:617
#, c-format
msgid "hash table:"
msgstr ""
msgid "PSPP Output"
msgstr ""
-#: src/output/html.c:168
+#: src/output/html.c:170
#, c-format
msgid "unknown configuration parameter `%s' for HTML device driver"
msgstr ""
-#: src/output/html.c:184
+#: src/output/html.c:186
msgid "`chart-files' value must contain `#'"
msgstr ""
-#: src/output/html.c:382
+#: src/output/html.c:384
#, c-format
msgid "creating \"%s\""
msgstr ""
msgid "invalid numeric format"
msgstr ""
-#: src/output/table.c:231
+#: src/output/table.c:232
#, 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:302
+#: src/output/table.c:303
#, c-format
msgid ""
"bad box: (%d+%d=%d,%d+%d=%d)-(%d+%d=%d,%d+%d=%d) in table size (%d,%d)\n"
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: pspp-dev@gnu.org\n"
-"POT-Creation-Date: 2006-10-06 17:58+0800\n"
+"POT-Creation-Date: 2006-10-19 16:31+0800\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
#: src/data/sys-file-reader.c:1368 src/data/sys-file-reader.c:1369
#: src/data/variable.c:42 src/language/dictionary/apply-dictionary.c:76
#: src/language/dictionary/apply-dictionary.c:77
-#: src/language/xforms/recode.c:478 src/language/xforms/recode.c:479
+#: src/language/xforms/recode.c:479 src/language/xforms/recode.c:480
msgid "numeric"
msgstr ""
#: src/data/variable.c:42 src/data/variable.c:50
#: src/language/dictionary/apply-dictionary.c:76
#: src/language/dictionary/apply-dictionary.c:77
-#: src/language/xforms/recode.c:478 src/language/xforms/recode.c:479
+#: src/language/xforms/recode.c:479 src/language/xforms/recode.c:480
msgid "string"
msgstr ""
msgid "scratch"
msgstr ""
-#: src/language/command.c:185
+#: src/language/command.c:183
+#, c-format
+msgid "%s is unimplemented."
+msgstr ""
+
+#: src/language/command.c:188
#, c-format
msgid "%s may be used only in testing mode."
msgstr ""
-#: src/language/command.c:190
+#: src/language/command.c:193
#, c-format
msgid "%s may be used only in enhanced syntax mode."
msgstr ""
-#: src/language/command.c:444
+#: src/language/command.c:447
msgid "expecting command name"
msgstr ""
-#: src/language/command.c:458
+#: src/language/command.c:461
#, c-format
msgid "Unknown command %s."
msgstr ""
-#: src/language/command.c:584
+#: src/language/command.c:587
msgid "before the active file has been defined"
msgstr ""
-#: src/language/command.c:586
+#: src/language/command.c:589
msgid "after the active file has been defined"
msgstr ""
-#: src/language/command.c:588
+#: src/language/command.c:591
msgid "inside INPUT PROGRAM"
msgstr ""
-#: src/language/command.c:590
+#: src/language/command.c:593
msgid "inside FILE TYPE"
msgstr ""
-#: src/language/command.c:595
+#: src/language/command.c:598
#, c-format
msgid "%s or %s"
msgstr ""
-#: src/language/command.c:597
+#: src/language/command.c:600
#, c-format
msgid "%s, %s, or %s"
msgstr ""
-#: src/language/command.c:601
+#: src/language/command.c:604
#, c-format
msgid "%s is allowed only %s."
msgstr ""
-#: src/language/command.c:606
+#: src/language/command.c:609
#, c-format
msgid "%s is not allowed inside INPUT PROGRAM."
msgstr ""
-#: src/language/command.c:608
+#: src/language/command.c:611
#, c-format
msgid "%s is not allowed inside FILE TYPE."
msgstr ""
-#: src/language/command.c:686 src/language/command.c:817
+#: src/language/command.c:689 src/language/command.c:820
#: src/language/utilities/permissions.c:102
msgid "This command not allowed when the SAFER option is set."
msgstr ""
-#: src/language/command.c:698
+#: src/language/command.c:701
#, c-format
msgid "Error removing `%s': %s."
msgstr ""
-#: src/language/command.c:748
+#: src/language/command.c:751
#, c-format
msgid "Couldn't fork: %s."
msgstr ""
-#: src/language/command.c:790
+#: src/language/command.c:793
#, c-format
msgid "Error executing command: %s."
msgstr ""
-#: src/language/command.c:799 src/language/data-io/matrix-data.c:539
+#: src/language/command.c:802 src/language/data-io/matrix-data.c:539
#: src/language/data-io/print-space.c:76 src/language/dictionary/vector.c:201
#: src/language/lexer/lexer.c:453 src/language/stats/autorecode.c:154
#: src/language/xforms/select-if.c:62
msgid "expecting end of command"
msgstr ""
-#: src/language/command.c:838
+#: src/language/command.c:841
msgid "No operating system support for this command."
msgstr ""
msgid "Only one of FIXED, FREE, or LIST may be specified."
msgstr ""
-#: src/language/data-io/data-list.c:336 src/language/data-io/data-list.c:471
+#: src/language/data-io/data-list.c:337 src/language/data-io/data-list.c:472
#, c-format
msgid "%s is a duplicate variable name."
msgstr ""
-#: src/language/data-io/data-list.c:343
+#: src/language/data-io/data-list.c:344
#, c-format
msgid "There is already a variable %s of a different type."
msgstr ""
-#: src/language/data-io/data-list.c:350
+#: src/language/data-io/data-list.c:351
#, c-format
msgid "There is already a string variable %s of a different width."
msgstr ""
-#: src/language/data-io/data-list.c:371
+#: src/language/data-io/data-list.c:372
msgid "At least one variable must be specified."
msgstr ""
-#: src/language/data-io/data-list.c:378
+#: src/language/data-io/data-list.c:379
msgid ""
"Variables are specified on records that should not exist according to "
"RECORDS subcommand."
msgstr ""
-#: src/language/data-io/data-list.c:403 src/language/data-io/data-list.c:503
+#: src/language/data-io/data-list.c:404 src/language/data-io/data-list.c:504
#: src/language/data-io/print.c:370 src/language/dictionary/split-file.c:84
#: src/language/dictionary/sys-file-info.c:144
#: src/language/dictionary/sys-file-info.c:378
-#: src/language/stats/descriptives.c:894
+#: src/language/stats/descriptives.c:897
msgid "Variable"
msgstr ""
-#: src/language/data-io/data-list.c:404 src/language/data-io/print.c:371
+#: src/language/data-io/data-list.c:405 src/language/data-io/print.c:371
msgid "Record"
msgstr ""
-#: src/language/data-io/data-list.c:405 src/language/data-io/print.c:372
+#: src/language/data-io/data-list.c:406 src/language/data-io/print.c:372
#: src/ui/gui/var-sheet.c:78
msgid "Columns"
msgstr ""
-#: src/language/data-io/data-list.c:406 src/language/data-io/data-list.c:504
+#: src/language/data-io/data-list.c:407 src/language/data-io/data-list.c:505
#: src/language/data-io/print.c:373
msgid "Format"
msgstr ""
-#: src/language/data-io/data-list.c:422
+#: src/language/data-io/data-list.c:423
#, c-format
msgid "Reading %d record from %s."
msgid_plural "Reading %d records from %s."
msgstr[0] ""
msgstr[1] ""
-#: src/language/data-io/data-list.c:517
+#: src/language/data-io/data-list.c:518
#, c-format
msgid "Reading free-form data from %s."
msgstr ""
-#: src/language/data-io/data-list.c:563
+#: src/language/data-io/data-list.c:564
msgid "Quoted string extends beyond end of line."
msgstr ""
-#: src/language/data-io/data-list.c:648
+#: src/language/data-io/data-list.c:649
#, c-format
msgid "Partial case of %d of %d records discarded."
msgstr ""
-#: src/language/data-io/data-list.c:697
+#: src/language/data-io/data-list.c:698
#, c-format
msgid "Partial case discarded. The first variable missing was %s."
msgstr ""
-#: src/language/data-io/data-list.c:733
+#: src/language/data-io/data-list.c:734
#, c-format
msgid ""
"Missing value(s) for all variables from %s onward. These will be filled "
msgid "expecting COMM or TAPE"
msgstr ""
-#: src/language/data-io/get.c:358 src/language/data-io/get.c:372
-#: src/language/data-io/get.c:397
+#: src/language/data-io/get.c:359 src/language/data-io/get.c:373
+#: src/language/data-io/get.c:398
#, c-format
msgid "expecting %s or %s"
msgstr ""
-#: src/language/data-io/get.c:606 src/language/data-io/print.c:174
+#: src/language/data-io/get.c:607 src/language/data-io/print.c:174
msgid "expecting a valid subcommand"
msgstr ""
-#: src/language/data-io/get.c:639
+#: src/language/data-io/get.c:640
#, c-format
msgid ""
"Cannot rename %s as %s because there already exists a variable named %s. To "
"as \"/RENAME (A=B)(B=C)(C=A)\", or equivalently, \"/RENAME (A B C=B C A)\"."
msgstr ""
-#: src/language/data-io/get.c:664
+#: src/language/data-io/get.c:665
msgid "`=' expected after variable list."
msgstr ""
-#: src/language/data-io/get.c:671
+#: src/language/data-io/get.c:672
#, 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:684
+#: src/language/data-io/get.c:685
#, c-format
msgid "Requested renaming duplicates variable name %s."
msgstr ""
-#: src/language/data-io/get.c:714
+#: src/language/data-io/get.c:715
msgid "Cannot DROP all variables from dictionary."
msgstr ""
-#: src/language/data-io/get.c:891
+#: src/language/data-io/get.c:892
msgid "The active file may not be specified more than once."
msgstr ""
-#: src/language/data-io/get.c:899
+#: src/language/data-io/get.c:900
msgid "Cannot specify the active file since no active file has been defined."
msgstr ""
-#: src/language/data-io/get.c:906
+#: src/language/data-io/get.c:907
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:942
+#: src/language/data-io/get.c:943
msgid "Multiple IN subcommands for a single FILE or TABLE."
msgstr ""
-#: src/language/data-io/get.c:962
+#: src/language/data-io/get.c:963
msgid "BY may appear at most once."
msgstr ""
-#: src/language/data-io/get.c:982
+#: src/language/data-io/get.c:983
#, c-format
msgid "File %s lacks BY variable %s."
msgstr ""
-#: src/language/data-io/get.c:996
+#: src/language/data-io/get.c:997
msgid "FIRST may appear at most once."
msgstr ""
-#: src/language/data-io/get.c:1010
+#: src/language/data-io/get.c:1011
msgid "LAST may appear at most once."
msgstr ""
-#: src/language/data-io/get.c:1051
+#: src/language/data-io/get.c:1052
msgid "BY is required when TABLE is specified."
msgstr ""
-#: src/language/data-io/get.c:1056
+#: src/language/data-io/get.c:1057
msgid "BY is required when IN is specified."
msgstr ""
-#: src/language/data-io/get.c:1084
+#: src/language/data-io/get.c:1085
#, c-format
msgid "IN variable name %s duplicates an existing variable name."
msgstr ""
-#: src/language/data-io/get.c:1538
+#: src/language/data-io/get.c:1541
#, c-format
msgid ""
"Variable %s in file %s (%s) has different type or width from the same "
msgid "Input program did not create any variables."
msgstr ""
-#: src/language/data-io/inpt-pgm.c:337
+#: src/language/data-io/inpt-pgm.c:338
msgid "COLUMN subcommand multiply specified."
msgstr ""
-#: src/language/data-io/inpt-pgm.c:384
+#: src/language/data-io/inpt-pgm.c:385
msgid ""
"REREAD: Column numbers must be positive finite numbers. Column set to 1."
msgstr ""
-#: src/language/data-io/list.q:152 src/language/stats/descriptives.c:361
+#: src/language/data-io/list.q:152 src/language/stats/descriptives.c:362
msgid "No variables specified."
msgstr ""
msgid "No continuous variables specified."
msgstr ""
-#: src/language/data-io/matrix-data.c:840
+#: src/language/data-io/matrix-data.c:841
msgid "Scope of string exceeds line."
msgstr ""
-#: src/language/data-io/matrix-data.c:901
+#: src/language/data-io/matrix-data.c:902
#, c-format
msgid "End of line expected %s while reading %s."
msgstr ""
-#: src/language/data-io/matrix-data.c:1090
+#: src/language/data-io/matrix-data.c:1091
#, c-format
msgid "expecting value for %s %s"
msgstr ""
-#: src/language/data-io/matrix-data.c:1255
+#: src/language/data-io/matrix-data.c:1256
#, c-format
msgid "Syntax error expecting SPLIT FILE value %s."
msgstr ""
-#: src/language/data-io/matrix-data.c:1264
+#: src/language/data-io/matrix-data.c:1265
#, c-format
msgid "Expecting value %g for %s."
msgstr ""
-#: src/language/data-io/matrix-data.c:1305
-#: src/language/data-io/matrix-data.c:1782
+#: src/language/data-io/matrix-data.c:1306
+#: src/language/data-io/matrix-data.c:1784
#, c-format
msgid "Syntax error expecting factor value %s."
msgstr ""
-#: src/language/data-io/matrix-data.c:1314
+#: src/language/data-io/matrix-data.c:1315
#, c-format
msgid "Syntax error expecting value %g for %s %s."
msgstr ""
-#: src/language/data-io/matrix-data.c:1558
+#: src/language/data-io/matrix-data.c:1560
#, c-format
msgid "Syntax error %s expecting SPLIT FILE value."
msgstr ""
-#: src/language/data-io/matrix-data.c:1687
+#: src/language/data-io/matrix-data.c:1689
#, c-format
msgid ""
"Expected %d lines of data for %s content; actually saw %d lines. No data "
"will be output for this content."
msgstr ""
-#: src/language/data-io/matrix-data.c:1724
+#: src/language/data-io/matrix-data.c:1726
#, c-format
msgid "Multiply specified ROWTYPE_ %s."
msgstr ""
-#: src/language/data-io/matrix-data.c:1729
+#: src/language/data-io/matrix-data.c:1731
#, c-format
msgid "Syntax error %s expecting ROWTYPE_ string."
msgstr ""
-#: src/language/data-io/matrix-data.c:1749
+#: src/language/data-io/matrix-data.c:1751
#, c-format
msgid "Syntax error %s."
msgstr ""
-#: src/language/data-io/matrix-data.c:1900
+#: src/language/data-io/matrix-data.c:1902
#, c-format
msgid "Duplicate specification for %s."
msgstr ""
-#: src/language/data-io/matrix-data.c:1912
+#: src/language/data-io/matrix-data.c:1914
#, c-format
msgid "Too many rows of matrix data for %s."
msgstr ""
-#: src/language/data-io/matrix-data.c:1956
+#: src/language/data-io/matrix-data.c:1958
#, c-format
msgid "Syntax error expecting value for %s %s."
msgstr ""
msgstr[0] ""
msgstr[1] ""
-#: src/language/data-io/print-space.c:116
+#: src/language/data-io/print-space.c:117
msgid "The expression on PRINT SPACE evaluated to the system-missing value."
msgstr ""
-#: src/language/data-io/print-space.c:119
+#: src/language/data-io/print-space.c:120
#, c-format
msgid "The expression on PRINT SPACE evaluated to %g."
msgstr ""
msgstr ""
#: src/language/dictionary/missing-values.c:57
-#: src/language/stats/aggregate.c:447
+#: src/language/stats/aggregate.c:450
msgid "expecting `('"
msgstr ""
#: src/language/dictionary/split-file.c:85
#: src/language/dictionary/sys-file-info.c:523
-#: src/language/stats/crosstabs.q:1115 src/language/stats/crosstabs.q:1142
-#: src/language/stats/crosstabs.q:1162 src/language/stats/crosstabs.q:1184
+#: src/language/stats/crosstabs.q:1116 src/language/stats/crosstabs.q:1143
+#: src/language/stats/crosstabs.q:1163 src/language/stats/crosstabs.q:1185
#: src/language/stats/examine.q:1149 src/language/stats/frequencies.q:1177
#: src/language/stats/frequencies.q:1301
msgid "Value"
msgid "Unknown identifier %s."
msgstr ""
-#: src/language/expressions/parse.c:854 src/language/stats/aggregate.c:503
+#: src/language/expressions/parse.c:854 src/language/stats/aggregate.c:506
msgid "expecting `)'"
msgstr ""
msgid "%s is not yet implemented."
msgstr ""
-#: src/language/expressions/parse.c:1235
+#: src/language/expressions/parse.c:1236
#, c-format
msgid "%s may not appear after TEMPORARY."
msgstr ""
msgid "expecting identifier"
msgstr ""
-#: src/language/lexer/lexer.c:861
+#: src/language/lexer/lexer.c:862
msgid "<ERROR>"
msgstr ""
-#: src/language/lexer/lexer.c:1007
+#: src/language/lexer/lexer.c:1008
msgid "binary"
msgstr ""
-#: src/language/lexer/lexer.c:1012
+#: src/language/lexer/lexer.c:1013
msgid "octal"
msgstr ""
-#: src/language/lexer/lexer.c:1017
+#: src/language/lexer/lexer.c:1018
msgid "hex"
msgstr ""
-#: src/language/lexer/lexer.c:1027
+#: src/language/lexer/lexer.c:1028
#, c-format
msgid "String of %s digits has %d characters, which is not a multiple of %d."
msgstr ""
-#: src/language/lexer/lexer.c:1056
+#: src/language/lexer/lexer.c:1057
#, c-format
msgid "`%c' is not a valid %s digit."
msgstr ""
-#: src/language/lexer/lexer.c:1087
+#: src/language/lexer/lexer.c:1088
msgid "Unterminated string constant."
msgstr ""
-#: src/language/lexer/lexer.c:1141
+#: src/language/lexer/lexer.c:1142
msgid "Unexpected end of file in string concatenation."
msgstr ""
-#: src/language/lexer/lexer.c:1149
+#: src/language/lexer/lexer.c:1150
msgid "String expected following `+'."
msgstr ""
-#: src/language/lexer/lexer.c:1162
+#: src/language/lexer/lexer.c:1163
#, c-format
msgid "String exceeds 255 characters in length (%d characters)."
msgstr ""
-#: src/language/lexer/lexer.c:1177
+#: src/language/lexer/lexer.c:1178
msgid ""
"Sorry, literal strings may not contain null characters. Replacing with "
"spaces."
"has no effect. Output data will be sorted the same way as the input data."
msgstr ""
-#: src/language/stats/aggregate.c:416
+#: src/language/stats/aggregate.c:419
msgid "expecting aggregation function"
msgstr ""
-#: src/language/stats/aggregate.c:432
+#: src/language/stats/aggregate.c:435
#, c-format
msgid "Unknown aggregation function %s."
msgstr ""
-#: src/language/stats/aggregate.c:484
+#: src/language/stats/aggregate.c:487
#, c-format
msgid "Missing argument %d to %s."
msgstr ""
-#: src/language/stats/aggregate.c:493
+#: src/language/stats/aggregate.c:496
#, c-format
msgid "Arguments to %s must be of same type as source variables."
msgstr ""
-#: src/language/stats/aggregate.c:515
+#: src/language/stats/aggregate.c:518
#, c-format
msgid ""
"Number of source variables (%u) does not match number of target variables (%"
"u)."
msgstr ""
-#: src/language/stats/aggregate.c:531
+#: src/language/stats/aggregate.c:534
#, 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:598
+#: src/language/stats/aggregate.c:601
#, c-format
msgid ""
"Variable name %s is not unique within the aggregate file dictionary, which "
msgid "Maximum value (%ld) less than minimum value (%ld)."
msgstr ""
-#: src/language/stats/crosstabs.q:816
+#: src/language/stats/crosstabs.q:817
msgid "Summary."
msgstr ""
-#: src/language/stats/crosstabs.q:818 src/language/stats/examine.q:934
+#: src/language/stats/crosstabs.q:819 src/language/stats/examine.q:934
msgid "Cases"
msgstr ""
-#: src/language/stats/crosstabs.q:819 src/language/stats/examine.q:868
+#: src/language/stats/crosstabs.q:820 src/language/stats/examine.q:868
#: src/language/stats/frequencies.q:1175 src/language/stats/frequencies.q:1551
msgid "Valid"
msgstr ""
-#: src/language/stats/crosstabs.q:820 src/language/stats/examine.q:869
+#: src/language/stats/crosstabs.q:821 src/language/stats/examine.q:869
#: src/language/stats/frequencies.q:1244 src/language/stats/frequencies.q:1552
#: src/ui/gui/var-sheet.c:77
msgid "Missing"
msgstr ""
-#: src/language/stats/crosstabs.q:821 src/language/stats/crosstabs.q:1024
-#: src/language/stats/crosstabs.q:1744 src/language/stats/examine.q:870
+#: src/language/stats/crosstabs.q:822 src/language/stats/crosstabs.q:1025
+#: src/language/stats/crosstabs.q:1745 src/language/stats/examine.q:870
#: src/language/stats/frequencies.q:1253 src/language/stats/oneway.q:317
#: src/language/stats/oneway.q:481 src/language/stats/regression.q:314
msgid "Total"
msgstr ""
-#: src/language/stats/crosstabs.q:831 src/language/stats/examine.q:946
+#: src/language/stats/crosstabs.q:832 src/language/stats/examine.q:946
#: src/language/stats/frequencies.q:1550 src/language/stats/oneway.q:403
#: src/language/stats/t-test.q:688 src/language/stats/t-test.q:711
#: src/language/stats/t-test.q:836 src/language/stats/t-test.q:1371
msgid "N"
msgstr ""
-#: src/language/stats/crosstabs.q:832 src/language/stats/examine.q:949
+#: src/language/stats/crosstabs.q:833 src/language/stats/examine.q:949
#: src/language/stats/frequencies.q:1179 src/language/stats/frequencies.q:1180
#: src/language/stats/frequencies.q:1181
msgid "Percent"
msgstr ""
-#: src/language/stats/crosstabs.q:1074
+#: src/language/stats/crosstabs.q:1075
msgid "count"
msgstr ""
-#: src/language/stats/crosstabs.q:1075
+#: src/language/stats/crosstabs.q:1076
msgid "row %"
msgstr ""
-#: src/language/stats/crosstabs.q:1076
+#: src/language/stats/crosstabs.q:1077
msgid "column %"
msgstr ""
-#: src/language/stats/crosstabs.q:1077
+#: src/language/stats/crosstabs.q:1078
msgid "total %"
msgstr ""
-#: src/language/stats/crosstabs.q:1078
+#: src/language/stats/crosstabs.q:1079
msgid "expected"
msgstr ""
-#: src/language/stats/crosstabs.q:1079
+#: src/language/stats/crosstabs.q:1080
msgid "residual"
msgstr ""
-#: src/language/stats/crosstabs.q:1080
+#: src/language/stats/crosstabs.q:1081
msgid "std. resid."
msgstr ""
-#: src/language/stats/crosstabs.q:1081
+#: src/language/stats/crosstabs.q:1082
msgid "adj. resid."
msgstr ""
-#: src/language/stats/crosstabs.q:1111
+#: src/language/stats/crosstabs.q:1112
msgid "Chi-square tests."
msgstr ""
-#: src/language/stats/crosstabs.q:1114 src/language/stats/crosstabs.q:1141
-#: src/language/stats/crosstabs.q:1161 src/language/stats/crosstabs.q:1182
+#: src/language/stats/crosstabs.q:1115 src/language/stats/crosstabs.q:1142
+#: src/language/stats/crosstabs.q:1162 src/language/stats/crosstabs.q:1183
#: src/language/stats/examine.q:1380
msgid "Statistic"
msgstr ""
-#: src/language/stats/crosstabs.q:1116 src/language/stats/oneway.q:290
+#: src/language/stats/crosstabs.q:1117 src/language/stats/oneway.q:290
#: src/language/stats/oneway.q:693 src/language/stats/regression.q:307
#: src/language/stats/t-test.q:986 src/language/stats/t-test.q:1178
#: src/language/stats/t-test.q:1270
msgid "df"
msgstr ""
-#: src/language/stats/crosstabs.q:1118
+#: src/language/stats/crosstabs.q:1119
msgid "Asymp. Sig. (2-sided)"
msgstr ""
-#: src/language/stats/crosstabs.q:1120
+#: src/language/stats/crosstabs.q:1121
msgid "Exact. Sig. (2-sided)"
msgstr ""
-#: src/language/stats/crosstabs.q:1122
+#: src/language/stats/crosstabs.q:1123
msgid "Exact. Sig. (1-sided)"
msgstr ""
-#: src/language/stats/crosstabs.q:1137
+#: src/language/stats/crosstabs.q:1138
msgid "Symmetric measures."
msgstr ""
-#: src/language/stats/crosstabs.q:1140 src/language/stats/crosstabs.q:1181
+#: src/language/stats/crosstabs.q:1141 src/language/stats/crosstabs.q:1182
msgid "Category"
msgstr ""
-#: src/language/stats/crosstabs.q:1143 src/language/stats/crosstabs.q:1185
+#: src/language/stats/crosstabs.q:1144 src/language/stats/crosstabs.q:1186
msgid "Asymp. Std. Error"
msgstr ""
-#: src/language/stats/crosstabs.q:1144 src/language/stats/crosstabs.q:1186
+#: src/language/stats/crosstabs.q:1145 src/language/stats/crosstabs.q:1187
msgid "Approx. T"
msgstr ""
-#: src/language/stats/crosstabs.q:1145 src/language/stats/crosstabs.q:1187
+#: src/language/stats/crosstabs.q:1146 src/language/stats/crosstabs.q:1188
msgid "Approx. Sig."
msgstr ""
-#: src/language/stats/crosstabs.q:1156
+#: src/language/stats/crosstabs.q:1157
msgid "Risk estimate."
msgstr ""
-#: src/language/stats/crosstabs.q:1160
+#: src/language/stats/crosstabs.q:1161
#, c-format
msgid "95%% Confidence Interval"
msgstr ""
-#: src/language/stats/crosstabs.q:1163 src/language/stats/t-test.q:990
+#: src/language/stats/crosstabs.q:1164 src/language/stats/t-test.q:990
#: src/language/stats/t-test.q:1175 src/language/stats/t-test.q:1273
msgid "Lower"
msgstr ""
-#: src/language/stats/crosstabs.q:1164 src/language/stats/t-test.q:991
+#: src/language/stats/crosstabs.q:1165 src/language/stats/t-test.q:991
#: src/language/stats/t-test.q:1176 src/language/stats/t-test.q:1274
msgid "Upper"
msgstr ""
-#: src/language/stats/crosstabs.q:1178
+#: src/language/stats/crosstabs.q:1179
msgid "Directional measures."
msgstr ""
-#: src/language/stats/crosstabs.q:1183 src/ui/gui/var-sheet.c:72
+#: src/language/stats/crosstabs.q:1184 src/ui/gui/var-sheet.c:72
msgid "Type"
msgstr ""
-#: src/language/stats/crosstabs.q:1936
+#: src/language/stats/crosstabs.q:1937
msgid "Pearson Chi-Square"
msgstr ""
-#: src/language/stats/crosstabs.q:1937
+#: src/language/stats/crosstabs.q:1938
msgid "Likelihood Ratio"
msgstr ""
-#: src/language/stats/crosstabs.q:1938
+#: src/language/stats/crosstabs.q:1939
msgid "Fisher's Exact Test"
msgstr ""
-#: src/language/stats/crosstabs.q:1939
+#: src/language/stats/crosstabs.q:1940
msgid "Continuity Correction"
msgstr ""
-#: src/language/stats/crosstabs.q:1940
+#: src/language/stats/crosstabs.q:1941
msgid "Linear-by-Linear Association"
msgstr ""
-#: src/language/stats/crosstabs.q:1977 src/language/stats/crosstabs.q:2047
-#: src/language/stats/crosstabs.q:2106
+#: src/language/stats/crosstabs.q:1978 src/language/stats/crosstabs.q:2048
+#: src/language/stats/crosstabs.q:2107
msgid "N of Valid Cases"
msgstr ""
-#: src/language/stats/crosstabs.q:1993 src/language/stats/crosstabs.q:2122
+#: src/language/stats/crosstabs.q:1994 src/language/stats/crosstabs.q:2123
msgid "Nominal by Nominal"
msgstr ""
-#: src/language/stats/crosstabs.q:1994 src/language/stats/crosstabs.q:2123
+#: src/language/stats/crosstabs.q:1995 src/language/stats/crosstabs.q:2124
msgid "Ordinal by Ordinal"
msgstr ""
-#: src/language/stats/crosstabs.q:1995
+#: src/language/stats/crosstabs.q:1996
msgid "Interval by Interval"
msgstr ""
-#: src/language/stats/crosstabs.q:1996
+#: src/language/stats/crosstabs.q:1997
msgid "Measure of Agreement"
msgstr ""
-#: src/language/stats/crosstabs.q:2001
+#: src/language/stats/crosstabs.q:2002
msgid "Phi"
msgstr ""
-#: src/language/stats/crosstabs.q:2002
+#: src/language/stats/crosstabs.q:2003
msgid "Cramer's V"
msgstr ""
-#: src/language/stats/crosstabs.q:2003
+#: src/language/stats/crosstabs.q:2004
msgid "Contingency Coefficient"
msgstr ""
-#: src/language/stats/crosstabs.q:2004
+#: src/language/stats/crosstabs.q:2005
msgid "Kendall's tau-b"
msgstr ""
-#: src/language/stats/crosstabs.q:2005
+#: src/language/stats/crosstabs.q:2006
msgid "Kendall's tau-c"
msgstr ""
-#: src/language/stats/crosstabs.q:2006
+#: src/language/stats/crosstabs.q:2007
msgid "Gamma"
msgstr ""
-#: src/language/stats/crosstabs.q:2007
+#: src/language/stats/crosstabs.q:2008
msgid "Spearman Correlation"
msgstr ""
-#: src/language/stats/crosstabs.q:2008
+#: src/language/stats/crosstabs.q:2009
msgid "Pearson's R"
msgstr ""
-#: src/language/stats/crosstabs.q:2009
+#: src/language/stats/crosstabs.q:2010
msgid "Kappa"
msgstr ""
-#: src/language/stats/crosstabs.q:2079
+#: src/language/stats/crosstabs.q:2080
#, c-format
msgid "Odds Ratio for %s (%g / %g)"
msgstr ""
-#: src/language/stats/crosstabs.q:2082
+#: src/language/stats/crosstabs.q:2083
#, c-format
msgid "Odds Ratio for %s (%.*s / %.*s)"
msgstr ""
-#: src/language/stats/crosstabs.q:2090
+#: src/language/stats/crosstabs.q:2091
#, c-format
msgid "For cohort %s = %g"
msgstr ""
-#: src/language/stats/crosstabs.q:2093
+#: src/language/stats/crosstabs.q:2094
#, c-format
msgid "For cohort %s = %.*s"
msgstr ""
-#: src/language/stats/crosstabs.q:2124
+#: src/language/stats/crosstabs.q:2125
msgid "Nominal by Interval"
msgstr ""
-#: src/language/stats/crosstabs.q:2129
+#: src/language/stats/crosstabs.q:2130
msgid "Lambda"
msgstr ""
-#: src/language/stats/crosstabs.q:2130
+#: src/language/stats/crosstabs.q:2131
msgid "Goodman and Kruskal tau"
msgstr ""
-#: src/language/stats/crosstabs.q:2131
+#: src/language/stats/crosstabs.q:2132
msgid "Uncertainty Coefficient"
msgstr ""
-#: src/language/stats/crosstabs.q:2132
+#: src/language/stats/crosstabs.q:2133
msgid "Somers' d"
msgstr ""
-#: src/language/stats/crosstabs.q:2133
+#: src/language/stats/crosstabs.q:2134
msgid "Eta"
msgstr ""
-#: src/language/stats/crosstabs.q:2138
+#: src/language/stats/crosstabs.q:2139
msgid "Symmetric"
msgstr ""
-#: src/language/stats/crosstabs.q:2139 src/language/stats/crosstabs.q:2140
+#: src/language/stats/crosstabs.q:2140 src/language/stats/crosstabs.q:2141
#, c-format
msgid "%s Dependent"
msgstr ""
-#: src/language/stats/descriptives.c:107 src/language/stats/examine.q:1485
+#: src/language/stats/descriptives.c:108 src/language/stats/examine.q:1485
#: src/language/stats/frequencies.q:123 src/language/stats/oneway.q:404
#: src/language/stats/t-test.q:689 src/language/stats/t-test.q:712
#: src/language/stats/t-test.q:835 src/language/stats/t-test.q:1172
msgid "Mean"
msgstr ""
-#: src/language/stats/descriptives.c:108
+#: src/language/stats/descriptives.c:109
msgid "S E Mean"
msgstr ""
-#: src/language/stats/descriptives.c:109 src/language/stats/frequencies.q:127
+#: src/language/stats/descriptives.c:110 src/language/stats/frequencies.q:127
msgid "Std Dev"
msgstr ""
-#: src/language/stats/descriptives.c:110 src/language/stats/examine.q:1565
+#: src/language/stats/descriptives.c:111 src/language/stats/examine.q:1565
#: src/language/stats/frequencies.q:128
msgid "Variance"
msgstr ""
-#: src/language/stats/descriptives.c:111 src/language/stats/examine.q:1672
+#: src/language/stats/descriptives.c:112 src/language/stats/examine.q:1672
#: src/language/stats/frequencies.q:129
msgid "Kurtosis"
msgstr ""
-#: src/language/stats/descriptives.c:112
+#: src/language/stats/descriptives.c:113
msgid "S E Kurt"
msgstr ""
-#: src/language/stats/descriptives.c:113 src/language/stats/examine.q:1652
+#: src/language/stats/descriptives.c:114 src/language/stats/examine.q:1652
#: src/language/stats/frequencies.q:131
msgid "Skewness"
msgstr ""
-#: src/language/stats/descriptives.c:114
+#: src/language/stats/descriptives.c:115
msgid "S E Skew"
msgstr ""
-#: src/language/stats/descriptives.c:115 src/language/stats/examine.q:1613
+#: src/language/stats/descriptives.c:116 src/language/stats/examine.q:1613
#: src/language/stats/frequencies.q:133
msgid "Range"
msgstr ""
-#: src/language/stats/descriptives.c:116 src/language/stats/examine.q:1590
+#: src/language/stats/descriptives.c:117 src/language/stats/examine.q:1590
#: src/language/stats/frequencies.q:134 src/language/stats/oneway.q:416
msgid "Minimum"
msgstr ""
-#: src/language/stats/descriptives.c:117 src/language/stats/examine.q:1601
+#: src/language/stats/descriptives.c:118 src/language/stats/examine.q:1601
#: src/language/stats/frequencies.q:135 src/language/stats/oneway.q:417
msgid "Maximum"
msgstr ""
-#: src/language/stats/descriptives.c:118 src/language/stats/frequencies.q:136
+#: src/language/stats/descriptives.c:119 src/language/stats/frequencies.q:136
msgid "Sum"
msgstr ""
-#: src/language/stats/descriptives.c:343
+#: src/language/stats/descriptives.c:344
#, c-format
msgid "Z-score variable name %s would be a duplicate variable name."
msgstr ""
-#: src/language/stats/descriptives.c:445
+#: src/language/stats/descriptives.c:446
msgid "expecting statistic name: reverting to default"
msgstr ""
-#: src/language/stats/descriptives.c:517
+#: src/language/stats/descriptives.c:518
msgid ""
"Ran out of generic names for Z-score variables. There are only 126 generic "
"names: ZSC001-ZSC0999, STDZ01-STDZ09, ZZZZ01-ZZZZ09, ZQZQ01-ZQZQ09."
msgstr ""
-#: src/language/stats/descriptives.c:548
+#: src/language/stats/descriptives.c:550
msgid "Mapping of variables to corresponding Z-scores."
msgstr ""
-#: src/language/stats/descriptives.c:553
+#: src/language/stats/descriptives.c:555
msgid "Source"
msgstr ""
-#: src/language/stats/descriptives.c:554
+#: src/language/stats/descriptives.c:556
msgid "Target"
msgstr ""
-#: src/language/stats/descriptives.c:672 src/language/stats/descriptives.c:678
+#: src/language/stats/descriptives.c:674 src/language/stats/descriptives.c:680
msgid "Z-score of "
msgstr ""
-#: src/language/stats/descriptives.c:897
+#: src/language/stats/descriptives.c:900
msgid "Valid N"
msgstr ""
-#: src/language/stats/descriptives.c:898
+#: src/language/stats/descriptives.c:901
msgid "Missing N"
msgstr ""
-#: src/language/stats/descriptives.c:925
+#: src/language/stats/descriptives.c:928
#, c-format
msgid "Valid cases = %g; cases with missing value(s) = %g."
msgstr ""
msgid "%s of %s"
msgstr ""
-#: src/language/stats/rank.q:710
+#: src/language/stats/rank.q:718
msgid "Cannot create new rank variable. All candidates in use."
msgstr ""
-#: src/language/stats/rank.q:810
+#: src/language/stats/rank.q:818
msgid "Variables Created By RANK"
msgstr ""
-#: src/language/stats/rank.q:834
+#: src/language/stats/rank.q:842
#, c-format
msgid "%s into %s(%s of %s using %s BY %s)"
msgstr ""
-#: src/language/stats/rank.q:845
+#: src/language/stats/rank.q:853
#, c-format
msgid "%s into %s(%s of %s BY %s)"
msgstr ""
-#: src/language/stats/rank.q:859
+#: src/language/stats/rank.q:867
#, c-format
msgid "%s into %s(%s of %s using %s)"
msgstr ""
-#: src/language/stats/rank.q:869
+#: src/language/stats/rank.q:877
#, c-format
msgid "%s into %s(%s of %s)"
msgstr ""
-#: src/language/stats/rank.q:882
+#: src/language/stats/rank.q:890
msgid ""
"FRACTION has been specified, but NORMAL and PROPORTION rank functions have "
"not been requested. The FRACTION subcommand will be ignored."
msgstr ""
-#: src/language/stats/rank.q:974
+#: src/language/stats/rank.q:982
#, c-format
msgid "Variable %s already exists."
msgstr ""
-#: src/language/stats/rank.q:979
+#: src/language/stats/rank.q:987
msgid "Too many variables in INTO clause."
msgstr ""
msgid "Document entered %s by %s:"
msgstr ""
-#: src/language/xforms/compute.c:143 src/language/xforms/compute.c:190
+#: src/language/xforms/compute.c:144 src/language/xforms/compute.c:191
#, c-format
msgid ""
"When executing COMPUTE: SYSMIS is not a valid value as an index into vector %"
"s."
msgstr ""
-#: src/language/xforms/compute.c:146 src/language/xforms/compute.c:197
+#: src/language/xforms/compute.c:147 src/language/xforms/compute.c:198
#, c-format
msgid ""
"When executing COMPUTE: %g is not a valid value as an index into vector %s."
msgstr ""
-#: src/language/xforms/compute.c:331
+#: src/language/xforms/compute.c:333
#, c-format
msgid "There is no vector named %s."
msgstr ""
msgid "Destination cannot be a string variable."
msgstr ""
-#: src/language/xforms/recode.c:247
+#: src/language/xforms/recode.c:248
msgid ""
"Inconsistent target variable types. Target variables must be all numeric or "
"all string."
msgstr ""
-#: src/language/xforms/recode.c:267
+#: src/language/xforms/recode.c:268
msgid "CONVERT requires string input values and numeric output values."
msgstr ""
-#: src/language/xforms/recode.c:385
+#: src/language/xforms/recode.c:386
msgid "expecting output value"
msgstr ""
-#: src/language/xforms/recode.c:432
+#: src/language/xforms/recode.c:433
#, c-format
msgid ""
"%u variable(s) cannot be recoded into %u variable(s). Specify the same "
"number of variables as source and target variables."
msgstr ""
-#: src/language/xforms/recode.c:448
+#: src/language/xforms/recode.c:449
#, c-format
msgid ""
"There is no variable named %s. (All string variables specified on INTO must "
"already exist. Use the STRING command to create a string variable.)"
msgstr ""
-#: src/language/xforms/recode.c:463
+#: src/language/xforms/recode.c:464
#, c-format
msgid "INTO is required with %s input values and %s output values."
msgstr ""
-#: src/language/xforms/recode.c:476
+#: src/language/xforms/recode.c:477
#, c-format
msgid "Type mismatch. Cannot store %s data in %s variable %s."
msgstr ""
msgid "The filter variable may not be scratch."
msgstr ""
-#: src/libpspp/hash.c:601
+#: src/libpspp/hash.c:617
#, c-format
msgid "hash table:"
msgstr ""
msgid "PSPP Output"
msgstr ""
-#: src/output/html.c:168
+#: src/output/html.c:170
#, c-format
msgid "unknown configuration parameter `%s' for HTML device driver"
msgstr ""
-#: src/output/html.c:184
+#: src/output/html.c:186
msgid "`chart-files' value must contain `#'"
msgstr ""
-#: src/output/html.c:382
+#: src/output/html.c:384
#, c-format
msgid "creating \"%s\""
msgstr ""
msgid "invalid numeric format"
msgstr ""
-#: src/output/table.c:231
+#: src/output/table.c:232
#, 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:302
+#: src/output/table.c:303
#, c-format
msgid ""
"bad box: (%d+%d=%d,%d+%d=%d)-(%d+%d=%d,%d+%d=%d) in table size (%d,%d)\n"
+Thu Oct 19 22:59:56 WST 2006 John Darrington <john@darrington.wattle.id.au>
+
+ * procedure.c procedure.h: Encapsulated the static data into a single
+ struct.
+
Sat Oct 14 16:56:44 2006 Ben Pfaff <blp@gnu.org>
* casefile.c (casereader_read_xfer): Always initialize the case,
/* Deletes variable V from dictionary D and frees V.
This is a very bad idea if there might be any pointers to V
- from outside D. In general, no variable in default_dict
+ from outside D. In general, no variable in current_dataset->dict
should be deleted when any transformations are active, because
those transformations might reference the deleted variable.
The safest time to delete a variable is just after a procedure
struct write_case_data
{
/* Function to call for each case. */
- bool (*case_func) (const struct ccase *, void *);
+ case_func_t case_func;
void *aux;
+ struct dataset *dataset; /* The dataset concerned */
struct ccase trns_case; /* Case used for transformations. */
struct ccase sink_case; /* Case written to sink, if
compacting is necessary. */
size_t cases_written; /* Cases output so far. */
};
-/* Cases are read from proc_source,
- pass through permanent_trns_chain (which transforms them into
- the format described by permanent_dict),
- are written to proc_sink,
- pass through temporary_trns_chain (which transforms them into
- the format described by default_dict),
- and are finally passed to the procedure. */
-static struct case_source *proc_source;
-static struct trns_chain *permanent_trns_chain;
-static struct dictionary *permanent_dict;
-static struct case_sink *proc_sink;
-static struct trns_chain *temporary_trns_chain;
-struct dictionary *default_dict;
-
-/* The transformation chain that the next transformation will be
- added to. */
-static struct trns_chain *cur_trns_chain;
-
-/* The compactor used to compact a case, if necessary;
- otherwise a null pointer. */
-static struct dict_compactor *compactor;
-
-/* Time at which proc was last invoked. */
-static time_t last_proc_invocation;
-
-/* Lag queue. */
-int n_lag; /* Number of cases to lag. */
-static int lag_count; /* Number of cases in lag_queue so far. */
-static int lag_head; /* Index where next case will be added. */
-static struct ccase *lag_queue; /* Array of n_lag ccase * elements. */
-
-static void add_case_limit_trns (void);
-static void add_filter_trns (void);
-
-static bool internal_procedure (bool (*case_func) (const struct ccase *,
- void *),
+struct dataset {
+ /* Cases are read from proc_source,
+ pass through permanent_trns_chain (which transforms them into
+ the format described by permanent_dict),
+ are written to proc_sink,
+ pass through temporary_trns_chain (which transforms them into
+ the format described by dict),
+ and are finally passed to the procedure. */
+ struct case_source *proc_source;
+ struct trns_chain *permanent_trns_chain;
+ struct dictionary *permanent_dict;
+ struct case_sink *proc_sink;
+ struct trns_chain *temporary_trns_chain;
+ struct dictionary *dict;
+
+ /* The transformation chain that the next transformation will be
+ added to. */
+ struct trns_chain *cur_trns_chain;
+
+ /* The compactor used to compact a case, if necessary;
+ otherwise a null pointer. */
+ struct dict_compactor *compactor;
+
+ /* Time at which proc was last invoked. */
+ time_t last_proc_invocation;
+
+ /* Lag queue. */
+ int n_lag; /* Number of cases to lag. */
+ int lag_count; /* Number of cases in lag_queue so far. */
+ int lag_head; /* Index where next case will be added. */
+ struct ccase *lag_queue; /* Array of n_lag ccase * elements. */
+
+}; /* struct dataset */
+
+
+struct dataset *current_dataset;
+
+static void add_case_limit_trns (struct dataset *ds);
+static void add_filter_trns (struct dataset *ds);
+
+static bool internal_procedure (struct dataset *ds, case_func_t,
bool (*end_func) (void *),
void *aux);
-static void update_last_proc_invocation (void);
+static void update_last_proc_invocation (struct dataset *ds);
static void create_trns_case (struct ccase *, struct dictionary *);
-static void open_active_file (void);
+static void open_active_file (struct dataset *ds);
static bool write_case (struct write_case_data *wc_data);
-static void lag_case (const struct ccase *c);
-static void clear_case (struct ccase *c);
-static bool close_active_file (void);
+static void lag_case (struct dataset *ds, const struct ccase *c);
+static void clear_case (const struct dataset *ds, struct ccase *c);
+static bool close_active_file (struct dataset *ds);
\f
/* Public functions. */
/* Returns the last time the data was read. */
time_t
-time_of_last_procedure (void)
+time_of_last_procedure (struct dataset *ds)
{
- if (last_proc_invocation == 0)
- update_last_proc_invocation ();
- return last_proc_invocation;
+ if (ds->last_proc_invocation == 0)
+ update_last_proc_invocation (ds);
+ return ds->last_proc_invocation;
}
\f
/* Regular procedure. */
+
+
/* Reads the data from the input program and writes it to a new
active file. For each case we read from the input program, we
do the following:
Returns true if successful, false if an I/O error occurred. */
bool
-procedure (bool (*proc_func) (const struct ccase *, void *), void *aux)
+procedure (struct dataset *ds, case_func_t cf, void *aux)
{
- return internal_procedure (proc_func, NULL, aux);
+ return internal_procedure (ds, cf, NULL, aux);
}
\f
/* Multipass procedure. */
The entire active file is passed to PROC_FUNC, with the given
AUX as auxiliary data, as a unit. */
bool
-multipass_procedure (bool (*proc_func) (const struct casefile *, void *aux),
- void *aux)
+multipass_procedure (struct dataset *ds, casefile_func_t proc_func, void *aux)
{
struct multipass_aux_data aux_data;
bool ok;
- aux_data.casefile = fastfile_create (dict_get_next_value_idx (default_dict));
+ aux_data.casefile = fastfile_create (dict_get_next_value_idx (ds->dict));
aux_data.proc_func = proc_func;
aux_data.aux = aux;
- ok = internal_procedure (multipass_case_func, multipass_end_func, &aux_data);
+ ok = internal_procedure (ds, multipass_case_func, multipass_end_func, &aux_data);
ok = !casefile_error (aux_data.casefile) && ok;
casefile_destroy (aux_data.casefile);
\f
/* Procedure implementation. */
+
/* Executes a procedure.
Passes each case to CASE_FUNC.
Calls END_FUNC after the last case.
Returns true if successful, false if an I/O error occurred (or
if CASE_FUNC or END_FUNC ever returned false). */
static bool
-internal_procedure (bool (*case_func) (const struct ccase *, void *),
+internal_procedure (struct dataset *ds, case_func_t case_func,
bool (*end_func) (void *),
void *aux)
{
struct write_case_data wc_data;
bool ok = true;
- assert (proc_source != NULL);
+ assert (ds->proc_source != NULL);
- update_last_proc_invocation ();
+ update_last_proc_invocation (ds);
/* Optimize the trivial case where we're not going to do
anything with the data, by not reading the data at all. */
if (case_func == NULL && end_func == NULL
- && case_source_is_class (proc_source, &storage_source_class)
- && proc_sink == NULL
- && (temporary_trns_chain == NULL
- || trns_chain_is_empty (temporary_trns_chain))
- && trns_chain_is_empty (permanent_trns_chain))
+ && case_source_is_class (ds->proc_source, &storage_source_class)
+ && ds->proc_sink == NULL
+ && (ds->temporary_trns_chain == NULL
+ || trns_chain_is_empty (ds->temporary_trns_chain))
+ && trns_chain_is_empty (ds->permanent_trns_chain))
{
- n_lag = 0;
- dict_set_case_limit (default_dict, 0);
- dict_clear_vectors (default_dict);
+ ds->n_lag = 0;
+ dict_set_case_limit (ds->dict, 0);
+ dict_clear_vectors (ds->dict);
return true;
}
- open_active_file ();
+ open_active_file (ds);
wc_data.case_func = case_func;
wc_data.aux = aux;
- create_trns_case (&wc_data.trns_case, default_dict);
+ wc_data.dataset = ds;
+ create_trns_case (&wc_data.trns_case, ds->dict);
case_create (&wc_data.sink_case,
- dict_get_compacted_value_cnt (default_dict));
+ dict_get_compacted_value_cnt (ds->dict));
wc_data.cases_written = 0;
- ok = proc_source->class->read (proc_source,
+ ok = ds->proc_source->class->read (ds->proc_source,
&wc_data.trns_case,
write_case, &wc_data) && ok;
if (end_func != NULL)
case_destroy (&wc_data.sink_case);
case_destroy (&wc_data.trns_case);
- ok = close_active_file () && ok;
+ ok = close_active_file (ds) && ok;
return ok;
}
/* Updates last_proc_invocation. */
static void
-update_last_proc_invocation (void)
+update_last_proc_invocation (struct dataset *ds)
{
- last_proc_invocation = time (NULL);
+ ds->last_proc_invocation = time (NULL);
}
/* Creates and returns a case, initializing it from the vectors
/* Makes all preparations for reading from the data source and writing
to the data sink. */
static void
-open_active_file (void)
+open_active_file (struct dataset *ds)
{
- add_case_limit_trns ();
- add_filter_trns ();
+ add_case_limit_trns (ds);
+ add_filter_trns (ds);
/* Finalize transformations. */
- trns_chain_finalize (cur_trns_chain);
+ trns_chain_finalize (ds->cur_trns_chain);
/* Make permanent_dict refer to the dictionary right before
data reaches the sink. */
- if (permanent_dict == NULL)
- permanent_dict = default_dict;
+ if (ds->permanent_dict == NULL)
+ ds->permanent_dict = ds->dict;
/* Figure out whether to compact. */
- compactor = (dict_compacting_would_shrink (permanent_dict)
- ? dict_make_compactor (permanent_dict)
- : NULL);
+ ds->compactor =
+ (dict_compacting_would_shrink (ds->permanent_dict)
+ ? dict_make_compactor (ds->permanent_dict)
+ : NULL);
/* Prepare sink. */
- if (proc_sink == NULL)
- proc_sink = create_case_sink (&storage_sink_class, permanent_dict, NULL);
- if (proc_sink->class->open != NULL)
- proc_sink->class->open (proc_sink);
+ if (ds->proc_sink == NULL)
+ ds->proc_sink = create_case_sink (&storage_sink_class, ds->permanent_dict, NULL);
+ if (ds->proc_sink->class->open != NULL)
+ ds->proc_sink->class->open (ds->proc_sink);
/* Allocate memory for lag queue. */
- if (n_lag > 0)
+ if (ds->n_lag > 0)
{
int i;
- lag_count = 0;
- lag_head = 0;
- lag_queue = xnmalloc (n_lag, sizeof *lag_queue);
- for (i = 0; i < n_lag; i++)
- case_nullify (&lag_queue[i]);
+ ds->lag_count = 0;
+ ds->lag_head = 0;
+ ds->lag_queue = xnmalloc (ds->n_lag, sizeof *ds->lag_queue);
+ for (i = 0; i < ds->n_lag; i++)
+ case_nullify (&ds->lag_queue[i]);
}
}
{
enum trns_result retval;
size_t case_nr;
+
+ struct dataset *ds = wc_data->dataset;
/* Execute permanent transformations. */
case_nr = wc_data->cases_written + 1;
- retval = trns_chain_execute (permanent_trns_chain,
+ retval = trns_chain_execute (ds->permanent_trns_chain,
&wc_data->trns_case, &case_nr);
if (retval != TRNS_CONTINUE)
goto done;
/* Write case to LAG queue. */
- if (n_lag)
- lag_case (&wc_data->trns_case);
+ if (ds->n_lag)
+ lag_case (ds, &wc_data->trns_case);
/* Write case to replacement active file. */
wc_data->cases_written++;
- if (proc_sink->class->write != NULL)
+ if (ds->proc_sink->class->write != NULL)
{
- if (compactor != NULL)
+ if (ds->compactor != NULL)
{
- dict_compactor_compact (compactor, &wc_data->sink_case,
+ dict_compactor_compact (ds->compactor, &wc_data->sink_case,
&wc_data->trns_case);
- proc_sink->class->write (proc_sink, &wc_data->sink_case);
+ ds->proc_sink->class->write (ds->proc_sink, &wc_data->sink_case);
}
else
- proc_sink->class->write (proc_sink, &wc_data->trns_case);
+ ds->proc_sink->class->write (ds->proc_sink, &wc_data->trns_case);
}
/* Execute temporary transformations. */
- if (temporary_trns_chain != NULL)
+ if (ds->temporary_trns_chain != NULL)
{
- retval = trns_chain_execute (temporary_trns_chain,
+ retval = trns_chain_execute (ds->temporary_trns_chain,
&wc_data->trns_case,
&wc_data->cases_written);
if (retval != TRNS_CONTINUE)
retval = TRNS_ERROR;
done:
- clear_case (&wc_data->trns_case);
+ clear_case (ds, &wc_data->trns_case);
return retval != TRNS_ERROR;
}
/* Add C to the lag queue. */
static void
-lag_case (const struct ccase *c)
+lag_case (struct dataset *ds, const struct ccase *c)
{
- if (lag_count < n_lag)
- lag_count++;
- case_destroy (&lag_queue[lag_head]);
- case_clone (&lag_queue[lag_head], c);
- if (++lag_head >= n_lag)
- lag_head = 0;
+ if (ds->lag_count < ds->n_lag)
+ ds->lag_count++;
+ case_destroy (&ds->lag_queue[ds->lag_head]);
+ case_clone (&ds->lag_queue[ds->lag_head], c);
+ if (++ds->lag_head >= ds->n_lag)
+ ds->lag_head = 0;
}
/* Clears the variables in C that need to be cleared between
processing cases. */
static void
-clear_case (struct ccase *c)
+clear_case (const struct dataset *ds, struct ccase *c)
{
- size_t var_cnt = dict_get_var_cnt (default_dict);
+ size_t var_cnt = dict_get_var_cnt (ds->dict);
size_t i;
for (i = 0; i < var_cnt; i++)
{
- struct variable *v = dict_get_var (default_dict, i);
+ struct variable *v = dict_get_var (ds->dict, i);
if (!v->leave)
{
if (v->type == NUMERIC)
/* Closes the active file. */
static bool
-close_active_file (void)
+close_active_file (struct dataset *ds)
{
/* Free memory for lag queue, and turn off lagging. */
- if (n_lag > 0)
+ if (ds->n_lag > 0)
{
int i;
- for (i = 0; i < n_lag; i++)
- case_destroy (&lag_queue[i]);
- free (lag_queue);
- n_lag = 0;
+ for (i = 0; i < ds->n_lag; i++)
+ case_destroy (&ds->lag_queue[i]);
+ free (ds->lag_queue);
+ ds->n_lag = 0;
}
/* Dictionary from before TEMPORARY becomes permanent. */
- proc_cancel_temporary_transformations ();
+ proc_cancel_temporary_transformations (ds);
/* Finish compacting. */
- if (compactor != NULL)
+ if (ds->compactor != NULL)
{
- dict_compactor_destroy (compactor);
- dict_compact_values (default_dict);
- compactor = NULL;
+ dict_compactor_destroy (ds->compactor);
+ dict_compact_values (ds->dict);
+ ds->compactor = NULL;
}
/* Free data source. */
- free_case_source (proc_source);
- proc_source = NULL;
+ free_case_source (ds->proc_source);
+ ds->proc_source = NULL;
/* Old data sink becomes new data source. */
- if (proc_sink->class->make_source != NULL)
- proc_source = proc_sink->class->make_source (proc_sink);
- free_case_sink (proc_sink);
- proc_sink = NULL;
+ if (ds->proc_sink->class->make_source != NULL)
+ ds->proc_source = ds->proc_sink->class->make_source (ds->proc_sink);
+ free_case_sink (ds->proc_sink);
+ ds->proc_sink = NULL;
- dict_clear_vectors (default_dict);
- permanent_dict = NULL;
- return proc_cancel_all_transformations ();
+ dict_clear_vectors (ds->dict);
+ ds->permanent_dict = NULL;
+ return proc_cancel_all_transformations (ds);
}
\f
/* Returns a pointer to the lagged case from N_BEFORE cases before the
current one, or NULL if there haven't been that many cases yet. */
struct ccase *
-lagged_case (int n_before)
+lagged_case (const struct dataset *ds, int n_before)
{
assert (n_before >= 1 );
- assert (n_before <= n_lag);
+ assert (n_before <= ds->n_lag);
- if (n_before <= lag_count)
+ if (n_before <= ds->lag_count)
{
- int index = lag_head - n_before;
+ int index = ds->lag_head - n_before;
if (index < 0)
- index += n_lag;
- return &lag_queue[index];
+ index += ds->n_lag;
+ return &ds->lag_queue[index];
}
else
return NULL;
/* Represents auxiliary data for handling SPLIT FILE. */
struct split_aux_data
{
+ struct dataset *dataset; /* The dataset */
struct ccase prev_case; /* Data in previous case. */
/* Callback functions. */
- void (*begin_func) (const struct ccase *, void *);
- bool (*proc_func) (const struct ccase *, void *);
+ begin_func_t begin_func ;
+ case_func_t proc_func ;
void (*end_func) (void *);
void *func_aux;
};
-static int equal_splits (const struct ccase *, const struct ccase *);
+static int equal_splits (const struct ccase *, const struct ccase *, const struct dataset *ds);
static bool split_procedure_case_func (const struct ccase *c, void *);
static bool split_procedure_end_func (void *);
Returns true if successful, false if an I/O error occurred. */
bool
-procedure_with_splits (void (*begin_func) (const struct ccase *, void *aux),
- bool (*proc_func) (const struct ccase *, void *aux),
+procedure_with_splits (struct dataset *ds,
+ begin_func_t begin_func,
+ case_func_t proc_func,
void (*end_func) (void *aux),
void *func_aux)
{
split_aux.proc_func = proc_func;
split_aux.end_func = end_func;
split_aux.func_aux = func_aux;
+ split_aux.dataset = ds;
- ok = internal_procedure (split_procedure_case_func,
+ ok = internal_procedure (ds, split_procedure_case_func,
split_procedure_end_func, &split_aux);
case_destroy (&split_aux.prev_case);
/* Start a new series if needed. */
if (case_is_null (&split_aux->prev_case)
- || !equal_splits (c, &split_aux->prev_case))
+ || !equal_splits (c, &split_aux->prev_case, split_aux->dataset))
{
if (!case_is_null (&split_aux->prev_case) && split_aux->end_func != NULL)
split_aux->end_func (split_aux->func_aux);
if (split_aux->begin_func != NULL)
split_aux->begin_func (&split_aux->prev_case, split_aux->func_aux);
+
}
return (split_aux->proc_func == NULL
/* Compares the SPLIT FILE variables in cases A and B and returns
nonzero only if they differ. */
static int
-equal_splits (const struct ccase *a, const struct ccase *b)
+equal_splits (const struct ccase *a, const struct ccase *b,
+ const struct dataset *ds)
{
return case_compare (a, b,
- dict_get_split_vars (default_dict),
- dict_get_split_cnt (default_dict)) == 0;
+ dict_get_split_vars (ds->dict),
+ dict_get_split_cnt (ds->dict)) == 0;
}
\f
/* Multipass procedure that separates the data into SPLIT FILE
multipass procedure. */
struct multipass_split_aux_data
{
+ struct dataset *dataset; /* The dataset of the split */
struct ccase prev_case; /* Data in previous case. */
struct casefile *casefile; /* Accumulates data for a split. */
/* Returns true if successful, false if an I/O error occurred. */
bool
-multipass_procedure_with_splits (bool (*split_func) (const struct ccase *first,
+multipass_procedure_with_splits (struct dataset *ds,
+ bool (*split_func) (const struct ccase *first,
const struct casefile *,
void *aux),
void *func_aux)
aux.casefile = NULL;
aux.split_func = split_func;
aux.func_aux = func_aux;
+ aux.dataset = ds;
- ok = internal_procedure (multipass_split_case_func,
+ ok = internal_procedure (ds, multipass_split_case_func,
multipass_split_end_func, &aux);
case_destroy (&aux.prev_case);
multipass_split_case_func (const struct ccase *c, void *aux_)
{
struct multipass_split_aux_data *aux = aux_;
+ struct dataset *ds = aux->dataset;
bool ok = true;
/* Start a new series if needed. */
- if (aux->casefile == NULL || !equal_splits (c, &aux->prev_case))
+ if (aux->casefile == NULL || ! equal_splits (c, &aux->prev_case, ds))
{
/* Record split values. */
case_destroy (&aux->prev_case);
ok = multipass_split_output (aux);
/* Start a new casefile. */
- aux->casefile = fastfile_create (dict_get_next_value_idx (default_dict));
+ aux->casefile =
+ fastfile_create (dict_get_next_value_idx (ds->dict));
}
return casefile_append (aux->casefile, c) && ok;
/* Discards all the current state in preparation for a data-input
command like DATA LIST or GET. */
void
-discard_variables (void)
+discard_variables (struct dataset *ds)
{
- dict_clear (default_dict);
+ dict_clear (ds->dict);
fh_set_default_handle (NULL);
- n_lag = 0;
+ ds->n_lag = 0;
- free_case_source (proc_source);
- proc_source = NULL;
+ free_case_source (ds->proc_source);
+ ds->proc_source = NULL;
- proc_cancel_all_transformations ();
+ proc_cancel_all_transformations (ds);
}
\f
/* Returns the current set of permanent transformations,
and clears the permanent transformations.
For use by INPUT PROGRAM. */
struct trns_chain *
-proc_capture_transformations (void)
+proc_capture_transformations (struct dataset *ds)
{
struct trns_chain *chain;
- assert (temporary_trns_chain == NULL);
- chain = permanent_trns_chain;
- cur_trns_chain = permanent_trns_chain = trns_chain_create ();
+ assert (ds->temporary_trns_chain == NULL);
+ chain = ds->permanent_trns_chain;
+ ds->cur_trns_chain = ds->permanent_trns_chain = trns_chain_create ();
return chain;
}
frees itself with FREE to the current set of transformations.
The functions are passed AUX as auxiliary data. */
void
-add_transformation (trns_proc_func *proc, trns_free_func *free, void *aux)
+add_transformation (struct dataset *ds, trns_proc_func *proc, trns_free_func *free, void *aux)
{
- trns_chain_append (cur_trns_chain, NULL, proc, free, aux);
+ trns_chain_append (ds->cur_trns_chain, NULL, proc, free, aux);
}
/* Adds a transformation that processes a case with PROC and
FINALIZE will be called.
The functions are passed AUX as auxiliary data. */
void
-add_transformation_with_finalizer (trns_finalize_func *finalize,
+add_transformation_with_finalizer (struct dataset *ds,
+ trns_finalize_func *finalize,
trns_proc_func *proc,
trns_free_func *free, void *aux)
{
- trns_chain_append (cur_trns_chain, finalize, proc, free, aux);
+ trns_chain_append (ds->cur_trns_chain, finalize, proc, free, aux);
}
/* Returns the index of the next transformation.
This value can be returned by a transformation procedure
function to indicate a "jump" to that transformation. */
size_t
-next_transformation (void)
+next_transformation (const struct dataset *ds)
{
- return trns_chain_next (cur_trns_chain);
+ return trns_chain_next (ds->cur_trns_chain);
}
/* Returns true if the next call to add_transformation() will add
a temporary transformation, false if it will add a permanent
transformation. */
bool
-proc_in_temporary_transformations (void)
+proc_in_temporary_transformations (const struct dataset *ds)
{
- return temporary_trns_chain != NULL;
+ return ds->temporary_trns_chain != NULL;
}
/* Marks the start of temporary transformations.
Further calls to add_transformation() will add temporary
transformations. */
void
-proc_start_temporary_transformations (void)
+proc_start_temporary_transformations (struct dataset *ds)
{
- if (!proc_in_temporary_transformations ())
+ if (!proc_in_temporary_transformations (ds))
{
- add_case_limit_trns ();
+ add_case_limit_trns (ds);
- permanent_dict = dict_clone (default_dict);
- trns_chain_finalize (permanent_trns_chain);
- temporary_trns_chain = cur_trns_chain = trns_chain_create ();
+ ds->permanent_dict = dict_clone (ds->dict);
+ trns_chain_finalize (ds->permanent_trns_chain);
+ ds->temporary_trns_chain = ds->cur_trns_chain = trns_chain_create ();
}
}
permanent.
Returns true if anything changed, false otherwise. */
bool
-proc_make_temporary_transformations_permanent (void)
+proc_make_temporary_transformations_permanent (struct dataset *ds)
{
- if (proc_in_temporary_transformations ())
+ if (proc_in_temporary_transformations (ds))
{
- trns_chain_finalize (temporary_trns_chain);
- trns_chain_splice (permanent_trns_chain, temporary_trns_chain);
- temporary_trns_chain = NULL;
+ trns_chain_finalize (ds->temporary_trns_chain);
+ trns_chain_splice (ds->permanent_trns_chain, ds->temporary_trns_chain);
+ ds->temporary_trns_chain = NULL;
- dict_destroy (permanent_dict);
- permanent_dict = NULL;
+ dict_destroy (ds->permanent_dict);
+ ds->permanent_dict = NULL;
return true;
}
transformations will be permanent.
Returns true if anything changed, false otherwise. */
bool
-proc_cancel_temporary_transformations (void)
+proc_cancel_temporary_transformations (struct dataset *ds)
{
- if (proc_in_temporary_transformations ())
+ if (proc_in_temporary_transformations (ds))
{
- dict_destroy (default_dict);
- default_dict = permanent_dict;
- permanent_dict = NULL;
+ dict_destroy (ds->dict);
+ ds->dict = ds->permanent_dict;
+ ds->permanent_dict = NULL;
- trns_chain_destroy (temporary_trns_chain);
- temporary_trns_chain = NULL;
+ trns_chain_destroy (ds->temporary_trns_chain);
+ ds->temporary_trns_chain = NULL;
return true;
}
/* Cancels all transformations, if any.
Returns true if successful, false on I/O error. */
bool
-proc_cancel_all_transformations (void)
+proc_cancel_all_transformations (struct dataset *ds)
{
bool ok;
- ok = trns_chain_destroy (permanent_trns_chain);
- ok = trns_chain_destroy (temporary_trns_chain) && ok;
- permanent_trns_chain = cur_trns_chain = trns_chain_create ();
- temporary_trns_chain = NULL;
+ ok = trns_chain_destroy (ds->permanent_trns_chain);
+ ok = trns_chain_destroy (ds->temporary_trns_chain) && ok;
+ ds->permanent_trns_chain = ds->cur_trns_chain = trns_chain_create ();
+ ds->temporary_trns_chain = NULL;
return ok;
}
\f
/* Initializes procedure handling. */
-void
-proc_init (void)
+struct dataset *
+create_dataset (void)
{
- default_dict = dict_create ();
- proc_cancel_all_transformations ();
+ struct dataset *ds = xzalloc (sizeof(*ds));
+ ds->dict = dict_create ();
+ proc_cancel_all_transformations (ds);
+ return ds;
}
/* Finishes up procedure handling. */
void
-proc_done (void)
+destroy_dataset (struct dataset *ds)
{
- discard_variables ();
- dict_destroy (default_dict);
+ discard_variables (ds);
+ dict_destroy (ds->dict);
+ free (ds);
}
/* Sets SINK as the destination for procedure output from the
next procedure. */
void
-proc_set_sink (struct case_sink *sink)
+proc_set_sink (struct dataset *ds, struct case_sink *sink)
{
- assert (proc_sink == NULL);
- proc_sink = sink;
+ assert (ds->proc_sink == NULL);
+ ds->proc_sink = sink;
}
/* Sets SOURCE as the source for procedure input for the next
procedure. */
void
-proc_set_source (struct case_source *source)
+proc_set_source (struct dataset *ds, struct case_source *source)
{
- assert (proc_source == NULL);
- proc_source = source;
+ assert (ds->proc_source == NULL);
+ ds->proc_source = source;
}
/* Returns true if a source for the next procedure has been
configured, false otherwise. */
bool
-proc_has_source (void)
+proc_has_source (const struct dataset *ds)
{
- return proc_source != NULL;
+ return ds->proc_source != NULL;
}
/* Returns the output from the previous procedure.
The returned casefile is owned by the caller; it will not be
automatically used for the next procedure's input. */
struct casefile *
-proc_capture_output (void)
+proc_capture_output (struct dataset *ds)
{
struct casefile *casefile;
/* Try to make sure that this function is called immediately
after procedure() or a similar function. */
- assert (proc_source != NULL);
- assert (case_source_is_class (proc_source, &storage_source_class));
- assert (trns_chain_is_empty (permanent_trns_chain));
- assert (!proc_in_temporary_transformations ());
+ assert (ds->proc_source != NULL);
+ assert (case_source_is_class (ds->proc_source, &storage_source_class));
+ assert (trns_chain_is_empty (ds->permanent_trns_chain));
+ assert (!proc_in_temporary_transformations (ds));
- casefile = storage_source_decapsulate (proc_source);
- proc_source = NULL;
+ casefile = storage_source_decapsulate (ds->proc_source);
+ ds->proc_source = NULL;
return casefile;
}
static trns_free_func case_limit_trns_free;
/* Adds a transformation that limits the number of cases that may
- pass through, if default_dict has a case limit. */
+ pass through, if DS->DICT has a case limit. */
static void
-add_case_limit_trns (void)
+add_case_limit_trns (struct dataset *ds)
{
- size_t case_limit = dict_get_case_limit (default_dict);
+ size_t case_limit = dict_get_case_limit (ds->dict);
if (case_limit != 0)
{
size_t *cases_remaining = xmalloc (sizeof *cases_remaining);
*cases_remaining = case_limit;
- add_transformation (case_limit_trns_proc, case_limit_trns_free,
+ add_transformation (ds, case_limit_trns_proc, case_limit_trns_free,
cases_remaining);
- dict_set_case_limit (default_dict, 0);
+ dict_set_case_limit (ds->dict, 0);
}
}
/* Adds a temporary transformation to filter data according to
the variable specified on FILTER, if any. */
static void
-add_filter_trns (void)
+add_filter_trns (struct dataset *ds)
{
- struct variable *filter_var = dict_get_filter (default_dict);
+ struct variable *filter_var = dict_get_filter (ds->dict);
if (filter_var != NULL)
{
- proc_start_temporary_transformations ();
- add_transformation (filter_trns_proc, NULL, filter_var);
+ proc_start_temporary_transformations (ds);
+ add_transformation (ds, filter_trns_proc, NULL, filter_var);
}
}
? TRNS_CONTINUE : TRNS_DROP_CASE);
}
+
+struct dictionary *
+dataset_dict (const struct dataset *ds)
+{
+ return ds->dict;
+}
+
+
+void
+dataset_set_dict (struct dataset *ds, struct dictionary *dict)
+{
+ ds->dict = dict;
+}
+
+int
+dataset_n_lag (const struct dataset *ds)
+{
+ return ds->n_lag;
+}
+
+void
+dataset_set_n_lag (struct dataset *ds, int n_lag)
+{
+ ds->n_lag = n_lag;
+}
+
+
struct case_sink;
struct case_source;
-/* Dictionary produced by permanent and temporary transformations
- on data from the source. */
-extern struct dictionary *default_dict;
+struct dataset;
+
\f
/* Transformations. */
-void add_transformation (trns_proc_func *, trns_free_func *, void *);
-void add_transformation_with_finalizer (trns_finalize_func *,
+void add_transformation (struct dataset *ds,
+ trns_proc_func *, trns_free_func *, void *);
+void add_transformation_with_finalizer (struct dataset *ds,
+ trns_finalize_func *,
trns_proc_func *,
trns_free_func *, void *);
-size_t next_transformation (void);
+size_t next_transformation (const struct dataset *ds);
+
+void discard_variables (struct dataset *ds);
-void discard_variables (void);
-bool proc_cancel_all_transformations (void);
-struct trns_chain *proc_capture_transformations (void);
-void proc_start_temporary_transformations (void);
-bool proc_in_temporary_transformations (void);
-bool proc_make_temporary_transformations_permanent (void);
-bool proc_cancel_temporary_transformations (void);
+bool proc_cancel_all_transformations (struct dataset *ds);
+struct trns_chain *proc_capture_transformations (struct dataset *ds);
+
+void proc_start_temporary_transformations (struct dataset *ds);
+bool proc_in_temporary_transformations (const struct dataset *ds);
+bool proc_make_temporary_transformations_permanent (struct dataset *ds);
+bool proc_cancel_temporary_transformations (struct dataset *ds);
\f
/* Procedures. */
-void proc_init (void);
-void proc_done (void);
-void proc_set_source (struct case_source *);
-bool proc_has_source (void);
+struct dataset *create_dataset (void);
+void destroy_dataset (struct dataset *);
-void proc_set_sink (struct case_sink *);
-struct casefile *proc_capture_output (void);
+void proc_set_source (struct dataset *ds, struct case_source *);
+bool proc_has_source (const struct dataset *ds);
-bool procedure (bool (*proc_func) (const struct ccase *, void *),
- void *aux)
- WARN_UNUSED_RESULT;
-bool procedure_with_splits (void (*begin_func) (const struct ccase *, void *),
- bool (*proc_func) (const struct ccase *, void *),
+void proc_set_sink (struct dataset *ds, struct case_sink *);
+struct casefile *proc_capture_output (struct dataset *ds);
+
+typedef bool (*casefile_func_t) (const struct casefile *, void *);
+typedef bool (*case_func_t) (const struct ccase *, void *);
+typedef void (*begin_func_t) (const struct ccase *, void *);
+
+
+
+bool procedure (struct dataset *ds, case_func_t, void *aux) WARN_UNUSED_RESULT;
+
+bool procedure_with_splits (struct dataset *ds,
+ begin_func_t begin_func,
+ case_func_t proc_func,
void (*end_func) (void *),
void *aux)
WARN_UNUSED_RESULT;
-bool multipass_procedure (bool (*proc_func) (const struct casefile *, void *),
- void *aux)
+bool multipass_procedure (struct dataset *ds, casefile_func_t, void *aux)
WARN_UNUSED_RESULT;
-bool multipass_procedure_with_splits (bool (*) (const struct ccase *,
- const struct casefile *,
- void *),
- void *aux)
+bool multipass_procedure_with_splits (struct dataset *ds,
+ bool (*) (const struct ccase *,
+ const struct casefile *,
+ void *),
+ void *aux)
WARN_UNUSED_RESULT;
-time_t time_of_last_procedure (void);
+
+
+
+time_t time_of_last_procedure (struct dataset *ds);
\f
-/* Number of cases to lag. */
-extern int n_lag;
-struct ccase *lagged_case (int n_before);
+struct ccase *lagged_case (const struct dataset *ds, int n_before);
+
+extern struct dataset *current_dataset;
+
+inline struct dictionary *dataset_dict (const struct dataset *ds);
+inline void dataset_set_dict ( struct dataset *ds, struct dictionary *dict);
+
+inline int dataset_n_lag (const struct dataset *ds);
+inline void dataset_set_n_lag (struct dataset *ds, int n_lag);
+
#endif /* procedure.h */
lex_discard_rest_of_command ();
unset_cmd_algorithm ();
- dict_clear_aux (default_dict);
+ dict_clear_aux (dataset_dict (current_dataset));
return result;
}
x = lex_integer ();
lex_get ();
if (!lex_match_id ("ESTIMATED"))
- dict_set_case_limit (default_dict, x);
+ dict_set_case_limit (dataset_dict (current_dataset), x);
return lex_end_of_command ();
}
int
cmd_execute (void)
{
- if (!procedure (NULL, NULL))
+ if (!procedure (current_dataset,NULL, NULL))
return CMD_CASCADING_FAILURE;
return lex_end_of_command ();
}
int
cmd_new_file (void)
{
- discard_variables ();
+ discard_variables (current_dataset);
return lex_end_of_command ();
}
do_if->clause_cnt = 0;
ctl_stack_push (&do_if_class, do_if);
- add_transformation_with_finalizer (do_if_finalize_func,
+ add_transformation_with_finalizer (current_dataset, do_if_finalize_func,
do_if_trns_proc, do_if_trns_free, do_if);
return parse_clause (do_if);
if (!has_else (do_if))
add_else (do_if);
- do_if->past_END_IF_index = next_transformation ();
+ do_if->past_END_IF_index = next_transformation (current_dataset);
}
/* Adds an ELSE clause to DO_IF pointing to the next
add_else (struct do_if_trns *do_if)
{
assert (!has_else (do_if));
- add_clause (do_if, NULL, next_transformation ());
+ add_clause (do_if, NULL, next_transformation (current_dataset));
}
/* Returns true if DO_IF does not yet have an ELSE clause.
{
struct expression *condition;
- condition = expr_parse (default_dict, EXPR_BOOLEAN);
+ condition = expr_parse (dataset_dict (current_dataset), EXPR_BOOLEAN);
if (condition == NULL)
return CMD_CASCADING_FAILURE;
- add_clause (do_if, condition, next_transformation ());
+ add_clause (do_if, condition, next_transformation (current_dataset));
return lex_end_of_command ();
}
struct clause *clause;
if (do_if->clause_cnt > 0)
- add_transformation (break_trns_proc, NULL, do_if);
+ add_transformation (current_dataset, break_trns_proc, NULL, do_if);
do_if->clauses = xnrealloc (do_if->clauses,
do_if->clause_cnt + 1, sizeof *do_if->clauses);
/* Find index variable and create if necessary. */
if (ok && index_var_name[0] != '\0')
{
- loop->index_var = dict_lookup_var (default_dict, index_var_name);
+ loop->index_var = dict_lookup_var (dataset_dict (current_dataset), index_var_name);
if (loop->index_var == NULL)
- loop->index_var = dict_create_var (default_dict, index_var_name, 0);
+ loop->index_var = dict_create_var (dataset_dict (current_dataset), index_var_name, 0);
}
if (!ok)
if (loop == NULL)
return CMD_CASCADING_FAILURE;
- add_transformation (break_trns_proc, NULL, loop);
+ add_transformation (current_dataset, break_trns_proc, NULL, loop);
return lex_end_of_command ();
}
{
struct loop_trns *loop = loop_;
- add_transformation (end_loop_trns_proc, NULL, loop);
- loop->past_END_LOOP_index = next_transformation ();
+ add_transformation (current_dataset, end_loop_trns_proc, NULL, loop);
+ loop->past_END_LOOP_index = next_transformation (current_dataset);
/* If there's nothing else limiting the number of loops, use
MXLOOPS as a limit. */
static bool
parse_if_clause (struct loop_trns *loop, struct expression **condition)
{
- *condition = expr_parse_pool (loop->pool, default_dict, EXPR_BOOLEAN);
+ *condition = expr_parse_pool (loop->pool, dataset_dict (current_dataset), EXPR_BOOLEAN);
return *condition != NULL;
}
if (!lex_force_match ('='))
return false;
- loop->first_expr = expr_parse_pool (loop->pool, default_dict, EXPR_NUMBER);
+ loop->first_expr = expr_parse_pool (loop->pool, dataset_dict (current_dataset), EXPR_NUMBER);
if (loop->first_expr == NULL)
return false;
lex_sbc_only_once (e == &loop->last_expr ? "TO" : "BY");
return false;
}
- *e = expr_parse_pool (loop->pool, default_dict, EXPR_NUMBER);
+ *e = expr_parse_pool (loop->pool, dataset_dict (current_dataset), EXPR_NUMBER);
if (*e == NULL)
return false;
}
loop->first_expr = loop->by_expr = loop->last_expr = NULL;
loop->loop_condition = loop->end_loop_condition = NULL;
- add_transformation_with_finalizer (loop_trns_finalize,
+ add_transformation_with_finalizer (current_dataset, loop_trns_finalize,
loop_trns_proc, loop_trns_free, loop);
- loop->past_LOOP_index = next_transformation ();
+ loop->past_LOOP_index = next_transformation (current_dataset);
ctl_stack_push (&loop_class, loop);
/* Get a stand-in variable name and make sure it's unique. */
if (!lex_force_id ())
return false;
- if (dict_lookup_var (default_dict, tokid))
+ if (dict_lookup_var (dataset_dict (current_dataset), tokid))
msg (SW, _("Dummy variable name \"%s\" hides dictionary "
"variable \"%s\"."),
tokid, tokid);
{
/* Ignore return value: if the variable already
exists there is no harm done. */
- dict_create_var (default_dict, iter->replacement[i], 0);
+ dict_create_var (dataset_dict (current_dataset), iter->replacement[i], 0);
}
}
}
int
cmd_temporary (void)
{
- if (!proc_in_temporary_transformations ())
- proc_start_temporary_transformations ();
+ if (!proc_in_temporary_transformations (current_dataset))
+ proc_start_temporary_transformations (current_dataset);
else
msg (SE, _("This command may only appear once between "
"procedures and procedure-like commands."));
bool ok;
if (!in_input_program ())
- discard_variables ();
+ discard_variables (current_dataset);
dls = pool_create_container (struct data_list_pgm, pool);
ll_init (&dls->specs);
lex_match ('=');
if (!lex_force_id ())
goto error;
- dls->end = dict_lookup_var (default_dict, tokid);
+ dls->end = dict_lookup_var (dataset_dict (current_dataset), tokid);
if (!dls->end)
- dls->end = dict_create_var_assert (default_dict, tokid, 0);
+ dls->end = dict_create_var_assert (dataset_dict (current_dataset), tokid, 0);
lex_get ();
}
else if (token == T_ID)
goto error;
if (in_input_program ())
- add_transformation (data_list_trns_proc, data_list_trns_free, dls);
+ add_transformation (current_dataset, data_list_trns_proc, data_list_trns_free, dls);
else
- proc_set_source (create_case_source (&data_list_source_class, dls));
+ proc_set_source (current_dataset,
+ create_case_source (&data_list_source_class, dls));
pool_destroy (tmp_pool);
/* Create variable. */
width = get_format_var_width (f);
- v = dict_create_var (default_dict, name, width);
+ v = dict_create_var (dataset_dict (current_dataset), name, width);
if (v != NULL)
{
/* Success. */
return false;
}
- v = dict_lookup_var_assert (default_dict, name);
+ v = dict_lookup_var_assert (dataset_dict (current_dataset), name);
if ((width != 0) != (v->width != 0))
{
msg (SE, _("There is already a variable %s of a "
struct dls_var_spec *spec;
struct variable *v;
- v = dict_create_var (default_dict, name[i],
+ v = dict_create_var (dataset_dict (current_dataset), name[i],
get_format_var_width (&input));
if (v == NULL)
{
/* Input procedure reads from inline file. */
getl_set_prompt_style (GETL_PROMPT_DATA);
- ok = procedure (NULL, NULL);
+ ok = procedure (current_dataset,NULL, NULL);
dfm_close_reader (r);
goto error;
}
- discard_variables ();
+ discard_variables (current_dataset);
pgm = xmalloc (sizeof *pgm);
pgm->reader = any_reader_open (fh, &dict);
pgm->map = finish_case_map (dict);
- dict_destroy (default_dict);
- default_dict = dict;
+ dict_destroy (dataset_dict (current_dataset));
+ dataset_set_dict (current_dataset, dict);
- proc_set_source (create_case_source (&case_reader_source_class, pgm));
+ proc_set_source (current_dataset,
+ create_case_source (&case_reader_source_class, pgm));
return CMD_SUCCESS;
*retain_unselected = true;
handle = NULL;
- dict = dict_clone (default_dict);
+ dict = dict_clone (dataset_dict (current_dataset));
aw = xmalloc (sizeof *aw);
aw->writer = NULL;
aw->map = NULL;
if (aw == NULL)
return CMD_CASCADING_FAILURE;
- saved_filter_variable = dict_get_filter (default_dict);
+ saved_filter_variable = dict_get_filter (dataset_dict (current_dataset));
if (retain_unselected)
- dict_set_filter (default_dict, NULL);
- ok = procedure (output_proc, aw);
- dict_set_filter (default_dict, saved_filter_variable);
+ dict_set_filter (dataset_dict (current_dataset), NULL);
+ ok = procedure (current_dataset,output_proc, aw);
+ dict_set_filter (dataset_dict (current_dataset), saved_filter_variable);
case_writer_destroy (aw);
return ok ? CMD_SUCCESS : CMD_CASCADING_FAILURE;
return CMD_CASCADING_FAILURE;
}
- add_transformation (output_trns_proc, output_trns_free, t);
+ add_transformation (current_dataset, output_trns_proc, output_trns_free, t);
return CMD_SUCCESS;
}
case_nullify (&mtf.mtf_case);
mtf.seq_num = 0;
mtf.seq_nums = NULL;
- dict_set_case_limit (mtf.dict, dict_get_case_limit (default_dict));
+ dict_set_case_limit (mtf.dict, dict_get_case_limit (dataset_dict (current_dataset)));
lex_match ('/');
while (token == T_ID
}
used_active_file = true;
- if (!proc_has_source ())
+ if (!proc_has_source (current_dataset))
{
msg (SE, _("Cannot specify the active file since no active "
"file has been defined."));
goto error;
}
- if (proc_make_temporary_transformations_permanent ())
+ if (proc_make_temporary_transformations_permanent (current_dataset))
msg (SE,
_("MATCH FILES may not be used after TEMPORARY when "
"the active file is an input source. "
"Temporary transformations will be made permanent."));
- file->dict = default_dict;
+ file->dict = dataset_dict (current_dataset);
}
else
{
values. */
if (!used_active_file)
- discard_variables ();
+ discard_variables (current_dataset);
dict_compact_values (mtf.dict);
mtf.output = fastfile_create (dict_get_next_value_idx (mtf.dict));
if (used_active_file)
{
- proc_set_sink (create_case_sink (&null_sink_class, default_dict, NULL));
- ok = procedure (mtf_processing, &mtf) && mtf_processing_finish (&mtf);
+ proc_set_sink (current_dataset,
+ create_case_sink (&null_sink_class,
+ dataset_dict (current_dataset), NULL));
+ ok = procedure (current_dataset,mtf_processing, &mtf) && mtf_processing_finish (&mtf);
}
else
ok = mtf_processing_finish (&mtf);
- discard_variables ();
+ discard_variables (current_dataset);
- dict_destroy (default_dict);
- default_dict = mtf.dict;
+ dict_destroy (dataset_dict (current_dataset));
+ dataset_set_dict (current_dataset, mtf.dict);
mtf.dict = NULL;
- proc_set_source (storage_source_create (mtf.output));
+ proc_set_source (current_dataset, storage_source_create (mtf.output));
mtf.output = NULL;
if (!mtf_free (&mtf))
static void
emit_END_CASE (struct input_program_pgm *inp)
{
- add_transformation (end_case_trns_proc, NULL, inp);
+ add_transformation (current_dataset, end_case_trns_proc, NULL, inp);
}
int
size_t i;
bool saw_END_CASE = false;
- discard_variables ();
+ discard_variables (current_dataset);
if (token != '.')
return lex_end_of_command ();
if (result == CMD_EOF)
msg (SE, _("Unexpected end-of-file within INPUT PROGRAM."));
inside_input_program = false;
- discard_variables ();
+ discard_variables (current_dataset);
destroy_input_program (inp);
return result;
}
emit_END_CASE (inp);
inside_input_program = false;
- if (dict_get_next_value_idx (default_dict) == 0)
+ if (dict_get_next_value_idx (dataset_dict (current_dataset)) == 0)
{
msg (SE, _("Input program did not create any variables."));
- discard_variables ();
+ discard_variables (current_dataset);
destroy_input_program (inp);
return CMD_FAILURE;
}
- inp->trns_chain = proc_capture_transformations ();
+ inp->trns_chain = proc_capture_transformations (current_dataset);
trns_chain_finalize (inp->trns_chain);
/* Figure out how to initialize each input case. */
- inp->init_cnt = dict_get_next_value_idx (default_dict);
+ inp->init_cnt = dict_get_next_value_idx (dataset_dict (current_dataset));
inp->init = xnmalloc (inp->init_cnt, sizeof *inp->init);
for (i = 0; i < inp->init_cnt; i++)
inp->init[i] = -1;
- for (i = 0; i < dict_get_var_cnt (default_dict); i++)
+ for (i = 0; i < dict_get_var_cnt (dataset_dict (current_dataset)); i++)
{
- struct variable *var = dict_get_var (default_dict, i);
+ struct variable *var = dict_get_var (dataset_dict (current_dataset), i);
enum value_init_type value_init;
size_t j;
}
for (i = 0; i < inp->init_cnt; i++)
assert (inp->init[i] != -1);
- inp->case_size = dict_get_case_size (default_dict);
+ inp->case_size = dict_get_case_size (dataset_dict (current_dataset));
- proc_set_source (create_case_source (&input_program_source_class, inp));
+ proc_set_source (current_dataset,
+ create_case_source (&input_program_source_class, inp));
return CMD_SUCCESS;
}
return CMD_CASCADING_FAILURE;
}
- e = expr_parse (default_dict, EXPR_NUMBER);
+ e = expr_parse (dataset_dict (current_dataset), EXPR_NUMBER);
if (!e)
return CMD_CASCADING_FAILURE;
}
t = xmalloc (sizeof *t);
t->reader = dfm_open_reader (fh);
t->column = e;
- add_transformation (reread_trns_proc, reread_trns_free, t);
+ add_transformation (current_dataset, reread_trns_proc, reread_trns_free, t);
return CMD_SUCCESS;
}
{
assert (in_input_program ());
- add_transformation (end_file_trns_proc, NULL, NULL);
+ add_transformation (current_dataset, end_file_trns_proc, NULL, NULL);
return lex_end_of_command ();
}
if (cmd.last == NOT_LONG)
cmd.last = LONG_MAX;
if (!cmd.sbc_variables)
- dict_get_vars (default_dict, &cmd.v_variables, &cmd.n_variables,
+ dict_get_vars (dataset_dict (current_dataset), &cmd.v_variables, &cmd.n_variables,
(1u << DC_SYSTEM) | (1u << DC_SCRATCH));
if (cmd.n_variables == 0)
{
/* Weighting variable. */
if (cmd.weight == LST_WEIGHT)
{
- if (dict_get_weight (default_dict) != NULL)
+ if (dict_get_weight (dataset_dict (current_dataset)) != NULL)
{
size_t i;
for (i = 0; i < cmd.n_variables; i++)
- if (cmd.v_variables[i] == dict_get_weight (default_dict))
+ if (cmd.v_variables[i] == dict_get_weight (dataset_dict (current_dataset)))
break;
if (i >= cmd.n_variables)
{
cmd.v_variables = xnrealloc (cmd.v_variables, cmd.n_variables,
sizeof *cmd.v_variables);
cmd.v_variables[cmd.n_variables - 1]
- = dict_get_weight (default_dict);
+ = dict_get_weight (dataset_dict (current_dataset));
}
}
else
determine_layout ();
case_idx = 0;
- ok = procedure_with_splits (write_all_headers, list_cases, NULL, NULL);
+ ok = procedure_with_splits (current_dataset, write_all_headers, list_cases, NULL, NULL);
ds_destroy(&line_buffer);
clean_up ();
/* Continuous variables. */
int n_continuous; /* Number of continuous variables. */
- int first_continuous; /* Index into default_dict.var of
+ int first_continuous; /* Index into dataset_dict (current_dataset).var of
first continuous variable. */
};
unsigned seen = 0;
- discard_variables ();
+ discard_variables (current_dataset);
pool = pool_create ();
mx = pool_alloc (pool, sizeof *mx);
if (strcasecmp (v[i], "ROWTYPE_"))
{
- new_var = dict_create_var_assert (default_dict, v[i], 0);
+ new_var = dict_create_var_assert (dataset_dict (current_dataset), v[i], 0);
attach_mxd_aux (new_var, MXD_CONTINUOUS, i);
}
else
free (v);
}
- mx->rowtype_ = dict_create_var_assert (default_dict,
+ mx->rowtype_ = dict_create_var_assert (dataset_dict (current_dataset),
"ROWTYPE_", 8);
attach_mxd_aux (mx->rowtype_, MXD_ROWTYPE, 0);
}
goto lossage;
}
- if (dict_lookup_var (default_dict, tokid) == NULL
+ if (dict_lookup_var (dataset_dict (current_dataset), tokid) == NULL
&& (lex_look_ahead () == '.' || lex_look_ahead () == '/'))
{
if (!strcasecmp (tokid, "ROWTYPE_")
goto lossage;
}
- mx->single_split = dict_create_var_assert (default_dict,
+ mx->single_split = dict_create_var_assert (dataset_dict (current_dataset),
tokid, 0);
attach_mxd_aux (mx->single_split, MXD_CONTINUOUS, 0);
lex_get ();
- dict_set_split_vars (default_dict, &mx->single_split, 1);
+ dict_set_split_vars (dataset_dict (current_dataset), &mx->single_split, 1);
}
else
{
struct variable **split;
size_t n;
- if (!parse_variables (default_dict, &split, &n, PV_NO_DUPLICATE))
+ if (!parse_variables (dataset_dict (current_dataset), &split, &n, PV_NO_DUPLICATE))
goto lossage;
- dict_set_split_vars (default_dict, split, n);
+ dict_set_split_vars (dataset_dict (current_dataset), split, n);
}
{
- struct variable *const *split = dict_get_split_vars (default_dict);
- size_t split_cnt = dict_get_split_cnt (default_dict);
+ struct variable *const *split = dict_get_split_vars (dataset_dict (current_dataset));
+ size_t split_cnt = dict_get_split_cnt (dataset_dict (current_dataset));
int i;
for (i = 0; i < split_cnt; i++)
}
seen |= 4;
- if (!parse_variables (default_dict, &mx->factors, &mx->n_factors,
+ if (!parse_variables (dataset_dict (current_dataset), &mx->factors, &mx->n_factors,
PV_NONE))
goto lossage;
}
/* Create VARNAME_. */
- mx->varname_ = dict_create_var_assert (default_dict, "VARNAME_", 8);
+ mx->varname_ = dict_create_var_assert (dataset_dict (current_dataset), "VARNAME_", 8);
attach_mxd_aux (mx->varname_, MXD_VARNAME, 0);
/* Sort the dictionary variables into the desired order for the
struct variable **v;
size_t nv;
- dict_get_vars (default_dict, &v, &nv, 0);
+ dict_get_vars (dataset_dict (current_dataset), &v, &nv, 0);
qsort (v, nv, sizeof *v, compare_variables_by_mxd_var_type);
- dict_reorder_vars (default_dict, v, nv);
+ dict_reorder_vars (dataset_dict (current_dataset), v, nv);
free (v);
}
int i;
mx->first_continuous = -1;
- for (i = 0; i < dict_get_var_cnt (default_dict); i++)
+ for (i = 0; i < dict_get_var_cnt (dataset_dict (current_dataset)); i++)
{
- struct variable *v = dict_get_var (default_dict, i);
+ struct variable *v = dict_get_var (dataset_dict (current_dataset), i);
struct mxd_var *mv = v->aux;
int type = mv->var_type;
return ok ? CMD_SUCCESS : CMD_CASCADING_FAILURE;
lossage:
- discard_variables ();
+ discard_variables (current_dataset);
free (mx->factors);
pool_destroy (mx->container);
return CMD_CASCADING_FAILURE;
nr.factor_values = xnmalloc (mx->n_factors * mx->cells,
sizeof *nr.factor_values);
nr.max_cell_idx = 0;
- nr.split_values = xnmalloc (dict_get_split_cnt (default_dict),
+ nr.split_values = xnmalloc (dict_get_split_cnt (dataset_dict (current_dataset)),
sizeof *nr.split_values);
- proc_set_source (create_case_source (
+ proc_set_source (current_dataset, create_case_source (
&matrix_data_without_rowtype_source_class, &nr));
- ok = procedure (NULL, NULL);
+ ok = procedure (current_dataset,NULL, NULL);
free (nr.split_values);
free (nr.factor_values);
if (token.type != MNUM)
{
msg (SE, _("expecting value for %s %s"),
- dict_get_var (default_dict, j)->name,
+ dict_get_var (dataset_dict (current_dataset), j)->name,
context (mx->reader));
return 0;
}
if (!nr_output_data (nr, c, write_case, wc_data))
return false;
- if (dict_get_split_cnt (default_dict) == 0
+ if (dict_get_split_cnt (dataset_dict (current_dataset)) == 0
|| !another_token (mx->reader))
return true;
}
return true;
}
- if (dict_get_split_vars (default_dict) == NULL)
+ if (dict_get_split_vars (dataset_dict (current_dataset)) == NULL)
return true;
if (mx->single_split)
{
if (!compare)
{
- struct mxd_var *mv = dict_get_split_vars (default_dict)[0]->aux;
+ struct mxd_var *mv = dict_get_split_vars (dataset_dict (current_dataset))[0]->aux;
nr->split_values[0] = ++mv->sub_type;
}
return true;
if (!compare)
just_read = 1;
- split_cnt = dict_get_split_cnt (default_dict);
+ split_cnt = dict_get_split_cnt (dataset_dict (current_dataset));
for (i = 0; i < split_cnt; i++)
{
struct matrix_token token;
{
msg (SE, _("Expecting value %g for %s."),
nr->split_values[i],
- dict_get_split_vars (default_dict)[i]->name);
+ dict_get_split_vars (dataset_dict (current_dataset))[i]->name);
return false;
}
}
for (j = 0; j < mx->n_continuous; j++)
{
- int fv = dict_get_var (default_dict, mx->first_continuous + j)->fv;
+ int fv = dict_get_var (dataset_dict (current_dataset), mx->first_continuous + j)->fv;
case_data_rw (c, fv)->f = *cp;
cp++;
}
if (type == 1)
buf_copy_str_rpad (case_data_rw (c, mx->varname_->fv)->s, 8,
- dict_get_var (default_dict,
+ dict_get_var (dataset_dict (current_dataset),
mx->first_continuous + i)->name);
if (!write_case (wc_data))
return false;
size_t split_cnt;
size_t i;
- split_cnt = dict_get_split_cnt (default_dict);
- split = dict_get_split_vars (default_dict);
+ split_cnt = dict_get_split_cnt (dataset_dict (current_dataset));
+ split = dict_get_split_vars (dataset_dict (current_dataset));
for (i = 0; i < split_cnt; i++)
case_data_rw (c, split[i]->fv)->f = nr->split_values[i];
}
wr.current = NULL;
mx->cells = 0;
- proc_set_source (create_case_source (&matrix_data_with_rowtype_source_class,
+ proc_set_source (current_dataset,
+ create_case_source (&matrix_data_with_rowtype_source_class,
&wr));
- ok = procedure (NULL, NULL);
+ ok = procedure (current_dataset,NULL, NULL);
free (wr.split_values);
return ok;
bool compare;
size_t split_cnt;
- split_cnt = dict_get_split_cnt (default_dict);
+ split_cnt = dict_get_split_cnt (dataset_dict (current_dataset));
if (split_cnt == 0)
return true;
size_t split_cnt;
size_t i;
- split_cnt = dict_get_split_cnt (default_dict);
- split = dict_get_split_vars (default_dict);
+ split_cnt = dict_get_split_cnt (dataset_dict (current_dataset));
+ split = dict_get_split_vars (dataset_dict (current_dataset));
for (i = 0; i < split_cnt; i++)
case_data_rw (c, split[i]->fv)->f = wr->split_values[i];
}
if (token.type != MNUM)
{
msg (SE, _("Syntax error expecting value for %s %s."),
- dict_get_var (default_dict, mx->first_continuous + j)->name,
+ dict_get_var (dataset_dict (current_dataset), mx->first_continuous + j)->name,
context (mx->reader));
return false;
}
if (token != '.')
{
- expr = expr_parse (default_dict, EXPR_NUMBER);
+ expr = expr_parse (dataset_dict (current_dataset), EXPR_NUMBER);
if (token != '.')
{
expr_free (expr);
trns->writer = writer;
trns->expr = expr;
- add_transformation (print_space_trns_proc, print_space_trns_free, trns);
+ add_transformation (current_dataset,
+ print_space_trns_proc, print_space_trns_free, trns);
return CMD_SUCCESS;
}
dump_table (trns, fh);
/* Put the transformation in the queue. */
- add_transformation (print_trns_proc, print_trns_free, trns);
+ add_transformation (current_dataset, print_trns_proc, print_trns_free, trns);
pool_destroy (tmp_pool);
bool add_space;
if (!parse_variables_pool (tmp_pool,
- default_dict, &vars, &var_cnt, PV_DUPLICATE))
+ dataset_dict (current_dataset), &vars, &var_cnt, PV_DUPLICATE))
return false;
if (lex_is_number () || token == '(')
for (i = 0; i < dict_get_var_cnt (dict); i++)
{
struct variable *s = dict_get_var (dict, i);
- struct variable *t = dict_lookup_var (default_dict, s->name);
+ struct variable *t = dict_lookup_var (dataset_dict (current_dataset), s->name);
if (t == NULL)
continue;
if (dict_get_weight (dict) != NULL)
{
struct variable *new_weight
- = dict_lookup_var (default_dict, dict_get_weight (dict)->name);
+ = dict_lookup_var (dataset_dict (current_dataset), dict_get_weight (dict)->name);
if (new_weight != NULL)
- dict_set_weight (default_dict, new_weight);
+ dict_set_weight (dataset_dict (current_dataset), new_weight);
}
any_reader_close (reader);
if (token == '.')
break;
- if (!parse_variables (default_dict, &v, &cv, PV_NUMERIC))
+ if (!parse_variables (dataset_dict (current_dataset), &v, &cv, PV_NUMERIC))
return CMD_FAILURE;
type = v[0]->type;
{
size_t i;
- if (!parse_variables (default_dict, &v, &nv, PV_NONE))
+ if (!parse_variables (dataset_dict (current_dataset), &v, &nv, PV_NONE))
goto done;
if (!lex_match ('('))
size_t i;
- if (proc_make_temporary_transformations_permanent ())
+ if (proc_make_temporary_transformations_permanent (current_dataset))
msg (SE, _("MODIFY VARS may not be used after TEMPORARY. "
"Temporary transformations will be made permanent."));
"of variables."));
goto done;
}
- dict_get_vars (default_dict, &v, &nv, 1u << DC_SYSTEM);
+ dict_get_vars (dataset_dict (current_dataset), &v, &nv, 1u << DC_SYSTEM);
}
else
{
free (v);
goto done;
}
- if (!parse_variables (default_dict, &v, &nv,
+ if (!parse_variables (dataset_dict (current_dataset), &v, &nv,
PV_APPEND | PV_NO_DUPLICATE))
{
free (v);
msg (SE, _("`(' expected on RENAME subcommand."));
goto done;
}
- if (!parse_variables (default_dict, &vm.rename_vars, &vm.rename_cnt,
+ if (!parse_variables (dataset_dict (current_dataset), &vm.rename_vars, &vm.rename_cnt,
PV_APPEND | PV_NO_DUPLICATE))
goto done;
if (!lex_match ('='))
already_encountered |= 4;
lex_match ('=');
- if (!parse_variables (default_dict, &keep_vars, &keep_cnt, PV_NONE))
+ if (!parse_variables (dataset_dict (current_dataset), &keep_vars, &keep_cnt, PV_NONE))
goto done;
/* Transform the list of variables to keep into a list of
sort (keep_vars, keep_cnt, sizeof *keep_vars,
compare_variables_given_ordering, &forward_positional_ordering);
- dict_get_vars (default_dict, &all_vars, &all_cnt, 0);
+ dict_get_vars (dataset_dict (current_dataset), &all_vars, &all_cnt, 0);
assert (all_cnt >= keep_cnt);
drop_cnt = all_cnt - keep_cnt;
already_encountered |= 4;
lex_match ('=');
- if (!parse_variables (default_dict, &drop_vars, &drop_cnt, PV_NONE))
+ if (!parse_variables (dataset_dict (current_dataset), &drop_vars, &drop_cnt, PV_NONE))
goto done;
vm.drop_vars = drop_vars;
vm.drop_cnt = drop_cnt;
}
else if (lex_match_id ("MAP"))
{
- struct dictionary *temp = dict_clone (default_dict);
+ struct dictionary *temp = dict_clone (dataset_dict (current_dataset));
int success = rearrange_dict (temp, &vm);
if (success)
{
if (already_encountered & (1 | 4))
{
/* Read the data. */
- if (!procedure (NULL, NULL))
+ if (!procedure (current_dataset,NULL, NULL))
goto done;
}
- if (!rearrange_dict (default_dict, &vm))
+ if (!rearrange_dict (dataset_dict (current_dataset), &vm))
goto done;
ret_code = CMD_SUCCESS;
/* Create each variable. */
for (i = 0; i < nv; i++)
{
- struct variable *new_var = dict_create_var (default_dict, v[i], 0);
+ struct variable *new_var = dict_create_var (dataset_dict (current_dataset), v[i], 0);
if (!new_var)
msg (SE, _("There is already a variable named %s."), v[i]);
else
/* Create each variable. */
for (i = 0; i < nv; i++)
{
- struct variable *new_var = dict_create_var (default_dict, v[i],
+ struct variable *new_var = dict_create_var (dataset_dict (current_dataset), v[i],
width);
if (!new_var)
msg (SE, _("There is already a variable named %s."), v[i]);
size_t i;
- if (!parse_variables (default_dict, &v, &nv, PV_NONE))
+ if (!parse_variables (dataset_dict (current_dataset), &v, &nv, PV_NONE))
return CMD_CASCADING_FAILURE;
for (i = 0; i < nv; i++)
v[i]->leave = true;
int status = CMD_CASCADING_FAILURE;
- if (proc_make_temporary_transformations_permanent ())
+ if (proc_make_temporary_transformations_permanent (current_dataset))
msg (SE, _("RENAME VARS may not be used after TEMPORARY. "
"Temporary transformations will be made permanent."));
msg (SE, _("`(' expected."));
goto lossage;
}
- if (!parse_variables (default_dict, &rename_vars, &rename_cnt,
+ if (!parse_variables (dataset_dict (current_dataset), &rename_vars, &rename_cnt,
PV_APPEND | PV_NO_DUPLICATE))
goto lossage;
if (!lex_match ('='))
}
while (token != '.');
- if (!dict_rename_vars (default_dict,
+ if (!dict_rename_vars (dataset_dict (current_dataset),
rename_vars, rename_new_names, rename_cnt,
&err_name))
{
cmd_split_file (void)
{
if (lex_match_id ("OFF"))
- dict_set_split_vars (default_dict, NULL, 0);
+ dict_set_split_vars (dataset_dict (current_dataset), NULL, 0);
else
{
struct variable **v;
(void) ( lex_match_id ("SEPARATE") || lex_match_id ("LAYERED") );
lex_match (T_BY);
- if (!parse_variables (default_dict, &v, &n, PV_NO_DUPLICATE))
+ if (!parse_variables (dataset_dict (current_dataset), &v, &n, PV_NO_DUPLICATE))
return CMD_CASCADING_FAILURE;
- dict_set_split_vars (default_dict, v, n);
+ dict_set_split_vars (dataset_dict (current_dataset), v, n);
free (v);
}
size_t split_cnt;
int i;
- split_cnt = dict_get_split_cnt (default_dict);
+ split_cnt = dict_get_split_cnt (dataset_dict (current_dataset));
if (split_cnt == 0)
return;
tab_text (t, 0, 0, TAB_NONE, _("Variable"));
tab_text (t, 1, 0, TAB_LEFT, _("Value"));
tab_text (t, 2, 0, TAB_LEFT, _("Label"));
- split = dict_get_split_vars (default_dict);
+ split = dict_get_split_vars (dataset_dict (current_dataset));
for (i = 0; i < split_cnt; i++)
{
struct variable *v = split[i];
som_blank_line ();
if (!lex_force_match_id ("LABEL"))
return CMD_FAILURE;
- if (dict_get_label (default_dict) == NULL)
+ if (dict_get_label (dataset_dict (current_dataset)) == NULL)
tab_output_text (TAB_LEFT,
_("The active file does not have a file label."));
else
{
tab_output_text (TAB_LEFT | TAT_TITLE, _("File label:"));
- tab_output_text (TAB_LEFT | TAB_FIX, dict_get_label (default_dict));
+ tab_output_text (TAB_LEFT | TAB_FIX, dict_get_label (dataset_dict (current_dataset)));
}
}
else
if (token != '.')
{
- if (!parse_variables (default_dict, &vl, &n, PV_NONE))
+ if (!parse_variables (dataset_dict (current_dataset), &vl, &n, PV_NONE))
{
free (vl);
return CMD_FAILURE;
as = AS_DICTIONARY;
}
else
- dict_get_vars (default_dict, &vl, &n, 0);
+ dict_get_vars (dataset_dict (current_dataset), &vl, &n, 0);
if (as == AS_SCRATCH)
{
static void
display_documents (void)
{
- const char *documents = dict_get_documents (default_dict);
+ const char *documents = dict_get_documents (dataset_dict (current_dataset));
som_blank_line ();
if (documents == NULL)
struct tab_table *t;
size_t nvec;
- nvec = dict_get_vector_cnt (default_dict);
+ nvec = dict_get_vector_cnt (dataset_dict (current_dataset));
if (nvec == 0)
{
msg (SW, _("No vectors defined."));
vl = xnmalloc (nvec, sizeof *vl);
for (i = 0; i < nvec; i++)
- vl[i] = dict_get_vector (default_dict, i);
+ vl[i] = dict_get_vector (dataset_dict (current_dataset), i);
if (sorted)
qsort (vl, nvec, sizeof *vl, compare_vectors_by_name);
while (token != '.')
{
- parse_err = !parse_variables (default_dict, &vars, &var_cnt,
+ parse_err = !parse_variables (dataset_dict (current_dataset), &vars, &var_cnt,
PV_SAME_TYPE) ;
if (var_cnt < 1)
{
size_t i;
enum alignment align;
- if (!parse_variables (default_dict, &v, &nv, PV_NONE))
+ if (!parse_variables (dataset_dict (current_dataset), &v, &nv, PV_NONE))
return CMD_FAILURE;
if ( lex_force_match('(') )
size_t nv;
size_t i;
- if (!parse_variables (default_dict, &v, &nv, PV_NONE))
+ if (!parse_variables (dataset_dict (current_dataset), &v, &nv, PV_NONE))
return CMD_FAILURE;
if ( lex_force_match('(') )
enum measure level;
size_t i;
- if (!parse_variables (default_dict, &v, &nv, PV_NONE))
+ if (!parse_variables (dataset_dict (current_dataset), &v, &nv, PV_NONE))
return CMD_FAILURE;
if ( lex_force_match('(') )
size_t i;
- if (!parse_variables (default_dict, &v, &nv, PV_NONE))
+ if (!parse_variables (dataset_dict (current_dataset), &v, &nv, PV_NONE))
return CMD_FAILURE;
if (token != T_STRING)
goto fail;
}
- if (dict_lookup_vector (default_dict, tokid))
+ if (dict_lookup_vector (dataset_dict (current_dataset), tokid))
{
msg (SE, _("There is already a vector with name %s."), tokid);
goto fail;
goto fail;
}
- if (!parse_variables (default_dict, &v, &nv,
+ if (!parse_variables (dataset_dict (current_dataset), &v, &nv,
PV_SAME_TYPE | PV_DUPLICATE))
goto fail;
- dict_create_vector (default_dict, vecnames, v, nv);
+ dict_create_vector (dataset_dict (current_dataset), vecnames, v, nv);
free (v);
}
else if (lex_match ('('))
for (i = 0; i < nv; i++)
{
sprintf (name, "%s%d", cp, i + 1);
- if (dict_lookup_var (default_dict, name))
+ if (dict_lookup_var (dataset_dict (current_dataset), name))
{
msg (SE, _("There is already a variable named %s."),
name);
for (i = 0; i < nv; i++)
{
sprintf (name, "%s%d", cp, i + 1);
- v[i] = dict_create_var_assert (default_dict, name, 0);
+ v[i] = dict_create_var_assert (dataset_dict (current_dataset), name, 0);
}
- if (!dict_create_vector (default_dict, cp, v, nv))
+ if (!dict_create_vector (dataset_dict (current_dataset), cp, v, nv))
NOT_REACHED ();
cp += strlen (cp) + 1;
}
cmd_weight (void)
{
if (lex_match_id ("OFF"))
- dict_set_weight (default_dict, NULL);
+ dict_set_weight (dataset_dict (current_dataset), NULL);
else
{
struct variable *v;
return CMD_CASCADING_FAILURE;
}
- dict_set_weight (default_dict, v);
+ dict_set_weight (dataset_dict (current_dataset), v);
}
return lex_end_of_command ();
no_opt perm_only function LAG (num_var v, pos_int n_before)
{
- struct ccase *c = lagged_case (n_before);
+ struct ccase *c = lagged_case (current_dataset, n_before);
if (c != NULL)
{
double x = case_num (c, v->fv);
no_opt perm_only function LAG (num_var v)
{
- struct ccase *c = lagged_case (1);
+ struct ccase *c = lagged_case (current_dataset, 1);
if (c != NULL)
{
double x = case_num (c, v->fv);
no_opt perm_only string function LAG (str_var v, pos_int n_before)
expression e;
{
- struct ccase *c = lagged_case (n_before);
+ struct ccase *c = lagged_case (current_dataset, n_before);
if (c != NULL)
return copy_string (e, case_str (c, v->fv), v->width);
else
no_opt perm_only string function LAG (str_var v)
expression e;
{
- struct ccase *c = lagged_case (1);
+ struct ccase *c = lagged_case (current_dataset, 1);
if (c != NULL)
return copy_string (e, case_str (c, v->fv), v->width);
else
"JUL", "AUG", "SEP", "OCT", "NOV", "DEC",
};
- time_t last_proc_time = time_of_last_procedure ();
+ time_t last_proc_time = time_of_last_procedure (current_dataset);
struct tm *time;
char temp_buf[10];
return expr_allocate_number (e, SYSMIS);
else if (lex_match_id ("$JDATE"))
{
- time_t time = time_of_last_procedure ();
+ time_t time = time_of_last_procedure (current_dataset);
struct tm *tm = localtime (&time);
return expr_allocate_number (e, expr_ymd_to_ofs (tm->tm_year + 1900,
tm->tm_mon + 1,
}
else if (lex_match_id ("$TIME"))
{
- time_t time = time_of_last_procedure ();
+ time_t time = time_of_last_procedure (current_dataset);
struct tm *tm = localtime (&time);
return expr_allocate_number (e,
expr_ymd_to_date (tm->tm_year + 1900,
/* Find vector, skip token.
The caller must already have verified that the current token
is the name of a vector. */
- vector = dict_lookup_vector (default_dict, tokid);
+ vector = dict_lookup_vector (dataset_dict (current_dataset), tokid);
assert (vector != NULL);
lex_get ();
size_t var_cnt;
size_t i;
- if (!parse_variables (default_dict, &vars, &var_cnt, PV_SINGLE))
+ if (!parse_variables (dataset_dict (current_dataset), &vars, &var_cnt, PV_SINGLE))
goto fail;
for (i = 0; i < var_cnt; i++)
add_arg (&args, &arg_cnt, &arg_cap,
msg (SE, _("%s is not yet implemented."), f->prototype);
goto fail;
}
- if ((f->flags & OPF_PERM_ONLY) && proc_in_temporary_transformations ())
+ if ((f->flags & OPF_PERM_ONLY) &&
+ proc_in_temporary_transformations (current_dataset))
{
msg (SE, _("%s may not appear after TEMPORARY."), f->prototype);
goto fail;
if (n->type == OP_LAG_Vn || n->type == OP_LAG_Vs)
{
- if (n_lag < 1)
- n_lag = 1;
+ if (dataset_n_lag (current_dataset) < 1)
+ dataset_set_n_lag (current_dataset, 1);
}
else if (n->type == OP_LAG_Vnn || n->type == OP_LAG_Vsn)
{
assert (n->composite.arg_cnt == 2);
assert (n->composite.args[1]->type == OP_pos_int);
n_before = n->composite.args[1]->integer.i;
- if (n_lag < n_before)
- n_lag = n_before;
+ if ( dataset_n_lag (current_dataset) < n_before)
+ dataset_set_n_lag (current_dataset, n_before);
}
free (args);
}
else if (sbc->type == SBC_VARLIST)
{
- dump (1, "if (!parse_variables (default_dict, &p->%sv_%s, &p->%sn_%s, "
+ dump (1, "if (!parse_variables (dataset_dict (current_dataset), &p->%sv_%s, &p->%sn_%s, "
"PV_APPEND%s%s))",
st_lower (sbc->prefix), st_lower (sbc->name),
st_lower (sbc->prefix), st_lower (sbc->name),
{
if (def->type == SBC_VARLIST)
dump (1, "if (token == T_ID "
- "&& dict_lookup_var (default_dict, tokid) != NULL "
+ "&& dict_lookup_var (dataset_dict (current_dataset), tokid) != NULL "
"&& lex_look_ahead () != '=')");
else
{
dump (0, "if ((token == T_ID "
- "&& dict_lookup_var (default_dict, tokid) "
+ "&& dict_lookup_var (dataset_dict (current_dataset), tokid) "
"&& lex_look_ahead () != '=')");
dump (1, " || token == T_ALL)");
}
dump (1, "{");
dump (0, "p->sbc_%s++;", st_lower (def->name));
- dump (1, "if (!parse_variables (default_dict, &p->%sv_%s, &p->%sn_%s, "
+ dump (1, "if (!parse_variables (dataset_dict (current_dataset), &p->%sv_%s, &p->%sn_%s, "
"PV_APPEND))",
st_lower (def->prefix), st_lower (def->name),
st_lower (def->prefix), st_lower (def->name));
return var;
}
-/* Parses a variable name in default_dict and returns the
+/* Parses a variable name in dataset_dict (current_dataset) and returns the
variable if successful. On failure emits an error message and
returns a null pointer. */
struct variable *
parse_variable (void)
{
- return parse_dict_variable (default_dict);
+ return parse_dict_variable (dataset_dict (current_dataset));
}
}
while (token == T_ID || token == T_ALL)
{
- if (token == T_ALL || dict_lookup_var (default_dict, tokid) != NULL)
+ if (token == T_ALL || dict_lookup_var (dataset_dict (current_dataset), tokid) != NULL)
{
struct variable **v;
size_t nv;
- if (!parse_variables (default_dict, &v, &nv, PV_NONE))
+ if (!parse_variables (dataset_dict (current_dataset), &v, &nv, PV_NONE))
goto fail;
*names = xnrealloc (*names, *nnames + nv, sizeof **names);
for (i = 0; i < nv; i++)
case_nullify (&agr.break_case);
agr.dict = dict_create ();
- dict_set_label (agr.dict, dict_get_label (default_dict));
- dict_set_documents (agr.dict, dict_get_documents (default_dict));
+ dict_set_label (agr.dict, dict_get_label (dataset_dict (current_dataset)));
+ dict_set_documents (agr.dict, dict_get_documents (dataset_dict (current_dataset)));
/* OUTFILE subcommand must be first. */
if (!lex_force_match_id ("OUTFILE"))
int i;
lex_match ('=');
- agr.sort = sort_parse_criteria (default_dict,
+ agr.sort = sort_parse_criteria (dataset_dict (current_dataset),
&agr.break_vars, &agr.break_var_cnt,
&saw_direction, NULL);
if (agr.sort == NULL)
{
/* The active file will be replaced by the aggregated data,
so TEMPORARY is moot. */
- proc_cancel_temporary_transformations ();
+ proc_cancel_temporary_transformations (current_dataset);
if (agr.sort != NULL && !presorted)
{
agr.sink = create_case_sink (&storage_sink_class, agr.dict, NULL);
if (agr.sink->class->open != NULL)
agr.sink->class->open (agr.sink);
- proc_set_sink (create_case_sink (&null_sink_class, default_dict, NULL));
- if (!procedure (agr_to_active_file, &agr))
+ proc_set_sink (current_dataset,
+ create_case_sink (&null_sink_class,
+ dataset_dict (current_dataset), NULL));
+ if (!procedure (current_dataset,agr_to_active_file, &agr))
goto error;
if (agr.case_cnt > 0)
{
if (!agr.sink->class->write (agr.sink, &agr.agr_case))
goto error;
}
- discard_variables ();
- dict_destroy (default_dict);
- default_dict = agr.dict;
+ discard_variables (current_dataset);
+ dict_destroy (dataset_dict (current_dataset));
+ dataset_set_dict (current_dataset, agr.dict);
agr.dict = NULL;
- proc_set_source (agr.sink->class->make_source (agr.sink));
+ proc_set_source (current_dataset,
+ agr.sink->class->make_source (agr.sink));
free_case_sink (agr.sink);
}
else
else
{
/* Active file is already sorted. */
- if (!procedure (presorted_agr_to_sysfile, &agr))
+ if (!procedure (current_dataset,presorted_agr_to_sysfile, &agr))
goto error;
}
else if (function->n_args)
pv_opts |= PV_SAME_TYPE;
- if (!parse_variables (default_dict, &src, &n_src, pv_opts))
+ if (!parse_variables (dataset_dict (current_dataset), &src, &n_src, pv_opts))
goto error;
}
if (destvar != NULL)
{
if ((func_index == N || func_index == NMISS)
- && dict_get_weight (default_dict) != NULL)
+ && dict_get_weight (dataset_dict (current_dataset)) != NULL)
destvar->print = destvar->write = f8_2;
else
destvar->print = destvar->write = function->format;
v->src = NULL;
destvar = dict_create_var (agr->dict, dest[i], 0);
if (func_index == N_NO_VARS
- && dict_get_weight (default_dict) != NULL)
+ && dict_get_weight (dataset_dict (current_dataset)) != NULL)
destvar->print = destvar->write = f8_2;
else
destvar->print = destvar->write = function->format;
double weight;
bool bad_warn = true;
- weight = dict_get_case_weight (default_dict, input, &bad_warn);
+ weight = dict_get_case_weight (dataset_dict (current_dataset), input, &bad_warn);
for (iter = agr->agr_vars; iter; iter = iter->next)
if (iter->src)
lex_match_id ("VARIABLES");
lex_match ('=');
- if (!parse_variables (default_dict, &arc.src_vars, &arc.var_cnt,
+ if (!parse_variables (dataset_dict (current_dataset), &arc.src_vars, &arc.var_cnt,
PV_NO_DUPLICATE))
goto lossage;
if (!lex_force_match_id ("INTO"))
{
int j;
- if (dict_lookup_var (default_dict, arc.dst_names[i]) != NULL)
+ if (dict_lookup_var (dataset_dict (current_dataset), arc.dst_names[i]) != NULL)
{
msg (SE, _("Target variable %s duplicates existing variable %s."),
arc.dst_names[i], arc.dst_names[i]);
arc.src_values[i] = hsh_create (10, compare_numeric_value,
hash_numeric_value, NULL, NULL);
- ok = procedure (autorecode_proc_func, &arc);
+ ok = procedure (current_dataset,autorecode_proc_func, &arc);
for (i = 0; i < arc.var_cnt; i++)
- arc.dst_vars[i] = dict_create_var_assert (default_dict,
+ arc.dst_vars[i] = dict_create_var_assert (dataset_dict (current_dataset),
arc.dst_names[i], 0);
recode (&arc);
hsh_force_insert (spec->items, item);
}
}
- add_transformation (autorecode_trns_proc, autorecode_trns_free, trns);
+ add_transformation (current_dataset,
+ autorecode_trns_proc, autorecode_trns_free, trns);
}
/* Executes an AUTORECODE transformation. */
/* Ensure that this is a VARIABLES subcommand. */
if (!lex_match_id ("VARIABLES")
- && (token != T_ID || dict_lookup_var (default_dict, tokid) != NULL)
+ && (token != T_ID || dict_lookup_var (dataset_dict (current_dataset), tokid) != NULL)
&& token != T_ALL)
return 2;
lex_match ('=');
- if (!parse_variables (default_dict, &v1, &nv1,
+ if (!parse_variables (dataset_dict (current_dataset), &v1, &nv1,
PV_NO_DUPLICATE | PV_NUMERIC))
return 0;
if (lex_match (T_WITH))
{
- if (!parse_variables (default_dict, &v2, &nv2,
+ if (!parse_variables (dataset_dict (current_dataset), &v2, &nv2,
PV_NO_DUPLICATE | PV_NUMERIC))
{
free (v1);
else
write = CRS_WR_NONE;
- ok = procedure_with_splits (precalc,
+ ok = procedure_with_splits (current_dataset, precalc,
mode == GENERAL ? calc_general : calc_integer,
postcalc, NULL);
/* Ensure that this is a TABLES subcommand. */
if (!lex_match_id ("TABLES")
- && (token != T_ID || dict_lookup_var (default_dict, tokid) == NULL)
+ && (token != T_ID || dict_lookup_var (dataset_dict (current_dataset), tokid) == NULL)
&& token != T_ALL)
return 2;
lex_match ('=');
if (variables != NULL)
var_set = var_set_create_from_array (variables, variables_cnt);
else
- var_set = var_set_create_from_dict (default_dict);
+ var_set = var_set_create_from_dict (dataset_dict (current_dataset));
assert (var_set != NULL);
for (n_by = 0; ;)
long min, max;
- if (!parse_variables (default_dict, &variables, &variables_cnt,
+ if (!parse_variables (dataset_dict (current_dataset), &variables, &variables_cnt,
(PV_APPEND | PV_NUMERIC
| PV_NO_DUPLICATE | PV_NO_SCRATCH)))
return 0;
static unsigned hash_table_entry (const void *, void *);
/* Set up the crosstabulation tables for processing. */
-static void
+static void
precalc (const struct ccase *first, void *aux UNUSED)
{
output_split_file_values (first);
n_sorted_tab + 1, sizeof *sorted_tab);
sorted_tab[n_sorted_tab] = NULL;
}
+
}
/* Form crosstabulations for general mode. */
bool bad_warn = true;
/* Case weight. */
- double weight = dict_get_case_weight (default_dict, c, &bad_warn);
+ double weight = dict_get_case_weight (dataset_dict (current_dataset), c, &bad_warn);
/* Flattened current table index. */
int t;
bool bad_warn = true;
/* Case weight. */
- double weight = dict_get_case_weight (default_dict, c, &bad_warn);
+ double weight = dict_get_case_weight (dataset_dict (current_dataset), c, &bad_warn);
/* Flattened current table index. */
int t;
{
int i;
- if (!parse_variables (default_dict, &vars, &var_cnt,
+ if (!parse_variables (dataset_dict (current_dataset), &vars, &var_cnt,
PV_APPEND | PV_NO_DUPLICATE | PV_NUMERIC))
goto error;
dsc->vars[i].moments = moments_create (dsc->max_moment);
/* Data pass. */
- ok = multipass_procedure_with_splits (calc_descriptives, dsc);
+ ok = multipass_procedure_with_splits (current_dataset, calc_descriptives, dsc);
/* Z-scoring! */
if (ok && z_cnt)
{
size_t i;
- if (dict_lookup_var (default_dict, name) != NULL)
+ if (dict_lookup_var (dataset_dict (current_dataset), name) != NULL)
return false;
for (i = 0; i < dsc->var_cnt; i++)
if (!strcasecmp (dsc->vars[i].z_name, name))
char *cp;
struct variable *dst_var;
- dst_var = dict_create_var_assert (default_dict, dv->z_name, 0);
+ dst_var = dict_create_var_assert (dataset_dict (current_dataset), dv->z_name, 0);
if (dv->v->label)
{
dst_var->label = xmalloc (strlen (dv->v->label) + 12);
}
}
- add_transformation (descriptives_trns_proc, descriptives_trns_free, t);
+ add_transformation (current_dataset,
+ descriptives_trns_proc, descriptives_trns_free, t);
}
\f
/* Statistical calculation. */
casereader_read (reader, &c);
case_destroy (&c))
{
- double weight = dict_get_case_weight (default_dict, &c, &dsc->bad_warn);
+ double weight = dict_get_case_weight (dataset_dict (current_dataset), &c, &dsc->bad_warn);
if (weight <= 0.0)
continue;
casereader_read (reader, &c);
case_destroy (&c))
{
- double weight = dict_get_case_weight (default_dict, &c,
+ double weight = dict_get_case_weight (dataset_dict (current_dataset), &c,
&dsc->bad_warn);
if (weight <= 0.0)
continue;
subc_list_double_push(&percentile_list, 75);
}
- ok = multipass_procedure_with_splits (run_examine, &cmd);
+ ok = multipass_procedure_with_splits (current_dataset, run_examine, &cmd);
if ( totals )
{
{
lex_match('=');
- if ((token != T_ID || dict_lookup_var (default_dict, tokid) == NULL)
+ if ((token != T_ID || dict_lookup_var (dataset_dict (current_dataset), tokid) == NULL)
&& token != T_ALL)
{
return 2;
}
- if (!parse_variables (default_dict, &dependent_vars, &n_dependent_vars,
+ if (!parse_variables (dataset_dict (current_dataset), &dependent_vars, &n_dependent_vars,
PV_NO_DUPLICATE | PV_NUMERIC | PV_NO_SCRATCH) )
{
free (dependent_vars);
int success;
struct factor *sf = xmalloc (sizeof *sf);
- if ((token != T_ID || dict_lookup_var (default_dict, tokid) == NULL)
+ if ((token != T_ID || dict_lookup_var (dataset_dict (current_dataset), tokid) == NULL)
&& token != T_ALL)
{
free ( sf ) ;
lex_match(T_BY);
- if ((token != T_ID || dict_lookup_var (default_dict, tokid) == NULL)
+ if ((token != T_ID || dict_lookup_var (dataset_dict (current_dataset), tokid) == NULL)
&& token != T_ALL)
{
free ( sf ) ;
const int case_no = casereader_cnum(r);
const double weight =
- dict_get_case_weight(default_dict, &c, &bad_weight_warn);
+ dict_get_case_weight(dataset_dict (current_dataset), &c, &bad_weight_warn);
if ( cmd->miss == XMN_LISTWISE )
{
struct case_sink *sink;
bool ok;
- if (proc_make_temporary_transformations_permanent ())
+ if (proc_make_temporary_transformations_permanent (current_dataset))
msg (SW, _("FLIP ignores TEMPORARY. "
"Temporary transformations will be made permanent."));
flip = pool_create_container (struct flip_pgm, pool);
flip->var = NULL;
- flip->idx_to_fv = dict_get_compacted_idx_to_fv (default_dict);
+ flip->idx_to_fv = dict_get_compacted_idx_to_fv (dataset_dict (current_dataset));
pool_register (flip->pool, free, flip->idx_to_fv);
flip->var_cnt = 0;
flip->case_cnt = 0;
if (lex_match_id ("VARIABLES"))
{
lex_match ('=');
- if (!parse_variables (default_dict, &flip->var, &flip->var_cnt,
+ if (!parse_variables (dataset_dict (current_dataset), &flip->var, &flip->var_cnt,
PV_NO_DUPLICATE))
goto error;
lex_match ('/');
}
else
- dict_get_vars (default_dict, &flip->var, &flip->var_cnt, 1u << DC_SYSTEM);
+ dict_get_vars (dataset_dict (current_dataset), &flip->var, &flip->var_cnt, 1u << DC_SYSTEM);
pool_register (flip->pool, free, flip->var);
lex_match ('/');
goto error;
}
else
- flip->new_names = dict_lookup_var (default_dict, "CASE_LBL");
+ flip->new_names = dict_lookup_var (dataset_dict (current_dataset), "CASE_LBL");
if (flip->new_names)
{
/* Read the active file into a flip_sink. */
flip->case_cnt = 0;
- proc_make_temporary_transformations_permanent ();
+ proc_make_temporary_transformations_permanent (current_dataset);
sink = flip_sink_create (flip);
if (sink == NULL)
goto error;
- proc_set_sink (sink);
+ proc_set_sink (current_dataset, sink);
flip->new_names_tail = NULL;
- ok = procedure (NULL, NULL);
+ ok = procedure (current_dataset,NULL, NULL);
/* Flip the data we read. */
if (!flip_file (flip))
{
- discard_variables ();
+ discard_variables (current_dataset);
goto error;
}
/* Flip the dictionary. */
- dict_clear (default_dict);
+ dict_clear (dataset_dict (current_dataset));
if (!build_dictionary (flip))
{
- discard_variables ();
+ discard_variables (current_dataset);
goto error;
}
- flip->case_size = dict_get_case_size (default_dict);
+ flip->case_size = dict_get_case_size (dataset_dict (current_dataset));
/* Set up flipped data for reading. */
- proc_set_source (flip_source_create (flip));
+ proc_set_source (current_dataset, flip_source_create (flip));
return ok ? lex_end_of_command () : CMD_CASCADING_FAILURE;
*cp = '\0';
str_uppercase (name);
- if (dict_create_var (default_dict, name, 0))
+ if (dict_create_var (dataset_dict (current_dataset), name, 0))
return 1;
/* Add numeric extensions until acceptable. */
memcpy (n, name, ofs);
sprintf (&n[ofs], "%d", i);
- if (dict_create_var (default_dict, n, 0))
+ if (dict_create_var (dataset_dict (current_dataset), n, 0))
return 1;
}
}
static int
build_dictionary (struct flip_pgm *flip)
{
- dict_create_var_assert (default_dict, "CASE_LBL", 8);
+ dict_create_var_assert (dataset_dict (current_dataset), "CASE_LBL", 8);
if (flip->new_names_head == NULL)
{
char s[SHORT_NAME_LEN + 1];
sprintf (s, "VAR%03d", i);
- v = dict_create_var_assert (default_dict, s, 0);
+ v = dict_create_var_assert (dataset_dict (current_dataset), s, 0);
}
}
else
flip->case_cnt = 1;
- return create_case_sink (&flip_sink_class, default_dict, flip);
+ return create_case_sink (&flip_sink_class, dataset_dict (current_dataset), flip);
}
/* Writes case C to the FLIP sink.
/* Do it! */
- ok = procedure_with_splits (precalc, calc, postcalc, NULL);
+ ok = procedure_with_splits (current_dataset, precalc, calc, postcalc, NULL);
free_frequencies(&cmd);
size_t i;
bool bad_warn = true;
- weight = dict_get_case_weight (default_dict, c, &bad_warn);
+ weight = dict_get_case_weight (dataset_dict (current_dataset), c, &bad_warn);
for (i = 0; i < n_variables; i++)
{
lex_match ('=');
if (token != T_ALL && (token != T_ID
- || dict_lookup_var (default_dict, tokid) == NULL))
+ || dict_lookup_var (dataset_dict (current_dataset), tokid) == NULL))
return 2;
- if (!parse_variables (default_dict, &v_variables, &n_variables,
+ if (!parse_variables (dataset_dict (current_dataset), &v_variables, &n_variables,
PV_APPEND | PV_NO_SCRATCH))
return 0;
frq_custom_grouped (struct cmd_frequencies *cmd UNUSED, void *aux UNUSED)
{
lex_match ('=');
- if ((token == T_ID && dict_lookup_var (default_dict, tokid) != NULL)
+ if ((token == T_ID && dict_lookup_var (dataset_dict (current_dataset), tokid) != NULL)
|| token == T_ID)
for (;;)
{
size_t n;
struct variable **v;
- if (!parse_variables (default_dict, &v, &n,
+ if (!parse_variables (dataset_dict (current_dataset), &v, &n,
PV_NO_DUPLICATE | PV_NUMERIC))
return 0;
if (lex_match ('('))
free (v);
if (!lex_match ('/'))
break;
- if ((token != T_ID || dict_lookup_var (default_dict, tokid) != NULL)
+ if ((token != T_ID || dict_lookup_var (dataset_dict (current_dataset), tokid) != NULL)
&& token != T_ALL)
{
lex_put_back ('/');
struct var_set *var_set;
if (!lex_match_id ("TABLES")
- && (token != T_ID || dict_lookup_var (default_dict, tokid) == NULL)
+ && (token != T_ID || dict_lookup_var (dataset_dict (current_dataset), tokid) == NULL)
&& token != T_ALL)
return 2;
lex_match ('=');
return 0;
}
- var_set = var_set_create_from_dict (default_dict);
+ var_set = var_set_create_from_dict (dataset_dict (current_dataset));
assert (var_set != NULL);
do
}
}
- ok = multipass_procedure_with_splits (run_oneway, &cmd);
+ ok = multipass_procedure_with_splits (current_dataset, run_oneway, &cmd);
free (vars);
free_oneway (&cmd);
lex_match('=');
- if ((token != T_ID || dict_lookup_var (default_dict, tokid) == NULL)
+ if ((token != T_ID || dict_lookup_var (dataset_dict (current_dataset), tokid) == NULL)
&& token != T_ALL)
return 2;
- if (!parse_variables (default_dict, &vars, &n_vars,
+ if (!parse_variables (dataset_dict (current_dataset), &vars, &n_vars,
PV_DUPLICATE
| PV_NUMERIC | PV_NO_SCRATCH) )
{
size_t i;
const double weight =
- dict_get_case_weight (default_dict, &c, &bad_weight_warn);
+ dict_get_case_weight (dataset_dict (current_dataset), &c, &bad_weight_warn);
const union value *indep_val = case_data (&c, indep_var->fv);
struct sort_criteria criteria;
bool result = true;
int i;
- const int n_splits = dict_get_split_cnt (default_dict);
+ const int n_splits = dict_get_split_cnt (dataset_dict (current_dataset));
criteria.crit_cnt = n_splits + n_group_vars + 1;
criteria.crits = xnmalloc (criteria.crit_cnt, sizeof *criteria.crits);
for (i = 0; i < n_splits ; i++)
{
- struct variable *v = dict_get_split_vars (default_dict)[i];
+ struct variable *v = dict_get_split_vars (dataset_dict (current_dataset))[i];
criteria.crits[i].fv = v->fv;
criteria.crits[i].width = v->width;
criteria.crits[i].dir = SRT_ASCEND;
struct casefile *sorted_cf ;
/* Obtain active file in CF. */
- if (!procedure (NULL, NULL))
+ if (!procedure (current_dataset, NULL, NULL))
goto error;
- cf = proc_capture_output ();
+ cf = proc_capture_output (current_dataset);
/* Sort CF into SORTED_CF. */
reader = casefile_get_destructive_reader (cf) ;
continue ;
}
- proc_set_source (storage_source_create (out));
+ proc_set_source (current_dataset, storage_source_create (out));
}
free (criteria.crits);
break;
this_value = case_data (&this_case, fv);
- c = dict_get_case_weight (default_dict, &this_case, &warn);
+ c = dict_get_case_weight (dataset_dict (current_dataset), &this_case, &warn);
lookahead = casereader_clone (cr);
n = 0;
break;
}
- c += dict_get_case_weight (default_dict, &lookahead_case, &warn);
+ c += dict_get_case_weight (dataset_dict (current_dataset), &lookahead_case, &warn);
case_destroy (&lookahead_case);
n++;
}
this_value = case_data( &group_case, ultimate_crit->fv);
if ( !value_is_missing(mv, this_value) )
- w = dict_get_case_weight (default_dict, &group_case, &warn);
+ w = dict_get_case_weight (dataset_dict (current_dataset), &group_case, &warn);
while (casereader_read (lookahead, &this_case))
{
const union value *this_value =
case_data(&this_case, ultimate_crit->fv);
- double c = dict_get_case_weight (default_dict, &this_case, &warn);
+ double c = dict_get_case_weight (dataset_dict (current_dataset), &this_case, &warn);
if (!same_group (&group_case, &this_case, crit))
{
rank_cases (pos, casereader_cnum (lookahead) - 1,
char name[SHORT_NAME_LEN + 1];
if ( vname )
- var = dict_create_var(default_dict, vname, 0);
+ var = dict_create_var(dataset_dict (current_dataset), vname, 0);
if ( NULL == var )
{
snprintf(name, SHORT_NAME_LEN + 1, "%c%s",
function_name[f][0], src_var->name);
- var = dict_create_var(default_dict, name, 0);
+ var = dict_create_var(dataset_dict (current_dataset), name, 0);
}
i = 1;
snprintf(name, SHORT_NAME_LEN + 1, "%s%03d", func_abb,
i);
- var = dict_create_var(default_dict, name, 0);
+ var = dict_create_var(dataset_dict (current_dataset), name, 0);
if (i++ >= 999)
break;
}
snprintf(name, SHORT_NAME_LEN + 1,
"RNK%s%02d", func_abb, i);
- var = dict_create_var(default_dict, name, 0);
+ var = dict_create_var(dataset_dict (current_dataset), name, 0);
if ( i++ >= 99 )
break;
}
/* Add a variable which we can sort by to get back the original
order */
- order = dict_create_var_assert (default_dict, "$ORDER_", 0);
+ order = dict_create_var_assert (dataset_dict (current_dataset), "$ORDER_", 0);
- add_transformation (create_resort_key, 0, order);
+ add_transformation (current_dataset, create_resort_key, 0, order);
/* Do the ranking */
result = rank_cmd (sc, rank_specs, n_rank_specs);
}
/* ... and we don't need our sort key anymore. So delete it */
- dict_delete_var (default_dict, order);
+ dict_delete_var (dataset_dict (current_dataset), order);
rank_cleanup();
lex_match('=');
- if ((token != T_ID || dict_lookup_var (default_dict, tokid) == NULL)
+ if ((token != T_ID || dict_lookup_var (dataset_dict (current_dataset), tokid) == NULL)
&& token != T_ALL)
return 2;
- sc = sort_parse_criteria (default_dict,
+ sc = sort_parse_criteria (dataset_dict (current_dataset),
&src_vars, &n_src_vars, 0, terminators);
if ( lex_match(T_BY) )
{
- if ((token != T_ID || dict_lookup_var (default_dict, tokid) == NULL))
+ if ((token != T_ID || dict_lookup_var (dataset_dict (current_dataset), tokid) == NULL))
{
return 2;
}
- if (!parse_variables (default_dict, &group_vars, &n_group_vars,
+ if (!parse_variables (dataset_dict (current_dataset), &group_vars, &n_group_vars,
PV_NO_DUPLICATE | PV_NUMERIC | PV_NO_SCRATCH) )
{
free (group_vars);
while( token == T_ID )
{
- if ( dict_lookup_var (default_dict, tokid) != NULL )
+ if ( dict_lookup_var (dataset_dict (current_dataset), tokid) != NULL )
{
msg(SE, _("Variable %s already exists."), tokid);
return 0;
static int
try_name (char *name)
{
- if (dict_lookup_var (default_dict, name) != NULL)
+ if (dict_lookup_var (dataset_dict (current_dataset), name) != NULL)
return 0;
return 1;
t->n_trns = n_trns;
t->c = c;
reg_get_name (name, prefix);
- new_var = dict_create_var (default_dict, name, 0);
+ new_var = dict_create_var (dataset_dict (current_dataset), name, 0);
assert (new_var != NULL);
*v = new_var;
- add_transformation (f, regression_trns_free, t);
+ add_transformation (current_dataset, f, regression_trns_free, t);
trns_index++;
}
static void
return CMD_FAILURE;
models = xnmalloc (cmd.n_dependent, sizeof *models);
- if (!multipass_procedure_with_splits (run_regression, &cmd))
+ if (!multipass_procedure_with_splits (current_dataset, run_regression, &cmd))
return CMD_CASCADING_FAILURE;
subcommand_save (cmd.sbc_save, models);
free (v_variables);
lex_match ('=');
- if ((token != T_ID || dict_lookup_var (default_dict, tokid) == NULL)
+ if ((token != T_ID || dict_lookup_var (dataset_dict (current_dataset), tokid) == NULL)
&& token != T_ALL)
return 2;
- if (!parse_variables (default_dict, &v_variables, &n_variables, PV_NONE))
+ if (!parse_variables (dataset_dict (current_dataset), &v_variables, &n_variables, PV_NONE))
{
free (v_variables);
return 0;
if (!v_variables)
{
- dict_get_vars (default_dict, &v_variables, &n_variables,
+ dict_get_vars (dataset_dict (current_dataset), &v_variables, &n_variables,
1u << DC_SYSTEM);
}
lex_match (T_BY);
- criteria = sort_parse_criteria (default_dict, NULL, NULL, NULL, NULL);
+ criteria = sort_parse_criteria (dataset_dict (current_dataset), NULL, NULL, NULL, NULL);
if (criteria == NULL)
return CMD_CASCADING_FAILURE;
bad_weight_warn = true;
- ok = multipass_procedure_with_splits (calculate, &cmd);
+ ok = multipass_procedure_with_splits (current_dataset, calculate, &cmd);
n_pairs=0;
free(pairs);
lex_match('=');
n_vars=0;
- if (!parse_variables (default_dict, &vars, &n_vars,
+ if (!parse_variables (dataset_dict (current_dataset), &vars, &n_vars,
PV_DUPLICATE | PV_NUMERIC | PV_NO_SCRATCH))
{
free (vars);
if (lex_match (T_WITH))
{
n_before_WITH = n_vars;
- if (!parse_variables (default_dict, &vars, &n_vars,
+ if (!parse_variables (dataset_dict (current_dataset), &vars, &n_vars,
PV_DUPLICATE | PV_APPEND
| PV_NUMERIC | PV_NO_SCRATCH))
{
int i;
struct cmd_t_test *cmd = (struct cmd_t_test *)_cmd;
- double weight = dict_get_case_weight (default_dict, c, &bad_weight_warn);
+ double weight = dict_get_case_weight (dataset_dict (current_dataset), c, &bad_weight_warn);
/* Skip the entire case if /MISSING=LISTWISE is set */
struct cmd_t_test *cmd = (struct cmd_t_test *)cmd_;
- double weight = dict_get_case_weight (default_dict, c, &bad_weight_warn);
+ double weight = dict_get_case_weight (dataset_dict (current_dataset), c, &bad_weight_warn);
/* Skip the entire case if /MISSING=LISTWISE is set */
if ( cmd->miss == TTS_LISTWISE )
struct cmd_t_test *cmd = (struct cmd_t_test *) cmd_;
- double weight = dict_get_case_weight (default_dict, c, &bad_weight_warn);
+ double weight = dict_get_case_weight (dataset_dict (current_dataset), c, &bad_weight_warn);
/* Skip the entire case if /MISSING=LISTWISE is set ,
AND one member of a pair is missing */
const union value *gv = case_data (c, indep_var->fv);
const double weight =
- dict_get_case_weight (default_dict, c, &bad_weight_warn);
+ dict_get_case_weight (dataset_dict (current_dataset), c, &bad_weight_warn);
if ( value_is_missing(&indep_var->miss, gv) )
{
static void
show_weight (void)
{
- struct variable *var = dict_get_weight (default_dict);
+ struct variable *var = dict_get_weight (dataset_dict (current_dataset));
if (var == NULL)
msg (SN, _("WEIGHT is off."));
else
while (isspace ((unsigned char) *label))
label++;
- dict_set_label (default_dict, label);
+ dict_set_label (dataset_dict (current_dataset), label);
token = '.';
return CMD_SUCCESS;
}
-/* Add LINE as a line of document information to default_dict,
+/* Add LINE as a line of document information to dataset_dict (current_dataset),
indented by INDENT spaces. */
static void
add_document_line (const char *line, int indent)
size_t old_len;
char *new_documents;
- old_documents = dict_get_documents (default_dict);
+ old_documents = dict_get_documents (dataset_dict (current_dataset));
old_len = old_documents != NULL ? strlen (old_documents) : 0;
new_documents = xmalloc (old_len + 81);
buf_copy_str_rpad (new_documents + old_len + indent, 80 - indent, line);
new_documents[old_len + 80] = '\0';
- dict_set_documents (default_dict, new_documents);
+ dict_set_documents (dataset_dict (current_dataset), new_documents);
free (new_documents);
}
{
char buf[256];
- if (dict_get_documents (default_dict) != NULL)
+ if (dict_get_documents (dataset_dict (current_dataset)) != NULL)
add_document_line ("", 0);
sprintf (buf, _("Document entered %s by %s:"), get_start_date (), version);
int
cmd_drop_documents (void)
{
- dict_set_documents (default_dict, NULL);
+ dict_set_documents (dataset_dict (current_dataset), NULL);
return lex_end_of_command ();
}
if (compute->rvalue == NULL)
goto fail;
- add_transformation (get_proc_func (lvalue), compute_trns_free, compute);
+ add_transformation (current_dataset,
+ get_proc_func (lvalue), compute_trns_free, compute);
lvalue_finalize (lvalue, compute);
compute = compute_trns_create ();
/* Test expression. */
- compute->test = expr_parse (default_dict, EXPR_BOOLEAN);
+ compute->test = expr_parse (dataset_dict (current_dataset), EXPR_BOOLEAN);
if (compute->test == NULL)
goto fail;
if (compute->rvalue == NULL)
goto fail;
- add_transformation (get_proc_func (lvalue), compute_trns_free, compute);
+ add_transformation (current_dataset,
+ get_proc_func (lvalue), compute_trns_free, compute);
lvalue_finalize (lvalue, compute);
{
bool is_numeric = lvalue_get_type (lvalue) == NUMERIC;
- return expr_parse (default_dict, is_numeric ? EXPR_NUMBER : EXPR_STRING);
+ return expr_parse (dataset_dict (current_dataset), is_numeric ? EXPR_NUMBER : EXPR_STRING);
}
/* Returns a new struct compute_trns after initializing its fields. */
if (lex_look_ahead () == '(')
{
/* Vector. */
- lvalue->vector = dict_lookup_vector (default_dict, tokid);
+ lvalue->vector = dict_lookup_vector (dataset_dict (current_dataset), tokid);
if (lvalue->vector == NULL)
{
msg (SE, _("There is no vector named %s."), tokid);
lex_get ();
if (!lex_force_match ('('))
goto lossage;
- lvalue->element = expr_parse (default_dict, EXPR_NUMBER);
+ lvalue->element = expr_parse (dataset_dict (current_dataset), EXPR_NUMBER);
if (lvalue->element == NULL)
goto lossage;
if (!lex_force_match (')'))
{
if (lvalue->vector == NULL)
{
- struct variable *var = dict_lookup_var (default_dict, lvalue->var_name);
+ struct variable *var = dict_lookup_var (dataset_dict (current_dataset), lvalue->var_name);
if (var == NULL)
return NUMERIC;
else
{
if (lvalue->vector == NULL)
{
- compute->variable = dict_lookup_var (default_dict, lvalue->var_name);
+ compute->variable = dict_lookup_var (dataset_dict (current_dataset), lvalue->var_name);
if (compute->variable == NULL)
- compute->variable = dict_create_var_assert (default_dict,
+ compute->variable = dict_create_var_assert (dataset_dict (current_dataset),
lvalue->var_name, 0);
compute->fv = compute->variable->fv;
/* Get destination variable, or at least its name. */
if (!lex_force_id ())
goto fail;
- dv->var = dict_lookup_var (default_dict, tokid);
+ dv->var = dict_lookup_var (dataset_dict (current_dataset), tokid);
if (dv->var != NULL)
{
if (dv->var->type == ALPHA)
crit->next = NULL;
crit->vars = NULL;
- if (!parse_variables (default_dict, &crit->vars, &crit->var_cnt,
+ if (!parse_variables (dataset_dict (current_dataset), &crit->vars, &crit->var_cnt,
PV_DUPLICATE | PV_SAME_TYPE))
goto fail;
pool_register (trns->pool, free, crit->vars);
{
/* It's valid, though motivationally questionable, to count to
the same dest var more than once. */
- dv->var = dict_lookup_var (default_dict, dv->name);
+ dv->var = dict_lookup_var (dataset_dict (current_dataset), dv->name);
if (dv->var == NULL)
- dv->var = dict_create_var_assert (default_dict, dv->name, 0);
+ dv->var = dict_create_var_assert (dataset_dict (current_dataset), dv->name, 0);
}
- add_transformation (count_trns_proc, count_trns_free, trns);
+ add_transformation (current_dataset, count_trns_proc, count_trns_free, trns);
return CMD_SUCCESS;
fail:
cmd_debug_xform_fail (void)
{
- add_transformation (trns_fail, NULL, NULL);
+ add_transformation (current_dataset, trns_fail, NULL, NULL);
return lex_end_of_command ();
}
create_dst_vars (trns);
/* Done. */
- add_transformation (recode_trns_proc, recode_trns_free, trns);
+ add_transformation (current_dataset,
+ recode_trns_proc, recode_trns_free, trns);
}
while (lex_match ('/'));
static bool
parse_src_vars (struct recode_trns *trns)
{
- if (!parse_variables (default_dict, &trns->src_vars, &trns->var_cnt,
+ if (!parse_variables (dataset_dict (current_dataset), &trns->src_vars, &trns->var_cnt,
PV_SAME_TYPE))
return false;
pool_register (trns->pool, free, trns->src_vars);
for (i = 0; i < trns->var_cnt; i++)
{
struct variable *v;
- v = trns->dst_vars[i] = dict_lookup_var (default_dict,
+ v = trns->dst_vars[i] = dict_lookup_var (dataset_dict (current_dataset),
trns->dst_names[i]);
if (v == NULL && trns->dst_type == ALPHA)
{
struct variable **var = &trns->dst_vars[i];
const char *name = trns->dst_names[i];
- *var = dict_lookup_var (default_dict, name);
+ *var = dict_lookup_var (dataset_dict (current_dataset), name);
if (*var == NULL)
- *var = dict_create_var_assert (default_dict, name, 0);
+ *var = dict_create_var_assert (dataset_dict (current_dataset), name, 0);
assert ((*var)->type == trns->dst_type);
}
}
trns->N = b;
trns->m = trns->t = 0;
trns->frac = frac;
- add_transformation (sample_trns_proc, sample_trns_free, trns);
+ add_transformation (current_dataset, sample_trns_proc, sample_trns_free, trns);
return lex_end_of_command ();
}
struct expression *e;
struct select_if_trns *t;
- e = expr_parse (default_dict, EXPR_BOOLEAN);
+ e = expr_parse (dataset_dict (current_dataset), EXPR_BOOLEAN);
if (!e)
return CMD_CASCADING_FAILURE;
t = xmalloc (sizeof *t);
t->e = e;
- add_transformation (select_if_proc, select_if_free, t);
+ add_transformation (current_dataset, select_if_proc, select_if_free, t);
return CMD_SUCCESS;
}
cmd_filter (void)
{
if (lex_match_id ("OFF"))
- dict_set_filter (default_dict, NULL);
+ dict_set_filter (dataset_dict (current_dataset), NULL);
else if (token == '.')
{
msg (SW, _("Syntax error expecting OFF or BY. "
"Turning off case filtering."));
- dict_set_filter (default_dict, NULL);
+ dict_set_filter (dataset_dict (current_dataset), NULL);
}
else
{
return CMD_FAILURE;
}
- dict_set_filter (default_dict, v);
+ dict_set_filter (dataset_dict (current_dataset), v);
}
return lex_end_of_command ();
struct levene_info *l = (struct levene_info *) _l;
const union value *gv = case_data (c, l->v_indep->fv);
struct group_statistics key;
- double weight = dict_get_case_weight (default_dict, c, &warn);
+ double weight = dict_get_case_weight (dataset_dict (current_dataset), c, &warn);
/* Skip the entire case if /MISSING=LISTWISE is set */
if ( l->missing == LEV_LISTWISE )
struct levene_info *l = (struct levene_info *) _l;
- double weight = dict_get_case_weight (default_dict, c, &warn);
+ double weight = dict_get_case_weight (dataset_dict (current_dataset), c, &warn);
const union value *gv = case_data (c, l->v_indep->fv);
struct group_statistics key;
static void
prepare_to_sort_active_file (void)
{
- proc_cancel_temporary_transformations ();
+ proc_cancel_temporary_transformations (current_dataset);
}
/* Sorts the active file in-place according to CRITERIA.
struct casefile *in, *out;
prepare_to_sort_active_file ();
- if (!procedure (NULL, NULL))
+ if (!procedure (current_dataset,NULL, NULL))
return false;
- in = proc_capture_output ();
+ in = proc_capture_output (current_dataset);
out = sort_execute (casefile_get_destructive_reader (in), criteria);
if (out == NULL)
return false;
- proc_set_source (storage_source_create (out));
+ proc_set_source (current_dataset, storage_source_create (out));
return true;
}
cb_data.criteria = criteria;
cb_data.output = NULL;
- if (!multipass_procedure (sort_to_casefile_callback, &cb_data))
+ if (!multipass_procedure (current_dataset,sort_to_casefile_callback, &cb_data))
{
casefile_destroy (cb_data.output);
return NULL;
readln_initialize ();
settings_init ();
random_init ();
- proc_init ();
+ current_dataset = create_dataset ();
if (parse_command_line (argc, argv))
{
for (;;)
{
- int result = cmd_parse (proc_has_source ()
+ int result = cmd_parse (proc_has_source (current_dataset)
? CMD_STATE_DATA : CMD_STATE_INITIAL);
if (result == CMD_EOF || result == CMD_FINISH)
break;
{
terminating = true;
- proc_done ();
+ destroy_dataset (current_dataset);
random_done ();
settings_done ();