pspp-cvs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Pspp-cvs] pspp po/de.po po/pspp.pot src/data/case.c src/d...


From: John Darrington
Subject: [Pspp-cvs] pspp po/de.po po/pspp.pot src/data/case.c src/d...
Date: Mon, 02 Apr 2007 08:55:53 +0000

CVSROOT:        /sources/pspp
Module name:    pspp
Changes by:     John Darrington <jmd>   07/04/02 08:55:52

Modified files:
        po             : de.po pspp.pot 
        src/data       : case.c case.h casefilter.c casefilter.h 
                         cat-routines.h category.c dictionary.c 
                         dictionary.h variable.c variable.h 
        src/language/data-io: get.c list.q print.c 
        src/language/dictionary: delete-variables.c modify-variables.c 
                                 split-file.c sys-file-info.c 
                                 value-labels.c 
        src/language/expressions: optimize.c parse.c private.h 
        src/language/lexer: q2c.c variable-parser.c variable-parser.h 
        src/language/stats: aggregate.c autorecode.c correlations.q 
                            crosstabs.q descriptives.c examine.q flip.c 
                            frequencies.q means.q npar.h npar.q oneway.q 
                            rank.q regression.q sort-criteria.c 
                            sort-criteria.h t-test.q 
        src/language/xforms: count.c recode.c 
        src/libpspp    : hash.h 
        src/math       : group-proc.h group.c levene.c levene.h 
        src/ui/gui     : data-editor.c split-file-dialog.c 
                         transpose-dialog.c 

Log message:
        Changed a lot of non-const pointers to const.
        Patch #5825

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/pspp/po/de.po?cvsroot=pspp&r1=1.43&r2=1.44
http://cvs.savannah.gnu.org/viewcvs/pspp/po/pspp.pot?cvsroot=pspp&r1=1.127&r2=1.128
http://cvs.savannah.gnu.org/viewcvs/pspp/src/data/case.c?cvsroot=pspp&r1=1.10&r2=1.11
http://cvs.savannah.gnu.org/viewcvs/pspp/src/data/case.h?cvsroot=pspp&r1=1.9&r2=1.10
http://cvs.savannah.gnu.org/viewcvs/pspp/src/data/casefilter.c?cvsroot=pspp&r1=1.7&r2=1.8
http://cvs.savannah.gnu.org/viewcvs/pspp/src/data/casefilter.h?cvsroot=pspp&r1=1.4&r2=1.5
http://cvs.savannah.gnu.org/viewcvs/pspp/src/data/cat-routines.h?cvsroot=pspp&r1=1.2&r2=1.3
http://cvs.savannah.gnu.org/viewcvs/pspp/src/data/category.c?cvsroot=pspp&r1=1.6&r2=1.7
http://cvs.savannah.gnu.org/viewcvs/pspp/src/data/dictionary.c?cvsroot=pspp&r1=1.32&r2=1.33
http://cvs.savannah.gnu.org/viewcvs/pspp/src/data/dictionary.h?cvsroot=pspp&r1=1.12&r2=1.13
http://cvs.savannah.gnu.org/viewcvs/pspp/src/data/variable.c?cvsroot=pspp&r1=1.21&r2=1.22
http://cvs.savannah.gnu.org/viewcvs/pspp/src/data/variable.h?cvsroot=pspp&r1=1.20&r2=1.21
http://cvs.savannah.gnu.org/viewcvs/pspp/src/language/data-io/get.c?cvsroot=pspp&r1=1.29&r2=1.30
http://cvs.savannah.gnu.org/viewcvs/pspp/src/language/data-io/list.q?cvsroot=pspp&r1=1.24&r2=1.25
http://cvs.savannah.gnu.org/viewcvs/pspp/src/language/data-io/print.c?cvsroot=pspp&r1=1.24&r2=1.25
http://cvs.savannah.gnu.org/viewcvs/pspp/src/language/dictionary/delete-variables.c?cvsroot=pspp&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/pspp/src/language/dictionary/modify-variables.c?cvsroot=pspp&r1=1.16&r2=1.17
http://cvs.savannah.gnu.org/viewcvs/pspp/src/language/dictionary/split-file.c?cvsroot=pspp&r1=1.14&r2=1.15
http://cvs.savannah.gnu.org/viewcvs/pspp/src/language/dictionary/sys-file-info.c?cvsroot=pspp&r1=1.22&r2=1.23
http://cvs.savannah.gnu.org/viewcvs/pspp/src/language/dictionary/value-labels.c?cvsroot=pspp&r1=1.15&r2=1.16
http://cvs.savannah.gnu.org/viewcvs/pspp/src/language/expressions/optimize.c?cvsroot=pspp&r1=1.6&r2=1.7
http://cvs.savannah.gnu.org/viewcvs/pspp/src/language/expressions/parse.c?cvsroot=pspp&r1=1.24&r2=1.25
http://cvs.savannah.gnu.org/viewcvs/pspp/src/language/expressions/private.h?cvsroot=pspp&r1=1.9&r2=1.10
http://cvs.savannah.gnu.org/viewcvs/pspp/src/language/lexer/q2c.c?cvsroot=pspp&r1=1.21&r2=1.22
http://cvs.savannah.gnu.org/viewcvs/pspp/src/language/lexer/variable-parser.c?cvsroot=pspp&r1=1.15&r2=1.16
http://cvs.savannah.gnu.org/viewcvs/pspp/src/language/lexer/variable-parser.h?cvsroot=pspp&r1=1.7&r2=1.8
http://cvs.savannah.gnu.org/viewcvs/pspp/src/language/stats/aggregate.c?cvsroot=pspp&r1=1.30&r2=1.31
http://cvs.savannah.gnu.org/viewcvs/pspp/src/language/stats/autorecode.c?cvsroot=pspp&r1=1.18&r2=1.19
http://cvs.savannah.gnu.org/viewcvs/pspp/src/language/stats/correlations.q?cvsroot=pspp&r1=1.15&r2=1.16
http://cvs.savannah.gnu.org/viewcvs/pspp/src/language/stats/crosstabs.q?cvsroot=pspp&r1=1.28&r2=1.29
http://cvs.savannah.gnu.org/viewcvs/pspp/src/language/stats/descriptives.c?cvsroot=pspp&r1=1.22&r2=1.23
http://cvs.savannah.gnu.org/viewcvs/pspp/src/language/stats/examine.q?cvsroot=pspp&r1=1.22&r2=1.23
http://cvs.savannah.gnu.org/viewcvs/pspp/src/language/stats/flip.c?cvsroot=pspp&r1=1.22&r2=1.23
http://cvs.savannah.gnu.org/viewcvs/pspp/src/language/stats/frequencies.q?cvsroot=pspp&r1=1.29&r2=1.30
http://cvs.savannah.gnu.org/viewcvs/pspp/src/language/stats/means.q?cvsroot=pspp&r1=1.12&r2=1.13
http://cvs.savannah.gnu.org/viewcvs/pspp/src/language/stats/npar.h?cvsroot=pspp&r1=1.2&r2=1.3
http://cvs.savannah.gnu.org/viewcvs/pspp/src/language/stats/npar.q?cvsroot=pspp&r1=1.3&r2=1.4
http://cvs.savannah.gnu.org/viewcvs/pspp/src/language/stats/oneway.q?cvsroot=pspp&r1=1.21&r2=1.22
http://cvs.savannah.gnu.org/viewcvs/pspp/src/language/stats/rank.q?cvsroot=pspp&r1=1.27&r2=1.28
http://cvs.savannah.gnu.org/viewcvs/pspp/src/language/stats/regression.q?cvsroot=pspp&r1=1.47&r2=1.48
http://cvs.savannah.gnu.org/viewcvs/pspp/src/language/stats/sort-criteria.c?cvsroot=pspp&r1=1.7&r2=1.8
http://cvs.savannah.gnu.org/viewcvs/pspp/src/language/stats/sort-criteria.h?cvsroot=pspp&r1=1.4&r2=1.5
http://cvs.savannah.gnu.org/viewcvs/pspp/src/language/stats/t-test.q?cvsroot=pspp&r1=1.20&r2=1.21
http://cvs.savannah.gnu.org/viewcvs/pspp/src/language/xforms/count.c?cvsroot=pspp&r1=1.15&r2=1.16
http://cvs.savannah.gnu.org/viewcvs/pspp/src/language/xforms/recode.c?cvsroot=pspp&r1=1.19&r2=1.20
http://cvs.savannah.gnu.org/viewcvs/pspp/src/libpspp/hash.h?cvsroot=pspp&r1=1.7&r2=1.8
http://cvs.savannah.gnu.org/viewcvs/pspp/src/math/group-proc.h?cvsroot=pspp&r1=1.2&r2=1.3
http://cvs.savannah.gnu.org/viewcvs/pspp/src/math/group.c?cvsroot=pspp&r1=1.5&r2=1.6
http://cvs.savannah.gnu.org/viewcvs/pspp/src/math/levene.c?cvsroot=pspp&r1=1.9&r2=1.10
http://cvs.savannah.gnu.org/viewcvs/pspp/src/math/levene.h?cvsroot=pspp&r1=1.5&r2=1.6
http://cvs.savannah.gnu.org/viewcvs/pspp/src/ui/gui/data-editor.c?cvsroot=pspp&r1=1.21&r2=1.22
http://cvs.savannah.gnu.org/viewcvs/pspp/src/ui/gui/split-file-dialog.c?cvsroot=pspp&r1=1.2&r2=1.3
http://cvs.savannah.gnu.org/viewcvs/pspp/src/ui/gui/transpose-dialog.c?cvsroot=pspp&r1=1.4&r2=1.5

Patches:
Index: po/de.po
===================================================================
RCS file: /sources/pspp/pspp/po/de.po,v
retrieving revision 1.43
retrieving revision 1.44
diff -u -b -r1.43 -r1.44
--- po/de.po    30 Mar 2007 23:39:33 -0000      1.43
+++ po/de.po    2 Apr 2007 08:55:51 -0000       1.44
@@ -10,7 +10,7 @@
 msgstr ""
 "Project-Id-Version: PSPP 0.4.2\n"
 "Report-Msgid-Bugs-To: address@hidden"
-"POT-Creation-Date: 2007-03-26 18:17+0800\n"
+"POT-Creation-Date: 2007-04-01 13:38+0800\n"
 "PO-Revision-Date: 2006-05-26 17:49+0800\n"
 "Last-Translator: John Darrington <address@hidden>\n"
 "Language-Team: German <address@hidden>\n"
@@ -176,13 +176,13 @@
 msgid "Month number %f is not between 1 and 12."
 msgstr ""
 
-#: src/data/dictionary.c:717
+#: src/data/dictionary.c:724
 msgid ""
 "At least one case in the data file had a weight value that was user-missing, "
 "system-missing, zero, or negative.  These case(s) were ignored."
 msgstr ""
 
-#: src/data/dictionary.c:1238
+#: src/data/dictionary.c:1245
 msgid "Variable suffix too large."
 msgstr ""
 
@@ -309,13 +309,13 @@
 msgstr ""
 
 #: src/data/format.c:310 src/data/por-file-reader.c:489
-#: src/data/sys-file-reader.c:602 src/ui/gui/data-editor.glade:1066
+#: src/data/sys-file-reader.c:602 src/ui/gui/data-editor.glade:1075
 #: src/ui/gui/psppire-var-store.c:481
 msgid "String"
 msgstr "Zeichenkette"
 
 #: src/data/format.c:310 src/data/por-file-reader.c:489
-#: src/data/sys-file-reader.c:602 src/ui/gui/data-editor.glade:962
+#: src/data/sys-file-reader.c:602 src/ui/gui/data-editor.glade:971
 #: src/ui/gui/psppire-var-store.c:474
 msgid "Numeric"
 msgstr "Nummer"
@@ -826,15 +826,15 @@
 msgid "`%s' may not be used as a variable name because it is a reserved word."
 msgstr ""
 
-#: src/data/variable.c:964
+#: src/data/variable.c:966
 msgid "ordinary"
 msgstr ""
 
-#: src/data/variable.c:966
+#: src/data/variable.c:968
 msgid "system"
 msgstr ""
 
-#: src/data/variable.c:968
+#: src/data/variable.c:970
 msgid "scratch"
 msgstr ""
 
@@ -1036,7 +1036,7 @@
 #: src/language/dictionary/sys-file-info.c:160
 #: src/language/dictionary/sys-file-info.c:395
 #: src/language/dictionary/sys-file-info.c:620
-#: src/language/stats/descriptives.c:879
+#: src/language/stats/descriptives.c:880
 msgid "Variable"
 msgstr ""
 
@@ -1291,7 +1291,7 @@
 "REREAD: Column numbers must be positive finite numbers.  Column set to 1."
 msgstr ""
 
-#: src/language/data-io/list.q:154 src/language/stats/descriptives.c:364
+#: src/language/data-io/list.q:154 src/language/stats/descriptives.c:365
 msgid "No variables specified."
 msgstr ""
 
@@ -1387,7 +1387,7 @@
 msgstr[1] ""
 
 #: src/language/data-io/print-space.c:75 src/language/lexer/lexer.c:465
-#: src/language/stats/autorecode.c:153 src/language/xforms/select-if.c:61
+#: src/language/stats/autorecode.c:154 src/language/xforms/select-if.c:61
 msgid "expecting end of command"
 msgstr ""
 
@@ -1426,7 +1426,7 @@
 "will be made permanent."
 msgstr ""
 
-#: src/language/dictionary/delete-variables.c:48
+#: src/language/dictionary/delete-variables.c:49
 msgid ""
 "DELETE VARIABLES may not be used to delete all variables from the active "
 "file dictionary.  Use NEW FILE instead."
@@ -1575,8 +1575,8 @@
 
 #: src/language/dictionary/split-file.c:86
 #: src/language/dictionary/sys-file-info.c:549
-#: src/language/stats/crosstabs.q:1118 src/language/stats/crosstabs.q:1145
-#: src/language/stats/crosstabs.q:1165 src/language/stats/crosstabs.q:1187
+#: src/language/stats/crosstabs.q:1119 src/language/stats/crosstabs.q:1146
+#: src/language/stats/crosstabs.q:1166 src/language/stats/crosstabs.q:1188
 #: src/language/stats/examine.q:1189 src/language/stats/frequencies.q:1145
 #: src/language/stats/frequencies.q:1269
 msgid "Value"
@@ -2120,57 +2120,57 @@
 msgid "expecting number or data string"
 msgstr ""
 
-#: src/language/lexer/variable-parser.c:54
+#: src/language/lexer/variable-parser.c:64
 msgid "expecting variable name"
 msgstr ""
 
-#: src/language/lexer/variable-parser.c:64
+#: src/language/lexer/variable-parser.c:74
 #, c-format
 msgid "%s is not a variable name."
 msgstr ""
 
-#: src/language/lexer/variable-parser.c:173
+#: src/language/lexer/variable-parser.c:183
 #, c-format
 msgid ""
 "%s is not a numeric variable.  It will not be included in the variable list."
 msgstr ""
 
-#: src/language/lexer/variable-parser.c:176
+#: src/language/lexer/variable-parser.c:186
 #, c-format
 msgid ""
 "%s is not a string variable.  It will not be included in the variable list."
 msgstr ""
 
-#: src/language/lexer/variable-parser.c:180
+#: src/language/lexer/variable-parser.c:190
 #, c-format
 msgid "Scratch variables (such as %s) are not allowed here."
 msgstr ""
 
-#: src/language/lexer/variable-parser.c:184
+#: src/language/lexer/variable-parser.c:194
 #, c-format
 msgid ""
 "%s and %s are not the same type.  All variables in this variable list must "
 "be of the same type.  %s will be omitted from the list."
 msgstr ""
 
-#: src/language/lexer/variable-parser.c:190
+#: src/language/lexer/variable-parser.c:200
 #, c-format
 msgid ""
 "%s and %s are string variables with different widths.  All variables in this "
 "variable list must have the same width.  %s will be omttied from the list."
 msgstr ""
 
-#: src/language/lexer/variable-parser.c:195
+#: src/language/lexer/variable-parser.c:205
 #, c-format
 msgid "Variable %s appears twice in variable list."
 msgstr ""
 
-#: src/language/lexer/variable-parser.c:308
+#: src/language/lexer/variable-parser.c:318
 #, c-format
 msgid "%s TO %s is not valid syntax since %s precedes %s in the dictionary."
 msgstr ""
 
-#: src/language/lexer/variable-parser.c:316
+#: src/language/lexer/variable-parser.c:326
 #, c-format
 msgid ""
 "When using the TO keyword to specify several variables, both variables must "
@@ -2178,19 +2178,19 @@
 "system variables.  %s is a %s variable, whereas %s is %s."
 msgstr ""
 
-#: src/language/lexer/variable-parser.c:390
+#: src/language/lexer/variable-parser.c:400
 msgid "incorrect use of TO convention"
 msgstr ""
 
-#: src/language/lexer/variable-parser.c:433
+#: src/language/lexer/variable-parser.c:443
 msgid "Scratch variables not allowed here."
 msgstr ""
 
-#: src/language/lexer/variable-parser.c:455
+#: src/language/lexer/variable-parser.c:465
 msgid "Prefixes don't match in use of TO convention."
 msgstr ""
 
-#: src/language/lexer/variable-parser.c:460
+#: src/language/lexer/variable-parser.c:470
 msgid "Bad bounds in use of TO convention."
 msgstr ""
 
@@ -2248,17 +2248,17 @@
 "contains the aggregate variables and the break variables."
 msgstr ""
 
-#: src/language/stats/autorecode.c:135
+#: src/language/stats/autorecode.c:136
 #, c-format
 msgid "Source variable count (%u) does not match target variable count (%u)."
 msgstr ""
 
-#: src/language/stats/autorecode.c:163
+#: src/language/stats/autorecode.c:164
 #, c-format
 msgid "Target variable %s duplicates existing variable %s."
 msgstr ""
 
-#: src/language/stats/autorecode.c:170
+#: src/language/stats/autorecode.c:171
 #, c-format
 msgid "Duplicate variable name %s among target variables."
 msgstr ""
@@ -2281,8 +2281,8 @@
 msgstr ""
 
 #: src/language/stats/binomial.c:208 src/language/stats/chisquare.c:237
-#: src/language/stats/chisquare.c:297 src/language/stats/crosstabs.q:825
-#: src/language/stats/crosstabs.q:1025 src/language/stats/crosstabs.q:1748
+#: src/language/stats/chisquare.c:297 src/language/stats/crosstabs.q:826
+#: src/language/stats/crosstabs.q:1026 src/language/stats/crosstabs.q:1749
 #: src/language/stats/examine.q:909 src/language/stats/frequencies.q:1222
 #: src/language/stats/oneway.q:307 src/language/stats/oneway.q:471
 #: src/language/stats/regression.q:324
@@ -2290,15 +2290,15 @@
 msgstr ""
 
 #: src/language/stats/binomial.c:253 src/language/stats/chisquare.c:260
-#: src/language/stats/crosstabs.q:1143 src/language/stats/crosstabs.q:1184
+#: src/language/stats/crosstabs.q:1144 src/language/stats/crosstabs.q:1185
 msgid "Category"
 msgstr ""
 
-#: src/language/stats/binomial.c:254 src/language/stats/crosstabs.q:835
+#: src/language/stats/binomial.c:254 src/language/stats/crosstabs.q:836
 #: src/language/stats/examine.q:985 src/language/stats/frequencies.q:1518
 #: src/language/stats/npar-summary.c:124 src/language/stats/oneway.q:392
-#: src/language/stats/t-test.q:681 src/language/stats/t-test.q:704
-#: src/language/stats/t-test.q:830 src/language/stats/t-test.q:1367
+#: src/language/stats/t-test.q:680 src/language/stats/t-test.q:703
+#: src/language/stats/t-test.q:829 src/language/stats/t-test.q:1366
 msgid "N"
 msgstr ""
 
@@ -2347,10 +2347,10 @@
 msgid "Chi-Square"
 msgstr ""
 
-#: src/language/stats/chisquare.c:325 src/language/stats/crosstabs.q:1119
+#: src/language/stats/chisquare.c:325 src/language/stats/crosstabs.q:1120
 #: src/language/stats/oneway.q:280 src/language/stats/oneway.q:681
-#: src/language/stats/regression.q:317 src/language/stats/t-test.q:981
-#: src/language/stats/t-test.q:1173 src/language/stats/t-test.q:1266
+#: src/language/stats/regression.q:317 src/language/stats/t-test.q:980
+#: src/language/stats/t-test.q:1172 src/language/stats/t-test.q:1265
 msgid "df"
 msgstr ""
 
@@ -2367,280 +2367,280 @@
 msgid "Write mode ALL not allowed in general mode.  Assuming WRITE=CELLS."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:337
+#: src/language/stats/crosstabs.q:338
 msgid "Too many crosstabulation variables or dimensions."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:347
+#: src/language/stats/crosstabs.q:348
 msgid "expecting BY"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:414
+#: src/language/stats/crosstabs.q:415
 msgid "VARIABLES must be specified before TABLES."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:452
+#: src/language/stats/crosstabs.q:453
 #, c-format
 msgid "Maximum value (%ld) less than minimum value (%ld)."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:820
+#: src/language/stats/crosstabs.q:821
 msgid "Summary."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:822 src/language/stats/examine.q:973
+#: src/language/stats/crosstabs.q:823 src/language/stats/examine.q:973
 msgid "Cases"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:823 src/language/stats/examine.q:907
+#: src/language/stats/crosstabs.q:824 src/language/stats/examine.q:907
 #: src/language/stats/frequencies.q:1143 src/language/stats/frequencies.q:1519
 msgid "Valid"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:824 src/language/stats/examine.q:908
+#: src/language/stats/crosstabs.q:825 src/language/stats/examine.q:908
 #: src/language/stats/frequencies.q:1213 src/language/stats/frequencies.q:1520
 #: src/ui/gui/var-sheet.c:73
 msgid "Missing"
 msgstr "Löse"
 
-#: src/language/stats/crosstabs.q:836 src/language/stats/examine.q:988
+#: src/language/stats/crosstabs.q:837 src/language/stats/examine.q:988
 #: src/language/stats/frequencies.q:1147 src/language/stats/frequencies.q:1148
 #: src/language/stats/frequencies.q:1149
 msgid "Percent"
 msgstr "Prozent"
 
-#: src/language/stats/crosstabs.q:1077
+#: src/language/stats/crosstabs.q:1078
 msgid "count"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1078
+#: src/language/stats/crosstabs.q:1079
 msgid "row %"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1079
+#: src/language/stats/crosstabs.q:1080
 msgid "column %"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1080
+#: src/language/stats/crosstabs.q:1081
 msgid "total %"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1081
+#: src/language/stats/crosstabs.q:1082
 msgid "expected"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1082
+#: src/language/stats/crosstabs.q:1083
 msgid "residual"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1083
+#: src/language/stats/crosstabs.q:1084
 msgid "std. resid."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1084
+#: src/language/stats/crosstabs.q:1085
 msgid "adj. resid."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1114
+#: src/language/stats/crosstabs.q:1115
 msgid "Chi-square tests."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1117 src/language/stats/crosstabs.q:1144
-#: src/language/stats/crosstabs.q:1164 src/language/stats/crosstabs.q:1185
+#: src/language/stats/crosstabs.q:1118 src/language/stats/crosstabs.q:1145
+#: src/language/stats/crosstabs.q:1165 src/language/stats/crosstabs.q:1186
 #: src/language/stats/examine.q:1420
 msgid "Statistic"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1121
+#: src/language/stats/crosstabs.q:1122
 msgid "Asymp. Sig. (2-sided)"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1123
+#: src/language/stats/crosstabs.q:1124
 msgid "Exact. Sig. (2-sided)"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1125
+#: src/language/stats/crosstabs.q:1126
 msgid "Exact. Sig. (1-sided)"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1140
+#: src/language/stats/crosstabs.q:1141
 msgid "Symmetric measures."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1146 src/language/stats/crosstabs.q:1188
+#: src/language/stats/crosstabs.q:1147 src/language/stats/crosstabs.q:1189
 msgid "Asymp. Std. Error"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1147 src/language/stats/crosstabs.q:1189
+#: src/language/stats/crosstabs.q:1148 src/language/stats/crosstabs.q:1190
 msgid "Approx. T"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1148 src/language/stats/crosstabs.q:1190
+#: src/language/stats/crosstabs.q:1149 src/language/stats/crosstabs.q:1191
 msgid "Approx. Sig."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1159
+#: src/language/stats/crosstabs.q:1160
 msgid "Risk estimate."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1163
+#: src/language/stats/crosstabs.q:1164
 #, c-format
 msgid "95%% Confidence Interval"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1166 src/language/stats/t-test.q:985
-#: src/language/stats/t-test.q:1170 src/language/stats/t-test.q:1269
+#: src/language/stats/crosstabs.q:1167 src/language/stats/t-test.q:984
+#: src/language/stats/t-test.q:1169 src/language/stats/t-test.q:1268
 msgid "Lower"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1167 src/language/stats/t-test.q:986
-#: src/language/stats/t-test.q:1171 src/language/stats/t-test.q:1270
+#: src/language/stats/crosstabs.q:1168 src/language/stats/t-test.q:985
+#: src/language/stats/t-test.q:1170 src/language/stats/t-test.q:1269
 msgid "Upper"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1181
+#: src/language/stats/crosstabs.q:1182
 msgid "Directional measures."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1186 src/ui/gui/var-sheet.c:68
+#: src/language/stats/crosstabs.q:1187 src/ui/gui/var-sheet.c:68
 msgid "Type"
 msgstr "Typ"
 
-#: src/language/stats/crosstabs.q:1940
+#: src/language/stats/crosstabs.q:1941
 msgid "Pearson Chi-Square"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1941
+#: src/language/stats/crosstabs.q:1942
 msgid "Likelihood Ratio"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1942
+#: src/language/stats/crosstabs.q:1943
 msgid "Fisher's Exact Test"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1943
+#: src/language/stats/crosstabs.q:1944
 msgid "Continuity Correction"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1944
+#: src/language/stats/crosstabs.q:1945
 msgid "Linear-by-Linear Association"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1981 src/language/stats/crosstabs.q:2051
-#: src/language/stats/crosstabs.q:2110
+#: src/language/stats/crosstabs.q:1982 src/language/stats/crosstabs.q:2052
+#: src/language/stats/crosstabs.q:2111
 msgid "N of Valid Cases"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1997 src/language/stats/crosstabs.q:2126
+#: src/language/stats/crosstabs.q:1998 src/language/stats/crosstabs.q:2127
 msgid "Nominal by Nominal"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1998 src/language/stats/crosstabs.q:2127
+#: src/language/stats/crosstabs.q:1999 src/language/stats/crosstabs.q:2128
 msgid "Ordinal by Ordinal"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1999
+#: src/language/stats/crosstabs.q:2000
 msgid "Interval by Interval"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2000
+#: src/language/stats/crosstabs.q:2001
 msgid "Measure of Agreement"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2005
+#: src/language/stats/crosstabs.q:2006
 msgid "Phi"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2006
+#: src/language/stats/crosstabs.q:2007
 msgid "Cramer's V"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2007
+#: src/language/stats/crosstabs.q:2008
 msgid "Contingency Coefficient"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2008
+#: src/language/stats/crosstabs.q:2009
 msgid "Kendall's tau-b"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2009
+#: src/language/stats/crosstabs.q:2010
 msgid "Kendall's tau-c"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2010
+#: src/language/stats/crosstabs.q:2011
 msgid "Gamma"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2011
+#: src/language/stats/crosstabs.q:2012
 msgid "Spearman Correlation"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2012
+#: src/language/stats/crosstabs.q:2013
 msgid "Pearson's R"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2013
+#: src/language/stats/crosstabs.q:2014
 msgid "Kappa"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2083
+#: src/language/stats/crosstabs.q:2084
 #, c-format
 msgid "Odds Ratio for %s (%g / %g)"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2086
+#: src/language/stats/crosstabs.q:2087
 #, c-format
 msgid "Odds Ratio for %s (%.*s / %.*s)"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2094
+#: src/language/stats/crosstabs.q:2095
 #, c-format
 msgid "For cohort %s = %g"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2097
+#: src/language/stats/crosstabs.q:2098
 #, c-format
 msgid "For cohort %s = %.*s"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2128
+#: src/language/stats/crosstabs.q:2129
 msgid "Nominal by Interval"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2133
+#: src/language/stats/crosstabs.q:2134
 msgid "Lambda"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2134
+#: src/language/stats/crosstabs.q:2135
 msgid "Goodman and Kruskal tau"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2135
+#: src/language/stats/crosstabs.q:2136
 msgid "Uncertainty Coefficient"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2136
+#: src/language/stats/crosstabs.q:2137
 msgid "Somers' d"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2137
+#: src/language/stats/crosstabs.q:2138
 msgid "Eta"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2142
+#: src/language/stats/crosstabs.q:2143
 msgid "Symmetric"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2143 src/language/stats/crosstabs.q:2144
+#: src/language/stats/crosstabs.q:2144 src/language/stats/crosstabs.q:2145
 #, c-format
 msgid "%s Dependent"
 msgstr ""
 
 #: src/language/stats/descriptives.c:106 src/language/stats/examine.q:1525
 #: src/language/stats/frequencies.q:125 src/language/stats/npar-summary.c:127
-#: src/language/stats/oneway.q:393 src/language/stats/t-test.q:682
-#: src/language/stats/t-test.q:705 src/language/stats/t-test.q:829
-#: src/language/stats/t-test.q:1167
+#: src/language/stats/oneway.q:393 src/language/stats/t-test.q:681
+#: src/language/stats/t-test.q:704 src/language/stats/t-test.q:828
+#: src/language/stats/t-test.q:1166
 msgid "Mean"
 msgstr ""
 
@@ -2696,47 +2696,47 @@
 msgid "Sum"
 msgstr ""
 
-#: src/language/stats/descriptives.c:346
+#: src/language/stats/descriptives.c:347
 #, c-format
 msgid "Z-score variable name %s would be a duplicate variable name."
 msgstr ""
 
-#: src/language/stats/descriptives.c:449
+#: src/language/stats/descriptives.c:450
 msgid "expecting statistic name: reverting to default"
 msgstr ""
 
-#: src/language/stats/descriptives.c:522
+#: src/language/stats/descriptives.c:523
 msgid ""
 "Ran out of generic names for Z-score variables.  There are only 126 generic "
 "names: ZSC001-ZSC0999, STDZ01-STDZ09, ZZZZ01-ZZZZ09, ZQZQ01-ZQZQ09."
 msgstr ""
 
-#: src/language/stats/descriptives.c:554
+#: src/language/stats/descriptives.c:555
 msgid "Mapping of variables to corresponding Z-scores."
 msgstr ""
 
-#: src/language/stats/descriptives.c:559
+#: src/language/stats/descriptives.c:560
 msgid "Source"
 msgstr ""
 
-#: src/language/stats/descriptives.c:560
+#: src/language/stats/descriptives.c:561
 msgid "Target"
 msgstr ""
 
-#: src/language/stats/descriptives.c:670
+#: src/language/stats/descriptives.c:671
 #, c-format
 msgid "Z-score of %s"
 msgstr ""
 
-#: src/language/stats/descriptives.c:882
+#: src/language/stats/descriptives.c:883
 msgid "Valid N"
 msgstr ""
 
-#: src/language/stats/descriptives.c:883
+#: src/language/stats/descriptives.c:884
 msgid "Missing N"
 msgstr ""
 
-#: src/language/stats/descriptives.c:910
+#: src/language/stats/descriptives.c:911
 #, c-format
 msgid "Valid cases = %g; cases with missing value(s) = %g."
 msgstr ""
@@ -2803,9 +2803,9 @@
 msgstr ""
 
 #: src/language/stats/examine.q:1617 src/language/stats/npar-summary.c:130
-#: src/language/stats/oneway.q:394 src/language/stats/t-test.q:683
-#: src/language/stats/t-test.q:706 src/language/stats/t-test.q:831
-#: src/language/stats/t-test.q:1168
+#: src/language/stats/oneway.q:394 src/language/stats/t-test.q:682
+#: src/language/stats/t-test.q:705 src/language/stats/t-test.q:830
+#: src/language/stats/t-test.q:1167
 msgid "Std. Deviation"
 msgstr ""
 
@@ -3035,7 +3035,7 @@
 "exactly %d values."
 msgstr ""
 
-#: src/language/stats/npar.q:422 src/language/stats/t-test.q:485
+#: src/language/stats/npar.q:422 src/language/stats/t-test.q:484
 #, c-format
 msgid ""
 "PAIRED was specified but the number of variables preceding WITH (%d) did not "
@@ -3081,7 +3081,7 @@
 msgstr ""
 
 #: src/language/stats/oneway.q:282 src/language/stats/regression.q:319
-#: src/language/stats/t-test.q:978
+#: src/language/stats/t-test.q:977
 msgid "F"
 msgstr ""
 
@@ -3135,13 +3135,13 @@
 msgstr ""
 
 #: src/language/stats/oneway.q:680 src/language/stats/regression.q:223
-#: src/language/stats/t-test.q:980 src/language/stats/t-test.q:1172
-#: src/language/stats/t-test.q:1265
+#: src/language/stats/t-test.q:979 src/language/stats/t-test.q:1171
+#: src/language/stats/t-test.q:1264
 msgid "t"
 msgstr ""
 
-#: src/language/stats/oneway.q:682 src/language/stats/t-test.q:982
-#: src/language/stats/t-test.q:1174 src/language/stats/t-test.q:1267
+#: src/language/stats/oneway.q:682 src/language/stats/t-test.q:981
+#: src/language/stats/t-test.q:1173 src/language/stats/t-test.q:1266
 msgid "Sig. (2-tailed)"
 msgstr ""
 
@@ -3258,7 +3258,7 @@
 msgid "Coefficient Correlations"
 msgstr ""
 
-#: src/language/stats/regression.q:1147
+#: src/language/stats/regression.q:1181
 msgid "Dependent variable must be numeric."
 msgstr ""
 
@@ -3282,115 +3282,115 @@
 msgid "VARIABLES subcommand is not appropriate with PAIRS"
 msgstr ""
 
-#: src/language/stats/t-test.q:335
+#: src/language/stats/t-test.q:334
 msgid "One or more VARIABLES must be specified."
 msgstr ""
 
-#: src/language/stats/t-test.q:379
+#: src/language/stats/t-test.q:378
 #, c-format
 msgid "Long string variable %s is not valid here."
 msgstr ""
 
-#: src/language/stats/t-test.q:399 src/language/stats/t-test.q:413
+#: src/language/stats/t-test.q:398 src/language/stats/t-test.q:412
 msgid ""
 "When applying GROUPS to a string variable, two values must be specified."
 msgstr ""
 
-#: src/language/stats/t-test.q:502
+#: src/language/stats/t-test.q:501
 msgid "At least two variables must be specified on PAIRS."
 msgstr ""
 
-#: src/language/stats/t-test.q:679
+#: src/language/stats/t-test.q:678
 msgid "One-Sample Statistics"
 msgstr ""
 
-#: src/language/stats/t-test.q:684 src/language/stats/t-test.q:707
-#: src/language/stats/t-test.q:832
+#: src/language/stats/t-test.q:683 src/language/stats/t-test.q:706
+#: src/language/stats/t-test.q:831
 msgid "SE. Mean"
 msgstr ""
 
-#: src/language/stats/t-test.q:702
+#: src/language/stats/t-test.q:701
 msgid "Group Statistics"
 msgstr ""
 
-#: src/language/stats/t-test.q:826
+#: src/language/stats/t-test.q:825
 msgid "Paired Sample Statistics"
 msgstr ""
 
-#: src/language/stats/t-test.q:848 src/language/stats/t-test.q:1193
-#: src/language/stats/t-test.q:1384
+#: src/language/stats/t-test.q:847 src/language/stats/t-test.q:1192
+#: src/language/stats/t-test.q:1383
 #, c-format
 msgid "Pair %d"
 msgstr ""
 
-#: src/language/stats/t-test.q:966
+#: src/language/stats/t-test.q:965
 msgid "Independent Samples Test"
 msgstr ""
 
-#: src/language/stats/t-test.q:974
+#: src/language/stats/t-test.q:973
 msgid "Levene's Test for Equality of Variances"
 msgstr ""
 
-#: src/language/stats/t-test.q:976
+#: src/language/stats/t-test.q:975
 msgid "t-test for Equality of Means"
 msgstr ""
 
-#: src/language/stats/t-test.q:979 src/language/stats/t-test.q:1369
+#: src/language/stats/t-test.q:978 src/language/stats/t-test.q:1368
 msgid "Sig."
 msgstr ""
 
-#: src/language/stats/t-test.q:983 src/language/stats/t-test.q:1268
+#: src/language/stats/t-test.q:982 src/language/stats/t-test.q:1267
 msgid "Mean Difference"
 msgstr ""
 
-#: src/language/stats/t-test.q:984
+#: src/language/stats/t-test.q:983
 msgid "Std. Error Difference"
 msgstr ""
 
-#: src/language/stats/t-test.q:989 src/language/stats/t-test.q:1164
-#: src/language/stats/t-test.q:1260
+#: src/language/stats/t-test.q:988 src/language/stats/t-test.q:1163
+#: src/language/stats/t-test.q:1259
 #, c-format
 msgid "%g%% Confidence Interval of the Difference"
 msgstr ""
 
-#: src/language/stats/t-test.q:1044
+#: src/language/stats/t-test.q:1043
 msgid "Equal variances assumed"
 msgstr ""
 
-#: src/language/stats/t-test.q:1096
+#: src/language/stats/t-test.q:1095
 msgid "Equal variances not assumed"
 msgstr ""
 
-#: src/language/stats/t-test.q:1154
+#: src/language/stats/t-test.q:1153
 msgid "Paired Samples Test"
 msgstr ""
 
-#: src/language/stats/t-test.q:1157
+#: src/language/stats/t-test.q:1156
 msgid "Paired Differences"
 msgstr ""
 
-#: src/language/stats/t-test.q:1169
+#: src/language/stats/t-test.q:1168
 msgid "Std. Error Mean"
 msgstr ""
 
-#: src/language/stats/t-test.q:1249
+#: src/language/stats/t-test.q:1248
 msgid "One-Sample Test"
 msgstr ""
 
-#: src/language/stats/t-test.q:1254
+#: src/language/stats/t-test.q:1253
 #, c-format
 msgid "Test Value = %f"
 msgstr ""
 
-#: src/language/stats/t-test.q:1364
+#: src/language/stats/t-test.q:1363
 msgid "Paired Samples Correlations"
 msgstr ""
 
-#: src/language/stats/t-test.q:1368
+#: src/language/stats/t-test.q:1367
 msgid "Correlation"
 msgstr ""
 
-#: src/language/stats/t-test.q:1387
+#: src/language/stats/t-test.q:1386
 #, c-format
 msgid "%s & %s"
 msgstr ""
@@ -4134,105 +4134,122 @@
 msgid "Style of bevel around the custom entry button"
 msgstr ""
 
-#: src/ui/gui/data-editor.c:159
+#: src/ui/gui/data-editor.c:161
 #, fuzzy
 msgid "Weights"
 msgstr "Rechts"
 
-#: src/ui/gui/data-editor.c:160
+#: src/ui/gui/data-editor.c:162
 msgid "Weight cases by variable"
 msgstr ""
 
-#: src/ui/gui/data-editor.c:169 src/ui/gui/data-editor.glade:294
+#: src/ui/gui/data-editor.c:171 src/ui/gui/data-editor.glade:293
 msgid "Transpose"
 msgstr ""
 
-#: src/ui/gui/data-editor.c:170
+#: src/ui/gui/data-editor.c:172
 msgid "Transpose the cases with the variables"
 msgstr ""
 
-#: src/ui/gui/data-editor.c:494
+#: src/ui/gui/data-editor.c:183
+#, fuzzy
+msgid "Split"
+msgstr "Alle Datei"
+
+#: src/ui/gui/data-editor.c:184
+msgid "Split the active file"
+msgstr ""
+
+#: src/ui/gui/data-editor.c:194
+msgid "Sort"
+msgstr ""
+
+#: src/ui/gui/data-editor.c:195
+msgid "Sort cases in the active file"
+msgstr ""
+
+#: src/ui/gui/data-editor.c:531
 msgid "Font Selection"
 msgstr "Schriftwahlung"
 
-#: src/ui/gui/data-editor.c:672
+#: src/ui/gui/data-editor.c:709
 msgid "No Split"
 msgstr ""
 
-#: src/ui/gui/data-editor.c:680
+#: src/ui/gui/data-editor.c:717
 #, fuzzy
 msgid "Split by "
 msgstr "Alle Datei"
 
-#: src/ui/gui/data-editor.c:705
+#: src/ui/gui/data-editor.c:742
 msgid "Filter off"
 msgstr ""
 
-#: src/ui/gui/data-editor.c:718
+#: src/ui/gui/data-editor.c:755
 #, c-format
 msgid "Filter by %s"
 msgstr ""
 
-#: src/ui/gui/data-editor.c:736
+#: src/ui/gui/data-editor.c:773
 msgid "Weights off"
 msgstr ""
 
-#: src/ui/gui/data-editor.c:749
+#: src/ui/gui/data-editor.c:786
 #, c-format
 msgid "Weight by %s"
 msgstr ""
 
-#: src/ui/gui/data-editor.c:772 src/ui/gui/data-editor.c:983
-#: src/ui/gui/data-editor.glade:414
+#: src/ui/gui/data-editor.c:809 src/ui/gui/data-editor.c:1020
+#: src/ui/gui/data-editor.glade:412
 msgid "Open"
 msgstr "Öffen"
 
-#: src/ui/gui/data-editor.c:773
+#: src/ui/gui/data-editor.c:810
 msgid "Open a data file"
 msgstr ""
 
-#: src/ui/gui/data-editor.c:781 src/ui/gui/data-editor.c:888
-#: src/ui/gui/data-editor.glade:424
+#: src/ui/gui/data-editor.c:818 src/ui/gui/data-editor.c:925
+#: src/ui/gui/data-editor.glade:422
 msgid "Save"
 msgstr "Speichen"
 
-#: src/ui/gui/data-editor.c:782 src/ui/gui/data-editor.c:792
+#: src/ui/gui/data-editor.c:819 src/ui/gui/data-editor.c:829
 #, fuzzy
 msgid "Save data to file"
 msgstr "Speichern unter"
 
-#: src/ui/gui/data-editor.c:791
+#: src/ui/gui/data-editor.c:828
 #, fuzzy
 msgid "Save As"
 msgstr "Speichern unter"
 
-#: src/ui/gui/data-editor.c:800
+#: src/ui/gui/data-editor.c:837
 msgid "New"
 msgstr ""
 
-#: src/ui/gui/data-editor.c:801
+#: src/ui/gui/data-editor.c:838
 msgid "New data file"
 msgstr ""
 
-#: src/ui/gui/data-editor.c:896 src/ui/gui/data-editor.c:991
+#: src/ui/gui/data-editor.c:933 src/ui/gui/data-editor.c:1028
 msgid "System Files (*.sav)"
 msgstr "Systemedatein (*.sav)"
 
-#: src/ui/gui/data-editor.c:902 src/ui/gui/data-editor.c:997
+#: src/ui/gui/data-editor.c:939 src/ui/gui/data-editor.c:1034
 msgid "Portable Files (*.por) "
 msgstr "Tragbardatein (*.por)"
 
-#: src/ui/gui/data-editor.c:908 src/ui/gui/data-editor.c:1003
+#: src/ui/gui/data-editor.c:945 src/ui/gui/data-editor.c:1040
 #: src/ui/gui/syntax-editor.c:141 src/ui/gui/syntax-editor.c:524
 msgid "All Files"
 msgstr "Alle Datei"
 
-#: src/ui/gui/data-editor.c:916
+#: src/ui/gui/data-editor.c:953
 #, fuzzy
 msgid "System File"
 msgstr "Systemedatein (*.sav)"
 
-#: src/ui/gui/data-editor.c:921
+#: src/ui/gui/data-editor.c:958
 #, fuzzy
 msgid "Portable File"
 msgstr "Tragbardatein (*.por)"
@@ -4291,8 +4308,8 @@
 msgid "Grid Lines"
 msgstr "Glitten"
 
-#: src/ui/gui/data-editor.glade:218 src/ui/gui/data-editor.glade:614
-#: src/ui/gui/data-editor.glade:1324 src/ui/gui/data-editor.glade:1502
+#: src/ui/gui/data-editor.glade:218 src/ui/gui/data-editor.glade:623
+#: src/ui/gui/data-editor.glade:1333 src/ui/gui/data-editor.glade:1511
 msgid "Value Labels"
 msgstr "Werten"
 
@@ -4300,11 +4317,11 @@
 msgid "Data"
 msgstr "Daten"
 
-#: src/ui/gui/data-editor.glade:237 src/ui/gui/data-editor.glade:497
+#: src/ui/gui/data-editor.glade:237 src/ui/gui/data-editor.glade:507
 msgid "Variables"
 msgstr "Variableansicht"
 
-#: src/ui/gui/data-editor.glade:256 src/ui/gui/data-editor.glade:550
+#: src/ui/gui/data-editor.glade:256 src/ui/gui/data-editor.glade:560
 #, fuzzy
 msgid "Insert Variable"
 msgstr "Variableansicht"
@@ -4314,230 +4331,233 @@
 msgid "Insert Cases"
 msgstr "_Stecken"
 
-#: src/ui/gui/data-editor.glade:272 src/ui/gui/data-editor.glade:486
-#: src/ui/gui/data-editor.glade:1868
+#: src/ui/gui/data-editor.glade:272 src/ui/gui/data-editor.glade:496
+#: src/ui/gui/data-editor.glade:1877
 msgid "Go To Case"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:286 src/ui/gui/data-editor.glade:1933
+#: src/ui/gui/data-editor.glade:285 src/ui/gui/data-editor.glade:1942
 msgid "Sort Cases"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:302
+#: src/ui/gui/data-editor.glade:301
 msgid "Restructure"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:310
+#: src/ui/gui/data-editor.glade:309
 #, fuzzy
 msgid "Merge Files"
 msgstr "Alle Datei"
 
-#: src/ui/gui/data-editor.glade:318
+#: src/ui/gui/data-editor.glade:317
 msgid "Aggregate"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:332 src/ui/gui/data-editor.glade:571
+#: src/ui/gui/data-editor.glade:330 src/ui/gui/data-editor.glade:580
 #, fuzzy
 msgid "Split File"
 msgstr "Alle Datei"
 
-#: src/ui/gui/data-editor.glade:340 src/ui/gui/data-editor.glade:594
+#: src/ui/gui/data-editor.glade:338 src/ui/gui/data-editor.glade:603
 msgid "Select Cases"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:347 src/ui/gui/data-editor.glade:582
+#: src/ui/gui/data-editor.glade:345 src/ui/gui/data-editor.glade:591
 msgid "Weight Cases"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:358 src/ui/gui/syntax-editor.glade:233
+#: src/ui/gui/data-editor.glade:356 src/ui/gui/syntax-editor.glade:233
 #, fuzzy
 msgid "_Windows"
 msgstr "_Datei"
 
-#: src/ui/gui/data-editor.glade:365 src/ui/gui/syntax-editor.glade:242
+#: src/ui/gui/data-editor.glade:363 src/ui/gui/syntax-editor.glade:242
 msgid "_Minimise All Windows"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:376 src/ui/gui/syntax-editor.glade:254
+#: src/ui/gui/data-editor.glade:374 src/ui/gui/syntax-editor.glade:254
 msgid "_Help"
 msgstr "_Hilfe"
 
-#: src/ui/gui/data-editor.glade:383 src/ui/gui/syntax-editor.glade:263
+#: src/ui/gui/data-editor.glade:381 src/ui/gui/syntax-editor.glade:263
 msgid "_Reference Manual"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:390 src/ui/gui/syntax-editor.glade:271
+#: src/ui/gui/data-editor.glade:388 src/ui/gui/syntax-editor.glade:271
 msgid "_About"
 msgstr "_Info"
 
-#: src/ui/gui/data-editor.glade:435
+#: src/ui/gui/data-editor.glade:433
 msgid "Print"
 msgstr "Drucken"
 
-#: src/ui/gui/data-editor.glade:455
+#: src/ui/gui/data-editor.glade:444
+msgid "Recall"
+msgstr ""
+
+#: src/ui/gui/data-editor.glade:465
 msgid "Undo"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:466
+#: src/ui/gui/data-editor.glade:476
 msgid "Redo"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:518
+#: src/ui/gui/data-editor.glade:528
 msgid "Find"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:538
+#: src/ui/gui/data-editor.glade:548
 #, fuzzy
 msgid "Insert Case"
 msgstr "_Stecken"
 
-#: src/ui/gui/data-editor.glade:626
+#: src/ui/gui/data-editor.glade:635
 msgid "Use Sets"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:708
+#: src/ui/gui/data-editor.glade:717
 msgid "Data View"
 msgstr "Datenansicht"
 
-#: src/ui/gui/data-editor.glade:735
+#: src/ui/gui/data-editor.glade:744
 msgid "Variable View"
 msgstr "Variableansicht"
 
-#: src/ui/gui/data-editor.glade:765
+#: src/ui/gui/data-editor.glade:774
 msgid "Information Area"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:784
+#: src/ui/gui/data-editor.glade:793
 msgid "Processor Area"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:809
+#: src/ui/gui/data-editor.glade:818
 msgid "OMS Area"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:834
+#: src/ui/gui/data-editor.glade:843
 msgid "Case Counter Area"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:859
+#: src/ui/gui/data-editor.glade:868
 msgid "Filter Use Status Area"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:885
+#: src/ui/gui/data-editor.glade:894
 msgid "Weight Status Area"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:911
+#: src/ui/gui/data-editor.glade:920
 #, fuzzy
 msgid "Split File Status Area"
 msgstr "Alle Datei"
 
-#: src/ui/gui/data-editor.glade:941
+#: src/ui/gui/data-editor.glade:950
 msgid "Variable Type"
 msgstr "Variableansicht"
 
-#: src/ui/gui/data-editor.glade:976 src/ui/gui/psppire-var-store.c:475
+#: src/ui/gui/data-editor.glade:985 src/ui/gui/psppire-var-store.c:475
 msgid "Comma"
 msgstr "Komma"
 
-#: src/ui/gui/data-editor.glade:991 src/ui/gui/psppire-var-store.c:476
+#: src/ui/gui/data-editor.glade:1000 src/ui/gui/psppire-var-store.c:476
 msgid "Dot"
 msgstr "Punkt"
 
-#: src/ui/gui/data-editor.glade:1006
+#: src/ui/gui/data-editor.glade:1015
 msgid "Scientific notation"
 msgstr "Wissenschaftlichnotation"
 
-#: src/ui/gui/data-editor.glade:1021 src/ui/gui/psppire-var-store.c:478
+#: src/ui/gui/data-editor.glade:1030 src/ui/gui/psppire-var-store.c:478
 msgid "Date"
 msgstr "Datum"
 
-#: src/ui/gui/data-editor.glade:1036 src/ui/gui/psppire-var-store.c:479
+#: src/ui/gui/data-editor.glade:1045 src/ui/gui/psppire-var-store.c:479
 msgid "Dollar"
 msgstr "Euro"
 
-#: src/ui/gui/data-editor.glade:1051
+#: src/ui/gui/data-editor.glade:1060
 msgid "Custom currency"
 msgstr "Spezialwährung"
 
-#: src/ui/gui/data-editor.glade:1143
+#: src/ui/gui/data-editor.glade:1152
 msgid "positive"
 msgstr "positiv"
 
-#: src/ui/gui/data-editor.glade:1149
+#: src/ui/gui/data-editor.glade:1158
 msgid "negative"
 msgstr "negativ"
 
-#: src/ui/gui/data-editor.glade:1162
+#: src/ui/gui/data-editor.glade:1171
 msgid "Sample"
 msgstr "Muster"
 
-#: src/ui/gui/data-editor.glade:1212
+#: src/ui/gui/data-editor.glade:1221
 msgid "Width:"
 msgstr "Große:"
 
-#: src/ui/gui/data-editor.glade:1256
+#: src/ui/gui/data-editor.glade:1265
 msgid "Decimal Places:"
 msgstr "Dezimalstellen:"
 
-#: src/ui/gui/data-editor.glade:1422
+#: src/ui/gui/data-editor.glade:1431
 msgid "Value Label:"
 msgstr "Kennsatz:"
 
-#: src/ui/gui/data-editor.glade:1435
+#: src/ui/gui/data-editor.glade:1444
 msgid "Value:"
 msgstr "Werte:"
 
-#: src/ui/gui/data-editor.glade:1566
+#: src/ui/gui/data-editor.glade:1575
 msgid "Missing Values"
 msgstr "Lösewerten"
 
-#: src/ui/gui/data-editor.glade:1584
+#: src/ui/gui/data-editor.glade:1593
 msgid "_Range plus one optional discrete missing value"
 msgstr "Wertebereich und ein optional Lösewert"
 
-#: src/ui/gui/data-editor.glade:1608
+#: src/ui/gui/data-editor.glade:1617
 msgid "_Low:"
 msgstr "_Tief:"
 
-#: src/ui/gui/data-editor.glade:1637
+#: src/ui/gui/data-editor.glade:1646
 msgid "_High:"
 msgstr "_Hoch:"
 
-#: src/ui/gui/data-editor.glade:1678
+#: src/ui/gui/data-editor.glade:1687
 msgid "Di_screte value:"
 msgstr "Di_skretwerte"
 
-#: src/ui/gui/data-editor.glade:1725
+#: src/ui/gui/data-editor.glade:1734
 msgid "_No missing values"
 msgstr "_Kein Lösewerten"
 
-#: src/ui/gui/data-editor.glade:1742
+#: src/ui/gui/data-editor.glade:1751
 msgid "_Discrete missing values"
 msgstr "_Diskret Lösewerten"
 
-#: src/ui/gui/data-editor.glade:1885
+#: src/ui/gui/data-editor.glade:1894
 msgid "Case Number:"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:1994
+#: src/ui/gui/data-editor.glade:2003 src/ui/gui/psppire.glade:1187
 msgid "Sort by:"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:2043 src/ui/gui/sort-cases-dialog.c:279
+#: src/ui/gui/data-editor.glade:2052 src/ui/gui/psppire.glade:1240
 msgid "Ascending"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:2056 src/ui/gui/sort-cases-dialog.c:281
+#: src/ui/gui/data-editor.glade:2065 src/ui/gui/psppire.glade:1250
 msgid "Descending"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:2072
+#: src/ui/gui/data-editor.glade:2081 src/ui/gui/psppire.glade:1266
 msgid "Sort Order"
 msgstr ""
 
-#: src/ui/gui/dict-display.c:92 src/ui/gui/sort-cases-dialog.c:339
-#: src/ui/gui/transpose-dialog.c:123
+#: src/ui/gui/dict-display.c:92
 msgid "Var"
 msgstr ""
 
@@ -4601,12 +4621,12 @@
 msgid "%d"
 msgstr ""
 
-#: src/ui/gui/psppire.glade:9
+#: src/ui/gui/psppire.glade:11
 #, fuzzy
 msgid "This is pre-alpha software.  Use at your own risk."
 msgstr "Diese Software ist vor-Alpha.  Wahrscheinlich Funktioniert es nicht."
 
-#: src/ui/gui/psppire.glade:10
+#: src/ui/gui/psppire.glade:12
 msgid ""
 "    This program is free software; you can redistribute it and/or modify\n"
 "    it under the terms of the GNU General Public License as published by\n"
@@ -4624,11 +4644,12 @@
 "    02110-1301, USA.\n"
 msgstr ""
 
-#: src/ui/gui/psppire.glade:90 src/ui/gui/psppire.glade:170
+#: src/ui/gui/psppire.glade:89 src/ui/gui/psppire.glade:170
+#: src/ui/gui/weight-cases-dialog.c:85
 msgid "Do not weight cases"
 msgstr ""
 
-#: src/ui/gui/psppire.glade:100
+#: src/ui/gui/psppire.glade:99
 msgid "Weight cases by"
 msgstr ""
 
@@ -4641,16 +4662,118 @@
 msgid "Current Status: "
 msgstr ""
 
-#: src/ui/gui/psppire.glade:257
+#: src/ui/gui/psppire.glade:258
 #, fuzzy
 msgid "Name Variable:"
 msgstr "Variableansicht"
 
-#: src/ui/gui/psppire.glade:290
+#: src/ui/gui/psppire.glade:291
 #, fuzzy
 msgid "Variable(s):"
 msgstr "Variableansicht"
 
+#: src/ui/gui/psppire.glade:444
+msgid "Analyse all cases.  Do not create groups."
+msgstr ""
+
+#: src/ui/gui/psppire.glade:454
+msgid "Compare groups."
+msgstr ""
+
+#: src/ui/gui/psppire.glade:467
+msgid "Organise output by groups."
+msgstr ""
+
+#: src/ui/gui/psppire.glade:514
+msgid "Groups based on:"
+msgstr ""
+
+#: src/ui/gui/psppire.glade:579
+msgid "Sort the file by grouping variables."
+msgstr ""
+
+#: src/ui/gui/psppire.glade:590
+msgid "File is already sorted."
+msgstr ""
+
+#: src/ui/gui/psppire.glade:634
+msgid "Current Status : "
+msgstr ""
+
+#: src/ui/gui/psppire.glade:642
+msgid "Analysis by groups is off"
+msgstr ""
+
+#: src/ui/gui/psppire.glade:740
+#, fuzzy
+msgid "All Cases"
+msgstr "Alle Datei"
+
+#: src/ui/gui/psppire.glade:761
+msgid "If condition is satisfied"
+msgstr ""
+
+#: src/ui/gui/psppire.glade:780
+msgid "If..."
+msgstr ""
+
+#: src/ui/gui/psppire.glade:816
+msgid "Random Sample of cases"
+msgstr ""
+
+#: src/ui/gui/psppire.glade:830
+#, fuzzy
+msgid "Sample..."
+msgstr "Muster"
+
+#: src/ui/gui/psppire.glade:841
+msgid "Approximately 23% of cases"
+msgstr ""
+
+#: src/ui/gui/psppire.glade:876
+msgid "Based on time or case range"
+msgstr ""
+
+#: src/ui/gui/psppire.glade:890
+msgid "Range..."
+msgstr ""
+
+#: src/ui/gui/psppire.glade:901
+msgid "2 thru 3"
+msgstr ""
+
+#: src/ui/gui/psppire.glade:936
+#, fuzzy
+msgid "Use filter variable"
+msgstr "Variableansicht"
+
+#: src/ui/gui/psppire.glade:983
+#, fuzzy
+msgid "Select"
+msgstr "Schriftwahlung"
+
+#: src/ui/gui/psppire.glade:1012
+#, fuzzy
+msgid "Filtered"
+msgstr "Datei:"
+
+#: src/ui/gui/psppire.glade:1022
+msgid "Deleted"
+msgstr ""
+
+#: src/ui/gui/psppire.glade:1039
+#, fuzzy
+msgid "Unselected Cases Are"
+msgstr "_Stecken"
+
+#: src/ui/gui/psppire.glade:1067
+msgid "Curent Status : "
+msgstr ""
+
+#: src/ui/gui/psppire.glade:1079
+msgid "Do not filter cases"
+msgstr ""
+
 #: src/ui/gui/psppire-var-store.c:470
 msgid "None"
 msgstr "Keine"
@@ -4663,10 +4786,6 @@
 msgid "Custom"
 msgstr "Spezial"
 
-#: src/ui/gui/sort-cases-dialog.c:367
-msgid "Criteria"
-msgstr ""
-
 #: src/ui/gui/syntax-editor.c:80
 #, c-format
 msgid "Save contents of syntax editor to %s?"
@@ -4759,6 +4878,11 @@
 msgid "Scale"
 msgstr "Skalwert"
 
+#: src/ui/gui/weight-cases-dialog.c:91
+#, c-format
+msgid "Weight cases by %s"
+msgstr ""
+
 #: src/ui/gui/window-manager.c:141
 #, fuzzy, c-format
 msgid "Syntax%d"

Index: po/pspp.pot
===================================================================
RCS file: /sources/pspp/pspp/po/pspp.pot,v
retrieving revision 1.127
retrieving revision 1.128
diff -u -b -r1.127 -r1.128
--- po/pspp.pot 30 Mar 2007 23:39:33 -0000      1.127
+++ po/pspp.pot 2 Apr 2007 08:55:51 -0000       1.128
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: address@hidden"
-"POT-Creation-Date: 2007-03-26 18:17+0800\n"
+"POT-Creation-Date: 2007-04-01 13:38+0800\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <address@hidden>\n"
 "Language-Team: LANGUAGE <address@hidden>\n"
@@ -175,13 +175,13 @@
 msgid "Month number %f is not between 1 and 12."
 msgstr ""
 
-#: src/data/dictionary.c:717
+#: src/data/dictionary.c:724
 msgid ""
 "At least one case in the data file had a weight value that was user-missing, "
 "system-missing, zero, or negative.  These case(s) were ignored."
 msgstr ""
 
-#: src/data/dictionary.c:1238
+#: src/data/dictionary.c:1245
 msgid "Variable suffix too large."
 msgstr ""
 
@@ -308,13 +308,13 @@
 msgstr ""
 
 #: src/data/format.c:310 src/data/por-file-reader.c:489
-#: src/data/sys-file-reader.c:602 src/ui/gui/data-editor.glade:1066
+#: src/data/sys-file-reader.c:602 src/ui/gui/data-editor.glade:1075
 #: src/ui/gui/psppire-var-store.c:481
 msgid "String"
 msgstr ""
 
 #: src/data/format.c:310 src/data/por-file-reader.c:489
-#: src/data/sys-file-reader.c:602 src/ui/gui/data-editor.glade:962
+#: src/data/sys-file-reader.c:602 src/ui/gui/data-editor.glade:971
 #: src/ui/gui/psppire-var-store.c:474
 msgid "Numeric"
 msgstr ""
@@ -821,15 +821,15 @@
 msgid "`%s' may not be used as a variable name because it is a reserved word."
 msgstr ""
 
-#: src/data/variable.c:964
+#: src/data/variable.c:966
 msgid "ordinary"
 msgstr ""
 
-#: src/data/variable.c:966
+#: src/data/variable.c:968
 msgid "system"
 msgstr ""
 
-#: src/data/variable.c:968
+#: src/data/variable.c:970
 msgid "scratch"
 msgstr ""
 
@@ -1031,7 +1031,7 @@
 #: src/language/dictionary/sys-file-info.c:160
 #: src/language/dictionary/sys-file-info.c:395
 #: src/language/dictionary/sys-file-info.c:620
-#: src/language/stats/descriptives.c:879
+#: src/language/stats/descriptives.c:880
 msgid "Variable"
 msgstr ""
 
@@ -1286,7 +1286,7 @@
 "REREAD: Column numbers must be positive finite numbers.  Column set to 1."
 msgstr ""
 
-#: src/language/data-io/list.q:154 src/language/stats/descriptives.c:364
+#: src/language/data-io/list.q:154 src/language/stats/descriptives.c:365
 msgid "No variables specified."
 msgstr ""
 
@@ -1382,7 +1382,7 @@
 msgstr[1] ""
 
 #: src/language/data-io/print-space.c:75 src/language/lexer/lexer.c:465
-#: src/language/stats/autorecode.c:153 src/language/xforms/select-if.c:61
+#: src/language/stats/autorecode.c:154 src/language/xforms/select-if.c:61
 msgid "expecting end of command"
 msgstr ""
 
@@ -1421,7 +1421,7 @@
 "will be made permanent."
 msgstr ""
 
-#: src/language/dictionary/delete-variables.c:48
+#: src/language/dictionary/delete-variables.c:49
 msgid ""
 "DELETE VARIABLES may not be used to delete all variables from the active "
 "file dictionary.  Use NEW FILE instead."
@@ -1570,8 +1570,8 @@
 
 #: src/language/dictionary/split-file.c:86
 #: src/language/dictionary/sys-file-info.c:549
-#: src/language/stats/crosstabs.q:1118 src/language/stats/crosstabs.q:1145
-#: src/language/stats/crosstabs.q:1165 src/language/stats/crosstabs.q:1187
+#: src/language/stats/crosstabs.q:1119 src/language/stats/crosstabs.q:1146
+#: src/language/stats/crosstabs.q:1166 src/language/stats/crosstabs.q:1188
 #: src/language/stats/examine.q:1189 src/language/stats/frequencies.q:1145
 #: src/language/stats/frequencies.q:1269
 msgid "Value"
@@ -2115,57 +2115,57 @@
 msgid "expecting number or data string"
 msgstr ""
 
-#: src/language/lexer/variable-parser.c:54
+#: src/language/lexer/variable-parser.c:64
 msgid "expecting variable name"
 msgstr ""
 
-#: src/language/lexer/variable-parser.c:64
+#: src/language/lexer/variable-parser.c:74
 #, c-format
 msgid "%s is not a variable name."
 msgstr ""
 
-#: src/language/lexer/variable-parser.c:173
+#: src/language/lexer/variable-parser.c:183
 #, c-format
 msgid ""
 "%s is not a numeric variable.  It will not be included in the variable list."
 msgstr ""
 
-#: src/language/lexer/variable-parser.c:176
+#: src/language/lexer/variable-parser.c:186
 #, c-format
 msgid ""
 "%s is not a string variable.  It will not be included in the variable list."
 msgstr ""
 
-#: src/language/lexer/variable-parser.c:180
+#: src/language/lexer/variable-parser.c:190
 #, c-format
 msgid "Scratch variables (such as %s) are not allowed here."
 msgstr ""
 
-#: src/language/lexer/variable-parser.c:184
+#: src/language/lexer/variable-parser.c:194
 #, c-format
 msgid ""
 "%s and %s are not the same type.  All variables in this variable list must "
 "be of the same type.  %s will be omitted from the list."
 msgstr ""
 
-#: src/language/lexer/variable-parser.c:190
+#: src/language/lexer/variable-parser.c:200
 #, c-format
 msgid ""
 "%s and %s are string variables with different widths.  All variables in this "
 "variable list must have the same width.  %s will be omttied from the list."
 msgstr ""
 
-#: src/language/lexer/variable-parser.c:195
+#: src/language/lexer/variable-parser.c:205
 #, c-format
 msgid "Variable %s appears twice in variable list."
 msgstr ""
 
-#: src/language/lexer/variable-parser.c:308
+#: src/language/lexer/variable-parser.c:318
 #, c-format
 msgid "%s TO %s is not valid syntax since %s precedes %s in the dictionary."
 msgstr ""
 
-#: src/language/lexer/variable-parser.c:316
+#: src/language/lexer/variable-parser.c:326
 #, c-format
 msgid ""
 "When using the TO keyword to specify several variables, both variables must "
@@ -2173,19 +2173,19 @@
 "system variables.  %s is a %s variable, whereas %s is %s."
 msgstr ""
 
-#: src/language/lexer/variable-parser.c:390
+#: src/language/lexer/variable-parser.c:400
 msgid "incorrect use of TO convention"
 msgstr ""
 
-#: src/language/lexer/variable-parser.c:433
+#: src/language/lexer/variable-parser.c:443
 msgid "Scratch variables not allowed here."
 msgstr ""
 
-#: src/language/lexer/variable-parser.c:455
+#: src/language/lexer/variable-parser.c:465
 msgid "Prefixes don't match in use of TO convention."
 msgstr ""
 
-#: src/language/lexer/variable-parser.c:460
+#: src/language/lexer/variable-parser.c:470
 msgid "Bad bounds in use of TO convention."
 msgstr ""
 
@@ -2243,17 +2243,17 @@
 "contains the aggregate variables and the break variables."
 msgstr ""
 
-#: src/language/stats/autorecode.c:135
+#: src/language/stats/autorecode.c:136
 #, c-format
 msgid "Source variable count (%u) does not match target variable count (%u)."
 msgstr ""
 
-#: src/language/stats/autorecode.c:163
+#: src/language/stats/autorecode.c:164
 #, c-format
 msgid "Target variable %s duplicates existing variable %s."
 msgstr ""
 
-#: src/language/stats/autorecode.c:170
+#: src/language/stats/autorecode.c:171
 #, c-format
 msgid "Duplicate variable name %s among target variables."
 msgstr ""
@@ -2276,8 +2276,8 @@
 msgstr ""
 
 #: src/language/stats/binomial.c:208 src/language/stats/chisquare.c:237
-#: src/language/stats/chisquare.c:297 src/language/stats/crosstabs.q:825
-#: src/language/stats/crosstabs.q:1025 src/language/stats/crosstabs.q:1748
+#: src/language/stats/chisquare.c:297 src/language/stats/crosstabs.q:826
+#: src/language/stats/crosstabs.q:1026 src/language/stats/crosstabs.q:1749
 #: src/language/stats/examine.q:909 src/language/stats/frequencies.q:1222
 #: src/language/stats/oneway.q:307 src/language/stats/oneway.q:471
 #: src/language/stats/regression.q:324
@@ -2285,15 +2285,15 @@
 msgstr ""
 
 #: src/language/stats/binomial.c:253 src/language/stats/chisquare.c:260
-#: src/language/stats/crosstabs.q:1143 src/language/stats/crosstabs.q:1184
+#: src/language/stats/crosstabs.q:1144 src/language/stats/crosstabs.q:1185
 msgid "Category"
 msgstr ""
 
-#: src/language/stats/binomial.c:254 src/language/stats/crosstabs.q:835
+#: src/language/stats/binomial.c:254 src/language/stats/crosstabs.q:836
 #: src/language/stats/examine.q:985 src/language/stats/frequencies.q:1518
 #: src/language/stats/npar-summary.c:124 src/language/stats/oneway.q:392
-#: src/language/stats/t-test.q:681 src/language/stats/t-test.q:704
-#: src/language/stats/t-test.q:830 src/language/stats/t-test.q:1367
+#: src/language/stats/t-test.q:680 src/language/stats/t-test.q:703
+#: src/language/stats/t-test.q:829 src/language/stats/t-test.q:1366
 msgid "N"
 msgstr ""
 
@@ -2342,10 +2342,10 @@
 msgid "Chi-Square"
 msgstr ""
 
-#: src/language/stats/chisquare.c:325 src/language/stats/crosstabs.q:1119
+#: src/language/stats/chisquare.c:325 src/language/stats/crosstabs.q:1120
 #: src/language/stats/oneway.q:280 src/language/stats/oneway.q:681
-#: src/language/stats/regression.q:317 src/language/stats/t-test.q:981
-#: src/language/stats/t-test.q:1173 src/language/stats/t-test.q:1266
+#: src/language/stats/regression.q:317 src/language/stats/t-test.q:980
+#: src/language/stats/t-test.q:1172 src/language/stats/t-test.q:1265
 msgid "df"
 msgstr ""
 
@@ -2362,280 +2362,280 @@
 msgid "Write mode ALL not allowed in general mode.  Assuming WRITE=CELLS."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:337
+#: src/language/stats/crosstabs.q:338
 msgid "Too many crosstabulation variables or dimensions."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:347
+#: src/language/stats/crosstabs.q:348
 msgid "expecting BY"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:414
+#: src/language/stats/crosstabs.q:415
 msgid "VARIABLES must be specified before TABLES."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:452
+#: src/language/stats/crosstabs.q:453
 #, c-format
 msgid "Maximum value (%ld) less than minimum value (%ld)."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:820
+#: src/language/stats/crosstabs.q:821
 msgid "Summary."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:822 src/language/stats/examine.q:973
+#: src/language/stats/crosstabs.q:823 src/language/stats/examine.q:973
 msgid "Cases"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:823 src/language/stats/examine.q:907
+#: src/language/stats/crosstabs.q:824 src/language/stats/examine.q:907
 #: src/language/stats/frequencies.q:1143 src/language/stats/frequencies.q:1519
 msgid "Valid"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:824 src/language/stats/examine.q:908
+#: src/language/stats/crosstabs.q:825 src/language/stats/examine.q:908
 #: src/language/stats/frequencies.q:1213 src/language/stats/frequencies.q:1520
 #: src/ui/gui/var-sheet.c:73
 msgid "Missing"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:836 src/language/stats/examine.q:988
+#: src/language/stats/crosstabs.q:837 src/language/stats/examine.q:988
 #: src/language/stats/frequencies.q:1147 src/language/stats/frequencies.q:1148
 #: src/language/stats/frequencies.q:1149
 msgid "Percent"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1077
+#: src/language/stats/crosstabs.q:1078
 msgid "count"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1078
+#: src/language/stats/crosstabs.q:1079
 msgid "row %"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1079
+#: src/language/stats/crosstabs.q:1080
 msgid "column %"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1080
+#: src/language/stats/crosstabs.q:1081
 msgid "total %"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1081
+#: src/language/stats/crosstabs.q:1082
 msgid "expected"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1082
+#: src/language/stats/crosstabs.q:1083
 msgid "residual"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1083
+#: src/language/stats/crosstabs.q:1084
 msgid "std. resid."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1084
+#: src/language/stats/crosstabs.q:1085
 msgid "adj. resid."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1114
+#: src/language/stats/crosstabs.q:1115
 msgid "Chi-square tests."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1117 src/language/stats/crosstabs.q:1144
-#: src/language/stats/crosstabs.q:1164 src/language/stats/crosstabs.q:1185
+#: src/language/stats/crosstabs.q:1118 src/language/stats/crosstabs.q:1145
+#: src/language/stats/crosstabs.q:1165 src/language/stats/crosstabs.q:1186
 #: src/language/stats/examine.q:1420
 msgid "Statistic"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1121
+#: src/language/stats/crosstabs.q:1122
 msgid "Asymp. Sig. (2-sided)"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1123
+#: src/language/stats/crosstabs.q:1124
 msgid "Exact. Sig. (2-sided)"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1125
+#: src/language/stats/crosstabs.q:1126
 msgid "Exact. Sig. (1-sided)"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1140
+#: src/language/stats/crosstabs.q:1141
 msgid "Symmetric measures."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1146 src/language/stats/crosstabs.q:1188
+#: src/language/stats/crosstabs.q:1147 src/language/stats/crosstabs.q:1189
 msgid "Asymp. Std. Error"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1147 src/language/stats/crosstabs.q:1189
+#: src/language/stats/crosstabs.q:1148 src/language/stats/crosstabs.q:1190
 msgid "Approx. T"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1148 src/language/stats/crosstabs.q:1190
+#: src/language/stats/crosstabs.q:1149 src/language/stats/crosstabs.q:1191
 msgid "Approx. Sig."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1159
+#: src/language/stats/crosstabs.q:1160
 msgid "Risk estimate."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1163
+#: src/language/stats/crosstabs.q:1164
 #, c-format
 msgid "95%% Confidence Interval"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1166 src/language/stats/t-test.q:985
-#: src/language/stats/t-test.q:1170 src/language/stats/t-test.q:1269
+#: src/language/stats/crosstabs.q:1167 src/language/stats/t-test.q:984
+#: src/language/stats/t-test.q:1169 src/language/stats/t-test.q:1268
 msgid "Lower"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1167 src/language/stats/t-test.q:986
-#: src/language/stats/t-test.q:1171 src/language/stats/t-test.q:1270
+#: src/language/stats/crosstabs.q:1168 src/language/stats/t-test.q:985
+#: src/language/stats/t-test.q:1170 src/language/stats/t-test.q:1269
 msgid "Upper"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1181
+#: src/language/stats/crosstabs.q:1182
 msgid "Directional measures."
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1186 src/ui/gui/var-sheet.c:68
+#: src/language/stats/crosstabs.q:1187 src/ui/gui/var-sheet.c:68
 msgid "Type"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1940
+#: src/language/stats/crosstabs.q:1941
 msgid "Pearson Chi-Square"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1941
+#: src/language/stats/crosstabs.q:1942
 msgid "Likelihood Ratio"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1942
+#: src/language/stats/crosstabs.q:1943
 msgid "Fisher's Exact Test"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1943
+#: src/language/stats/crosstabs.q:1944
 msgid "Continuity Correction"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1944
+#: src/language/stats/crosstabs.q:1945
 msgid "Linear-by-Linear Association"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1981 src/language/stats/crosstabs.q:2051
-#: src/language/stats/crosstabs.q:2110
+#: src/language/stats/crosstabs.q:1982 src/language/stats/crosstabs.q:2052
+#: src/language/stats/crosstabs.q:2111
 msgid "N of Valid Cases"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1997 src/language/stats/crosstabs.q:2126
+#: src/language/stats/crosstabs.q:1998 src/language/stats/crosstabs.q:2127
 msgid "Nominal by Nominal"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1998 src/language/stats/crosstabs.q:2127
+#: src/language/stats/crosstabs.q:1999 src/language/stats/crosstabs.q:2128
 msgid "Ordinal by Ordinal"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:1999
+#: src/language/stats/crosstabs.q:2000
 msgid "Interval by Interval"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2000
+#: src/language/stats/crosstabs.q:2001
 msgid "Measure of Agreement"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2005
+#: src/language/stats/crosstabs.q:2006
 msgid "Phi"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2006
+#: src/language/stats/crosstabs.q:2007
 msgid "Cramer's V"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2007
+#: src/language/stats/crosstabs.q:2008
 msgid "Contingency Coefficient"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2008
+#: src/language/stats/crosstabs.q:2009
 msgid "Kendall's tau-b"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2009
+#: src/language/stats/crosstabs.q:2010
 msgid "Kendall's tau-c"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2010
+#: src/language/stats/crosstabs.q:2011
 msgid "Gamma"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2011
+#: src/language/stats/crosstabs.q:2012
 msgid "Spearman Correlation"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2012
+#: src/language/stats/crosstabs.q:2013
 msgid "Pearson's R"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2013
+#: src/language/stats/crosstabs.q:2014
 msgid "Kappa"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2083
+#: src/language/stats/crosstabs.q:2084
 #, c-format
 msgid "Odds Ratio for %s (%g / %g)"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2086
+#: src/language/stats/crosstabs.q:2087
 #, c-format
 msgid "Odds Ratio for %s (%.*s / %.*s)"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2094
+#: src/language/stats/crosstabs.q:2095
 #, c-format
 msgid "For cohort %s = %g"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2097
+#: src/language/stats/crosstabs.q:2098
 #, c-format
 msgid "For cohort %s = %.*s"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2128
+#: src/language/stats/crosstabs.q:2129
 msgid "Nominal by Interval"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2133
+#: src/language/stats/crosstabs.q:2134
 msgid "Lambda"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2134
+#: src/language/stats/crosstabs.q:2135
 msgid "Goodman and Kruskal tau"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2135
+#: src/language/stats/crosstabs.q:2136
 msgid "Uncertainty Coefficient"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2136
+#: src/language/stats/crosstabs.q:2137
 msgid "Somers' d"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2137
+#: src/language/stats/crosstabs.q:2138
 msgid "Eta"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2142
+#: src/language/stats/crosstabs.q:2143
 msgid "Symmetric"
 msgstr ""
 
-#: src/language/stats/crosstabs.q:2143 src/language/stats/crosstabs.q:2144
+#: src/language/stats/crosstabs.q:2144 src/language/stats/crosstabs.q:2145
 #, c-format
 msgid "%s Dependent"
 msgstr ""
 
 #: src/language/stats/descriptives.c:106 src/language/stats/examine.q:1525
 #: src/language/stats/frequencies.q:125 src/language/stats/npar-summary.c:127
-#: src/language/stats/oneway.q:393 src/language/stats/t-test.q:682
-#: src/language/stats/t-test.q:705 src/language/stats/t-test.q:829
-#: src/language/stats/t-test.q:1167
+#: src/language/stats/oneway.q:393 src/language/stats/t-test.q:681
+#: src/language/stats/t-test.q:704 src/language/stats/t-test.q:828
+#: src/language/stats/t-test.q:1166
 msgid "Mean"
 msgstr ""
 
@@ -2691,47 +2691,47 @@
 msgid "Sum"
 msgstr ""
 
-#: src/language/stats/descriptives.c:346
+#: src/language/stats/descriptives.c:347
 #, c-format
 msgid "Z-score variable name %s would be a duplicate variable name."
 msgstr ""
 
-#: src/language/stats/descriptives.c:449
+#: src/language/stats/descriptives.c:450
 msgid "expecting statistic name: reverting to default"
 msgstr ""
 
-#: src/language/stats/descriptives.c:522
+#: src/language/stats/descriptives.c:523
 msgid ""
 "Ran out of generic names for Z-score variables.  There are only 126 generic "
 "names: ZSC001-ZSC0999, STDZ01-STDZ09, ZZZZ01-ZZZZ09, ZQZQ01-ZQZQ09."
 msgstr ""
 
-#: src/language/stats/descriptives.c:554
+#: src/language/stats/descriptives.c:555
 msgid "Mapping of variables to corresponding Z-scores."
 msgstr ""
 
-#: src/language/stats/descriptives.c:559
+#: src/language/stats/descriptives.c:560
 msgid "Source"
 msgstr ""
 
-#: src/language/stats/descriptives.c:560
+#: src/language/stats/descriptives.c:561
 msgid "Target"
 msgstr ""
 
-#: src/language/stats/descriptives.c:670
+#: src/language/stats/descriptives.c:671
 #, c-format
 msgid "Z-score of %s"
 msgstr ""
 
-#: src/language/stats/descriptives.c:882
+#: src/language/stats/descriptives.c:883
 msgid "Valid N"
 msgstr ""
 
-#: src/language/stats/descriptives.c:883
+#: src/language/stats/descriptives.c:884
 msgid "Missing N"
 msgstr ""
 
-#: src/language/stats/descriptives.c:910
+#: src/language/stats/descriptives.c:911
 #, c-format
 msgid "Valid cases = %g; cases with missing value(s) = %g."
 msgstr ""
@@ -2798,9 +2798,9 @@
 msgstr ""
 
 #: src/language/stats/examine.q:1617 src/language/stats/npar-summary.c:130
-#: src/language/stats/oneway.q:394 src/language/stats/t-test.q:683
-#: src/language/stats/t-test.q:706 src/language/stats/t-test.q:831
-#: src/language/stats/t-test.q:1168
+#: src/language/stats/oneway.q:394 src/language/stats/t-test.q:682
+#: src/language/stats/t-test.q:705 src/language/stats/t-test.q:830
+#: src/language/stats/t-test.q:1167
 msgid "Std. Deviation"
 msgstr ""
 
@@ -3029,7 +3029,7 @@
 "exactly %d values."
 msgstr ""
 
-#: src/language/stats/npar.q:422 src/language/stats/t-test.q:485
+#: src/language/stats/npar.q:422 src/language/stats/t-test.q:484
 #, c-format
 msgid ""
 "PAIRED was specified but the number of variables preceding WITH (%d) did not "
@@ -3075,7 +3075,7 @@
 msgstr ""
 
 #: src/language/stats/oneway.q:282 src/language/stats/regression.q:319
-#: src/language/stats/t-test.q:978
+#: src/language/stats/t-test.q:977
 msgid "F"
 msgstr ""
 
@@ -3129,13 +3129,13 @@
 msgstr ""
 
 #: src/language/stats/oneway.q:680 src/language/stats/regression.q:223
-#: src/language/stats/t-test.q:980 src/language/stats/t-test.q:1172
-#: src/language/stats/t-test.q:1265
+#: src/language/stats/t-test.q:979 src/language/stats/t-test.q:1171
+#: src/language/stats/t-test.q:1264
 msgid "t"
 msgstr ""
 
-#: src/language/stats/oneway.q:682 src/language/stats/t-test.q:982
-#: src/language/stats/t-test.q:1174 src/language/stats/t-test.q:1267
+#: src/language/stats/oneway.q:682 src/language/stats/t-test.q:981
+#: src/language/stats/t-test.q:1173 src/language/stats/t-test.q:1266
 msgid "Sig. (2-tailed)"
 msgstr ""
 
@@ -3252,7 +3252,7 @@
 msgid "Coefficient Correlations"
 msgstr ""
 
-#: src/language/stats/regression.q:1147
+#: src/language/stats/regression.q:1181
 msgid "Dependent variable must be numeric."
 msgstr ""
 
@@ -3276,115 +3276,115 @@
 msgid "VARIABLES subcommand is not appropriate with PAIRS"
 msgstr ""
 
-#: src/language/stats/t-test.q:335
+#: src/language/stats/t-test.q:334
 msgid "One or more VARIABLES must be specified."
 msgstr ""
 
-#: src/language/stats/t-test.q:379
+#: src/language/stats/t-test.q:378
 #, c-format
 msgid "Long string variable %s is not valid here."
 msgstr ""
 
-#: src/language/stats/t-test.q:399 src/language/stats/t-test.q:413
+#: src/language/stats/t-test.q:398 src/language/stats/t-test.q:412
 msgid ""
 "When applying GROUPS to a string variable, two values must be specified."
 msgstr ""
 
-#: src/language/stats/t-test.q:502
+#: src/language/stats/t-test.q:501
 msgid "At least two variables must be specified on PAIRS."
 msgstr ""
 
-#: src/language/stats/t-test.q:679
+#: src/language/stats/t-test.q:678
 msgid "One-Sample Statistics"
 msgstr ""
 
-#: src/language/stats/t-test.q:684 src/language/stats/t-test.q:707
-#: src/language/stats/t-test.q:832
+#: src/language/stats/t-test.q:683 src/language/stats/t-test.q:706
+#: src/language/stats/t-test.q:831
 msgid "SE. Mean"
 msgstr ""
 
-#: src/language/stats/t-test.q:702
+#: src/language/stats/t-test.q:701
 msgid "Group Statistics"
 msgstr ""
 
-#: src/language/stats/t-test.q:826
+#: src/language/stats/t-test.q:825
 msgid "Paired Sample Statistics"
 msgstr ""
 
-#: src/language/stats/t-test.q:848 src/language/stats/t-test.q:1193
-#: src/language/stats/t-test.q:1384
+#: src/language/stats/t-test.q:847 src/language/stats/t-test.q:1192
+#: src/language/stats/t-test.q:1383
 #, c-format
 msgid "Pair %d"
 msgstr ""
 
-#: src/language/stats/t-test.q:966
+#: src/language/stats/t-test.q:965
 msgid "Independent Samples Test"
 msgstr ""
 
-#: src/language/stats/t-test.q:974
+#: src/language/stats/t-test.q:973
 msgid "Levene's Test for Equality of Variances"
 msgstr ""
 
-#: src/language/stats/t-test.q:976
+#: src/language/stats/t-test.q:975
 msgid "t-test for Equality of Means"
 msgstr ""
 
-#: src/language/stats/t-test.q:979 src/language/stats/t-test.q:1369
+#: src/language/stats/t-test.q:978 src/language/stats/t-test.q:1368
 msgid "Sig."
 msgstr ""
 
-#: src/language/stats/t-test.q:983 src/language/stats/t-test.q:1268
+#: src/language/stats/t-test.q:982 src/language/stats/t-test.q:1267
 msgid "Mean Difference"
 msgstr ""
 
-#: src/language/stats/t-test.q:984
+#: src/language/stats/t-test.q:983
 msgid "Std. Error Difference"
 msgstr ""
 
-#: src/language/stats/t-test.q:989 src/language/stats/t-test.q:1164
-#: src/language/stats/t-test.q:1260
+#: src/language/stats/t-test.q:988 src/language/stats/t-test.q:1163
+#: src/language/stats/t-test.q:1259
 #, c-format
 msgid "%g%% Confidence Interval of the Difference"
 msgstr ""
 
-#: src/language/stats/t-test.q:1044
+#: src/language/stats/t-test.q:1043
 msgid "Equal variances assumed"
 msgstr ""
 
-#: src/language/stats/t-test.q:1096
+#: src/language/stats/t-test.q:1095
 msgid "Equal variances not assumed"
 msgstr ""
 
-#: src/language/stats/t-test.q:1154
+#: src/language/stats/t-test.q:1153
 msgid "Paired Samples Test"
 msgstr ""
 
-#: src/language/stats/t-test.q:1157
+#: src/language/stats/t-test.q:1156
 msgid "Paired Differences"
 msgstr ""
 
-#: src/language/stats/t-test.q:1169
+#: src/language/stats/t-test.q:1168
 msgid "Std. Error Mean"
 msgstr ""
 
-#: src/language/stats/t-test.q:1249
+#: src/language/stats/t-test.q:1248
 msgid "One-Sample Test"
 msgstr ""
 
-#: src/language/stats/t-test.q:1254
+#: src/language/stats/t-test.q:1253
 #, c-format
 msgid "Test Value = %f"
 msgstr ""
 
-#: src/language/stats/t-test.q:1364
+#: src/language/stats/t-test.q:1363
 msgid "Paired Samples Correlations"
 msgstr ""
 
-#: src/language/stats/t-test.q:1368
+#: src/language/stats/t-test.q:1367
 msgid "Correlation"
 msgstr ""
 
-#: src/language/stats/t-test.q:1387
+#: src/language/stats/t-test.q:1386
 #, c-format
 msgid "%s & %s"
 msgstr ""
@@ -4128,100 +4128,116 @@
 msgid "Style of bevel around the custom entry button"
 msgstr ""
 
-#: src/ui/gui/data-editor.c:159
+#: src/ui/gui/data-editor.c:161
 msgid "Weights"
 msgstr ""
 
-#: src/ui/gui/data-editor.c:160
+#: src/ui/gui/data-editor.c:162
 msgid "Weight cases by variable"
 msgstr ""
 
-#: src/ui/gui/data-editor.c:169 src/ui/gui/data-editor.glade:294
+#: src/ui/gui/data-editor.c:171 src/ui/gui/data-editor.glade:293
 msgid "Transpose"
 msgstr ""
 
-#: src/ui/gui/data-editor.c:170
+#: src/ui/gui/data-editor.c:172
 msgid "Transpose the cases with the variables"
 msgstr ""
 
-#: src/ui/gui/data-editor.c:494
+#: src/ui/gui/data-editor.c:183
+msgid "Split"
+msgstr ""
+
+#: src/ui/gui/data-editor.c:184
+msgid "Split the active file"
+msgstr ""
+
+#: src/ui/gui/data-editor.c:194
+msgid "Sort"
+msgstr ""
+
+#: src/ui/gui/data-editor.c:195
+msgid "Sort cases in the active file"
+msgstr ""
+
+#: src/ui/gui/data-editor.c:531
 msgid "Font Selection"
 msgstr ""
 
-#: src/ui/gui/data-editor.c:672
+#: src/ui/gui/data-editor.c:709
 msgid "No Split"
 msgstr ""
 
-#: src/ui/gui/data-editor.c:680
+#: src/ui/gui/data-editor.c:717
 msgid "Split by "
 msgstr ""
 
-#: src/ui/gui/data-editor.c:705
+#: src/ui/gui/data-editor.c:742
 msgid "Filter off"
 msgstr ""
 
-#: src/ui/gui/data-editor.c:718
+#: src/ui/gui/data-editor.c:755
 #, c-format
 msgid "Filter by %s"
 msgstr ""
 
-#: src/ui/gui/data-editor.c:736
+#: src/ui/gui/data-editor.c:773
 msgid "Weights off"
 msgstr ""
 
-#: src/ui/gui/data-editor.c:749
+#: src/ui/gui/data-editor.c:786
 #, c-format
 msgid "Weight by %s"
 msgstr ""
 
-#: src/ui/gui/data-editor.c:772 src/ui/gui/data-editor.c:983
-#: src/ui/gui/data-editor.glade:414
+#: src/ui/gui/data-editor.c:809 src/ui/gui/data-editor.c:1020
+#: src/ui/gui/data-editor.glade:412
 msgid "Open"
 msgstr ""
 
-#: src/ui/gui/data-editor.c:773
+#: src/ui/gui/data-editor.c:810
 msgid "Open a data file"
 msgstr ""
 
-#: src/ui/gui/data-editor.c:781 src/ui/gui/data-editor.c:888
-#: src/ui/gui/data-editor.glade:424
+#: src/ui/gui/data-editor.c:818 src/ui/gui/data-editor.c:925
+#: src/ui/gui/data-editor.glade:422
 msgid "Save"
 msgstr ""
 
-#: src/ui/gui/data-editor.c:782 src/ui/gui/data-editor.c:792
+#: src/ui/gui/data-editor.c:819 src/ui/gui/data-editor.c:829
 msgid "Save data to file"
 msgstr ""
 
-#: src/ui/gui/data-editor.c:791
+#: src/ui/gui/data-editor.c:828
 msgid "Save As"
 msgstr ""
 
-#: src/ui/gui/data-editor.c:800
+#: src/ui/gui/data-editor.c:837
 msgid "New"
 msgstr ""
 
-#: src/ui/gui/data-editor.c:801
+#: src/ui/gui/data-editor.c:838
 msgid "New data file"
 msgstr ""
 
-#: src/ui/gui/data-editor.c:896 src/ui/gui/data-editor.c:991
+#: src/ui/gui/data-editor.c:933 src/ui/gui/data-editor.c:1028
 msgid "System Files (*.sav)"
 msgstr ""
 
-#: src/ui/gui/data-editor.c:902 src/ui/gui/data-editor.c:997
+#: src/ui/gui/data-editor.c:939 src/ui/gui/data-editor.c:1034
 msgid "Portable Files (*.por) "
 msgstr ""
 
-#: src/ui/gui/data-editor.c:908 src/ui/gui/data-editor.c:1003
+#: src/ui/gui/data-editor.c:945 src/ui/gui/data-editor.c:1040
 #: src/ui/gui/syntax-editor.c:141 src/ui/gui/syntax-editor.c:524
 msgid "All Files"
 msgstr ""
 
-#: src/ui/gui/data-editor.c:916
+#: src/ui/gui/data-editor.c:953
 msgid "System File"
 msgstr ""
 
-#: src/ui/gui/data-editor.c:921
+#: src/ui/gui/data-editor.c:958
 msgid "Portable File"
 msgstr ""
 
@@ -4276,8 +4292,8 @@
 msgid "Grid Lines"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:218 src/ui/gui/data-editor.glade:614
-#: src/ui/gui/data-editor.glade:1324 src/ui/gui/data-editor.glade:1502
+#: src/ui/gui/data-editor.glade:218 src/ui/gui/data-editor.glade:623
+#: src/ui/gui/data-editor.glade:1333 src/ui/gui/data-editor.glade:1511
 msgid "Value Labels"
 msgstr ""
 
@@ -4285,11 +4301,11 @@
 msgid "Data"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:237 src/ui/gui/data-editor.glade:497
+#: src/ui/gui/data-editor.glade:237 src/ui/gui/data-editor.glade:507
 msgid "Variables"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:256 src/ui/gui/data-editor.glade:550
+#: src/ui/gui/data-editor.glade:256 src/ui/gui/data-editor.glade:560
 msgid "Insert Variable"
 msgstr ""
 
@@ -4297,225 +4313,228 @@
 msgid "Insert Cases"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:272 src/ui/gui/data-editor.glade:486
-#: src/ui/gui/data-editor.glade:1868
+#: src/ui/gui/data-editor.glade:272 src/ui/gui/data-editor.glade:496
+#: src/ui/gui/data-editor.glade:1877
 msgid "Go To Case"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:286 src/ui/gui/data-editor.glade:1933
+#: src/ui/gui/data-editor.glade:285 src/ui/gui/data-editor.glade:1942
 msgid "Sort Cases"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:302
+#: src/ui/gui/data-editor.glade:301
 msgid "Restructure"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:310
+#: src/ui/gui/data-editor.glade:309
 msgid "Merge Files"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:318
+#: src/ui/gui/data-editor.glade:317
 msgid "Aggregate"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:332 src/ui/gui/data-editor.glade:571
+#: src/ui/gui/data-editor.glade:330 src/ui/gui/data-editor.glade:580
 msgid "Split File"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:340 src/ui/gui/data-editor.glade:594
+#: src/ui/gui/data-editor.glade:338 src/ui/gui/data-editor.glade:603
 msgid "Select Cases"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:347 src/ui/gui/data-editor.glade:582
+#: src/ui/gui/data-editor.glade:345 src/ui/gui/data-editor.glade:591
 msgid "Weight Cases"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:358 src/ui/gui/syntax-editor.glade:233
+#: src/ui/gui/data-editor.glade:356 src/ui/gui/syntax-editor.glade:233
 msgid "_Windows"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:365 src/ui/gui/syntax-editor.glade:242
+#: src/ui/gui/data-editor.glade:363 src/ui/gui/syntax-editor.glade:242
 msgid "_Minimise All Windows"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:376 src/ui/gui/syntax-editor.glade:254
+#: src/ui/gui/data-editor.glade:374 src/ui/gui/syntax-editor.glade:254
 msgid "_Help"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:383 src/ui/gui/syntax-editor.glade:263
+#: src/ui/gui/data-editor.glade:381 src/ui/gui/syntax-editor.glade:263
 msgid "_Reference Manual"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:390 src/ui/gui/syntax-editor.glade:271
+#: src/ui/gui/data-editor.glade:388 src/ui/gui/syntax-editor.glade:271
 msgid "_About"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:435
+#: src/ui/gui/data-editor.glade:433
 msgid "Print"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:455
+#: src/ui/gui/data-editor.glade:444
+msgid "Recall"
+msgstr ""
+
+#: src/ui/gui/data-editor.glade:465
 msgid "Undo"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:466
+#: src/ui/gui/data-editor.glade:476
 msgid "Redo"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:518
+#: src/ui/gui/data-editor.glade:528
 msgid "Find"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:538
+#: src/ui/gui/data-editor.glade:548
 msgid "Insert Case"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:626
+#: src/ui/gui/data-editor.glade:635
 msgid "Use Sets"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:708
+#: src/ui/gui/data-editor.glade:717
 msgid "Data View"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:735
+#: src/ui/gui/data-editor.glade:744
 msgid "Variable View"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:765
+#: src/ui/gui/data-editor.glade:774
 msgid "Information Area"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:784
+#: src/ui/gui/data-editor.glade:793
 msgid "Processor Area"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:809
+#: src/ui/gui/data-editor.glade:818
 msgid "OMS Area"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:834
+#: src/ui/gui/data-editor.glade:843
 msgid "Case Counter Area"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:859
+#: src/ui/gui/data-editor.glade:868
 msgid "Filter Use Status Area"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:885
+#: src/ui/gui/data-editor.glade:894
 msgid "Weight Status Area"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:911
+#: src/ui/gui/data-editor.glade:920
 msgid "Split File Status Area"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:941
+#: src/ui/gui/data-editor.glade:950
 msgid "Variable Type"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:976 src/ui/gui/psppire-var-store.c:475
+#: src/ui/gui/data-editor.glade:985 src/ui/gui/psppire-var-store.c:475
 msgid "Comma"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:991 src/ui/gui/psppire-var-store.c:476
+#: src/ui/gui/data-editor.glade:1000 src/ui/gui/psppire-var-store.c:476
 msgid "Dot"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:1006
+#: src/ui/gui/data-editor.glade:1015
 msgid "Scientific notation"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:1021 src/ui/gui/psppire-var-store.c:478
+#: src/ui/gui/data-editor.glade:1030 src/ui/gui/psppire-var-store.c:478
 msgid "Date"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:1036 src/ui/gui/psppire-var-store.c:479
+#: src/ui/gui/data-editor.glade:1045 src/ui/gui/psppire-var-store.c:479
 msgid "Dollar"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:1051
+#: src/ui/gui/data-editor.glade:1060
 msgid "Custom currency"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:1143
+#: src/ui/gui/data-editor.glade:1152
 msgid "positive"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:1149
+#: src/ui/gui/data-editor.glade:1158
 msgid "negative"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:1162
+#: src/ui/gui/data-editor.glade:1171
 msgid "Sample"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:1212
+#: src/ui/gui/data-editor.glade:1221
 msgid "Width:"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:1256
+#: src/ui/gui/data-editor.glade:1265
 msgid "Decimal Places:"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:1422
+#: src/ui/gui/data-editor.glade:1431
 msgid "Value Label:"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:1435
+#: src/ui/gui/data-editor.glade:1444
 msgid "Value:"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:1566
+#: src/ui/gui/data-editor.glade:1575
 msgid "Missing Values"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:1584
+#: src/ui/gui/data-editor.glade:1593
 msgid "_Range plus one optional discrete missing value"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:1608
+#: src/ui/gui/data-editor.glade:1617
 msgid "_Low:"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:1637
+#: src/ui/gui/data-editor.glade:1646
 msgid "_High:"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:1678
+#: src/ui/gui/data-editor.glade:1687
 msgid "Di_screte value:"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:1725
+#: src/ui/gui/data-editor.glade:1734
 msgid "_No missing values"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:1742
+#: src/ui/gui/data-editor.glade:1751
 msgid "_Discrete missing values"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:1885
+#: src/ui/gui/data-editor.glade:1894
 msgid "Case Number:"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:1994
+#: src/ui/gui/data-editor.glade:2003 src/ui/gui/psppire.glade:1187
 msgid "Sort by:"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:2043 src/ui/gui/sort-cases-dialog.c:279
+#: src/ui/gui/data-editor.glade:2052 src/ui/gui/psppire.glade:1240
 msgid "Ascending"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:2056 src/ui/gui/sort-cases-dialog.c:281
+#: src/ui/gui/data-editor.glade:2065 src/ui/gui/psppire.glade:1250
 msgid "Descending"
 msgstr ""
 
-#: src/ui/gui/data-editor.glade:2072
+#: src/ui/gui/data-editor.glade:2081 src/ui/gui/psppire.glade:1266
 msgid "Sort Order"
 msgstr ""
 
-#: src/ui/gui/dict-display.c:92 src/ui/gui/sort-cases-dialog.c:339
-#: src/ui/gui/transpose-dialog.c:123
+#: src/ui/gui/dict-display.c:92
 msgid "Var"
 msgstr ""
 
@@ -4578,11 +4597,11 @@
 msgid "%d"
 msgstr ""
 
-#: src/ui/gui/psppire.glade:9
+#: src/ui/gui/psppire.glade:11
 msgid "This is pre-alpha software.  Use at your own risk."
 msgstr ""
 
-#: src/ui/gui/psppire.glade:10
+#: src/ui/gui/psppire.glade:12
 msgid ""
 "    This program is free software; you can redistribute it and/or modify\n"
 "    it under the terms of the GNU General Public License as published by\n"
@@ -4600,11 +4619,12 @@
 "    02110-1301, USA.\n"
 msgstr ""
 
-#: src/ui/gui/psppire.glade:90 src/ui/gui/psppire.glade:170
+#: src/ui/gui/psppire.glade:89 src/ui/gui/psppire.glade:170
+#: src/ui/gui/weight-cases-dialog.c:85
 msgid "Do not weight cases"
 msgstr ""
 
-#: src/ui/gui/psppire.glade:100
+#: src/ui/gui/psppire.glade:99
 msgid "Weight cases by"
 msgstr ""
 
@@ -4616,14 +4636,110 @@
 msgid "Current Status: "
 msgstr ""
 
-#: src/ui/gui/psppire.glade:257
+#: src/ui/gui/psppire.glade:258
 msgid "Name Variable:"
 msgstr ""
 
-#: src/ui/gui/psppire.glade:290
+#: src/ui/gui/psppire.glade:291
 msgid "Variable(s):"
 msgstr ""
 
+#: src/ui/gui/psppire.glade:444
+msgid "Analyse all cases.  Do not create groups."
+msgstr ""
+
+#: src/ui/gui/psppire.glade:454
+msgid "Compare groups."
+msgstr ""
+
+#: src/ui/gui/psppire.glade:467
+msgid "Organise output by groups."
+msgstr ""
+
+#: src/ui/gui/psppire.glade:514
+msgid "Groups based on:"
+msgstr ""
+
+#: src/ui/gui/psppire.glade:579
+msgid "Sort the file by grouping variables."
+msgstr ""
+
+#: src/ui/gui/psppire.glade:590
+msgid "File is already sorted."
+msgstr ""
+
+#: src/ui/gui/psppire.glade:634
+msgid "Current Status : "
+msgstr ""
+
+#: src/ui/gui/psppire.glade:642
+msgid "Analysis by groups is off"
+msgstr ""
+
+#: src/ui/gui/psppire.glade:740
+msgid "All Cases"
+msgstr ""
+
+#: src/ui/gui/psppire.glade:761
+msgid "If condition is satisfied"
+msgstr ""
+
+#: src/ui/gui/psppire.glade:780
+msgid "If..."
+msgstr ""
+
+#: src/ui/gui/psppire.glade:816
+msgid "Random Sample of cases"
+msgstr ""
+
+#: src/ui/gui/psppire.glade:830
+msgid "Sample..."
+msgstr ""
+
+#: src/ui/gui/psppire.glade:841
+msgid "Approximately 23% of cases"
+msgstr ""
+
+#: src/ui/gui/psppire.glade:876
+msgid "Based on time or case range"
+msgstr ""
+
+#: src/ui/gui/psppire.glade:890
+msgid "Range..."
+msgstr ""
+
+#: src/ui/gui/psppire.glade:901
+msgid "2 thru 3"
+msgstr ""
+
+#: src/ui/gui/psppire.glade:936
+msgid "Use filter variable"
+msgstr ""
+
+#: src/ui/gui/psppire.glade:983
+msgid "Select"
+msgstr ""
+
+#: src/ui/gui/psppire.glade:1012
+msgid "Filtered"
+msgstr ""
+
+#: src/ui/gui/psppire.glade:1022
+msgid "Deleted"
+msgstr ""
+
+#: src/ui/gui/psppire.glade:1039
+msgid "Unselected Cases Are"
+msgstr ""
+
+#: src/ui/gui/psppire.glade:1067
+msgid "Curent Status : "
+msgstr ""
+
+#: src/ui/gui/psppire.glade:1079
+msgid "Do not filter cases"
+msgstr ""
+
 #: src/ui/gui/psppire-var-store.c:470
 msgid "None"
 msgstr ""
@@ -4636,10 +4752,6 @@
 msgid "Custom"
 msgstr ""
 
-#: src/ui/gui/sort-cases-dialog.c:367
-msgid "Criteria"
-msgstr ""
-
 #: src/ui/gui/syntax-editor.c:80
 #, c-format
 msgid "Save contents of syntax editor to %s?"
@@ -4729,6 +4841,11 @@
 msgid "Scale"
 msgstr ""
 
+#: src/ui/gui/weight-cases-dialog.c:91
+#, c-format
+msgid "Weight cases by %s"
+msgstr ""
+
 #: src/ui/gui/window-manager.c:141
 #, c-format
 msgid "Syntax%d"

Index: src/data/case.c
===================================================================
RCS file: /sources/pspp/pspp/src/data/case.c,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -b -r1.10 -r1.11
--- src/data/case.c     16 Jan 2007 15:30:28 -0000      1.10
+++ src/data/case.c     2 Apr 2007 08:55:51 -0000       1.11
@@ -334,7 +334,7 @@
    in cases A and B and returns a strcmp()-type result. */
 int
 case_compare (const struct ccase *a, const struct ccase *b,
-              struct variable *const *vp, size_t var_cnt)
+              const struct variable *const *vp, size_t var_cnt)
 {
   return case_compare_2dict (a, b, vp, vp, var_cnt);
 }
@@ -344,7 +344,8 @@
    and returns a strcmp()-type result. */
 int
 case_compare_2dict (const struct ccase *ca, const struct ccase *cb,
-                    struct variable *const *vap, struct variable *const *vbp,
+                    const struct variable *const *vap, 
+               const struct variable *const *vbp,
                     size_t var_cnt) 
 {
   for (; var_cnt-- > 0; vap++, vbp++) 

Index: src/data/case.h
===================================================================
RCS file: /sources/pspp/pspp/src/data/case.h,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -b -r1.9 -r1.10
--- src/data/case.h     16 Jan 2007 15:30:28 -0000      1.9
+++ src/data/case.h     2 Apr 2007 08:55:51 -0000       1.10
@@ -69,9 +69,10 @@
 union value *case_data_rw_idx (struct ccase *, size_t idx);
 
 int case_compare (const struct ccase *, const struct ccase *,
-                  struct variable *const *, size_t var_cnt);
+                  const struct variable *const *, size_t var_cnt);
 int case_compare_2dict (const struct ccase *, const struct ccase *,
-                        struct variable *const *, struct variable *const *,
+                        const struct variable *const *, 
+                       const struct variable *const *,
                         size_t var_cnt);
 
 const union value *case_data_all (const struct ccase *);

Index: src/data/casefilter.c
===================================================================
RCS file: /sources/pspp/pspp/src/data/casefilter.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -b -r1.7 -r1.8
--- src/data/casefilter.c       23 Dec 2006 06:11:33 -0000      1.7
+++ src/data/casefilter.c       2 Apr 2007 08:55:51 -0000       1.8
@@ -67,7 +67,7 @@
    N_VARS is the size of VARS.
  */
 struct casefilter *
-casefilter_create (enum mv_class class, struct variable **vars, int n_vars)
+casefilter_create (enum mv_class class, const struct variable **vars, int 
n_vars)
 {
   int i;
   struct casefilter * filter = xmalloc (sizeof (*filter)) ;
@@ -88,7 +88,7 @@
    filter considers. N_VARS is the size of VARS */
 void
 casefilter_add_variables (struct casefilter *filter,
-                         struct variable *const *vars, int n_vars)
+                         const struct variable *const *vars, int n_vars)
 {
   int i;
 

Index: src/data/casefilter.h
===================================================================
RCS file: /sources/pspp/pspp/src/data/casefilter.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -b -r1.4 -r1.5
--- src/data/casefilter.h       23 Dec 2006 06:11:33 -0000      1.4
+++ src/data/casefilter.h       2 Apr 2007 08:55:51 -0000       1.5
@@ -32,12 +32,12 @@
    N_VARS is the size of VARS.
  */
 struct casefilter * casefilter_create (enum mv_class class,
-                                       struct variable **, int);
+                                       const struct variable **, int);
 
 /* Add the variables in VARS to the list of variables for which the
    filter considers. N_VARS is the size of VARS */
 void casefilter_add_variables (struct casefilter *, 
-                              struct variable *const*, int);
+                              const struct variable *const*, int);
 
 /* Destroy the filter FILTER */
 void casefilter_destroy (struct casefilter *); 

Index: src/data/cat-routines.h
===================================================================
RCS file: /sources/pspp/pspp/src/data/cat-routines.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- src/data/cat-routines.h     10 Dec 2006 03:42:50 -0000      1.2
+++ src/data/cat-routines.h     2 Apr 2007 08:55:51 -0000       1.3
@@ -43,11 +43,11 @@
 
 union value *cat_subscript_to_value (const size_t, struct variable *);
 
-void cat_stored_values_create (struct variable *);
+void cat_stored_values_create (const struct variable *);
 
-void cat_value_update (struct variable *, const union value *);
+void cat_value_update (const struct variable *, const union value *);
 
-void cat_create_value_matrix (struct variable *);
+void cat_create_value_matrix (const struct variable *);
 
 void cat_stored_values_destroy (struct cat_vals *);
 #endif

Index: src/data/category.c
===================================================================
RCS file: /sources/pspp/pspp/src/data/category.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -b -r1.6 -r1.7
--- src/data/category.c 10 Dec 2006 03:42:50 -0000      1.6
+++ src/data/category.c 2 Apr 2007 08:55:51 -0000       1.7
@@ -48,7 +48,7 @@
 #define N_INITIAL_CATEGORIES 1
 
 void
-cat_stored_values_create (struct variable *v)
+cat_stored_values_create (const struct variable *v)
 {
   if (!var_has_obs_vals (v))
     {
@@ -97,7 +97,7 @@
    Add the new value unless it is already present.
  */
 void
-cat_value_update (struct variable *v, const union value *val)
+cat_value_update (const struct variable *v, const union value *val)
 {
   if (var_is_alpha (v))
     {

Index: src/data/dictionary.c
===================================================================
RCS file: /sources/pspp/pspp/src/data/dictionary.c,v
retrieving revision 1.32
retrieving revision 1.33
diff -u -b -r1.32 -r1.33
--- src/data/dictionary.c       9 Feb 2007 05:28:21 -0000       1.32
+++ src/data/dictionary.c       2 Apr 2007 08:55:51 -0000       1.33
@@ -52,7 +52,7 @@
     size_t var_cnt, var_cap;    /* Number of variables, capacity. */
     struct hsh_table *name_tab;        /* Variable index by name. */
     int next_value_idx;         /* Index of next `union value' to allocate. */
-    struct variable **split;    /* SPLIT FILE vars. */
+    const struct variable **split;    /* SPLIT FILE vars. */
     size_t split_cnt;           /* SPLIT FILE count. */
     struct variable *weight;    /* WEIGHT variable. */
     struct variable *filter;    /* FILTER variable. */
@@ -233,13 +233,20 @@
   return d->var[idx];
 }
 
+inline void
+dict_get_vars (const struct dictionary *d, const struct variable ***vars,
+               size_t *cnt, unsigned exclude_classes)
+{
+  dict_get_vars_mutable (d, (struct variable ***) vars, cnt, exclude_classes);
+}
+
 /* Sets *VARS to an array of pointers to variables in D and *CNT
    to the number of variables in *D.  All variables are returned
    if EXCLUDE_CLASSES is 0, or it may contain one or more of (1u
    << DC_ORDINARY), (1u << DC_SYSTEM), or (1u << DC_SCRATCH) to
    exclude the corresponding type of variable. */
 void
-dict_get_vars (const struct dictionary *d, struct variable ***vars,
+dict_get_vars_mutable (const struct dictionary *d, struct variable ***vars,
                size_t *cnt, unsigned exclude_classes)
 {
   size_t count;
@@ -1009,7 +1016,7 @@
    dict_get_split_cnt() to determine how many SPLIT FILE vars
    there are.  Returns a null pointer if and only if there are no
    SPLIT FILE vars. */
-struct variable *const *
+const struct variable *const *
 dict_get_split_vars (const struct dictionary *d)
 {
   assert (d != NULL);

Index: src/data/dictionary.h
===================================================================
RCS file: /sources/pspp/pspp/src/data/dictionary.h,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -b -r1.12 -r1.13
--- src/data/dictionary.h       9 Feb 2007 05:28:21 -0000       1.12
+++ src/data/dictionary.h       2 Apr 2007 08:55:51 -0000       1.13
@@ -51,7 +51,10 @@
 
 size_t dict_get_var_cnt (const struct dictionary *);
 struct variable *dict_get_var (const struct dictionary *, size_t idx);
-void dict_get_vars (const struct dictionary *,
+inline void dict_get_vars (const struct dictionary *,
+                    const struct variable ***vars, size_t *cnt,
+                    unsigned exclude_classes);
+void dict_get_vars_mutable (const struct dictionary *,
                     struct variable ***vars, size_t *cnt,
                     unsigned exclude_classes);
 
@@ -110,7 +113,7 @@
                              struct ccase *, const struct ccase *);
 void dict_compactor_destroy (struct dict_compactor *);
 
-struct variable *const *dict_get_split_vars (const struct dictionary *);
+const struct variable *const *dict_get_split_vars (const struct dictionary *);
 size_t dict_get_split_cnt (const struct dictionary *);
 void dict_set_split_vars (struct dictionary *,
                           struct variable *const *, size_t cnt);

Index: src/data/variable.c
===================================================================
RCS file: /sources/pspp/pspp/src/data/variable.c,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -b -r1.21 -r1.22
--- src/data/variable.c 23 Dec 2006 06:11:33 -0000      1.21
+++ src/data/variable.c 2 Apr 2007 08:55:51 -0000       1.22
@@ -867,9 +867,10 @@
    cleared, AUX_DTOR(V) will be called.  (var_dtor_free, below,
    may be appropriate for use as AUX_DTOR.) */
 void *
-var_attach_aux (struct variable *v,
+var_attach_aux (const struct variable *v_,
                 void *aux, void (*aux_dtor) (struct variable *)) 
 {
+  struct variable *v = (struct variable *) v_ ; /* cast away const  */
   assert (v->aux == NULL);
   assert (aux != NULL);
   v->aux = aux;
@@ -924,8 +925,9 @@
 
 /* Sets V's observed categorical values to CAT_VALS. */
 void
-var_set_obs_vals (struct variable *v, struct cat_vals *cat_vals) 
+var_set_obs_vals (const struct variable *v_, struct cat_vals *cat_vals) 
 {
+  struct variable *v = (struct variable *) v_ ; /* cast away const */ 
   cat_stored_values_destroy (v->obs_vals);
   v->obs_vals = cat_vals;
 }

Index: src/data/variable.h
===================================================================
RCS file: /sources/pspp/pspp/src/data/variable.h,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -b -r1.20 -r1.21
--- src/data/variable.h 26 Jan 2007 07:35:03 -0000      1.20
+++ src/data/variable.h 2 Apr 2007 08:55:51 -0000       1.21
@@ -155,7 +155,7 @@
 
 /* Variable auxiliary data. */
 void *var_get_aux (const struct variable *);
-void *var_attach_aux (struct variable *,
+void *var_attach_aux (const struct variable *,
                       void *aux, void (*aux_dtor) (struct variable *));
 void var_clear_aux (struct variable *);
 void *var_detach_aux (struct variable *);
@@ -163,7 +163,7 @@
 
 /* Observed categorical values. */
 struct cat_vals *var_get_obs_vals (const struct variable *);
-void var_set_obs_vals (struct variable *, struct cat_vals *);
+void var_set_obs_vals (const struct variable *, struct cat_vals *);
 bool var_has_obs_vals (const struct variable *);
 
 /* Classes of variables. */

Index: src/language/data-io/get.c
===================================================================
RCS file: /sources/pspp/pspp/src/language/data-io/get.c,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -b -r1.29 -r1.30
--- src/language/data-io/get.c  7 Jan 2007 04:04:00 -0000       1.29
+++ src/language/data-io/get.c  2 Apr 2007 08:55:51 -0000       1.30
@@ -746,7 +746,7 @@
     struct mtf_file *next_min; /* Next in the chain of minimums. */
     
     int type;                  /* One of MTF_*. */
-    struct variable **by;      /* List of BY variables for this file. */
+    const struct variable **by;        /* List of BY variables for this file. 
*/
     struct file_handle *handle; /* File handle. */
     struct any_reader *reader;  /* File reader. */
     struct dictionary *dict;   /* Dictionary from system file. */
@@ -943,7 +943,7 @@
     {
       if (lex_match (lexer, T_BY))
        {
-          struct variable **by;
+          const struct variable **by;
           
          if (mtf.by_cnt)
            {
@@ -952,7 +952,7 @@
            }
              
          lex_match (lexer, '=');
-         if (!parse_variables (lexer, mtf.dict, &by, &mtf.by_cnt,
+         if (!parse_variables_const (lexer, mtf.dict, &by, &mtf.by_cnt,
                                PV_NO_DUPLICATE | PV_NO_SCRATCH))
            goto error;
 

Index: src/language/data-io/list.q
===================================================================
RCS file: /sources/pspp/pspp/src/language/data-io/list.q,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -b -r1.24 -r1.25
--- src/language/data-io/list.q 15 Dec 2006 00:16:02 -0000      1.24
+++ src/language/data-io/list.q 2 Apr 2007 08:55:51 -0000       1.25
@@ -311,7 +311,7 @@
       /* Put in vertical names. */
       for (i = x = 0; i < prc->n_vertical; i++)
        {
-         struct variable *v = cmd.v_variables[i];
+         const struct variable *v = cmd.v_variables[i];
           const char *name = var_get_name (v);
           size_t name_len = strlen (name);
           const struct fmt_spec *print = var_get_print_format (v);
@@ -327,7 +327,7 @@
       /* Put in horizontal names. */
       for (; i < cmd.n_variables; i++)
        {
-         struct variable *v = cmd.v_variables[i];
+         const struct variable *v = cmd.v_variables[i];
           const char *name = var_get_name (v);
           size_t name_len = strlen (name);
           const struct fmt_spec *print = var_get_print_format (v);
@@ -550,7 +550,7 @@
       /* Try layout #1. */
       for (width = cmd.n_variables - 1, column = 0; column < cmd.n_variables; 
column++)
        {
-         struct variable *v = cmd.v_variables[column];
+         const struct variable *v = cmd.v_variables[column];
           int fmt_width = var_get_print_format (v)->w;
           int name_len = strlen (var_get_name (v));
          width += MAX (fmt_width, name_len);
@@ -566,7 +566,7 @@
           column < cmd.n_variables && width <= max_width;
           column++) 
         {
-          struct variable *v = cmd.v_variables[column];
+          const struct variable *v = cmd.v_variables[column];
           int fmt_width = var_get_print_format (v)->w;
           size_t name_len = strlen (var_get_name (v));
           width += fmt_width;
@@ -583,7 +583,7 @@
 #endif
          for (column = cmd.n_variables; column-- != 0; )
            {
-             struct variable *v = cmd.v_variables[column];
+             const struct variable *v = cmd.v_variables[column];
               int name_len = strlen (var_get_name (v));
               int fmt_width = var_get_print_format (v)->w;
              int trial_width = width - fmt_width + MAX (fmt_width, name_len);
@@ -602,7 +602,7 @@
               column < prc->n_vertical;
               column++) 
             {
-              struct variable *var = cmd.v_variables[column];
+              const struct variable *var = cmd.v_variables[column];
               size_t name_len = strlen (var_get_name (var));
               prc->header_rows = MAX (prc->header_rows, name_len); 
             }
@@ -649,7 +649,7 @@
       
        for (column = 0; column < cmd.n_variables; column++)
          {
-           struct variable *v = cmd.v_variables[column];
+           const struct variable *v = cmd.v_variables[column];
             const struct fmt_spec *print = var_get_print_format (v);
            int width;
 
@@ -715,7 +715,7 @@
        
        for (column = 0; column < cmd.n_variables; column++)
          {
-           struct variable *v = cmd.v_variables[column];
+           const struct variable *v = cmd.v_variables[column];
             const struct fmt_spec *print = var_get_print_format (v);
            char buf[256];
            

Index: src/language/data-io/print.c
===================================================================
RCS file: /sources/pspp/pspp/src/language/data-io/print.c,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -b -r1.24 -r1.25
--- src/language/data-io/print.c        9 Feb 2007 05:19:08 -0000       1.24
+++ src/language/data-io/print.c        2 Apr 2007 08:55:51 -0000       1.25
@@ -62,7 +62,7 @@
     int first_column;          /* 0-based first column. */
 
     /* PRT_VAR only. */
-    struct variable *var;      /* Associated variable. */
+    const struct variable *var;        /* Associated variable. */
     struct fmt_spec format;    /* Output spec. */
     bool add_space;             /* Add trailing space? */
     bool sysmis_as_spaces;      /* Output SYSMIS as spaces? */
@@ -305,13 +305,13 @@
                          int *record, int *column,
                          enum which_formats which_formats)
 {
-  struct variable **vars;
+  const struct variable **vars;
   size_t var_cnt, var_idx;
   struct fmt_spec *formats, *f;
   size_t format_cnt;
   bool add_space;
   
-  if (!parse_variables_pool (lexer, tmp_pool, dict, 
+  if (!parse_variables_const_pool (lexer, tmp_pool, dict, 
                             &vars, &var_cnt, PV_DUPLICATE))
     return false;
 
@@ -332,7 +332,7 @@
       format_cnt = var_cnt;
       for (i = 0; i < var_cnt; i++) 
         {
-          struct variable *v = vars[i];
+          const struct variable *v = vars[i];
           formats[i] = (which_formats == PRINT
                         ? *var_get_print_format (v)
                         : *var_get_write_format (v));
@@ -344,7 +344,7 @@
   for (f = formats; f < &formats[format_cnt]; f++)
     if (!execute_placement_format (f, record, column))
       {
-        struct variable *var;
+        const struct variable *var;
         struct prt_out_spec *spec;
 
         var = vars[var_idx++];

Index: src/language/dictionary/delete-variables.c
===================================================================
RCS file: /sources/pspp/pspp/src/language/dictionary/delete-variables.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- src/language/dictionary/delete-variables.c  22 Dec 2006 04:38:22 -0000      
1.1
+++ src/language/dictionary/delete-variables.c  2 Apr 2007 08:55:52 -0000       
1.2
@@ -41,7 +41,8 @@
     msg (SE, _("DELETE VARIABLES may not be used after TEMPORARY.  "
                "Temporary transformations will be made permanent."));
 
-  if (!parse_variables (lexer, dataset_dict (ds), &vars, &var_cnt, PV_NONE))
+  if (!parse_variables (lexer, dataset_dict (ds), &vars, &var_cnt, 
+                             PV_NONE))
     goto error;
   if (var_cnt == dict_get_var_cnt (dataset_dict (ds)))
     {

Index: src/language/dictionary/modify-variables.c
===================================================================
RCS file: /sources/pspp/pspp/src/language/dictionary/modify-variables.c,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -b -r1.16 -r1.17
--- src/language/dictionary/modify-variables.c  9 Feb 2007 05:19:08 -0000       
1.16
+++ src/language/dictionary/modify-variables.c  2 Apr 2007 08:55:52 -0000       
1.17
@@ -141,7 +141,7 @@
                           "of variables."));
                      goto done;
                    }
-                 dict_get_vars (dataset_dict (ds), &v, &nv, 1u << DC_SYSTEM);
+                 dict_get_vars_mutable (dataset_dict (ds), &v, &nv, 1u << 
DC_SYSTEM);
                }
              else
                {
@@ -250,7 +250,7 @@
          sort (keep_vars, keep_cnt, sizeof *keep_vars,
                 compare_variables_given_ordering, 
&forward_positional_ordering);
 
-          dict_get_vars (dataset_dict (ds), &all_vars, &all_cnt, 0);
+          dict_get_vars_mutable (dataset_dict (ds), &all_vars, &all_cnt, 0);
           assert (all_cnt >= keep_cnt);
 
           drop_cnt = all_cnt - keep_cnt;
@@ -408,7 +408,7 @@
   size_t i;
 
   /* All variables, in index order. */
-  dict_get_vars (d, &all_vars, &all_cnt, 0);
+  dict_get_vars_mutable (d, &all_vars, &all_cnt, 0);
 
   /* Drop variables, in index order. */
   drop_cnt = vm->drop_cnt;

Index: src/language/dictionary/split-file.c
===================================================================
RCS file: /sources/pspp/pspp/src/language/dictionary/split-file.c,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -b -r1.14 -r1.15
--- src/language/dictionary/split-file.c        15 Dec 2006 00:16:02 -0000      
1.14
+++ src/language/dictionary/split-file.c        2 Apr 2007 08:55:52 -0000       
1.15
@@ -69,7 +69,7 @@
 output_split_file_values (const struct dataset *ds, const struct ccase *c)
 {
   const struct dictionary *dict = dataset_dict (ds);
-  struct variable *const *split;
+  const struct variable *const *split;
   struct tab_table *t;
   size_t split_cnt;
   int i;
@@ -88,7 +88,7 @@
   split = dict_get_split_vars (dict);
   for (i = 0; i < split_cnt; i++)
     {
-      struct variable *v = split[i];
+      const struct variable *v = split[i];
       char temp_buf[80];
       const char *val_lab;
       const struct fmt_spec *print = var_get_print_format (v);

Index: src/language/dictionary/sys-file-info.c
===================================================================
RCS file: /sources/pspp/pspp/src/language/dictionary/sys-file-info.c,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -b -r1.22 -r1.23
--- src/language/dictionary/sys-file-info.c     9 Feb 2007 05:28:21 -0000       
1.22
+++ src/language/dictionary/sys-file-info.c     2 Apr 2007 08:55:52 -0000       
1.23
@@ -62,7 +62,7 @@
     AS_VECTOR
   };
 
-static int describe_variable (struct variable *v, struct tab_table *t, int r, 
int as);
+static int describe_variable (const struct variable *v, struct tab_table *t, 
int r, int as);
      
 /* Sets the widths of all the columns and heights of all the rows in
    table T for driver D. */
@@ -193,7 +193,7 @@
 
 static void display_macros (void);
 static void display_documents (const struct dictionary *dict);
-static void display_variables (struct variable **, size_t, int);
+static void display_variables (const struct variable **, size_t, int);
 static void display_vectors (const struct dictionary *dict, int sorted);
 
 int
@@ -204,7 +204,7 @@
 
   /* Variables to display. */
   size_t n;
-  struct variable **vl;
+  const struct variable **vl;
 
   if (lex_match_id (lexer, "MACROS"))
     display_macros ();
@@ -258,7 +258,7 @@
 
       if (lex_token (lexer) != '.')
        {
-         if (!parse_variables (lexer, dataset_dict (ds), &vl, &n, PV_NONE))
+         if (!parse_variables_const (lexer, dataset_dict (ds), &vl, &n, 
PV_NONE))
            {
              free (vl);
              return CMD_FAILURE;
@@ -364,9 +364,9 @@
 }
   
 static void
-display_variables (struct variable **vl, size_t n, int as)
+display_variables (const struct variable **vl, size_t n, int as)
 {
-  struct variable **vp = vl;           /* Variable pointer. */
+  const struct variable **vp = vl;     /* Variable pointer. */
   struct tab_table *t;
   int nc;                      /* Number of columns. */
   int nr;                      /* Number of rows. */
@@ -404,7 +404,7 @@
     
   for (i = r = 1; i <= n; i++)
     {
-      struct variable *v;
+      const struct variable *v;
 
       while (*vp == NULL)
        vp++;
@@ -458,7 +458,7 @@
    The variable will be described in the format AS.  Returns the next
    row available for use in the table. */
 static int 
-describe_variable (struct variable *v, struct tab_table *t, int r, int as)
+describe_variable (const struct variable *v, struct tab_table *t, int r, int 
as)
 {
   const struct fmt_spec *print = var_get_print_format (v);
   const struct fmt_spec *write = var_get_write_format (v);

Index: src/language/dictionary/value-labels.c
===================================================================
RCS file: /sources/pspp/pspp/src/language/dictionary/value-labels.c,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -b -r1.15 -r1.16
--- src/language/dictionary/value-labels.c      15 Dec 2006 00:16:02 -0000      
1.15
+++ src/language/dictionary/value-labels.c      2 Apr 2007 08:55:52 -0000       
1.16
@@ -38,7 +38,7 @@
 /* Declarations. */
 
 static int do_value_labels (struct lexer *, 
-                           const struct dictionary *dict, int);
+                           const struct dictionary *dict, bool);
 static int verify_val_labs (struct variable **vars, size_t var_cnt);
 static void erase_labels (struct variable **vars, size_t var_cnt);
 static int get_label (struct lexer *, struct variable **vars, size_t var_cnt);
@@ -48,19 +48,19 @@
 int
 cmd_value_labels (struct lexer *lexer, struct dataset *ds)
 {
-  return do_value_labels (lexer, dataset_dict (ds), 1);
+  return do_value_labels (lexer, dataset_dict (ds), true);
 }
 
 int
 cmd_add_value_labels (struct lexer *lexer, struct dataset *ds)
 {
-  return do_value_labels (lexer, dataset_dict (ds), 0);
+  return do_value_labels (lexer, dataset_dict (ds), false);
 }
 
 /* Do it. */
 
 static int
-do_value_labels (struct lexer *lexer, const struct dictionary *dict, int erase)
+do_value_labels (struct lexer *lexer, const struct dictionary *dict, bool 
erase)
 {
   struct variable **vars; /* Variable list. */
   size_t var_cnt;         /* Number of variables. */
@@ -115,7 +115,7 @@
 
   for (i = 0; i < var_cnt; i++)
     {
-      struct variable *vp = vars[i];
+      const struct variable *vp = vars[i];
 
       if (var_is_long_string (vp))
        {

Index: src/language/expressions/optimize.c
===================================================================
RCS file: /sources/pspp/pspp/src/language/expressions/optimize.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -b -r1.6 -r1.7
--- src/language/expressions/optimize.c 15 Dec 2006 00:16:02 -0000      1.6
+++ src/language/expressions/optimize.c 2 Apr 2007 08:55:52 -0000       1.7
@@ -247,7 +247,7 @@
 }
 
 static void
-emit_variable (struct expression *e, struct variable *v) 
+emit_variable (struct expression *e, const struct variable *v) 
 {
   allocate_aux (e, OP_variable)->variable = v;
 }

Index: src/language/expressions/parse.c
===================================================================
RCS file: /sources/pspp/pspp/src/language/expressions/parse.c,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -b -r1.24 -r1.25
--- src/language/expressions/parse.c    1 Feb 2007 15:01:42 -0000       1.24
+++ src/language/expressions/parse.c    2 Apr 2007 08:55:52 -0000       1.25
@@ -61,7 +61,7 @@
 static bool type_check (struct expression *, union any_node **,
                         enum expr_type expected_type);
 static union any_node *allocate_unary_variable (struct expression *,
-                                                struct variable *); 
+                                                const struct variable *); 
 
 /* Public functions. */
 
@@ -1219,11 +1219,11 @@
         if (lex_token (lexer) == T_ID
             && toupper (lex_look_ahead (lexer)) == 'T')
           {
-            struct variable **vars;
+            const struct variable **vars;
             size_t var_cnt;
             size_t i;
 
-            if (!parse_variables (lexer, dataset_dict (e->ds), &vars, 
&var_cnt, PV_SINGLE))
+            if (!parse_variables_const (lexer, dataset_dict (e->ds), &vars, 
&var_cnt, PV_SINGLE))
               goto fail;
             for (i = 0; i < var_cnt; i++)
               add_arg (&args, &arg_cnt, &arg_cap,
@@ -1481,7 +1481,7 @@
 }
 
 union any_node *
-expr_allocate_variable (struct expression *e, struct variable *v)
+expr_allocate_variable (struct expression *e, const struct variable *v)
 {
   union any_node *n = pool_alloc (e->expr_pool, sizeof n->variable);
   n->type = var_is_numeric (v) ? OP_num_var : OP_str_var;
@@ -1501,7 +1501,7 @@
 /* Allocates a unary composite node that represents the value of
    variable V in expression E. */
 static union any_node *
-allocate_unary_variable (struct expression *e, struct variable *v) 
+allocate_unary_variable (struct expression *e, const struct variable *v) 
 {
   assert (v != NULL);
   return expr_allocate_unary (e, var_is_numeric (v) ? OP_NUM_VAR : OP_STR_VAR,

Index: src/language/expressions/private.h
===================================================================
RCS file: /sources/pspp/pspp/src/language/expressions/private.h,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -b -r1.9 -r1.10
--- src/language/expressions/private.h  15 Dec 2006 00:16:02 -0000      1.9
+++ src/language/expressions/private.h  2 Apr 2007 08:55:52 -0000       1.10
@@ -100,7 +100,7 @@
 struct variable_node
   {
     operation_type type;   /* OP_variable. */
-    struct variable *v;
+    const struct variable *v;
   };
 
 struct integer_node
@@ -148,7 +148,7 @@
     operation_type operation;
     double number;
     struct substring string;
-    struct variable *variable;
+    const struct variable *variable;
     const struct vector *vector;
     struct fmt_spec *format;
     int integer;
@@ -194,7 +194,7 @@
 union any_node *expr_allocate_string (struct expression *e,
                                       struct substring);
 union any_node *expr_allocate_variable (struct expression *e,
-                                        struct variable *);
+                                        const struct variable *);
 union any_node *expr_allocate_format (struct expression *e,
                                  const struct fmt_spec *);
 union any_node *expr_allocate_vector (struct expression *e,

Index: src/language/lexer/q2c.c
===================================================================
RCS file: /sources/pspp/pspp/src/language/lexer/q2c.c,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -b -r1.21 -r1.22
--- src/language/lexer/q2c.c    16 Feb 2007 19:24:25 -0000      1.21
+++ src/language/lexer/q2c.c    2 Apr 2007 08:55:52 -0000       1.22
@@ -1134,12 +1134,12 @@
          case SBC_VARLIST:
            dump (0, "size_t %sn_%s;", st_lower (sbc->prefix),
                  st_lower (sbc->name));
-           dump (0, "struct variable **%sv_%s;", st_lower (sbc->prefix),
+           dump (0, "const struct variable **%sv_%s;", st_lower (sbc->prefix),
                  st_lower (sbc->name));
            break;
 
          case SBC_VAR:
-           dump (0, "struct variable *%sv_%s;", st_lower (sbc->prefix),
+           dump (0, "const struct variable *%sv_%s;", st_lower (sbc->prefix),
                  st_lower (sbc->name));
            break;
 
@@ -1597,7 +1597,7 @@
     }
   else if (sbc->type == SBC_VARLIST)
     {
-      dump (1, "if (!parse_variables (lexer, dataset_dict (ds), &p->%sv_%s, 
&p->%sn_%s, "
+      dump (1, "if (!parse_variables_const (lexer, dataset_dict (ds), 
&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),
@@ -1765,7 +1765,7 @@
        }
       dump (1, "{");
       dump (0, "p->sbc_%s++;", st_lower (def->name));
-      dump (1, "if (!parse_variables (lexer, dataset_dict (ds), &p->%sv_%s, 
&p->%sn_%s, "
+      dump (1, "if (!parse_variables_const (lexer, dataset_dict (ds), 
&p->%sv_%s, &p->%sn_%s, "
            "PV_APPEND))",
            st_lower (def->prefix), st_lower (def->name),
            st_lower (def->prefix), st_lower (def->name));

Index: src/language/lexer/variable-parser.c
===================================================================
RCS file: /sources/pspp/pspp/src/language/lexer/variable-parser.c,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -b -r1.15 -r1.16
--- src/language/lexer/variable-parser.c        22 Dec 2006 04:38:23 -0000      
1.15
+++ src/language/lexer/variable-parser.c        2 Apr 2007 08:55:52 -0000       
1.16
@@ -40,6 +40,16 @@
 #include "gettext.h"
 #define _(msgid) gettext (msgid)
 
+static struct variable * var_set_get_var (const struct var_set *, size_t );
+
+static struct variable *var_set_lookup_var (const struct var_set *,
+                                           const char *);
+
+static bool var_set_lookup_var_idx (const struct var_set *, const char *,
+                                   size_t *);
+
+
+
 /* Parses a name as a variable within VS.  Sets *IDX to the
    variable's index and returns true if successful.  On failure
    emits an error message and returns false. */
@@ -633,7 +643,7 @@
 
 /* Return variable with index IDX in VS.
    IDX must be less than the number of variables in VS. */
-struct variable *
+static struct variable *
 var_set_get_var (const struct var_set *vs, size_t idx) 
 {
   assert (vs != NULL);
@@ -819,3 +829,4 @@
   
   return vs;
 }
+

Index: src/language/lexer/variable-parser.h
===================================================================
RCS file: /sources/pspp/pspp/src/language/lexer/variable-parser.h,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -b -r1.7 -r1.8
--- src/language/lexer/variable-parser.h        15 Dec 2006 00:16:02 -0000      
1.7
+++ src/language/lexer/variable-parser.h        2 Apr 2007 08:55:52 -0000       
1.8
@@ -1,5 +1,5 @@
 /* PSPP - computes sample statistics.
-   Copyright (C) 1997-9, 2000, 2006 Free Software Foundation, Inc.
+   Copyright (C) 1997-9, 2000, 2006, 2007 Free Software Foundation, Inc.
 
    This program is free software; you can redistribute it and/or
    modify it under the terms of the GNU General Public License as
@@ -25,6 +25,7 @@
 struct pool;
 struct dictionary;
 struct var_set;
+struct const_var_set;
 struct variable;
 struct lexer ;
 
@@ -33,13 +34,10 @@
                                            size_t);
 
 size_t var_set_get_cnt (const struct var_set *vs);
-struct variable *var_set_get_var (const struct var_set *vs, size_t idx);
-struct variable *var_set_lookup_var (const struct var_set *vs,
-                                     const char *name);
-bool var_set_lookup_var_idx (const struct var_set *vs, const char *name,
-                             size_t *idx);
+
 void var_set_destroy (struct var_set *vs);
 
+
 /* Variable parsers. */
 
 enum
@@ -72,4 +70,60 @@
                            struct pool *,
                            char ***names, size_t *cnt, int opts);
 
+
+/* Const wrappers */
+
+static inline const struct variable *
+parse_variable_const (struct lexer *l, const struct dictionary *d)
+{
+  return parse_variable (l, d);
+}
+
+static inline bool
+parse_variables_const (struct lexer *l, const struct dictionary *d,
+                      const struct variable ***v, size_t *s,
+                      int opts)
+{
+  return parse_variables (l, d, (struct variable ***) v, s, opts);
+}
+
+static inline bool
+parse_variables_const_pool (struct lexer *l, struct pool *p,
+                           const struct dictionary *d,
+                           const struct variable ***v, size_t *s, int opts)
+{
+  return parse_variables_pool (l, p, d, (struct variable ***) v, s, opts);
+}
+
+
+
+static inline struct const_var_set *
+const_var_set_create_from_dict (const struct dictionary *d)
+{
+  return (struct const_var_set *) var_set_create_from_dict (d);
+}
+
+static inline struct const_var_set *
+const_var_set_create_from_array (const struct variable *const *var,
+                                size_t s)
+{
+  return (struct const_var_set *) var_set_create_from_array ((struct variable 
*const *) var, s);
+}
+
+
+static inline bool
+parse_const_var_set_vars (struct lexer *l, const struct const_var_set *vs,
+                         const struct variable ***v, size_t *s, int opts)
+{
+  return parse_var_set_vars (l, (const struct var_set *) vs,
+                            (struct variable ***) v, s, opts);
+}
+
+static inline void
+const_var_set_destroy (struct const_var_set *vs)
+{
+  var_set_destroy ( (struct var_set *) vs);
+}
+
+
 #endif /* variable-parser.h */

Index: src/language/stats/aggregate.c
===================================================================
RCS file: /sources/pspp/pspp/src/language/stats/aggregate.c,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -b -r1.30 -r1.31
--- src/language/stats/aggregate.c      9 Feb 2007 05:19:08 -0000       1.30
+++ src/language/stats/aggregate.c      2 Apr 2007 08:55:52 -0000       1.31
@@ -64,7 +64,7 @@
     struct agr_var *next;              /* Next in list. */
 
     /* Collected during parsing. */
-    struct variable *src;      /* Source variable. */
+    const struct variable *src;        /* Source variable. */
     struct variable *dest;     /* Target variable. */
     int function;              /* Function. */
     enum mv_class exclude;      /* Classes of missing values to exclude. */
@@ -141,7 +141,7 @@
 
     /* Break variables. */
     struct sort_criteria *sort;         /* Sort criteria. */
-    struct variable **break_vars;       /* Break variables. */
+    const struct variable **break_vars;       /* Break variables. */
     size_t break_var_cnt;               /* Number of break variables. */
     struct ccase break_case;            /* Last values of break variables. */
 
@@ -396,7 +396,7 @@
 
       union agr_argument arg[2];
 
-      struct variable **src;
+      const struct variable **src;
       size_t n_src;
 
       size_t i;
@@ -496,7 +496,7 @@
            else if (function->n_args)
              pv_opts |= PV_SAME_TYPE;
 
-           if (!parse_variables (lexer, dict, &src, &n_src, pv_opts))
+           if (!parse_variables_const (lexer, dict, &src, &n_src, pv_opts))
              goto error;
          }
 
@@ -959,7 +959,7 @@
 
     for (i = 0; i < agr->break_var_cnt; i++) 
       {
-        struct variable *v = agr->break_vars[i];
+        const struct variable *v = agr->break_vars[i];
         size_t value_cnt = var_get_value_cnt (v);
         memcpy (case_data_rw_idx (output, value_idx),
                 case_data (&agr->break_case, v),

Index: src/language/stats/autorecode.c
===================================================================
RCS file: /sources/pspp/pspp/src/language/stats/autorecode.c,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -b -r1.18 -r1.19
--- src/language/stats/autorecode.c     19 Dec 2006 14:21:53 -0000      1.18
+++ src/language/stats/autorecode.c     2 Apr 2007 08:55:52 -0000       1.19
@@ -57,7 +57,7 @@
 /* Explains how to recode an AUTORECODE variable. */
 struct arc_spec
   {
-    struct variable *src;      /* Source variable. */
+    const struct variable *src;        /* Source variable. */
     struct variable *dest;     /* Target variable. */
     struct hsh_table *items;   /* Hash table of `freq's. */
   };
@@ -80,7 +80,7 @@
 /* AUTORECODE data. */
 struct autorecode_pgm 
   {
-    struct variable **src_vars;    /* Source variables. */
+    const struct variable **src_vars;    /* Source variables. */
     char **dst_names;              /* Target variable names. */
     struct variable **dst_vars;    /* Target variables. */
     struct hsh_table **src_values; /* `union arc_value's of source vars. */
@@ -120,7 +120,8 @@
 
   lex_match_id (lexer, "VARIABLES");
   lex_match (lexer, '=');
-  if (!parse_variables (lexer, dataset_dict (ds), &arc.src_vars, &arc.var_cnt,
+  if (!parse_variables_const (lexer, dataset_dict (ds), &arc.src_vars, 
+                             &arc.var_cnt,
                         PV_NO_DUPLICATE))
     goto lossage;
   if (!lex_force_match_id (lexer, "INTO"))
@@ -177,12 +178,15 @@
   arc.dst_vars = xnmalloc (arc.var_cnt, sizeof *arc.dst_vars);
   arc.src_values = xnmalloc (arc.var_cnt, sizeof *arc.src_values);
   for (i = 0; i < dst_cnt; i++)
+    {
+       /* FIXME: consolodate this hsh_create */
     if (var_is_alpha (arc.src_vars[i]))
       arc.src_values[i] = hsh_create (10, compare_alpha_value,
                                       hash_alpha_value, NULL, arc.src_vars[i]);
     else
       arc.src_values[i] = hsh_create (10, compare_numeric_value,
                                       hash_numeric_value, NULL, NULL);
+   }
 
   proc_open (ds);
   while (proc_read (ds, &c))

Index: src/language/stats/correlations.q
===================================================================
RCS file: /sources/pspp/pspp/src/language/stats/correlations.q,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -b -r1.15 -r1.16
--- src/language/stats/correlations.q   15 Dec 2006 00:16:02 -0000      1.15
+++ src/language/stats/correlations.q   2 Apr 2007 08:55:52 -0000       1.16
@@ -36,7 +36,7 @@
 struct cor_set
   {
     struct cor_set *next;
-    struct variable **v1, **v2;
+    const struct variable **v1, **v2;
     size_t nv1, nv2;
   };
 
@@ -88,7 +88,7 @@
 static int
 cor_custom_variables (struct lexer *lexer, struct dataset *ds, struct 
cmd_correlations *cmd UNUSED, void *aux UNUSED)
 {
-  struct variable **v1, **v2;
+  const struct variable **v1, **v2;
   size_t nv1, nv2;
   struct cor_set *cor;
 
@@ -99,13 +99,13 @@
     return 2;
   lex_match (lexer, '=');
 
-  if (!parse_variables (lexer, dataset_dict (ds), &v1, &nv1,
+  if (!parse_variables_const (lexer, dataset_dict (ds), &v1, &nv1,
                        PV_NO_DUPLICATE | PV_NUMERIC))
     return 0;
   
   if (lex_match (lexer, T_WITH))
     {
-      if (!parse_variables (lexer, dataset_dict (ds), &v2, &nv2,
+      if (!parse_variables_const (lexer, dataset_dict (ds), &v2, &nv2,
                            PV_NO_DUPLICATE | PV_NUMERIC))
        {
          free (v1);

Index: src/language/stats/crosstabs.q
===================================================================
RCS file: /sources/pspp/pspp/src/language/stats/crosstabs.q,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -b -r1.28 -r1.29
--- src/language/stats/crosstabs.q      19 Mar 2007 04:18:47 -0000      1.28
+++ src/language/stats/crosstabs.q      2 Apr 2007 08:55:52 -0000       1.29
@@ -116,7 +116,7 @@
     int nvar;                  /* Number of variables. */
     double missing;            /* Missing cases count. */
     int ofs;                   /* Integer mode: Offset into sorted_tab[]. */
-    struct variable *vars[2];  /* At least two variables; sorted by
+    const struct variable *vars[2];    /* At least two variables; sorted by
                                   larger indices first. */
   };
 
@@ -129,7 +129,7 @@
   };
 
 static inline struct var_range *
-get_var_range (struct variable *v) 
+get_var_range (const struct variable *v) 
 {
   return var_get_aux (v);
 }
@@ -147,7 +147,7 @@
 static struct table_entry **sorted_tab;        /* Sorted table. */
 
 /* Variables specifies on VARIABLES. */
-static struct variable **variables;
+static const struct variable **variables;
 static size_t variables_cnt;
 
 /* TABLES. */
@@ -305,31 +305,32 @@
 static int
 crs_custom_tables (struct lexer *lexer, struct dataset *ds, struct 
cmd_crosstabs *cmd UNUSED, void *aux UNUSED)
 {
-  struct var_set *var_set;
+  struct const_var_set *var_set;
   int n_by;
-  struct variable ***by = NULL;
+  const struct variable ***by = NULL;
   size_t *by_nvar = NULL;
   size_t nx = 1;
   int success = 0;
 
   /* Ensure that this is a TABLES subcommand. */
   if (!lex_match_id (lexer, "TABLES")
-      && (lex_token (lexer) != T_ID || dict_lookup_var (dataset_dict (ds), 
lex_tokid (lexer)) == NULL)
+      && (lex_token (lexer) != T_ID || 
+         dict_lookup_var (dataset_dict (ds), lex_tokid (lexer)) == NULL)
       && lex_token (lexer) != T_ALL)
     return 2;
   lex_match (lexer, '=');
 
   if (variables != NULL)
-    var_set = var_set_create_from_array (variables, variables_cnt);
+    var_set = const_var_set_create_from_array (variables, variables_cnt);
   else
-    var_set = var_set_create_from_dict (dataset_dict (ds));
+    var_set = const_var_set_create_from_dict (dataset_dict (ds));
   assert (var_set != NULL);
   
   for (n_by = 0; ;)
     {
       by = xnrealloc (by, n_by + 1, sizeof *by);
       by_nvar = xnrealloc (by_nvar, n_by + 1, sizeof *by_nvar);
-      if (!parse_var_set_vars (lexer, var_set, &by[n_by], &by_nvar[n_by],
+      if (!parse_const_var_set_vars (lexer, var_set, &by[n_by], &by_nvar[n_by],
                                PV_NO_DUPLICATE | PV_NO_SCRATCH))
        goto done;
       if (xalloc_oversized (nx, by_nvar[n_by])) 
@@ -400,7 +401,7 @@
     free (by_nvar);
   }
 
-  var_set_destroy (var_set);
+  const_var_set_destroy (var_set);
 
   return success;
 }
@@ -424,7 +425,7 @@
 
       long min, max;
       
-      if (!parse_variables (lexer, dataset_dict (ds), 
+      if (!parse_variables_const (lexer, dataset_dict (ds), 
                            &variables, &variables_cnt,
                            (PV_APPEND | PV_NUMERIC
                             | PV_NO_DUPLICATE | PV_NO_SCRATCH)))
@@ -660,7 +661,7 @@
       ofs = x->ofs;
       for (i = 0; i < x->nvar; i++)
        {
-         struct variable *const v = x->vars[i];
+         const struct variable *const v = x->vars[i];
           struct var_range *vr = get_var_range (v);
          double value = case_num (c, v);
          
@@ -681,10 +682,10 @@
        }
       
       {
-        struct variable *row_var = x->vars[ROW_VAR];
+        const struct variable *row_var = x->vars[ROW_VAR];
        const int row = case_num (c, row_var) - get_var_range (row_var)->min;
 
-        struct variable *col_var = x->vars[COL_VAR];
+        const struct variable *col_var = x->vars[COL_VAR];
        const int col = case_num (c, col_var) - get_var_range (col_var)->min;
 
        const int col_dim = get_var_range (col_var)->count;
@@ -1633,7 +1634,7 @@
 enum_var_values (struct table_entry **entries, int entry_cnt, int var_idx,
                  union value **values, int *value_cnt)
 {
-  struct variable *v = xtab[(*entries)->table]->vars[var_idx];
+  const struct variable *v = xtab[(*entries)->table]->vars[var_idx];
 
   if (mode == GENERAL)
     {

Index: src/language/stats/descriptives.c
===================================================================
RCS file: /sources/pspp/pspp/src/language/stats/descriptives.c,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -b -r1.22 -r1.23
--- src/language/stats/descriptives.c   9 Feb 2007 05:19:08 -0000       1.22
+++ src/language/stats/descriptives.c   2 Apr 2007 08:55:52 -0000       1.23
@@ -63,7 +63,7 @@
    calculating a Z-score. */
 struct dsc_z_score
   {
-    struct variable *src_var;   /* Variable on which z-score is based. */
+    const struct variable *src_var;   /* Variable on which z-score is based. */
     struct variable *z_var;     /* New z-score variable. */
     double mean;               /* Distribution mean. */
     double std_dev;            /* Distribution standard deviation. */
@@ -74,7 +74,7 @@
   {
     struct dsc_z_score *z_scores; /* Array of Z-scores. */
     int z_score_cnt;            /* Number of Z-scores. */
-    struct variable **vars;     /* Variables for listwise missing checks. */
+    const struct variable **vars;     /* Variables for listwise missing 
checks. */
     size_t var_cnt;             /* Number of variables. */
     enum dsc_missing_type missing_type; /* Treatment of missing values. */
     enum mv_class exclude;      /* Classes of missing values to exclude. */
@@ -126,7 +126,7 @@
 /* A variable specified on DESCRIPTIVES. */
 struct dsc_var
   {
-    struct variable *v;         /* Variable to calculate on. */
+    const struct variable *v;         /* Variable to calculate on. */
     char z_name[LONG_NAME_LEN + 1]; /* Name for z-score variable. */
     double valid, missing;     /* Valid, missing counts. */
     struct moments *moments;    /* Moments. */
@@ -193,7 +193,7 @@
 {
   struct dictionary *dict = dataset_dict (ds);
   struct dsc_proc *dsc;
-  struct variable **vars = NULL;
+  const struct variable **vars = NULL;
   size_t var_cnt = 0;
   int save_z_scores = 0;
   int z_cnt = 0;
@@ -316,11 +316,12 @@
             {
               int i;
               
-              if (!parse_variables (lexer, dataset_dict (ds), &vars, &var_cnt,
+              if (!parse_variables_const (lexer, dataset_dict (ds), 
+                                         &vars, &var_cnt,
                                     PV_APPEND | PV_NO_DUPLICATE | PV_NUMERIC))
                goto error;
 
-              dsc->vars = xnrealloc (dsc->vars, var_cnt, sizeof *dsc->vars);
+              dsc->vars = xnrealloc ((void *)dsc->vars, var_cnt, sizeof 
*dsc->vars);
               for (i = dsc->var_cnt; i < var_cnt; i++)
                 {
                   struct dsc_var *dv = &dsc->vars[i];
@@ -586,7 +587,7 @@
 {
   struct dsc_trns *t = trns_;
   struct dsc_z_score *z;
-  struct variable **vars;
+  const struct variable **vars;
   int all_sysmis = 0;
 
   if (t->missing_type == DSC_LISTWISE)

Index: src/language/stats/examine.q
===================================================================
RCS file: /sources/pspp/pspp/src/language/stats/examine.q,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -b -r1.22 -r1.23
--- src/language/stats/examine.q        23 Dec 2006 06:11:33 -0000      1.22
+++ src/language/stats/examine.q        2 Apr 2007 08:55:52 -0000       1.23
@@ -84,7 +84,7 @@
 
 static struct cmd_examine cmd;
 
-static struct variable **dependent_vars;
+static const struct variable **dependent_vars;
 
 static size_t n_dependent_vars;
 
@@ -116,19 +116,19 @@
 
 
 /* Output functions */
-static void show_summary (struct variable **dependent_var, int n_dep_var,
+static void show_summary (const struct variable **dependent_var, int n_dep_var,
                         const struct factor *f);
 
-static void show_extremes (struct variable **dependent_var,
+static void show_extremes (const struct variable **dependent_var,
                          int n_dep_var,
                          const struct factor *factor,
                          int n_extremities);
 
-static void show_descriptives (struct variable **dependent_var,
+static void show_descriptives (const struct variable **dependent_var,
                              int n_dep_var,
                              struct factor *factor);
 
-static void show_percentiles (struct variable **dependent_var,
+static void show_percentiles (const struct variable **dependent_var,
                             int n_dep_var,
                             struct factor *factor);
 
@@ -525,7 +525,7 @@
       return 2;
     }
 
-  if (!parse_variables (lexer, dict, &dependent_vars, &n_dependent_vars,
+  if (!parse_variables_const (lexer, dict, &dependent_vars, &n_dependent_vars,
                        PV_NO_DUPLICATE | PV_NUMERIC | PV_NO_SCRATCH) )
     {
       free (dependent_vars);
@@ -899,7 +899,7 @@
 
 
 static void
-show_summary (struct variable **dependent_var, int n_dep_var,
+show_summary (const struct variable **dependent_var, int n_dep_var,
             const struct factor *fctr)
 {
   static const char *subtitle[]=
@@ -1124,7 +1124,7 @@
 
 
 static void
-show_extremes (struct variable **dependent_var, int n_dep_var,
+show_extremes (const struct variable **dependent_var, int n_dep_var,
              const struct factor *fctr, int n_extremities)
 {
   int i;
@@ -1361,7 +1361,7 @@
 
 /* Show the descriptives table */
 void
-show_descriptives (struct variable **dependent_var,
+show_descriptives (const struct variable **dependent_var,
                  int n_dep_var,
                  struct factor *fctr)
 {
@@ -1947,7 +1947,7 @@
 
 /* Show the percentiles */
 void
-show_percentiles (struct variable **dependent_var,
+show_percentiles (const struct variable **dependent_var,
                 int n_dep_var,
                 struct factor *fctr)
 {

Index: src/language/stats/flip.c
===================================================================
RCS file: /sources/pspp/pspp/src/language/stats/flip.c,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -b -r1.22 -r1.23
--- src/language/stats/flip.c   17 Feb 2007 16:16:23 -0000      1.22
+++ src/language/stats/flip.c   2 Apr 2007 08:55:52 -0000       1.23
@@ -64,7 +64,7 @@
 struct flip_pgm 
   {
     struct pool *pool;          /* Pool containing FLIP data. */
-    struct variable **var;      /* Variables to transpose. */
+    const struct variable **var;      /* Variables to transpose. */
     int *idx_to_fv;             /* var[]->index to compacted sink case fv. */
     size_t var_cnt;             /* Number of elements in `var'. */
     int case_cnt;               /* Pre-flip case count. */
@@ -122,7 +122,7 @@
   if (lex_match_id (lexer, "VARIABLES"))
     {
       lex_match (lexer, '=');
-      if (!parse_variables (lexer, dict, &flip->var, &flip->var_cnt,
+      if (!parse_variables_const (lexer, dict, &flip->var, &flip->var_cnt,
                             PV_NO_DUPLICATE))
        goto error;
       lex_match (lexer, '/');

Index: src/language/stats/frequencies.q
===================================================================
RCS file: /sources/pspp/pspp/src/language/stats/frequencies.q,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -b -r1.29 -r1.30
--- src/language/stats/frequencies.q    23 Dec 2006 06:11:33 -0000      1.29
+++ src/language/stats/frequencies.q    2 Apr 2007 08:55:52 -0000       1.30
@@ -197,7 +197,7 @@
 
 /* Variables for which to calculate statistics. */
 static size_t n_variables;
-static struct variable **v_variables;
+static const struct variable **v_variables;
 
 /* Arenas used to store semi-permanent storage. */
 static struct pool *int_pool;  /* Integer mode. */
@@ -269,17 +269,17 @@
 
 static void determine_charts (void);
 
-static void calc_stats (struct variable *v, double d[frq_n_stats]);
+static void calc_stats (const struct variable *v, double d[frq_n_stats]);
 
 static void precalc (const struct ccase *, void *, const struct dataset *);
 static bool calc (const struct ccase *, void *, const struct dataset *);
 static bool postcalc (void *, const struct dataset *);
 
-static void postprocess_freq_tab (struct variable *);
-static void dump_full (struct variable *);
-static void dump_condensed (struct variable *);
-static void dump_statistics (struct variable *, int show_varname);
-static void cleanup_freq_tab (struct variable *);
+static void postprocess_freq_tab (const struct variable *);
+static void dump_full (const struct variable *);
+static void dump_condensed (const struct variable *);
+static void dump_statistics (const struct variable *, int show_varname);
+static void cleanup_freq_tab (const struct variable *);
 
 static hsh_compare_func compare_value_numeric_a, compare_value_alpha_a;
 static hsh_compare_func compare_value_numeric_d, compare_value_alpha_d;
@@ -569,7 +569,7 @@
   
   for (i = 0; i < n_variables; i++)
     {
-      struct variable *v = v_variables[i];
+      const struct variable *v = v_variables[i];
       struct freq_tab *ft = &get_var_freqs (v)->tab;
 
       if (ft->mode == FRQM_GENERAL)
@@ -597,7 +597,7 @@
 
   for (i = 0; i < n_variables; i++)
     {
-      struct variable *v = v_variables[i];
+      const struct variable *v = v_variables[i];
       struct var_freqs *vf = get_var_freqs (v);
       struct freq_tab *ft = &vf->tab;
       int n_categories;
@@ -705,7 +705,7 @@
 
 /* Summarizes the frequency table data for variable V. */
 static void
-postprocess_freq_tab (struct variable *v)
+postprocess_freq_tab (const struct variable *v)
 {
   hsh_compare_func *compare;
   struct freq_tab *ft;
@@ -760,7 +760,7 @@
 
 /* Frees the frequency table for variable V. */
 static void
-cleanup_freq_tab (struct variable *v)
+cleanup_freq_tab (const struct variable *v)
 {
   struct freq_tab *ft = &get_var_freqs (v)->tab;
   assert (ft->mode == FRQM_GENERAL);
@@ -784,7 +784,7 @@
                          || dict_lookup_var (dataset_dict (ds), lex_tokid 
(lexer)) == NULL))
     return 2;
 
-  if (!parse_variables (lexer, dataset_dict (ds), &v_variables, &n_variables,
+  if (!parse_variables_const (lexer, dataset_dict (ds), &v_variables, 
&n_variables,
                        PV_APPEND | PV_NO_SCRATCH))
     return 0;
 
@@ -815,7 +815,7 @@
 
   for (i = old_n_variables; i < n_variables; i++)
     {
-      struct variable *v = v_variables[i];
+      const struct variable *v = v_variables[i];
       struct var_freqs *vf;
 
       if (var_get_aux (v) != NULL)
@@ -875,9 +875,9 @@
 
        /* Variable list. */
        size_t n;
-       struct variable **v;
+       const struct variable **v;
 
-       if (!parse_variables (lexer, dataset_dict (ds), &v, &n,
+       if (!parse_variables_const (lexer, dataset_dict (ds), &v, &n,
                               PV_NO_DUPLICATE | PV_NUMERIC))
          return 0;
        if (lex_match (lexer, '('))
@@ -1119,7 +1119,7 @@
 
 /* Displays a full frequency table for variable V. */
 static void
-dump_full (struct variable *v)
+dump_full (const struct variable *v)
 {
   int n_categories;
   struct var_freqs *vf;
@@ -1250,7 +1250,7 @@
 
 /* Display condensed frequency table for variable V. */
 static void
-dump_condensed (struct variable *v)
+dump_condensed (const struct variable *v)
 {
   int n_categories;
   struct var_freqs *vf;
@@ -1310,7 +1310,7 @@
 /* Calculates all the pertinent statistics for variable V, putting
    them in array D[].  FIXME: This could be made much more optimal. */
 static void
-calc_stats (struct variable *v, double d[frq_n_stats])
+calc_stats (const struct variable *v, double d[frq_n_stats])
 {
   struct freq_tab *ft = &get_var_freqs (v)->tab;
   double W = ft->valid_cases;
@@ -1472,7 +1472,7 @@
 
 /* Displays a table of all the statistics requested for variable V. */
 static void
-dump_statistics (struct variable *v, int show_varname)
+dump_statistics (const struct variable *v, int show_varname)
 {
   struct freq_tab *ft;
   double stat_value[frq_n_stats];

Index: src/language/stats/means.q
===================================================================
RCS file: /sources/pspp/pspp/src/language/stats/means.q,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -b -r1.12 -r1.13
--- src/language/stats/means.q  15 Dec 2006 00:16:03 -0000      1.12
+++ src/language/stats/means.q  2 Apr 2007 08:55:52 -0000       1.13
@@ -53,7 +53,7 @@
 /* TABLES: Variable lists for each dimension. */
 static int n_dim;              /* Number of dimensions. */
 static size_t *nv_dim;         /* Number of variables in each dimension. */
-static struct variable ***v_dim;       /* Variables in each dimension.  */
+static const struct variable ***v_dim; /* Variables in each dimension.  */
 
 /* VARIABLES: List of variables. */
 static struct variable **v_var;
@@ -123,7 +123,7 @@
 static int
 mns_custom_tables (struct lexer *lexer, struct dataset *ds, struct cmd_means 
*cmd, void *aux UNUSED)
 {
-  struct var_set *var_set;
+  struct const_var_set *var_set;
   
   if (!lex_match_id (lexer, "TABLES")
       && (lex_token (lexer) != T_ID || dict_lookup_var (dataset_dict (ds), 
lex_tokid (lexer)) == NULL)
@@ -138,15 +138,15 @@
       return 0;
     }
 
-  var_set = var_set_create_from_dict (dataset_dict (ds));
+  var_set = const_var_set_create_from_dict (dataset_dict (ds));
   assert (var_set != NULL);
 
   do
     {
       size_t nvl;
-      struct variable **vl;
+      const struct variable **vl;
 
-      if (!parse_var_set_vars (lexer, var_set, &vl, &nvl,
+      if (!parse_const_var_set_vars (lexer, var_set, &vl, &nvl,
                                PV_NO_DUPLICATE | PV_NO_SCRATCH)) 
         goto lossage;
       
@@ -159,11 +159,11 @@
     }
   while (lex_match (lexer, T_BY));
 
-  var_set_destroy (var_set);
+  const_var_set_destroy (var_set);
   return 1;
 
  lossage:
-  var_set_destroy (var_set);
+  const_var_set_destroy (var_set);
   return 0;
 }
 

Index: src/language/stats/npar.h
===================================================================
RCS file: /sources/pspp/pspp/src/language/stats/npar.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- src/language/stats/npar.h   20 Dec 2006 22:19:48 -0000      1.2
+++ src/language/stats/npar.h   2 Apr 2007 08:55:52 -0000       1.3
@@ -19,10 +19,11 @@
 #if !npar_h
 #define npar_h 1
 
-typedef struct variable *var_ptr;
+typedef const struct variable *var_ptr;
 typedef var_ptr variable_pair[2];
 
 struct hsh_table;
+struct const_hsh_table;
 struct casefilter ;
 
 struct npar_test
@@ -34,13 +35,13 @@
                   );
 
   void (*insert_variables) (const struct npar_test *, 
-                           struct hsh_table *);
+                           struct const_hsh_table *);
 };
 
 struct one_sample_test
 {
   struct npar_test parent;
-  struct variable **vars;
+  const struct variable **vars;
   size_t n_vars;
 };
 

Index: src/language/stats/npar.q
===================================================================
RCS file: /sources/pspp/pspp/src/language/stats/npar.q,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- src/language/stats/npar.q   9 Feb 2007 05:19:08 -0000       1.3
+++ src/language/stats/npar.q   2 Apr 2007 08:55:52 -0000       1.4
@@ -82,7 +82,7 @@
 };
 
 void one_sample_insert_variables (const struct npar_test *test,
-                                 struct hsh_table *variables);
+                                 struct const_hsh_table *variables);
 
 static bool 
 npar_execute(const struct ccase *first UNUSED,
@@ -130,10 +130,10 @@
   bool ok;
   int i;
   struct npar_specs npar_specs = {0, 0, 0, 0, 0, 0, 0, 0};
-  struct hsh_table *var_hash;
+  struct const_hsh_table *var_hash;
   npar_specs.pool = pool_create ();
 
-  var_hash = hsh_create_pool (npar_specs.pool, 0, 
+  var_hash = const_hsh_create_pool (npar_specs.pool, 0, 
                              compare_vars_by_name, hash_var_by_name, 
                              NULL, NULL);
 
@@ -149,8 +149,8 @@
       test->insert_variables (test, var_hash);
     }
 
-  npar_specs.vv =  (const struct variable *const *) hsh_data (var_hash);
-  npar_specs.n_vars = hsh_count (var_hash);
+  npar_specs.vv =  (const struct variable *const *) const_hsh_data (var_hash);
+  npar_specs.n_vars = const_hsh_count (var_hash);
   
   if ( cmd.sbc_statistics ) 
     {
@@ -191,7 +191,7 @@
 
   casefilter_destroy (npar_specs.filter);
 
-  hsh_destroy (var_hash);
+  const_hsh_destroy (var_hash);
 
   pool_destroy (npar_specs.pool);
 
@@ -209,7 +209,7 @@
   ((struct npar_test *)tp)->execute = chisquare_execute;
   ((struct npar_test *)tp)->insert_variables = one_sample_insert_variables;
 
-  if (!parse_variables_pool (lexer, specs->pool, dataset_dict (ds), 
+  if (!parse_variables_const_pool (lexer, specs->pool, dataset_dict (ds), 
                             &tp->vars, &tp->n_vars,
                             PV_NO_SCRATCH | PV_NO_DUPLICATE))
     {
@@ -329,7 +329,7 @@
 
   if ( lex_match (lexer, '=') ) 
     {
-      if (parse_variables_pool (lexer, specs->pool, dataset_dict (ds), 
+      if (parse_variables_const_pool (lexer, specs->pool, dataset_dict (ds), 
                                &tp->vars, &tp->n_vars,
                                PV_NUMERIC | PV_NO_SCRATCH | PV_NO_DUPLICATE) )
        {
@@ -389,13 +389,13 @@
   int n = 0;
   bool paired = false;
   bool with = false;
-  struct variable **vlist1;
+  const struct variable **vlist1;
   size_t n_vlist1;
 
-  struct variable **vlist2;
+  const struct variable **vlist2;
   size_t n_vlist2;
 
-  if (!parse_variables_pool (lexer, pool, 
+  if (!parse_variables_const_pool (lexer, pool, 
                             dict, 
                             &vlist1, &n_vlist1,
                             PV_NUMERIC | PV_NO_SCRATCH | PV_NO_DUPLICATE) )
@@ -404,7 +404,7 @@
   if ( lex_match(lexer, T_WITH))
     {
       with = true;
-      if ( !parse_variables_pool (lexer, pool, dict,
+      if ( !parse_variables_const_pool (lexer, pool, dict,
                                  &vlist2, &n_vlist2,
                                  PV_NUMERIC | PV_NO_SCRATCH | PV_NO_DUPLICATE) 
)
        return false;
@@ -558,12 +558,12 @@
 /* Insert the variables for TEST into VAR_HASH */
 void
 one_sample_insert_variables (const struct npar_test *test,
-                           struct hsh_table *var_hash)
+                           struct const_hsh_table *var_hash)
 {
   int i;
   struct one_sample_test *ost = (struct one_sample_test *) test;
 
   for ( i = 0 ; i < ost->n_vars ; ++i ) 
-    hsh_insert (var_hash, ost->vars[i]);
+    const_hsh_insert (var_hash, ost->vars[i]);
 }
 

Index: src/language/stats/oneway.q
===================================================================
RCS file: /sources/pspp/pspp/src/language/stats/oneway.q,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -b -r1.21 -r1.22
--- src/language/stats/oneway.q 9 Feb 2007 05:19:08 -0000       1.21
+++ src/language/stats/oneway.q 2 Apr 2007 08:55:52 -0000       1.22
@@ -71,13 +71,13 @@
 static struct cmd_oneway cmd;
 
 /* The independent variable */
-static struct variable *indep_var;
+static const struct variable *indep_var;
 
 /* Number of dependent variables */
 static size_t n_vars;
 
 /* The dependent variables */
-static struct variable **vars;
+static const struct variable **vars;
 
 
 /* A  hash table containing all the distinct values of the independent
@@ -225,7 +225,7 @@
       && lex_token (lexer) != T_ALL)
     return 2;
 
-  if (!parse_variables (lexer, dict, &vars, &n_vars,
+  if (!parse_variables_const (lexer, dict, &vars, &n_vars,
                        PV_DUPLICATE 
                        | PV_NUMERIC | PV_NO_SCRATCH) )
     {

Index: src/language/stats/rank.q
===================================================================
RCS file: /sources/pspp/pspp/src/language/stats/rank.q,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -b -r1.27 -r1.28
--- src/language/stats/rank.q   16 Jan 2007 15:30:28 -0000      1.27
+++ src/language/stats/rank.q   2 Apr 2007 08:55:52 -0000       1.28
@@ -154,10 +154,10 @@
 
 static struct sort_criteria *sc;
 
-static struct variable **group_vars;
+static const struct variable **group_vars;
 static size_t n_group_vars;
 
-static struct variable **src_vars;
+static const struct variable **src_vars;
 static size_t n_src_vars;
 
 
@@ -245,7 +245,7 @@
   criteria.crits = xnmalloc (criteria.crit_cnt, sizeof *criteria.crits);
   for (i = 0; i < n_splits ; i++)
     {
-      struct variable *v = dict_get_split_vars (dataset_dict (ds))[i];
+      const struct variable *v = dict_get_split_vars (dataset_dict (ds))[i];
       criteria.crits[i].fv = var_get_case_index (v);
       criteria.crits[i].width = var_get_width (v);
       criteria.crits[i].dir = SRT_ASCEND;
@@ -946,7 +946,7 @@
          return 2;
        }
 
-      if (!parse_variables (lexer, dataset_dict (ds),
+      if (!parse_variables_const (lexer, dataset_dict (ds),
                            &group_vars, &n_group_vars,
                            PV_NO_DUPLICATE | PV_NO_SCRATCH) )
        {

Index: src/language/stats/regression.q
===================================================================
RCS file: /sources/pspp/pspp/src/language/stats/regression.q,v
retrieving revision 1.47
retrieving revision 1.48
diff -u -b -r1.47 -r1.48
--- src/language/stats/regression.q     30 Mar 2007 02:16:41 -0000      1.47
+++ src/language/stats/regression.q     2 Apr 2007 08:55:52 -0000       1.48
@@ -89,7 +89,7 @@
 struct moments_var
 {
   struct moments1 *m;
-  struct variable *v;
+  const struct variable *v;
 };
 
 /* Linear regression models. */
@@ -108,7 +108,7 @@
 /*
   Variables used (both explanatory and response).
  */
-static struct variable **v_variables;
+static const struct variable **v_variables;
 
 /*
   Number of variables.
@@ -974,8 +974,9 @@
   Compute the first two moments.
  */
 static size_t
-mark_missing_cases (const struct casefile *cf, struct variable *v,
-                   int *is_missing_case, double n_data, struct moments_var 
*mom)
+mark_missing_cases (const struct casefile *cf, const struct variable *v,
+                   int *is_missing_case, double n_data,
+                    struct moments_var *mom)
 {
   struct casereader *r;
   struct ccase c;
@@ -1024,7 +1025,7 @@
     return 2;
 
 
-  if (!parse_variables (lexer, dict, &v_variables, &n_variables, PV_NONE))
+  if (!parse_variables_const (lexer, dict, &v_variables, &n_variables, 
PV_NONE))
     {
       free (v_variables);
       return 0;
@@ -1064,8 +1065,9 @@
 */
 static int
 prepare_data (int n_data, int is_missing_case[],
-             struct variable **indep_vars,
-             struct variable *depvar, const struct casefile *cf, struct 
moments_var *mom)
+             const struct variable **indep_vars,
+             const struct variable *depvar, const struct casefile *cf,
+              struct moments_var *mom)
 {
   int i;
   int j;
@@ -1153,7 +1155,7 @@
   const union value *val;
   struct casereader *r;
   struct ccase c;
-  struct variable **indep_vars;
+  const struct variable **indep_vars;
   struct design_matrix *X;
   struct moments_var *mom;
   gsl_vector *Y;

Index: src/language/stats/sort-criteria.c
===================================================================
RCS file: /sources/pspp/pspp/src/language/stats/sort-criteria.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -b -r1.7 -r1.8
--- src/language/stats/sort-criteria.c  15 Dec 2006 00:16:03 -0000      1.7
+++ src/language/stats/sort-criteria.c  2 Apr 2007 08:55:52 -0000       1.8
@@ -50,13 +50,13 @@
 */
 struct sort_criteria *
 sort_parse_criteria (struct lexer *lexer, const struct dictionary *dict,
-                     struct variable ***vars, size_t *var_cnt,
+                     const struct variable ***vars, size_t *var_cnt,
                      bool *saw_direction,
                     const int *terminators
                     )
 {
   struct sort_criteria *criteria;
-  struct variable **local_vars = NULL;
+  const struct variable **local_vars = NULL;
   size_t local_var_cnt;
 
   assert ((vars == NULL) == (var_cnt == NULL));
@@ -81,7 +81,7 @@
       enum sort_direction direction;
 
       /* Variables. */
-      if (!parse_variables (lexer, dict, vars, var_cnt,
+      if (!parse_variables_const (lexer, dict, vars, var_cnt,
                            PV_NO_DUPLICATE | PV_APPEND | PV_NO_SCRATCH))
         goto error;
 

Index: src/language/stats/sort-criteria.h
===================================================================
RCS file: /sources/pspp/pspp/src/language/stats/sort-criteria.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -b -r1.4 -r1.5
--- src/language/stats/sort-criteria.h  15 Dec 2006 00:16:03 -0000      1.4
+++ src/language/stats/sort-criteria.h  2 Apr 2007 08:55:52 -0000       1.5
@@ -28,7 +28,7 @@
 struct lexer ;
 
 struct sort_criteria *sort_parse_criteria (struct lexer *, const struct 
dictionary *,
-                                           struct variable ***, size_t *,
+                                           const struct variable ***, size_t *,
                                            bool *saw_direction,
                                           const int *terminators
                                           );

Index: src/language/stats/t-test.q
===================================================================
RCS file: /sources/pspp/pspp/src/language/stats/t-test.q,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -b -r1.20 -r1.21
--- src/language/stats/t-test.q 9 Feb 2007 05:19:08 -0000       1.20
+++ src/language/stats/t-test.q 2 Apr 2007 08:55:52 -0000       1.21
@@ -110,7 +110,7 @@
 struct pair 
 {
   /* The variables comprising the pair */
-  struct variable *v[2];
+  const struct variable *v[2];
 
   /* The number of valid variable pairs */
   double n;
@@ -304,30 +304,29 @@
 
          int i;
          struct hsh_iterator hi;
-         struct hsh_table *hash;
-         struct variable *v;
+         struct const_hsh_table *hash;
+         const struct variable *v;
 
-         hash = hsh_create (n_pairs, compare_vars_by_name, hash_var_by_name,
+         hash = const_hsh_create (n_pairs, compare_vars_by_name, 
hash_var_by_name,
           0, 0);
 
          for (i=0; i < n_pairs; ++i)
            {
-             hsh_insert(hash,pairs[i].v[0]);
-             hsh_insert(hash,pairs[i].v[1]);
+             const_hsh_insert (hash, pairs[i].v[0]);
+             const_hsh_insert (hash, pairs[i].v[1]);
            }
 
          assert(cmd.n_variables == 0);
-         cmd.n_variables = hsh_count(hash);
+         cmd.n_variables = const_hsh_count (hash);
 
          cmd.v_variables = xnrealloc (cmd.v_variables, cmd.n_variables,
                                        sizeof *cmd.v_variables);
          /* Iterate through the hash */
-         for (i=0,v = (struct variable *) hsh_first(hash,&hi);
+         for (i=0,v = const_hsh_first (hash, &hi);
               v != 0;
-              v=hsh_next(hash,&hi) ) 
+              v = const_hsh_next (hash, &hi) ) 
            cmd.v_variables[i++]=v;
-
-         hsh_destroy(hash);
+         const_hsh_destroy(hash);
        }
     }
   else if ( !cmd.sbc_variables) 
@@ -441,7 +440,7 @@
 static int
 tts_custom_pairs (struct lexer *lexer, struct dataset *ds, struct cmd_t_test 
*cmd UNUSED, void *aux UNUSED)
 {
-  struct variable **vars;
+  const struct variable **vars;
   size_t n_vars;
   size_t n_pairs_local;
 
@@ -452,7 +451,7 @@
   lex_match (lexer, '=');
 
   n_vars=0;
-  if (!parse_variables (lexer, dataset_dict (ds), &vars, &n_vars,
+  if (!parse_variables_const (lexer, dataset_dict (ds), &vars, &n_vars,
                        PV_DUPLICATE | PV_NUMERIC | PV_NO_SCRATCH))
     {
       free (vars);
@@ -464,7 +463,7 @@
   if (lex_match (lexer, T_WITH))
     {
       n_before_WITH = n_vars;
-      if (!parse_variables (lexer, dataset_dict (ds), &vars, &n_vars,
+      if (!parse_variables_const (lexer, dataset_dict (ds), &vars, &n_vars,
                            PV_DUPLICATE | PV_APPEND
                            | PV_NUMERIC | PV_NO_SCRATCH))
        {
@@ -749,7 +748,7 @@
 
   for (i=0; i < cmd->n_variables; ++i)
     {
-      struct variable *var = cmd->v_variables[i];
+      const struct variable *var = cmd->v_variables[i];
       struct hsh_table *grp_hash = group_proc_get (var)->group_hash;
       int count=0;
 
@@ -1012,7 +1011,7 @@
       double std_err_diff;
       double mean_diff;
 
-      struct variable *var = cmd->v_variables[i];
+      const struct variable *var = cmd->v_variables[i];
       struct group_proc *grp_data = group_proc_get (var);
 
       struct hsh_table *grp_hash = grp_data->group_hash;
@@ -1429,7 +1428,7 @@
 
   for(i = 0; i < cmd->n_variables ; ++i) 
     {
-      struct variable *v = cmd->v_variables[i];
+      const struct variable *v = cmd->v_variables[i];
 
       if (! casefilter_variable_missing (filter, c, v) )
        {
@@ -1505,7 +1504,7 @@
   for(i=0; i< cmd->n_variables ; ++i) 
     {
       struct group_statistics *gs;
-      struct variable *v = cmd->v_variables[i];
+      const struct variable *v = cmd->v_variables[i];
       const union value *val = case_data (c, v);
 
       gs= &group_proc_get (cmd->v_variables[i])->ugs;
@@ -1578,8 +1577,8 @@
 
   for(i=0; i < n_pairs ; ++i )
     {
-      struct variable *v0 = pairs[i].v[0];
-      struct variable *v1 = pairs[i].v[1];
+      const struct variable *v0 = pairs[i].v[0];
+      const struct variable *v1 = pairs[i].v[1];
 
       const union value *val0 = case_data (c, v0);
       const union value *val1 = case_data (c, v1);
@@ -1711,7 +1710,7 @@
 
   for(i=0; i< cmd->n_variables ; ++i) 
     {
-      struct variable *var = cmd->v_variables[i];
+      const struct variable *var = cmd->v_variables[i];
       const union value *val = case_data (c, var);
       struct hsh_table *grp_hash = group_proc_get (var)->group_hash;
       struct group_statistics *gs;
@@ -1742,7 +1741,7 @@
 
   for (i = 0; i < cmd->n_variables ; ++i) 
     {
-      struct variable *var = cmd->v_variables[i];
+      const struct variable *var = cmd->v_variables[i];
       struct hsh_table *grp_hash = group_proc_get (var)->group_hash;
       struct hsh_iterator g;
       struct group_statistics *gs;

Index: src/language/xforms/count.c
===================================================================
RCS file: /sources/pspp/pspp/src/language/xforms/count.c,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -b -r1.15 -r1.16
--- src/language/xforms/count.c 23 Dec 2006 06:11:33 -0000      1.15
+++ src/language/xforms/count.c 2 Apr 2007 08:55:52 -0000       1.16
@@ -58,7 +58,7 @@
     struct criteria *next;
 
     /* Variables to count. */
-    struct variable **vars;
+    const struct variable **vars;
     size_t var_cnt;
 
     /* Count special values? */
@@ -139,7 +139,8 @@
           
          crit->next = NULL;
          crit->vars = NULL;
-         if (!parse_variables (lexer, dataset_dict (ds), &crit->vars, 
&crit->var_cnt,
+         if (!parse_variables_const (lexer, dataset_dict (ds), &crit->vars, 
+                                     &crit->var_cnt,
                                 PV_DUPLICATE | PV_SAME_TYPE))
            goto fail;
           pool_register (trns->pool, free, crit->vars);

Index: src/language/xforms/recode.c
===================================================================
RCS file: /sources/pspp/pspp/src/language/xforms/recode.c,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -b -r1.19 -r1.20
--- src/language/xforms/recode.c        2 Feb 2007 00:52:38 -0000       1.19
+++ src/language/xforms/recode.c        2 Apr 2007 08:55:52 -0000       1.20
@@ -97,8 +97,8 @@
     enum var_type dst_type;     /* dst_vars[*]->type. */
 
     /* Variables. */
-    struct variable **src_vars;        /* Source variables. */
-    struct variable **dst_vars;        /* Destination variables. */
+    const struct variable **src_vars;  /* Source variables. */
+    const struct variable **dst_vars;  /* Destination variables. */
     char **dst_names;          /* Name of dest variables, if they're new. */
     size_t var_cnt;             /* Number of variables. */
 
@@ -181,7 +181,7 @@
 parse_src_vars (struct lexer *lexer, 
                struct recode_trns *trns, const struct dictionary *dict) 
 {
-  if (!parse_variables (lexer, dict, &trns->src_vars, &trns->var_cnt,
+  if (!parse_variables_const (lexer, dict, &trns->src_vars, &trns->var_cnt,
                         PV_SAME_TYPE))
     return false;
   pool_register (trns->pool, free, trns->src_vars);
@@ -443,7 +443,7 @@
                                     trns->var_cnt, sizeof *trns->dst_vars);
       for (i = 0; i < trns->var_cnt; i++)
         {
-          struct variable *v;
+          const struct variable *v;
           v = trns->dst_vars[i] = dict_lookup_var (dict, trns->dst_names[i]);
           if (v == NULL && trns->dst_type == VAR_STRING) 
             {
@@ -472,7 +472,7 @@
 
   for (i = 0; i < trns->var_cnt; i++)
     {
-      struct variable *v = trns->dst_vars[i];
+      const struct variable *v = trns->dst_vars[i];
       if (v != NULL && var_get_type (v) != trns->dst_type)
         {
           msg (SE, _("Type mismatch.  Cannot store %s data in "
@@ -498,7 +498,7 @@
   max_dst_width = 0;
   for (i = 0; i < trns->var_cnt; i++)
     {
-      struct variable *v = trns->dst_vars[i];
+      const struct variable *v = trns->dst_vars[i];
       if (var_get_width (v) > max_dst_width)
         max_dst_width = var_get_width (v);
     }
@@ -523,7 +523,7 @@
 
   for (i = 0; i < trns->var_cnt; i++) 
     {
-      struct variable **var = &trns->dst_vars[i];
+      const struct variable **var = &trns->dst_vars[i];
       const char *name = trns->dst_names[i];
           
       *var = dict_lookup_var (dict, name);
@@ -538,7 +538,7 @@
 /* Returns the output mapping in TRNS for an input of VALUE on
    variable V, or a null pointer if there is no mapping. */
 static const struct map_out *
-find_src_numeric (struct recode_trns *trns, double value, struct variable *v)
+find_src_numeric (struct recode_trns *trns, double value, const struct 
variable *v)
 {
   struct mapping *m;
 
@@ -627,8 +627,8 @@
 
   for (i = 0; i < trns->var_cnt; i++) 
     {
-      struct variable *src_var = trns->src_vars[i];
-      struct variable *dst_var = trns->dst_vars[i];
+      const struct variable *src_var = trns->src_vars[i];
+      const struct variable *dst_var = trns->dst_vars[i];
 
       const union value *src_data = case_data (c, src_var);
       union value *dst_data = case_data_rw (c, dst_var);

Index: src/libpspp/hash.h
===================================================================
RCS file: /sources/pspp/pspp/src/libpspp/hash.h,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -b -r1.7 -r1.8
--- src/libpspp/hash.h  15 Dec 2006 00:16:03 -0000      1.7
+++ src/libpspp/hash.h  2 Apr 2007 08:55:52 -0000       1.8
@@ -87,4 +87,109 @@
 void hsh_dump (struct hsh_table *);
 #endif
 
+
+/* Const Wrappers for the above */
+
+static inline struct const_hsh_table *
+const_hsh_create (int m,
+                 hsh_compare_func *hcf,
+                 hsh_hash_func *hhf, hsh_free_func *hff,
+                 const void *aux)
+{
+  return (struct const_hsh_table *) hsh_create (m, hcf, hhf, hff, aux);
+}
+
+
+
+static inline struct const_hsh_table *
+const_hsh_create_pool (struct pool *pool, int m,
+                      hsh_compare_func *cf,
+                      hsh_hash_func *hf, hsh_free_func *ff,
+                      const void *aux)
+{
+  return (struct const_hsh_table *) hsh_create_pool (pool, m, cf, hf, ff, aux);
+}
+
+
+static inline void
+const_hsh_clear (struct const_hsh_table *h)
+{
+  hsh_clear ( (struct hsh_table *) h);
+}
+
+static inline void
+const_hsh_destroy (struct const_hsh_table *h)
+{
+  hsh_destroy ( (struct hsh_table *) h);
+}
+
+static inline void *const *
+const_hsh_sort (struct const_hsh_table *h)
+{
+  return hsh_sort ( (struct hsh_table *) h);
+}
+
+static inline void *const *
+const_hsh_data (struct const_hsh_table *h)
+{
+  return hsh_data ( (struct hsh_table *) h);
+}
+
+static inline void **
+const_hsh_sort_copy (struct const_hsh_table *h)
+{
+  return hsh_sort_copy ( (struct hsh_table *) h);
+}
+
+static inline void **
+const_hsh_data_copy (struct const_hsh_table *h)
+{
+  return hsh_data_copy ( (struct hsh_table *) h);
+}
+
+
+static inline size_t
+const_hsh_count (struct const_hsh_table *h)
+{
+  return hsh_count ( (struct hsh_table *) h);
+}
+
+static inline void *
+const_hsh_insert (struct const_hsh_table *h, const void *item)
+{
+  return hsh_insert ( (struct hsh_table *) h, (void *) item);
+}
+
+static inline void *
+const_hsh_replace (struct const_hsh_table *h, const void *item)
+{
+  return hsh_replace ( (struct hsh_table *) h, (void *) item);
+}
+
+static inline void *
+const_hsh_find (struct const_hsh_table *h, const void *item)
+{
+  return hsh_find ( (struct hsh_table *) h, (void *) item);
+}
+
+static inline bool
+const_hsh_delete (struct const_hsh_table *h, const void *item)
+{
+  return hsh_delete ( (struct hsh_table *)h, (void *) item);
+}
+
+
+static inline void *
+const_hsh_first (struct const_hsh_table *h, struct hsh_iterator *i)
+{
+  return hsh_first ( (struct hsh_table *) h, i);
+}
+
+static inline void *
+const_hsh_next (struct const_hsh_table *h, struct hsh_iterator *i)
+{
+  return hsh_next ( (struct hsh_table *) h, i);
+}
+
+
 #endif /* hash_h */

Index: src/math/group-proc.h
===================================================================
RCS file: /sources/pspp/pspp/src/math/group-proc.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- src/math/group-proc.h       16 Dec 2006 04:26:43 -0000      1.2
+++ src/math/group-proc.h       2 Apr 2007 08:55:52 -0000       1.3
@@ -45,6 +45,6 @@
 };
 
 struct variable;
-struct group_proc *group_proc_get (struct variable *);
+struct group_proc *group_proc_get (const struct variable *);
 
 #endif

Index: src/math/group.c
===================================================================
RCS file: /sources/pspp/pspp/src/math/group.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -b -r1.5 -r1.6
--- src/math/group.c    16 Dec 2006 04:26:43 -0000      1.5
+++ src/math/group.c    2 Apr 2007 08:55:52 -0000       1.6
@@ -59,7 +59,7 @@
 
 
 struct group_proc *
-group_proc_get (struct variable *v)
+group_proc_get (const struct variable *v)
 {
   /* This is not ideal, obviously. */
   struct group_proc *group = var_get_aux (v);

Index: src/math/levene.c
===================================================================
RCS file: /sources/pspp/pspp/src/math/levene.c,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -b -r1.9 -r1.10
--- src/math/levene.c   16 Dec 2006 04:26:43 -0000      1.9
+++ src/math/levene.c   2 Apr 2007 08:55:52 -0000       1.10
@@ -65,13 +65,13 @@
   struct t_test_proc **group_stats;
 
   /* The independent variable */
-  struct variable *v_indep; 
+  const struct variable *v_indep; 
 
   /* Number of dependent variables */
   size_t n_dep;
 
   /* The dependent variables */
-  struct variable  **v_dep;
+  const struct variable  **v_dep;
 
   /* Filter for missing values */
   struct casefilter *filter;
@@ -94,7 +94,8 @@
 void  
 levene(const struct dictionary *dict, 
        const struct casefile *cf,
-       struct variable *v_indep, size_t n_dep, struct variable **v_dep,
+       const struct variable *v_indep, size_t n_dep, 
+       const struct variable **v_dep,
        struct casefilter *filter)
 {
   struct casereader *r;
@@ -159,7 +160,7 @@
 
   for(i = 0; i < l->n_dep ; ++i ) 
     {
-      struct variable *var = l->v_dep[i];
+      const struct variable *var = l->v_dep[i];
       struct group_proc *gp = group_proc_get (var);
       struct group_statistics *gs;
       struct hsh_iterator hi;
@@ -194,7 +195,7 @@
 
   for (i = 0; i < l->n_dep; ++i) 
     {
-      struct variable *var = l->v_dep[i];
+      const struct variable *var = l->v_dep[i];
       struct group_proc *gp = group_proc_get (var);
       double levene_z;
       const union value *v = case_data (c, var);
@@ -254,7 +255,7 @@
       struct hsh_iterator hi;
       struct group_statistics *g;
 
-      struct variable *var = l->v_dep[v] ;
+      const struct variable *var = l->v_dep[v] ;
       struct hsh_table *hash = group_proc_get (var)->group_hash;
 
 
@@ -285,7 +286,7 @@
   for (i = 0; i < l->n_dep; ++i) 
     {
       double levene_z;
-      struct variable *var = l->v_dep[i] ;
+      const struct variable *var = l->v_dep[i] ;
       const union value *v = case_data (c, var);
       struct group_statistics *gs;
 
@@ -319,7 +320,7 @@
       struct hsh_iterator hi;
       struct group_statistics *g;
 
-      struct variable *var = l->v_dep[v] ;
+      const struct variable *var = l->v_dep[v] ;
       struct group_proc *gp = group_proc_get (var);
       struct hsh_table *hash = gp->group_hash;
 

Index: src/math/levene.h
===================================================================
RCS file: /sources/pspp/pspp/src/math/levene.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -b -r1.5 -r1.6
--- src/math/levene.h   16 Dec 2006 04:26:43 -0000      1.5
+++ src/math/levene.h   2 Apr 2007 08:55:52 -0000       1.6
@@ -40,7 +40,8 @@
 struct casefilter ;
 
 void  levene(const struct dictionary *dict, const struct casefile *cf, 
-            struct variable *v_indep, size_t n_dep, struct variable **v_dep,
+            const struct variable *v_indep, size_t n_dep, 
+            const struct variable **v_dep,
             struct casefilter *filter);
 
 

Index: src/ui/gui/data-editor.c
===================================================================
RCS file: /sources/pspp/pspp/src/ui/gui/data-editor.c,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -b -r1.21 -r1.22
--- src/ui/gui/data-editor.c    31 Mar 2007 11:44:45 -0000      1.21
+++ src/ui/gui/data-editor.c    2 Apr 2007 08:55:52 -0000       1.22
@@ -712,7 +712,7 @@
     {
       gint i;
       GString *text;
-      struct variable *const * split_vars = dict_get_split_vars (dict->dict);
+      const struct variable *const * split_vars = dict_get_split_vars 
(dict->dict);
 
       text = g_string_new (_("Split by "));
 

Index: src/ui/gui/split-file-dialog.c
===================================================================
RCS file: /sources/pspp/pspp/src/ui/gui/split-file-dialog.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- src/ui/gui/split-file-dialog.c      31 Mar 2007 11:44:45 -0000      1.2
+++ src/ui/gui/split-file-dialog.c      2 Apr 2007 08:55:52 -0000       1.3
@@ -27,6 +27,7 @@
 #include "dict-display.h"
 #include <language/syntax-string-source.h>
 #include "syntax-editor.h"
+#include <data/dictionary.h>
 
 #include <gtk/gtk.h>
 #include <glade/glade.h>
@@ -147,7 +148,7 @@
     {
       GtkTreeIter iter;
       gint i;
-      struct variable *const *vars = dict_get_split_vars (d->dict->dict);
+      const struct variable *const *vars = dict_get_split_vars (d->dict->dict);
 
       for (i = 0 ; i < n_vars; ++i )
        {
@@ -172,6 +173,7 @@
   gint response;
   struct data_editor *de = data;
   struct split_file_dialog sfd;
+  PsppireVarStore *vs ;
 
   GtkWidget *dialog   ;
   GtkWidget *source   ;
@@ -191,7 +193,7 @@
 
   var_sheet = GTK_SHEET (get_widget_assert (de->xml, "variable_sheet"));
 
-  PsppireVarStore *vs = PSPPIRE_VAR_STORE (gtk_sheet_get_model (var_sheet));
+  vs = PSPPIRE_VAR_STORE (gtk_sheet_get_model (var_sheet));
 
   sfd.dict = vs->dict;
   sfd.tv = GTK_TREE_VIEW (dest);

Index: src/ui/gui/transpose-dialog.c
===================================================================
RCS file: /sources/pspp/pspp/src/ui/gui/transpose-dialog.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -b -r1.4 -r1.5
--- src/ui/gui/transpose-dialog.c       31 Mar 2007 11:44:45 -0000      1.4
+++ src/ui/gui/transpose-dialog.c       2 Apr 2007 08:55:52 -0000       1.5
@@ -52,7 +52,7 @@
   GladeXML *xml = data;
   GtkWidget *dest = get_widget_assert (xml, "variables-treeview");
   GtkWidget *entry = get_widget_assert (xml, "new-name-entry");
-  GtkTreeModel *dmodel = gtk_tree_view_get_model (dest);
+  GtkTreeModel *dmodel = gtk_tree_view_get_model (GTK_TREE_VIEW (dest));
 
   gtk_list_store_clear (GTK_LIST_STORE (dmodel));
   gtk_entry_set_text (GTK_ENTRY (entry), "");




reply via email to

[Prev in Thread] Current Thread [Next in Thread]