Fixed some memory leaks.
authorJohn Darrington <john@darrington.wattle.id.au>
Tue, 23 Nov 2004 05:54:57 +0000 (05:54 +0000)
committerJohn Darrington <john@darrington.wattle.id.au>
Tue, 23 Nov 2004 05:54:57 +0000 (05:54 +0000)
po/en_GB.po
po/pspp.pot
src/examine.q
src/factor_stats.c
src/factor_stats.h
src/getline.c
src/glob.c
src/set.q
tests/Makefile.am
tests/command/examine-extremes.sh [new file with mode: 0755]

index aec2bf5653179bf9b7a1bc536def14297d7f1022..a75dc168e2328715904b02e4970d742d7459bfa3 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PSPP 0.3.1\n"
 "Report-Msgid-Bugs-To: pspp-dev@gnu.org\n"
-"POT-Creation-Date: 2004-11-15 00:28-0800\n"
+"POT-Creation-Date: 2004-11-23 13:37+0800\n"
 "PO-Revision-Date: 2004-01-23 13:04+0800\n"
 "Last-Translator: John Darrington <john@darrington.wattle.id.au>\n"
 "Language-Team: John Darrington <john@darrington.wattle.id.au>\n"
@@ -104,12 +104,12 @@ msgstr ""
 msgid "No matching variables found between the source and target files."
 msgstr ""
 
-#: src/ascii.c:220
+#: src/ascii.c:230
 #, c-format
 msgid "ASCII driver initializing as `%s'..."
 msgstr ""
 
-#: src/ascii.c:275
+#: src/ascii.c:285
 #, c-format
 msgid ""
 "ascii driver: Area of page excluding margins and headers must be at least 59 "
@@ -117,104 +117,104 @@ msgid ""
 "by %d lines."
 msgstr ""
 
-#: src/ascii.c:380 src/devind.c:167 src/html.c:102 src/postscript.c:458
+#: src/ascii.c:390 src/devind.c:167 src/html.c:102 src/postscript.c:458
 #, c-format
 msgid "%s: Initialization complete."
 msgstr ""
 
-#: src/ascii.c:392 src/devind.c:179 src/html.c:114 src/postscript.c:471
+#: src/ascii.c:402 src/devind.c:179 src/html.c:114 src/postscript.c:471
 #, c-format
 msgid "%s: Beginning closing..."
 msgstr ""
 
-#: src/ascii.c:414 src/devind.c:184 src/html.c:119 src/postscript.c:490
+#: src/ascii.c:424 src/devind.c:184 src/html.c:119 src/postscript.c:490
 #, c-format
 msgid "%s: Finished closing."
 msgstr ""
 
-#: src/ascii.c:476
+#: src/ascii.c:485
 #, c-format
 msgid ""
 "Bad index value for `box' key: syntax is box[INDEX], 0 <= INDEX < %d "
 "decimal, with INDEX expressed in base 4."
 msgstr ""
 
-#: src/ascii.c:482
+#: src/ascii.c:491
 #, c-format
 msgid "Duplicate value for key `%s'."
 msgstr ""
 
-#: src/ascii.c:491
+#: src/ascii.c:500
 #, c-format
 msgid "Unknown configuration parameter `%s' for ascii device driver."
 msgstr ""
 
-#: src/ascii.c:504
+#: src/ascii.c:513
 #, c-format
 msgid ""
 "Unknown character set `%s'.  Valid character sets are `ascii' and `latin1'."
 msgstr ""
 
-#: src/ascii.c:513
+#: src/ascii.c:522
 #, c-format
 msgid ""
 "Unknown overstrike style `%s'.  Valid overstrike styles are `single' and "
 "`line'."
 msgstr ""
 
-#: src/ascii.c:522
+#: src/ascii.c:531
 #, c-format
 msgid ""
 "Unknown carriage return style `%s'.  Valid carriage return styles are `cr' "
 "and `bs'."
 msgstr ""
 
-#: src/ascii.c:534 src/postscript.c:681
+#: src/ascii.c:543 src/postscript.c:681
 #, c-format
 msgid "Positive integer required as value for `%s'."
 msgstr ""
 
-#: src/ascii.c:565
+#: src/ascii.c:574
 #, c-format
 msgid "Zero or positive integer required as value for `%s'."
 msgstr ""
 
-#: src/ascii.c:636 src/postscript.c:639
+#: src/ascii.c:645 src/postscript.c:639
 #, c-format
 msgid "Boolean value expected for %s."
 msgstr ""
 
-#: src/ascii.c:668 src/ascii.c:683 src/ascii.c:700
+#: src/ascii.c:677 src/ascii.c:692 src/ascii.c:709
 #, c-format
 msgid "ASCII output driver: %s: %s"
 msgstr ""
 
-#: src/ascii.c:776
+#: src/ascii.c:785
 #, c-format
 msgid "ascii_line_horz: bad hline (%d,%d),%d out of (%d,%d)\n"
 msgstr ""
 
-#: src/ascii.c:810
+#: src/ascii.c:819
 #, c-format
 msgid "ascii_line_vert: bad vline %d,(%d,%d) out of (%d,%d)\n"
 msgstr ""
 
-#: src/ascii.c:840
+#: src/ascii.c:849
 #, c-format
 msgid "ascii_line_intersection: bad intsct (%d,%d) out of (%d,%d)\n"
 msgstr ""
 
-#: src/ascii.c:988
+#: src/ascii.c:997
 #, c-format
 msgid "%s: horiz=%d, vert=%d\n"
 msgstr ""
 
-#: src/ascii.c:1160
+#: src/ascii.c:1169
 #, c-format
 msgid "Writing `%s': %s"
 msgstr ""
 
-#: src/ascii.c:1570 src/postscript.c:2095
+#: src/ascii.c:1579 src/postscript.c:2095
 #, c-format
 msgid "%s - Page %d"
 msgstr ""
@@ -226,7 +226,7 @@ msgstr ""
 
 #: src/autorecode.c:139 src/command.c:739 src/compute.c:294
 #: src/data-list.c:407 src/data-list.c:897 src/data-list.c:1748
-#: src/do-if.c:253 src/get.c:405 src/lexer.c:412 src/loop.c:241
+#: src/do-if.c:253 src/get.c:405 src/lexer.c:419 src/loop.c:241
 #: src/matrix-data.c:527 src/print.c:335 src/print.c:1045 src/recode.c:405
 #: src/sel-if.c:54 src/sel-if.c:131 src/vector.c:193 src/file-handle.q:138
 msgid "expecting end of command"
@@ -242,43 +242,43 @@ msgstr ""
 msgid "Duplicate variable name %s among target variables."
 msgstr ""
 
-#: src/casefile.c:182
+#: src/casefile.c:189
 #, c-format
 msgid "%s: Removing temporary file: %s."
 msgstr ""
 
-#: src/casefile.c:328
+#: src/casefile.c:335
 #, c-format
 msgid "Error writing temporary file: %s."
 msgstr ""
 
-#: src/casefile.c:355
+#: src/casefile.c:362
 #, c-format
 msgid "%s: Creating temporary file: %s."
 msgstr ""
 
-#: src/casefile.c:498
+#: src/casefile.c:505
 #, c-format
 msgid "%s: Opening temporary file: %s."
 msgstr ""
 
-#: src/casefile.c:524
+#: src/casefile.c:531
 #, c-format
 msgid "%s: Seeking temporary file: %s."
 msgstr ""
 
-#: src/casefile.c:540
+#: src/casefile.c:547
 #, c-format
 msgid "%s: Reading temporary file: %s."
 msgstr ""
 
-#: src/casefile.c:543
+#: src/casefile.c:550
 #, c-format
 msgid "%s: Temporary file ended unexpectedly."
 msgstr ""
 
 #: src/cmdline.c:141 src/cmdline.c:160 src/cmdline.c:172 src/command.c:161
-#: src/set.q:414 src/set.q:416 src/set.q:956
+#: src/set.q:415 src/set.q:417 src/set.q:956
 #, c-format
 msgid "%s is not yet implemented."
 msgstr ""
@@ -730,7 +730,7 @@ msgid ""
 msgstr ""
 
 #: src/data-list.c:793 src/data-list.c:919 src/descript.c:880 src/print.c:799
-#: src/sysfile-info.c:134 src/sysfile-info.c:367 src/vfm.c:875
+#: src/sysfile-info.c:134 src/sysfile-info.c:367 src/vfm.c:874
 msgid "Variable"
 msgstr ""
 
@@ -957,7 +957,7 @@ msgstr ""
 msgid "Only USE ALL is currently implemented."
 msgstr ""
 
-#: src/descript.c:99 src/examine.q:631 src/frequencies.q:110 src/oneway.q:396
+#: src/descript.c:99 src/examine.q:1281 src/frequencies.q:110 src/oneway.q:396
 #: src/t-test.q:683 src/t-test.q:706 src/t-test.q:829 src/t-test.q:1166
 msgid "Mean"
 msgstr ""
@@ -970,11 +970,11 @@ msgstr ""
 msgid "Std Dev"
 msgstr ""
 
-#: src/descript.c:102 src/examine.q:694 src/frequencies.q:115
+#: src/descript.c:102 src/examine.q:1344 src/frequencies.q:115
 msgid "Variance"
 msgstr ""
 
-#: src/descript.c:103 src/examine.q:764 src/frequencies.q:116
+#: src/descript.c:103 src/examine.q:1414 src/frequencies.q:116
 msgid "Kurtosis"
 msgstr ""
 
@@ -982,7 +982,7 @@ msgstr ""
 msgid "S E Kurt"
 msgstr ""
 
-#: src/descript.c:105 src/examine.q:759 src/frequencies.q:118
+#: src/descript.c:105 src/examine.q:1409 src/frequencies.q:118
 msgid "Skewness"
 msgstr ""
 
@@ -990,15 +990,17 @@ msgstr ""
 msgid "S E Skew"
 msgstr ""
 
-#: src/descript.c:107 src/examine.q:742 src/frequencies.q:120
+#: src/descript.c:107 src/examine.q:1392 src/frequencies.q:120
 msgid "Range"
 msgstr ""
 
-#: src/descript.c:108 src/examine.q:719 src/frequencies.q:121 src/oneway.q:408
+#: src/descript.c:108 src/examine.q:1369 src/frequencies.q:121
+#: src/oneway.q:408
 msgid "Minimum"
 msgstr ""
 
-#: src/descript.c:109 src/examine.q:730 src/frequencies.q:122 src/oneway.q:409
+#: src/descript.c:109 src/examine.q:1380 src/frequencies.q:122
+#: src/oneway.q:409
 msgid "Maximum"
 msgstr ""
 
@@ -1190,74 +1192,74 @@ msgstr ""
 msgid "Warnings (%d) exceed limit (%d)."
 msgstr ""
 
-#: src/error.c:257
+#: src/error.c:261
 msgid "fatal"
 msgstr ""
 
-#: src/error.c:259 src/error.c:266 src/error.c:269 src/expr-prs.c:1280
+#: src/error.c:263 src/error.c:270 src/error.c:273 src/expr-prs.c:1280
 msgid "error"
 msgstr ""
 
-#: src/error.c:260 src/error.c:267 src/error.c:270
+#: src/error.c:264 src/error.c:271 src/error.c:274
 msgid "warning"
 msgstr ""
 
-#: src/error.c:261 src/error.c:271
+#: src/error.c:265 src/error.c:275
 msgid "note"
 msgstr ""
 
-#: src/error.c:263 src/error.c:264
+#: src/error.c:267 src/error.c:268
 msgid "installation error"
 msgstr ""
 
-#: src/expr-evl.c:634
+#: src/expr-evl.c:635
 msgid "TIME.HMS cannot mix positive and negative in its arguments."
 msgstr ""
 
-#: src/expr-evl.c:698
+#: src/expr-evl.c:699
 #, fuzzy
 msgid "Week argument to WKYR must be in range 0 to 53."
 msgstr "Text colour must be in range 0-15."
 
-#: src/expr-evl.c:849 src/expr-evl.c:905
+#: src/expr-evl.c:850 src/expr-evl.c:906
 msgid "Argument 3 of RINDEX may not be system-missing."
 msgstr ""
 
-#: src/expr-evl.c:859 src/expr-evl.c:915
+#: src/expr-evl.c:860 src/expr-evl.c:916
 msgid ""
 "Argument 3 of RINDEX must be between 1 and the length of argument 2, and it "
 "must evenly divide the length of argument 2."
 msgstr ""
 
-#: src/expr-evl.c:1101
+#: src/expr-evl.c:1102
 msgid ""
 "A number being treated as a Boolean in an expression was found to have a "
 "value other than 0 (false), 1 (true), or the system-missing value.  The "
 "result was forced to 0."
 msgstr ""
 
-#: src/expr-evl.c:1142
+#: src/expr-evl.c:1143
 #, c-format
 msgid ""
 "SYSMIS is not a valid index value for vector %s.  The result will be set to "
 "SYSMIS."
 msgstr ""
 
-#: src/expr-evl.c:1146
+#: src/expr-evl.c:1147
 #, c-format
 msgid ""
 "%g is not a valid index value for vector %s.  The result will be set to "
 "SYSMIS."
 msgstr ""
 
-#: src/expr-evl.c:1165
+#: src/expr-evl.c:1166
 #, c-format
 msgid ""
 "SYSMIS is not a valid index value for vector %s.  The result will be set to "
 "the empty string."
 msgstr ""
 
-#: src/expr-evl.c:1170
+#: src/expr-evl.c:1171
 #, c-format
 msgid ""
 "%g is not a valid index value for vector %s.  The result will be set to the "
@@ -1415,6 +1417,25 @@ msgstr ""
 msgid "Boolean"
 msgstr ""
 
+#: src/filename.c:221
+#, c-format
+msgid "Searching for `%s'..."
+msgstr ""
+
+#: src/filename.c:229 src/filename.c:261
+msgid "Search unsuccessful!"
+msgstr ""
+
+#: src/filename.c:254
+#, c-format
+msgid "Found `%s'."
+msgstr ""
+
+#: src/filename.c:686
+#, c-format
+msgid "Not opening pipe file `%s' because SAFER option set."
+msgstr ""
+
 #: src/file-type.c:129
 msgid "MIXED, GROUPED, or NESTED expected."
 msgstr ""
@@ -1553,25 +1574,6 @@ msgstr ""
 msgid "Unknown record type %g."
 msgstr ""
 
-#: src/filename.c:221
-#, c-format
-msgid "Searching for `%s'..."
-msgstr ""
-
-#: src/filename.c:229 src/filename.c:261
-msgid "Search unsuccessful!"
-msgstr ""
-
-#: src/filename.c:254
-#, c-format
-msgid "Found `%s'."
-msgstr ""
-
-#: src/filename.c:686
-#, c-format
-msgid "Not opening pipe file `%s' because SAFER option set."
-msgstr ""
-
 #: src/flip.c:78
 msgid ""
 "FLIP ignores TEMPORARY.  Temporary transformations will be made permanent."
@@ -1815,27 +1817,27 @@ msgstr ""
 msgid "expecting COMM or TAPE"
 msgstr ""
 
-#: src/getline.c:163
+#: src/getline.c:166
 #, c-format
 msgid "Can't find `%s' in include file search path."
 msgstr ""
 
-#: src/getline.c:318
+#: src/getline.c:321
 #, c-format
 msgid "%s: Opening as syntax file."
 msgstr ""
 
-#: src/getline.c:323
+#: src/getline.c:326
 #, c-format
 msgid "Opening `%s': %s."
 msgstr ""
 
-#: src/getline.c:332 src/html.c:331 src/postscript.c:1463
+#: src/getline.c:335 src/html.c:331 src/postscript.c:1463
 #, c-format
 msgid "Reading `%s': %s."
 msgstr ""
 
-#: src/getline.c:390
+#: src/getline.c:393
 #, c-format
 msgid "Closing `%s': %s."
 msgstr ""
@@ -1983,7 +1985,7 @@ msgstr ""
 msgid "<<fallback>>"
 msgstr ""
 
-#: src/hash.c:512
+#: src/hash.c:517
 #, c-format
 msgid "hash table:"
 msgstr ""
@@ -2066,101 +2068,101 @@ msgid ""
 "REREAD: Column numbers must be positive finite numbers.  Column set to 1."
 msgstr ""
 
-#: src/lexer.c:244
+#: src/lexer.c:251
 #, c-format
 msgid "%s does not form a valid number."
 msgstr ""
 
-#: src/lexer.c:362
+#: src/lexer.c:369
 #, c-format
 msgid "Bad character in input: `%c'."
 msgstr ""
 
-#: src/lexer.c:364
+#: src/lexer.c:371
 #, c-format
 msgid "Bad character in input: `\\%o'."
 msgstr ""
 
-#: src/lexer.c:385
+#: src/lexer.c:392
 msgid "Syntax error at end of file."
 msgstr ""
 
-#: src/lexer.c:395
+#: src/lexer.c:402
 #, c-format
 msgid "Syntax error %s at `%s'."
 msgstr ""
 
-#: src/lexer.c:398
+#: src/lexer.c:405
 #, c-format
 msgid "Syntax error at `%s'."
 msgstr ""
 
-#: src/lexer.c:518
+#: src/lexer.c:525
 #, c-format
 msgid "expecting `%s'"
 msgstr ""
 
-#: src/lexer.c:535
+#: src/lexer.c:542
 #, c-format
 msgid "expecting %s"
 msgstr ""
 
-#: src/lexer.c:549 src/val-labs.c:151
+#: src/lexer.c:556 src/val-labs.c:151
 msgid "expecting string"
 msgstr ""
 
-#: src/lexer.c:563 src/val-labs.c:160
+#: src/lexer.c:570 src/val-labs.c:160
 msgid "expecting integer"
 msgstr ""
 
-#: src/lexer.c:577
+#: src/lexer.c:584
 msgid "expecting number"
 msgstr ""
 
-#: src/lexer.c:591
+#: src/lexer.c:598
 msgid "expecting identifier"
 msgstr ""
 
-#: src/lexer.c:860
+#: src/lexer.c:867
 msgid "<ERROR>"
 msgstr ""
 
-#: src/lexer.c:993 src/pfm-read.c:134 src/repeat.c:214
+#: src/lexer.c:1000 src/pfm-read.c:134 src/repeat.c:214
 msgid "Unexpected end of file."
 msgstr ""
 
-#: src/lexer.c:1019
+#: src/lexer.c:1026
 msgid "binary"
 msgstr ""
 
-#: src/lexer.c:1019
+#: src/lexer.c:1026
 msgid "octal"
 msgstr ""
 
-#: src/lexer.c:1019
+#: src/lexer.c:1026
 msgid "hex"
 msgstr ""
 
-#: src/lexer.c:1033
+#: src/lexer.c:1040
 #, c-format
 msgid "String of %s digits has %d characters, which is not a multiple of %d."
 msgstr ""
 
-#: src/lexer.c:1062
+#: src/lexer.c:1069
 #, c-format
 msgid "`%c' is not a valid %s digit."
 msgstr ""
 
-#: src/lexer.c:1093
+#: src/lexer.c:1100
 msgid "Unterminated string constant."
 msgstr ""
 
-#: src/lexer.c:1165
+#: src/lexer.c:1172
 #, c-format
 msgid "String exceeds 255 characters in length (%d characters)."
 msgstr ""
 
-#: src/lexer.c:1180
+#: src/lexer.c:1187
 msgid ""
 "Sorry, literal strings may not contain null characters.  Replacing with "
 "spaces."
@@ -2552,17 +2554,17 @@ msgstr ""
 msgid "%s: Opening device description file..."
 msgstr ""
 
-#: src/output.c:304 src/output.c:1165 src/postscript.c:1099
+#: src/output.c:304 src/output.c:1173 src/postscript.c:1099
 #, c-format
 msgid "Opening %s: %s."
 msgstr ""
 
-#: src/output.c:315 src/output.c:1176 src/postscript.c:1114
+#: src/output.c:315 src/output.c:1184 src/postscript.c:1114
 #, c-format
 msgid "Reading %s: %s."
 msgstr ""
 
-#: src/output.c:337 src/output.c:489
+#: src/output.c:337 src/output.c:497
 msgid "Syntax error."
 msgstr ""
 
@@ -2583,127 +2585,142 @@ msgstr ""
 msgid "Error reading device definition file."
 msgstr ""
 
-#: src/output.c:461
+#: src/output.c:469
 #, c-format
 msgid ""
 "Driver classes:\n"
 "\t"
 msgstr ""
 
-#: src/output.c:590
+#: src/output.c:598
 msgid "Syntax error in string constant."
 msgstr ""
 
-#: src/output.c:622
+#: src/output.c:630
 msgid "Syntax error in options."
 msgstr ""
 
-#: src/output.c:632
+#: src/output.c:640
 msgid "Syntax error in options (`=' expected)."
 msgstr ""
 
-#: src/output.c:639
+#: src/output.c:647
 msgid "Syntax error in options (value expected after `=')."
 msgstr ""
 
-#: src/output.c:711
+#: src/output.c:719
 msgid "Driver name expected."
 msgstr ""
 
-#: src/output.c:732
+#: src/output.c:740
 msgid "Class name expected."
 msgstr ""
 
-#: src/output.c:741
+#: src/output.c:749
 #, c-format
 msgid "Unknown output driver class `%s'."
 msgstr ""
 
-#: src/output.c:748
+#: src/output.c:756
 #, c-format
 msgid "Can't initialize output driver class `%s'."
 msgstr ""
 
-#: src/output.c:755
+#: src/output.c:763
 #, c-format
 msgid "Can't initialize output driver `%s' of class `%s'."
 msgstr ""
 
-#: src/output.c:777
+#: src/output.c:785
 #, c-format
 msgid "Unknown device type `%s'."
 msgstr ""
 
-#: src/output.c:789
+#: src/output.c:797
 #, c-format
 msgid "Can't complete initialization of output driver `%s' of class `%s'."
 msgstr ""
 
-#: src/output.c:836
+#: src/output.c:844
 #, c-format
 msgid "Can't deinitialize output driver class `%s'."
 msgstr ""
 
-#: src/output.c:909
+#: src/output.c:917
 #, c-format
 msgid "Trying to find keyword `%s'...\n"
 msgstr ""
 
-#: src/output.c:1026
+#: src/output.c:1034
 #, c-format
 msgid "Unit \"%s\" is unknown in dimension \"%s\"."
 msgstr ""
 
-#: src/output.c:1041
+#: src/output.c:1049
 #, c-format
 msgid "Bad dimension \"%s\"."
 msgstr ""
 
-#: src/output.c:1067
+#: src/output.c:1075
 #, c-format
 msgid "`x' expected in paper size `%s'."
 msgstr ""
 
-#: src/output.c:1077
+#: src/output.c:1085
 #, c-format
 msgid "Trailing garbage `%s' on paper size `%s'."
 msgstr ""
 
-#: src/output.c:1126
+#: src/output.c:1134
 msgid "Paper size name must not be empty."
 msgstr ""
 
-#: src/output.c:1157
+#: src/output.c:1165
 msgid "Cannot find `papersize' configuration file."
 msgstr ""
 
-#: src/output.c:1161
+#: src/output.c:1169
 #, c-format
 msgid "%s: Opening paper size definition file..."
 msgstr ""
 
-#: src/output.c:1203
+#: src/output.c:1211
 msgid "Syntax error in paper size definition."
 msgstr ""
 
-#: src/output.c:1232
+#: src/output.c:1240
 msgid "Paper size definition file read successfully."
 msgstr ""
 
-#: src/output.c:1234
+#: src/output.c:1242
 msgid "Error reading paper size definition file."
 msgstr ""
 
-#: src/output.c:1303
+#: src/output.c:1311
 #, c-format
 msgid "Error closing page on %s device of %s class."
 msgstr ""
 
-#: src/output.c:1307
+#: src/output.c:1315
 #, c-format
 msgid "Error opening page on %s device of %s class."
 msgstr ""
 
+#: src/permissions.c:75
+#, c-format
+msgid "Expecting %s or %s."
+msgstr ""
+
+#: src/permissions.c:101
+#, c-format
+msgid "Cannot stat %s: %s"
+msgstr ""
+
+#: src/permissions.c:114
+#, c-format
+msgid "Cannot change mode of %s: %s"
+msgstr ""
+
 #: src/pfm-read.c:92
 #, c-format
 msgid "portable file %s corrupt at offset %ld: "
@@ -3186,11 +3203,11 @@ msgstr ""
 msgid "No matching DO REPEAT."
 msgstr ""
 
-#: src/sample.c:69
+#: src/sample.c:73
 msgid "The sampling factor must be between 0 and 1 exclusive."
 msgstr ""
 
-#: src/sample.c:89
+#: src/sample.c:93
 #, c-format
 msgid "Cannot sample %d observations from a population of %d."
 msgstr ""
@@ -3653,7 +3670,7 @@ msgstr ""
 msgid "Documents in the active file:"
 msgstr ""
 
-#: src/sysfile-info.c:374 src/sysfile-info.c:532 src/vfm.c:877
+#: src/sysfile-info.c:374 src/sysfile-info.c:532 src/vfm.c:876
 msgid "Label"
 msgstr ""
 
@@ -3676,9 +3693,9 @@ msgstr ""
 msgid "Missing Values: "
 msgstr ""
 
-#: src/sysfile-info.c:531 src/vfm.c:876 src/crosstabs.q:1099
+#: src/sysfile-info.c:531 src/vfm.c:875 src/crosstabs.q:1099
 #: src/crosstabs.q:1126 src/crosstabs.q:1146 src/crosstabs.q:1168
-#: src/examine.q:1179 src/frequencies.q:1083 src/frequencies.q:1204
+#: src/examine.q:940 src/frequencies.q:1085 src/frequencies.q:1206
 msgid "Value"
 msgstr ""
 
@@ -3899,33 +3916,33 @@ msgstr ""
 msgid "Summary."
 msgstr ""
 
-#: src/crosstabs.q:802 src/examine.q:837
+#: src/crosstabs.q:802 src/examine.q:724
 msgid "Cases"
 msgstr ""
 
-#: src/crosstabs.q:803 src/examine.q:775 src/frequencies.q:1081
-#: src/frequencies.q:1454
+#: src/crosstabs.q:803 src/examine.q:658 src/frequencies.q:1083
+#: src/frequencies.q:1456
 msgid "Valid"
 msgstr ""
 
-#: src/crosstabs.q:804 src/examine.q:776 src/frequencies.q:1149
-#: src/frequencies.q:1455
+#: src/crosstabs.q:804 src/examine.q:659 src/frequencies.q:1151
+#: src/frequencies.q:1457
 msgid "Missing"
 msgstr ""
 
 #: src/crosstabs.q:805 src/crosstabs.q:1008 src/crosstabs.q:1722
-#: src/examine.q:777 src/frequencies.q:1158 src/oneway.q:307 src/oneway.q:486
+#: src/examine.q:660 src/frequencies.q:1160 src/oneway.q:307 src/oneway.q:486
 msgid "Total"
 msgstr ""
 
-#: src/crosstabs.q:815 src/examine.q:858 src/frequencies.q:1453
+#: src/crosstabs.q:815 src/examine.q:736 src/frequencies.q:1455
 #: src/oneway.q:395 src/t-test.q:682 src/t-test.q:705 src/t-test.q:830
 #: src/t-test.q:1365
 msgid "N"
 msgstr ""
 
-#: src/crosstabs.q:816 src/examine.q:860 src/frequencies.q:1085
-#: src/frequencies.q:1086 src/frequencies.q:1087
+#: src/crosstabs.q:816 src/examine.q:739 src/frequencies.q:1087
+#: src/frequencies.q:1088 src/frequencies.q:1089
 msgid "Percent"
 msgstr ""
 
@@ -3962,7 +3979,7 @@ msgid "adj. resid."
 msgstr ""
 
 #: src/crosstabs.q:1098 src/crosstabs.q:1125 src/crosstabs.q:1145
-#: src/crosstabs.q:1166 src/examine.q:495
+#: src/crosstabs.q:1166 src/examine.q:1174
 msgid "Statistic"
 msgstr ""
 
@@ -4145,88 +4162,88 @@ msgstr ""
 msgid "%s Dependent"
 msgstr ""
 
-#: src/examine.q:264 src/examine.q:276
+#: src/examine.q:313 src/examine.q:325
 #, c-format
 msgid "%s and %s are mutually exclusive"
 msgstr ""
 
-#: src/examine.q:496 src/oneway.q:398 src/oneway.q:705
+#: src/examine.q:718
+msgid "Case Processing Summary"
+msgstr ""
+
+#: src/examine.q:924
+msgid "Extreme Values"
+msgstr ""
+
+#: src/examine.q:941
+msgid "Case Number"
+msgstr ""
+
+#: src/examine.q:1029
+msgid "Highest"
+msgstr ""
+
+#: src/examine.q:1034
+msgid "Lowest"
+msgstr ""
+
+#: src/examine.q:1175 src/oneway.q:398 src/oneway.q:705
 msgid "Std. Error"
 msgstr ""
 
-#: src/examine.q:610 src/oneway.q:412
+#: src/examine.q:1177 src/oneway.q:412
 msgid "Descriptives"
 msgstr ""
 
-#: src/examine.q:649 src/oneway.q:403
+#: src/examine.q:1299 src/oneway.q:403
 #, c-format
 msgid "%g%% Confidence Interval for Mean"
 msgstr ""
 
-#: src/examine.q:655 src/oneway.q:405
+#: src/examine.q:1305 src/oneway.q:405
 msgid "Lower Bound"
 msgstr ""
 
-#: src/examine.q:666 src/oneway.q:406
+#: src/examine.q:1316 src/oneway.q:406
 msgid "Upper Bound"
 msgstr ""
 
-#: src/examine.q:678
+#: src/examine.q:1328
 msgid "5% Trimmed Mean"
 msgstr ""
 
-#: src/examine.q:689 src/frequencies.q:112
+#: src/examine.q:1339 src/frequencies.q:112
 msgid "Median"
 msgstr ""
 
-#: src/examine.q:706 src/oneway.q:397 src/t-test.q:684 src/t-test.q:707
+#: src/examine.q:1356 src/oneway.q:397 src/t-test.q:684 src/t-test.q:707
 #: src/t-test.q:831 src/t-test.q:1167
 msgid "Std. Deviation"
 msgstr ""
 
-#: src/examine.q:754
+#: src/examine.q:1404
 msgid "Interquartile Range"
 msgstr ""
 
-#: src/examine.q:831
-msgid "Case Processing Summary"
-msgstr ""
-
-#: src/examine.q:1157
-msgid "Extreme Values"
-msgstr ""
-
-#: src/examine.q:1180
-msgid "Case Number"
-msgstr ""
-
-#: src/examine.q:1306
-msgid "Highest"
-msgstr ""
-
-#: src/examine.q:1311
-msgid "Lowest"
-msgstr ""
-
-#: src/examine.q:1350
+#: src/examine.q:1447
 #, c-format
 msgid "Normal Q-Q Plot of %s"
 msgstr ""
 
-#: src/examine.q:1351 src/examine.q:1357
+#: src/examine.q:1448 src/examine.q:1454
 msgid "Observed Value"
 msgstr ""
 
-#: src/examine.q:1352
+#: src/examine.q:1449
 msgid "Expected Normal"
 msgstr ""
 
-#: src/examine.q:1355
+#: src/examine.q:1452
 #, c-format
 msgid "Detrended Normal Q-Q Plot of %s"
 msgstr ""
 
-#: src/examine.q:1358
+#: src/examine.q:1455
 msgid "Dev from Normal"
 msgstr ""
 
@@ -4289,76 +4306,76 @@ msgstr ""
 msgid "S.E. Skew"
 msgstr ""
 
-#: src/frequencies.q:340
+#: src/frequencies.q:342
 msgid ""
 "At most one of BARCHART, HISTOGRAM, or HBAR should be given.  HBAR will be "
 "assumed.  Argument values will be given precedence increasing along the "
 "order given."
 msgstr ""
 
-#: src/frequencies.q:423
+#: src/frequencies.q:425
 #, c-format
 msgid ""
 "MAX must be greater than or equal to MIN, if both are specified.  However, "
 "MIN was specified as %g and MAX as %g.  MIN and MAX will be ignored."
 msgstr ""
 
-#: src/frequencies.q:747
+#: src/frequencies.q:749
 msgid ""
 "Upper limit of integer mode value range must be greater than lower limit."
 msgstr ""
 
-#: src/frequencies.q:760
+#: src/frequencies.q:762
 #, c-format
 msgid "Variable %s specified multiple times on VARIABLES subcommand."
 msgstr ""
 
-#: src/frequencies.q:766
+#: src/frequencies.q:768
 #, c-format
 msgid "Integer mode specified, but %s is not a numeric variable."
 msgstr ""
 
-#: src/frequencies.q:832
+#: src/frequencies.q:834
 msgid "`)' expected after GROUPED interval list."
 msgstr ""
 
-#: src/frequencies.q:844
+#: src/frequencies.q:846
 #, c-format
 msgid "Variables %s specified on GROUPED but not on VARIABLES."
 msgstr ""
 
-#: src/frequencies.q:851
+#: src/frequencies.q:853
 #, c-format
 msgid "Variables %s specified multiple times on GROUPED subcommand."
 msgstr ""
 
-#: src/frequencies.q:1082 src/frequencies.q:1174 src/frequencies.q:1175
-#: src/frequencies.q:1207
+#: src/frequencies.q:1084 src/frequencies.q:1176 src/frequencies.q:1177
+#: src/frequencies.q:1209
 msgid "Cum"
 msgstr ""
 
-#: src/frequencies.q:1084
+#: src/frequencies.q:1086
 msgid "Frequency"
 msgstr ""
 
-#: src/frequencies.q:1104
+#: src/frequencies.q:1106
 msgid "Value Label"
 msgstr ""
 
-#: src/frequencies.q:1205
+#: src/frequencies.q:1207
 msgid "Freq"
 msgstr ""
 
-#: src/frequencies.q:1206 src/frequencies.q:1208
+#: src/frequencies.q:1208 src/frequencies.q:1210
 msgid "Pct"
 msgstr ""
 
-#: src/frequencies.q:1427
+#: src/frequencies.q:1429
 #, c-format
 msgid "No valid data for variable %s; statistics not displayed."
 msgstr ""
 
-#: src/frequencies.q:1465
+#: src/frequencies.q:1467
 msgid "Percentiles"
 msgstr ""
 
@@ -4492,79 +4509,79 @@ msgstr ""
 msgid "Does not assume equal"
 msgstr ""
 
-#: src/set.q:216 src/set.q:288 src/set.q:332 src/set.q:387 src/set.q:389
-#: src/set.q:391 src/set.q:393 src/set.q:395 src/set.q:397 src/set.q:399
-#: src/set.q:401 src/set.q:403 src/set.q:405 src/set.q:407 src/set.q:409
-#: src/set.q:411 src/set.q:790 src/set.q:871 src/set.q:966
+#: src/set.q:218 src/set.q:290 src/set.q:333 src/set.q:388 src/set.q:390
+#: src/set.q:392 src/set.q:394 src/set.q:396 src/set.q:398 src/set.q:400
+#: src/set.q:402 src/set.q:404 src/set.q:406 src/set.q:408 src/set.q:410
+#: src/set.q:412 src/set.q:790 src/set.q:871 src/set.q:966
 #, c-format
 msgid "%s is obsolete."
 msgstr ""
 
-#: src/set.q:224
+#: src/set.q:226
 msgid "LISTING is ON"
 msgstr ""
 
-#: src/set.q:226
+#: src/set.q:228
 msgid "LISTING is OFF"
 msgstr ""
 
-#: src/set.q:252
+#: src/set.q:254
 msgid "Journalling is off"
 msgstr ""
 
-#: src/set.q:420
+#: src/set.q:421
 msgid ""
 "CASE is not implemented and probably won't be.  If you care, complain about "
 "it."
 msgstr ""
 
-#: src/set.q:425
+#: src/set.q:426
 msgid "Active file compression is not yet implemented (and probably won't be)."
 msgstr ""
 
-#: src/set.q:439
+#: src/set.q:440
 #, c-format
 msgid ""
 "CC%c: Length of custom currency string `%s' (%d) exceeds maximum length of "
 "16."
 msgstr ""
 
-#: src/set.q:461
+#: src/set.q:462
 #, c-format
 msgid ""
 "CC%c: Custom currency string `%s' does not contain exactly three periods or "
 "commas (not both)."
 msgstr ""
 
-#: src/set.q:514
+#: src/set.q:515
 msgid "None"
 msgstr ""
 
-#: src/set.q:520
+#: src/set.q:521
 msgid "Disabled"
 msgstr ""
 
-#: src/set.q:525
+#: src/set.q:526
 msgid "Screen"
 msgstr ""
 
-#: src/set.q:532
+#: src/set.q:533
 msgid "Listing"
 msgstr ""
 
-#: src/set.q:539
+#: src/set.q:540
 msgid "Other"
 msgstr ""
 
-#: src/set.q:648
+#: src/set.q:649
 msgid "LENGTH must be at least 1."
 msgstr ""
 
-#: src/set.q:687
+#: src/set.q:688
 msgid "Missing identifier in RESULTS subcommand."
 msgstr ""
 
-#: src/set.q:698
+#: src/set.q:699
 msgid "Unrecognized identifier in RESULTS subcommand."
 msgstr ""
 
@@ -4620,7 +4637,7 @@ msgstr ""
 msgid "Terminal type `%s' is not defined."
 msgstr ""
 
-#: src/set.q:1057
+#: src/set.q:1071
 msgid "data> "
 msgstr ""
 
index 21887e86eee6260224bd7c2d9de62098c3699d9d..e9f9a9866e9fe725846189fe5b8bc1f146f4b3ff 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: pspp-dev@gnu.org\n"
-"POT-Creation-Date: 2004-11-15 00:28-0800\n"
+"POT-Creation-Date: 2004-11-23 13:37+0800\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -105,12 +105,12 @@ msgstr ""
 msgid "No matching variables found between the source and target files."
 msgstr ""
 
-#: src/ascii.c:220
+#: src/ascii.c:230
 #, c-format
 msgid "ASCII driver initializing as `%s'..."
 msgstr ""
 
-#: src/ascii.c:275
+#: src/ascii.c:285
 #, c-format
 msgid ""
 "ascii driver: Area of page excluding margins and headers must be at least 59 "
@@ -118,104 +118,104 @@ msgid ""
 "by %d lines."
 msgstr ""
 
-#: src/ascii.c:380 src/devind.c:167 src/html.c:102 src/postscript.c:458
+#: src/ascii.c:390 src/devind.c:167 src/html.c:102 src/postscript.c:458
 #, c-format
 msgid "%s: Initialization complete."
 msgstr ""
 
-#: src/ascii.c:392 src/devind.c:179 src/html.c:114 src/postscript.c:471
+#: src/ascii.c:402 src/devind.c:179 src/html.c:114 src/postscript.c:471
 #, c-format
 msgid "%s: Beginning closing..."
 msgstr ""
 
-#: src/ascii.c:414 src/devind.c:184 src/html.c:119 src/postscript.c:490
+#: src/ascii.c:424 src/devind.c:184 src/html.c:119 src/postscript.c:490
 #, c-format
 msgid "%s: Finished closing."
 msgstr ""
 
-#: src/ascii.c:476
+#: src/ascii.c:485
 #, c-format
 msgid ""
 "Bad index value for `box' key: syntax is box[INDEX], 0 <= INDEX < %d "
 "decimal, with INDEX expressed in base 4."
 msgstr ""
 
-#: src/ascii.c:482
+#: src/ascii.c:491
 #, c-format
 msgid "Duplicate value for key `%s'."
 msgstr ""
 
-#: src/ascii.c:491
+#: src/ascii.c:500
 #, c-format
 msgid "Unknown configuration parameter `%s' for ascii device driver."
 msgstr ""
 
-#: src/ascii.c:504
+#: src/ascii.c:513
 #, c-format
 msgid ""
 "Unknown character set `%s'.  Valid character sets are `ascii' and `latin1'."
 msgstr ""
 
-#: src/ascii.c:513
+#: src/ascii.c:522
 #, c-format
 msgid ""
 "Unknown overstrike style `%s'.  Valid overstrike styles are `single' and "
 "`line'."
 msgstr ""
 
-#: src/ascii.c:522
+#: src/ascii.c:531
 #, c-format
 msgid ""
 "Unknown carriage return style `%s'.  Valid carriage return styles are `cr' "
 "and `bs'."
 msgstr ""
 
-#: src/ascii.c:534 src/postscript.c:681
+#: src/ascii.c:543 src/postscript.c:681
 #, c-format
 msgid "Positive integer required as value for `%s'."
 msgstr ""
 
-#: src/ascii.c:565
+#: src/ascii.c:574
 #, c-format
 msgid "Zero or positive integer required as value for `%s'."
 msgstr ""
 
-#: src/ascii.c:636 src/postscript.c:639
+#: src/ascii.c:645 src/postscript.c:639
 #, c-format
 msgid "Boolean value expected for %s."
 msgstr ""
 
-#: src/ascii.c:668 src/ascii.c:683 src/ascii.c:700
+#: src/ascii.c:677 src/ascii.c:692 src/ascii.c:709
 #, c-format
 msgid "ASCII output driver: %s: %s"
 msgstr ""
 
-#: src/ascii.c:776
+#: src/ascii.c:785
 #, c-format
 msgid "ascii_line_horz: bad hline (%d,%d),%d out of (%d,%d)\n"
 msgstr ""
 
-#: src/ascii.c:810
+#: src/ascii.c:819
 #, c-format
 msgid "ascii_line_vert: bad vline %d,(%d,%d) out of (%d,%d)\n"
 msgstr ""
 
-#: src/ascii.c:840
+#: src/ascii.c:849
 #, c-format
 msgid "ascii_line_intersection: bad intsct (%d,%d) out of (%d,%d)\n"
 msgstr ""
 
-#: src/ascii.c:988
+#: src/ascii.c:997
 #, c-format
 msgid "%s: horiz=%d, vert=%d\n"
 msgstr ""
 
-#: src/ascii.c:1160
+#: src/ascii.c:1169
 #, c-format
 msgid "Writing `%s': %s"
 msgstr ""
 
-#: src/ascii.c:1570 src/postscript.c:2095
+#: src/ascii.c:1579 src/postscript.c:2095
 #, c-format
 msgid "%s - Page %d"
 msgstr ""
@@ -227,7 +227,7 @@ msgstr ""
 
 #: src/autorecode.c:139 src/command.c:739 src/compute.c:294
 #: src/data-list.c:407 src/data-list.c:897 src/data-list.c:1748
-#: src/do-if.c:253 src/get.c:405 src/lexer.c:412 src/loop.c:241
+#: src/do-if.c:253 src/get.c:405 src/lexer.c:419 src/loop.c:241
 #: src/matrix-data.c:527 src/print.c:335 src/print.c:1045 src/recode.c:405
 #: src/sel-if.c:54 src/sel-if.c:131 src/vector.c:193 src/file-handle.q:138
 msgid "expecting end of command"
@@ -243,43 +243,43 @@ msgstr ""
 msgid "Duplicate variable name %s among target variables."
 msgstr ""
 
-#: src/casefile.c:182
+#: src/casefile.c:189
 #, c-format
 msgid "%s: Removing temporary file: %s."
 msgstr ""
 
-#: src/casefile.c:328
+#: src/casefile.c:335
 #, c-format
 msgid "Error writing temporary file: %s."
 msgstr ""
 
-#: src/casefile.c:355
+#: src/casefile.c:362
 #, c-format
 msgid "%s: Creating temporary file: %s."
 msgstr ""
 
-#: src/casefile.c:498
+#: src/casefile.c:505
 #, c-format
 msgid "%s: Opening temporary file: %s."
 msgstr ""
 
-#: src/casefile.c:524
+#: src/casefile.c:531
 #, c-format
 msgid "%s: Seeking temporary file: %s."
 msgstr ""
 
-#: src/casefile.c:540
+#: src/casefile.c:547
 #, c-format
 msgid "%s: Reading temporary file: %s."
 msgstr ""
 
-#: src/casefile.c:543
+#: src/casefile.c:550
 #, c-format
 msgid "%s: Temporary file ended unexpectedly."
 msgstr ""
 
 #: src/cmdline.c:141 src/cmdline.c:160 src/cmdline.c:172 src/command.c:161
-#: src/set.q:414 src/set.q:416 src/set.q:956
+#: src/set.q:415 src/set.q:417 src/set.q:956
 #, c-format
 msgid "%s is not yet implemented."
 msgstr ""
@@ -731,7 +731,7 @@ msgid ""
 msgstr ""
 
 #: src/data-list.c:793 src/data-list.c:919 src/descript.c:880 src/print.c:799
-#: src/sysfile-info.c:134 src/sysfile-info.c:367 src/vfm.c:875
+#: src/sysfile-info.c:134 src/sysfile-info.c:367 src/vfm.c:874
 msgid "Variable"
 msgstr ""
 
@@ -958,7 +958,7 @@ msgstr ""
 msgid "Only USE ALL is currently implemented."
 msgstr ""
 
-#: src/descript.c:99 src/examine.q:631 src/frequencies.q:110 src/oneway.q:396
+#: src/descript.c:99 src/examine.q:1281 src/frequencies.q:110 src/oneway.q:396
 #: src/t-test.q:683 src/t-test.q:706 src/t-test.q:829 src/t-test.q:1166
 msgid "Mean"
 msgstr ""
@@ -971,11 +971,11 @@ msgstr ""
 msgid "Std Dev"
 msgstr ""
 
-#: src/descript.c:102 src/examine.q:694 src/frequencies.q:115
+#: src/descript.c:102 src/examine.q:1344 src/frequencies.q:115
 msgid "Variance"
 msgstr ""
 
-#: src/descript.c:103 src/examine.q:764 src/frequencies.q:116
+#: src/descript.c:103 src/examine.q:1414 src/frequencies.q:116
 msgid "Kurtosis"
 msgstr ""
 
@@ -983,7 +983,7 @@ msgstr ""
 msgid "S E Kurt"
 msgstr ""
 
-#: src/descript.c:105 src/examine.q:759 src/frequencies.q:118
+#: src/descript.c:105 src/examine.q:1409 src/frequencies.q:118
 msgid "Skewness"
 msgstr ""
 
@@ -991,15 +991,17 @@ msgstr ""
 msgid "S E Skew"
 msgstr ""
 
-#: src/descript.c:107 src/examine.q:742 src/frequencies.q:120
+#: src/descript.c:107 src/examine.q:1392 src/frequencies.q:120
 msgid "Range"
 msgstr ""
 
-#: src/descript.c:108 src/examine.q:719 src/frequencies.q:121 src/oneway.q:408
+#: src/descript.c:108 src/examine.q:1369 src/frequencies.q:121
+#: src/oneway.q:408
 msgid "Minimum"
 msgstr ""
 
-#: src/descript.c:109 src/examine.q:730 src/frequencies.q:122 src/oneway.q:409
+#: src/descript.c:109 src/examine.q:1380 src/frequencies.q:122
+#: src/oneway.q:409
 msgid "Maximum"
 msgstr ""
 
@@ -1191,73 +1193,73 @@ msgstr ""
 msgid "Warnings (%d) exceed limit (%d)."
 msgstr ""
 
-#: src/error.c:257
+#: src/error.c:261
 msgid "fatal"
 msgstr ""
 
-#: src/error.c:259 src/error.c:266 src/error.c:269 src/expr-prs.c:1280
+#: src/error.c:263 src/error.c:270 src/error.c:273 src/expr-prs.c:1280
 msgid "error"
 msgstr ""
 
-#: src/error.c:260 src/error.c:267 src/error.c:270
+#: src/error.c:264 src/error.c:271 src/error.c:274
 msgid "warning"
 msgstr ""
 
-#: src/error.c:261 src/error.c:271
+#: src/error.c:265 src/error.c:275
 msgid "note"
 msgstr ""
 
-#: src/error.c:263 src/error.c:264
+#: src/error.c:267 src/error.c:268
 msgid "installation error"
 msgstr ""
 
-#: src/expr-evl.c:634
+#: src/expr-evl.c:635
 msgid "TIME.HMS cannot mix positive and negative in its arguments."
 msgstr ""
 
-#: src/expr-evl.c:698
+#: src/expr-evl.c:699
 msgid "Week argument to WKYR must be in range 0 to 53."
 msgstr ""
 
-#: src/expr-evl.c:849 src/expr-evl.c:905
+#: src/expr-evl.c:850 src/expr-evl.c:906
 msgid "Argument 3 of RINDEX may not be system-missing."
 msgstr ""
 
-#: src/expr-evl.c:859 src/expr-evl.c:915
+#: src/expr-evl.c:860 src/expr-evl.c:916
 msgid ""
 "Argument 3 of RINDEX must be between 1 and the length of argument 2, and it "
 "must evenly divide the length of argument 2."
 msgstr ""
 
-#: src/expr-evl.c:1101
+#: src/expr-evl.c:1102
 msgid ""
 "A number being treated as a Boolean in an expression was found to have a "
 "value other than 0 (false), 1 (true), or the system-missing value.  The "
 "result was forced to 0."
 msgstr ""
 
-#: src/expr-evl.c:1142
+#: src/expr-evl.c:1143
 #, c-format
 msgid ""
 "SYSMIS is not a valid index value for vector %s.  The result will be set to "
 "SYSMIS."
 msgstr ""
 
-#: src/expr-evl.c:1146
+#: src/expr-evl.c:1147
 #, c-format
 msgid ""
 "%g is not a valid index value for vector %s.  The result will be set to "
 "SYSMIS."
 msgstr ""
 
-#: src/expr-evl.c:1165
+#: src/expr-evl.c:1166
 #, c-format
 msgid ""
 "SYSMIS is not a valid index value for vector %s.  The result will be set to "
 "the empty string."
 msgstr ""
 
-#: src/expr-evl.c:1170
+#: src/expr-evl.c:1171
 #, c-format
 msgid ""
 "%g is not a valid index value for vector %s.  The result will be set to the "
@@ -1415,6 +1417,25 @@ msgstr ""
 msgid "Boolean"
 msgstr ""
 
+#: src/filename.c:221
+#, c-format
+msgid "Searching for `%s'..."
+msgstr ""
+
+#: src/filename.c:229 src/filename.c:261
+msgid "Search unsuccessful!"
+msgstr ""
+
+#: src/filename.c:254
+#, c-format
+msgid "Found `%s'."
+msgstr ""
+
+#: src/filename.c:686
+#, c-format
+msgid "Not opening pipe file `%s' because SAFER option set."
+msgstr ""
+
 #: src/file-type.c:129
 msgid "MIXED, GROUPED, or NESTED expected."
 msgstr ""
@@ -1553,25 +1574,6 @@ msgstr ""
 msgid "Unknown record type %g."
 msgstr ""
 
-#: src/filename.c:221
-#, c-format
-msgid "Searching for `%s'..."
-msgstr ""
-
-#: src/filename.c:229 src/filename.c:261
-msgid "Search unsuccessful!"
-msgstr ""
-
-#: src/filename.c:254
-#, c-format
-msgid "Found `%s'."
-msgstr ""
-
-#: src/filename.c:686
-#, c-format
-msgid "Not opening pipe file `%s' because SAFER option set."
-msgstr ""
-
 #: src/flip.c:78
 msgid ""
 "FLIP ignores TEMPORARY.  Temporary transformations will be made permanent."
@@ -1815,27 +1817,27 @@ msgstr ""
 msgid "expecting COMM or TAPE"
 msgstr ""
 
-#: src/getline.c:163
+#: src/getline.c:166
 #, c-format
 msgid "Can't find `%s' in include file search path."
 msgstr ""
 
-#: src/getline.c:318
+#: src/getline.c:321
 #, c-format
 msgid "%s: Opening as syntax file."
 msgstr ""
 
-#: src/getline.c:323
+#: src/getline.c:326
 #, c-format
 msgid "Opening `%s': %s."
 msgstr ""
 
-#: src/getline.c:332 src/html.c:331 src/postscript.c:1463
+#: src/getline.c:335 src/html.c:331 src/postscript.c:1463
 #, c-format
 msgid "Reading `%s': %s."
 msgstr ""
 
-#: src/getline.c:390
+#: src/getline.c:393
 #, c-format
 msgid "Closing `%s': %s."
 msgstr ""
@@ -1983,7 +1985,7 @@ msgstr ""
 msgid "<<fallback>>"
 msgstr ""
 
-#: src/hash.c:512
+#: src/hash.c:517
 #, c-format
 msgid "hash table:"
 msgstr ""
@@ -2066,101 +2068,101 @@ msgid ""
 "REREAD: Column numbers must be positive finite numbers.  Column set to 1."
 msgstr ""
 
-#: src/lexer.c:244
+#: src/lexer.c:251
 #, c-format
 msgid "%s does not form a valid number."
 msgstr ""
 
-#: src/lexer.c:362
+#: src/lexer.c:369
 #, c-format
 msgid "Bad character in input: `%c'."
 msgstr ""
 
-#: src/lexer.c:364
+#: src/lexer.c:371
 #, c-format
 msgid "Bad character in input: `\\%o'."
 msgstr ""
 
-#: src/lexer.c:385
+#: src/lexer.c:392
 msgid "Syntax error at end of file."
 msgstr ""
 
-#: src/lexer.c:395
+#: src/lexer.c:402
 #, c-format
 msgid "Syntax error %s at `%s'."
 msgstr ""
 
-#: src/lexer.c:398
+#: src/lexer.c:405
 #, c-format
 msgid "Syntax error at `%s'."
 msgstr ""
 
-#: src/lexer.c:518
+#: src/lexer.c:525
 #, c-format
 msgid "expecting `%s'"
 msgstr ""
 
-#: src/lexer.c:535
+#: src/lexer.c:542
 #, c-format
 msgid "expecting %s"
 msgstr ""
 
-#: src/lexer.c:549 src/val-labs.c:151
+#: src/lexer.c:556 src/val-labs.c:151
 msgid "expecting string"
 msgstr ""
 
-#: src/lexer.c:563 src/val-labs.c:160
+#: src/lexer.c:570 src/val-labs.c:160
 msgid "expecting integer"
 msgstr ""
 
-#: src/lexer.c:577
+#: src/lexer.c:584
 msgid "expecting number"
 msgstr ""
 
-#: src/lexer.c:591
+#: src/lexer.c:598
 msgid "expecting identifier"
 msgstr ""
 
-#: src/lexer.c:860
+#: src/lexer.c:867
 msgid "<ERROR>"
 msgstr ""
 
-#: src/lexer.c:993 src/pfm-read.c:134 src/repeat.c:214
+#: src/lexer.c:1000 src/pfm-read.c:134 src/repeat.c:214
 msgid "Unexpected end of file."
 msgstr ""
 
-#: src/lexer.c:1019
+#: src/lexer.c:1026
 msgid "binary"
 msgstr ""
 
-#: src/lexer.c:1019
+#: src/lexer.c:1026
 msgid "octal"
 msgstr ""
 
-#: src/lexer.c:1019
+#: src/lexer.c:1026
 msgid "hex"
 msgstr ""
 
-#: src/lexer.c:1033
+#: src/lexer.c:1040
 #, c-format
 msgid "String of %s digits has %d characters, which is not a multiple of %d."
 msgstr ""
 
-#: src/lexer.c:1062
+#: src/lexer.c:1069
 #, c-format
 msgid "`%c' is not a valid %s digit."
 msgstr ""
 
-#: src/lexer.c:1093
+#: src/lexer.c:1100
 msgid "Unterminated string constant."
 msgstr ""
 
-#: src/lexer.c:1165
+#: src/lexer.c:1172
 #, c-format
 msgid "String exceeds 255 characters in length (%d characters)."
 msgstr ""
 
-#: src/lexer.c:1180
+#: src/lexer.c:1187
 msgid ""
 "Sorry, literal strings may not contain null characters.  Replacing with "
 "spaces."
@@ -2552,17 +2554,17 @@ msgstr ""
 msgid "%s: Opening device description file..."
 msgstr ""
 
-#: src/output.c:304 src/output.c:1165 src/postscript.c:1099
+#: src/output.c:304 src/output.c:1173 src/postscript.c:1099
 #, c-format
 msgid "Opening %s: %s."
 msgstr ""
 
-#: src/output.c:315 src/output.c:1176 src/postscript.c:1114
+#: src/output.c:315 src/output.c:1184 src/postscript.c:1114
 #, c-format
 msgid "Reading %s: %s."
 msgstr ""
 
-#: src/output.c:337 src/output.c:489
+#: src/output.c:337 src/output.c:497
 msgid "Syntax error."
 msgstr ""
 
@@ -2583,127 +2585,142 @@ msgstr ""
 msgid "Error reading device definition file."
 msgstr ""
 
-#: src/output.c:461
+#: src/output.c:469
 #, c-format
 msgid ""
 "Driver classes:\n"
 "\t"
 msgstr ""
 
-#: src/output.c:590
+#: src/output.c:598
 msgid "Syntax error in string constant."
 msgstr ""
 
-#: src/output.c:622
+#: src/output.c:630
 msgid "Syntax error in options."
 msgstr ""
 
-#: src/output.c:632
+#: src/output.c:640
 msgid "Syntax error in options (`=' expected)."
 msgstr ""
 
-#: src/output.c:639
+#: src/output.c:647
 msgid "Syntax error in options (value expected after `=')."
 msgstr ""
 
-#: src/output.c:711
+#: src/output.c:719
 msgid "Driver name expected."
 msgstr ""
 
-#: src/output.c:732
+#: src/output.c:740
 msgid "Class name expected."
 msgstr ""
 
-#: src/output.c:741
+#: src/output.c:749
 #, c-format
 msgid "Unknown output driver class `%s'."
 msgstr ""
 
-#: src/output.c:748
+#: src/output.c:756
 #, c-format
 msgid "Can't initialize output driver class `%s'."
 msgstr ""
 
-#: src/output.c:755
+#: src/output.c:763
 #, c-format
 msgid "Can't initialize output driver `%s' of class `%s'."
 msgstr ""
 
-#: src/output.c:777
+#: src/output.c:785
 #, c-format
 msgid "Unknown device type `%s'."
 msgstr ""
 
-#: src/output.c:789
+#: src/output.c:797
 #, c-format
 msgid "Can't complete initialization of output driver `%s' of class `%s'."
 msgstr ""
 
-#: src/output.c:836
+#: src/output.c:844
 #, c-format
 msgid "Can't deinitialize output driver class `%s'."
 msgstr ""
 
-#: src/output.c:909
+#: src/output.c:917
 #, c-format
 msgid "Trying to find keyword `%s'...\n"
 msgstr ""
 
-#: src/output.c:1026
+#: src/output.c:1034
 #, c-format
 msgid "Unit \"%s\" is unknown in dimension \"%s\"."
 msgstr ""
 
-#: src/output.c:1041
+#: src/output.c:1049
 #, c-format
 msgid "Bad dimension \"%s\"."
 msgstr ""
 
-#: src/output.c:1067
+#: src/output.c:1075
 #, c-format
 msgid "`x' expected in paper size `%s'."
 msgstr ""
 
-#: src/output.c:1077
+#: src/output.c:1085
 #, c-format
 msgid "Trailing garbage `%s' on paper size `%s'."
 msgstr ""
 
-#: src/output.c:1126
+#: src/output.c:1134
 msgid "Paper size name must not be empty."
 msgstr ""
 
-#: src/output.c:1157
+#: src/output.c:1165
 msgid "Cannot find `papersize' configuration file."
 msgstr ""
 
-#: src/output.c:1161
+#: src/output.c:1169
 #, c-format
 msgid "%s: Opening paper size definition file..."
 msgstr ""
 
-#: src/output.c:1203
+#: src/output.c:1211
 msgid "Syntax error in paper size definition."
 msgstr ""
 
-#: src/output.c:1232
+#: src/output.c:1240
 msgid "Paper size definition file read successfully."
 msgstr ""
 
-#: src/output.c:1234
+#: src/output.c:1242
 msgid "Error reading paper size definition file."
 msgstr ""
 
-#: src/output.c:1303
+#: src/output.c:1311
 #, c-format
 msgid "Error closing page on %s device of %s class."
 msgstr ""
 
-#: src/output.c:1307
+#: src/output.c:1315
 #, c-format
 msgid "Error opening page on %s device of %s class."
 msgstr ""
 
+#: src/permissions.c:75
+#, c-format
+msgid "Expecting %s or %s."
+msgstr ""
+
+#: src/permissions.c:101
+#, c-format
+msgid "Cannot stat %s: %s"
+msgstr ""
+
+#: src/permissions.c:114
+#, c-format
+msgid "Cannot change mode of %s: %s"
+msgstr ""
+
 #: src/pfm-read.c:92
 #, c-format
 msgid "portable file %s corrupt at offset %ld: "
@@ -3186,11 +3203,11 @@ msgstr ""
 msgid "No matching DO REPEAT."
 msgstr ""
 
-#: src/sample.c:69
+#: src/sample.c:73
 msgid "The sampling factor must be between 0 and 1 exclusive."
 msgstr ""
 
-#: src/sample.c:89
+#: src/sample.c:93
 #, c-format
 msgid "Cannot sample %d observations from a population of %d."
 msgstr ""
@@ -3653,7 +3670,7 @@ msgstr ""
 msgid "Documents in the active file:"
 msgstr ""
 
-#: src/sysfile-info.c:374 src/sysfile-info.c:532 src/vfm.c:877
+#: src/sysfile-info.c:374 src/sysfile-info.c:532 src/vfm.c:876
 msgid "Label"
 msgstr ""
 
@@ -3676,9 +3693,9 @@ msgstr ""
 msgid "Missing Values: "
 msgstr ""
 
-#: src/sysfile-info.c:531 src/vfm.c:876 src/crosstabs.q:1099
+#: src/sysfile-info.c:531 src/vfm.c:875 src/crosstabs.q:1099
 #: src/crosstabs.q:1126 src/crosstabs.q:1146 src/crosstabs.q:1168
-#: src/examine.q:1179 src/frequencies.q:1083 src/frequencies.q:1204
+#: src/examine.q:940 src/frequencies.q:1085 src/frequencies.q:1206
 msgid "Value"
 msgstr ""
 
@@ -3899,33 +3916,33 @@ msgstr ""
 msgid "Summary."
 msgstr ""
 
-#: src/crosstabs.q:802 src/examine.q:837
+#: src/crosstabs.q:802 src/examine.q:724
 msgid "Cases"
 msgstr ""
 
-#: src/crosstabs.q:803 src/examine.q:775 src/frequencies.q:1081
-#: src/frequencies.q:1454
+#: src/crosstabs.q:803 src/examine.q:658 src/frequencies.q:1083
+#: src/frequencies.q:1456
 msgid "Valid"
 msgstr ""
 
-#: src/crosstabs.q:804 src/examine.q:776 src/frequencies.q:1149
-#: src/frequencies.q:1455
+#: src/crosstabs.q:804 src/examine.q:659 src/frequencies.q:1151
+#: src/frequencies.q:1457
 msgid "Missing"
 msgstr ""
 
 #: src/crosstabs.q:805 src/crosstabs.q:1008 src/crosstabs.q:1722
-#: src/examine.q:777 src/frequencies.q:1158 src/oneway.q:307 src/oneway.q:486
+#: src/examine.q:660 src/frequencies.q:1160 src/oneway.q:307 src/oneway.q:486
 msgid "Total"
 msgstr ""
 
-#: src/crosstabs.q:815 src/examine.q:858 src/frequencies.q:1453
+#: src/crosstabs.q:815 src/examine.q:736 src/frequencies.q:1455
 #: src/oneway.q:395 src/t-test.q:682 src/t-test.q:705 src/t-test.q:830
 #: src/t-test.q:1365
 msgid "N"
 msgstr ""
 
-#: src/crosstabs.q:816 src/examine.q:860 src/frequencies.q:1085
-#: src/frequencies.q:1086 src/frequencies.q:1087
+#: src/crosstabs.q:816 src/examine.q:739 src/frequencies.q:1087
+#: src/frequencies.q:1088 src/frequencies.q:1089
 msgid "Percent"
 msgstr ""
 
@@ -3962,7 +3979,7 @@ msgid "adj. resid."
 msgstr ""
 
 #: src/crosstabs.q:1098 src/crosstabs.q:1125 src/crosstabs.q:1145
-#: src/crosstabs.q:1166 src/examine.q:495
+#: src/crosstabs.q:1166 src/examine.q:1174
 msgid "Statistic"
 msgstr ""
 
@@ -4145,88 +4162,88 @@ msgstr ""
 msgid "%s Dependent"
 msgstr ""
 
-#: src/examine.q:264 src/examine.q:276
+#: src/examine.q:313 src/examine.q:325
 #, c-format
 msgid "%s and %s are mutually exclusive"
 msgstr ""
 
-#: src/examine.q:496 src/oneway.q:398 src/oneway.q:705
+#: src/examine.q:718
+msgid "Case Processing Summary"
+msgstr ""
+
+#: src/examine.q:924
+msgid "Extreme Values"
+msgstr ""
+
+#: src/examine.q:941
+msgid "Case Number"
+msgstr ""
+
+#: src/examine.q:1029
+msgid "Highest"
+msgstr ""
+
+#: src/examine.q:1034
+msgid "Lowest"
+msgstr ""
+
+#: src/examine.q:1175 src/oneway.q:398 src/oneway.q:705
 msgid "Std. Error"
 msgstr ""
 
-#: src/examine.q:610 src/oneway.q:412
+#: src/examine.q:1177 src/oneway.q:412
 msgid "Descriptives"
 msgstr ""
 
-#: src/examine.q:649 src/oneway.q:403
+#: src/examine.q:1299 src/oneway.q:403
 #, c-format
 msgid "%g%% Confidence Interval for Mean"
 msgstr ""
 
-#: src/examine.q:655 src/oneway.q:405
+#: src/examine.q:1305 src/oneway.q:405
 msgid "Lower Bound"
 msgstr ""
 
-#: src/examine.q:666 src/oneway.q:406
+#: src/examine.q:1316 src/oneway.q:406
 msgid "Upper Bound"
 msgstr ""
 
-#: src/examine.q:678
+#: src/examine.q:1328
 msgid "5% Trimmed Mean"
 msgstr ""
 
-#: src/examine.q:689 src/frequencies.q:112
+#: src/examine.q:1339 src/frequencies.q:112
 msgid "Median"
 msgstr ""
 
-#: src/examine.q:706 src/oneway.q:397 src/t-test.q:684 src/t-test.q:707
+#: src/examine.q:1356 src/oneway.q:397 src/t-test.q:684 src/t-test.q:707
 #: src/t-test.q:831 src/t-test.q:1167
 msgid "Std. Deviation"
 msgstr ""
 
-#: src/examine.q:754
+#: src/examine.q:1404
 msgid "Interquartile Range"
 msgstr ""
 
-#: src/examine.q:831
-msgid "Case Processing Summary"
-msgstr ""
-
-#: src/examine.q:1157
-msgid "Extreme Values"
-msgstr ""
-
-#: src/examine.q:1180
-msgid "Case Number"
-msgstr ""
-
-#: src/examine.q:1306
-msgid "Highest"
-msgstr ""
-
-#: src/examine.q:1311
-msgid "Lowest"
-msgstr ""
-
-#: src/examine.q:1350
+#: src/examine.q:1447
 #, c-format
 msgid "Normal Q-Q Plot of %s"
 msgstr ""
 
-#: src/examine.q:1351 src/examine.q:1357
+#: src/examine.q:1448 src/examine.q:1454
 msgid "Observed Value"
 msgstr ""
 
-#: src/examine.q:1352
+#: src/examine.q:1449
 msgid "Expected Normal"
 msgstr ""
 
-#: src/examine.q:1355
+#: src/examine.q:1452
 #, c-format
 msgid "Detrended Normal Q-Q Plot of %s"
 msgstr ""
 
-#: src/examine.q:1358
+#: src/examine.q:1455
 msgid "Dev from Normal"
 msgstr ""
 
@@ -4289,76 +4306,76 @@ msgstr ""
 msgid "S.E. Skew"
 msgstr ""
 
-#: src/frequencies.q:340
+#: src/frequencies.q:342
 msgid ""
 "At most one of BARCHART, HISTOGRAM, or HBAR should be given.  HBAR will be "
 "assumed.  Argument values will be given precedence increasing along the "
 "order given."
 msgstr ""
 
-#: src/frequencies.q:423
+#: src/frequencies.q:425
 #, c-format
 msgid ""
 "MAX must be greater than or equal to MIN, if both are specified.  However, "
 "MIN was specified as %g and MAX as %g.  MIN and MAX will be ignored."
 msgstr ""
 
-#: src/frequencies.q:747
+#: src/frequencies.q:749
 msgid ""
 "Upper limit of integer mode value range must be greater than lower limit."
 msgstr ""
 
-#: src/frequencies.q:760
+#: src/frequencies.q:762
 #, c-format
 msgid "Variable %s specified multiple times on VARIABLES subcommand."
 msgstr ""
 
-#: src/frequencies.q:766
+#: src/frequencies.q:768
 #, c-format
 msgid "Integer mode specified, but %s is not a numeric variable."
 msgstr ""
 
-#: src/frequencies.q:832
+#: src/frequencies.q:834
 msgid "`)' expected after GROUPED interval list."
 msgstr ""
 
-#: src/frequencies.q:844
+#: src/frequencies.q:846
 #, c-format
 msgid "Variables %s specified on GROUPED but not on VARIABLES."
 msgstr ""
 
-#: src/frequencies.q:851
+#: src/frequencies.q:853
 #, c-format
 msgid "Variables %s specified multiple times on GROUPED subcommand."
 msgstr ""
 
-#: src/frequencies.q:1082 src/frequencies.q:1174 src/frequencies.q:1175
-#: src/frequencies.q:1207
+#: src/frequencies.q:1084 src/frequencies.q:1176 src/frequencies.q:1177
+#: src/frequencies.q:1209
 msgid "Cum"
 msgstr ""
 
-#: src/frequencies.q:1084
+#: src/frequencies.q:1086
 msgid "Frequency"
 msgstr ""
 
-#: src/frequencies.q:1104
+#: src/frequencies.q:1106
 msgid "Value Label"
 msgstr ""
 
-#: src/frequencies.q:1205
+#: src/frequencies.q:1207
 msgid "Freq"
 msgstr ""
 
-#: src/frequencies.q:1206 src/frequencies.q:1208
+#: src/frequencies.q:1208 src/frequencies.q:1210
 msgid "Pct"
 msgstr ""
 
-#: src/frequencies.q:1427
+#: src/frequencies.q:1429
 #, c-format
 msgid "No valid data for variable %s; statistics not displayed."
 msgstr ""
 
-#: src/frequencies.q:1465
+#: src/frequencies.q:1467
 msgid "Percentiles"
 msgstr ""
 
@@ -4492,79 +4509,79 @@ msgstr ""
 msgid "Does not assume equal"
 msgstr ""
 
-#: src/set.q:216 src/set.q:288 src/set.q:332 src/set.q:387 src/set.q:389
-#: src/set.q:391 src/set.q:393 src/set.q:395 src/set.q:397 src/set.q:399
-#: src/set.q:401 src/set.q:403 src/set.q:405 src/set.q:407 src/set.q:409
-#: src/set.q:411 src/set.q:790 src/set.q:871 src/set.q:966
+#: src/set.q:218 src/set.q:290 src/set.q:333 src/set.q:388 src/set.q:390
+#: src/set.q:392 src/set.q:394 src/set.q:396 src/set.q:398 src/set.q:400
+#: src/set.q:402 src/set.q:404 src/set.q:406 src/set.q:408 src/set.q:410
+#: src/set.q:412 src/set.q:790 src/set.q:871 src/set.q:966
 #, c-format
 msgid "%s is obsolete."
 msgstr ""
 
-#: src/set.q:224
+#: src/set.q:226
 msgid "LISTING is ON"
 msgstr ""
 
-#: src/set.q:226
+#: src/set.q:228
 msgid "LISTING is OFF"
 msgstr ""
 
-#: src/set.q:252
+#: src/set.q:254
 msgid "Journalling is off"
 msgstr ""
 
-#: src/set.q:420
+#: src/set.q:421
 msgid ""
 "CASE is not implemented and probably won't be.  If you care, complain about "
 "it."
 msgstr ""
 
-#: src/set.q:425
+#: src/set.q:426
 msgid "Active file compression is not yet implemented (and probably won't be)."
 msgstr ""
 
-#: src/set.q:439
+#: src/set.q:440
 #, c-format
 msgid ""
 "CC%c: Length of custom currency string `%s' (%d) exceeds maximum length of "
 "16."
 msgstr ""
 
-#: src/set.q:461
+#: src/set.q:462
 #, c-format
 msgid ""
 "CC%c: Custom currency string `%s' does not contain exactly three periods or "
 "commas (not both)."
 msgstr ""
 
-#: src/set.q:514
+#: src/set.q:515
 msgid "None"
 msgstr ""
 
-#: src/set.q:520
+#: src/set.q:521
 msgid "Disabled"
 msgstr ""
 
-#: src/set.q:525
+#: src/set.q:526
 msgid "Screen"
 msgstr ""
 
-#: src/set.q:532
+#: src/set.q:533
 msgid "Listing"
 msgstr ""
 
-#: src/set.q:539
+#: src/set.q:540
 msgid "Other"
 msgstr ""
 
-#: src/set.q:648
+#: src/set.q:649
 msgid "LENGTH must be at least 1."
 msgstr ""
 
-#: src/set.q:687
+#: src/set.q:688
 msgid "Missing identifier in RESULTS subcommand."
 msgstr ""
 
-#: src/set.q:698
+#: src/set.q:699
 msgid "Unrecognized identifier in RESULTS subcommand."
 msgstr ""
 
@@ -4620,7 +4637,7 @@ msgstr ""
 msgid "Terminal type `%s' is not defined."
 msgstr ""
 
-#: src/set.q:1057
+#: src/set.q:1071
 msgid "data> "
 msgstr ""
 
index 044edaf1b0c9f44d25e83d931aa07ead5b89c1f1..f8d8ad36ea8821c281e8cf9d6e38a1117309d3d6 100644 (file)
@@ -80,7 +80,7 @@ struct factor
   /* Hash table of factor stats indexed by 2 values */
   struct hsh_table *fstats;
 
-  /* The hash table after it's been crunched */
+  /* The hash table after it has been crunched */
   struct factor_statistics **fs;
 
   struct factor *next;
@@ -193,6 +193,9 @@ cmd_examine(void)
 
   multipass_procedure_with_splits (run_examine, &cmd);
 
+  if ( totals ) 
+    free(totals);
+
   return CMD_SUCCESS;
 };
 
@@ -638,12 +641,11 @@ run_examine(const struct casefile *cf, void *cmd_ )
       fctr = fctr->next;
     }
 
-  /* 
-  print_factors();
-  */
-
   output_examine();
 
+  for ( v = 0 ; v < n_dependent_vars ; ++v ) 
+    hsh_destroy(totals[v].ordered_data);
+
 }
 
 
@@ -1021,7 +1023,6 @@ populate_extremes(struct tab_table *t,
   int extremity;
   int idx=0;
 
-  const int n_data = hsh_count(m->ordered_data);
 
   tab_text(t, col, row,
           TAB_RIGHT | TAT_TITLE ,
@@ -1053,10 +1054,10 @@ populate_extremes(struct tab_table *t,
 
 
   /* Lowest */
-  for (idx = 0, extremity = 0; extremity < n && idx < n_data ; ++idx ) 
+  for (idx = 0, extremity = 0; extremity < n && idx < m->n_data ; ++idx ) 
     {
       int j;
-      const struct weighted_value *wv = &m->wv[idx];
+      const struct weighted_value *wv = m->wvp[idx];
       struct case_node *cn = wv->case_nos;
 
       
@@ -1083,10 +1084,10 @@ populate_extremes(struct tab_table *t,
 
 
   /* Highest */
-  for (idx = n_data - 1, extremity = 0; extremity < n && idx >= 0; --idx ) 
+  for (idx = m->n_data - 1, extremity = 0; extremity < n && idx >= 0; --idx ) 
     {
       int j;
-      const struct weighted_value *wv = &m->wv[idx];
+      const struct weighted_value *wv = m->wvp[idx];
       struct case_node *cn = wv->case_nos;
 
       for (j = 0 ; j < wv->w ; ++j  )
@@ -1431,15 +1432,15 @@ np_plot(const struct metrics *m, const char *factorname)
   /* Detrended Normal Plot */
   struct chart dnp_chart;
 
-  const struct weighted_value *wv = m->wv;
-  const int n_data = hsh_count(m->ordered_data) ; 
+  const struct weighted_value *wv = *(m->wvp);
+
 
   /* The slope and intercept of the ideal normal probability line */
   const double slope = 1.0 / m->stddev;
   const double intercept = - m->mean / m->stddev;
 
   /* Cowardly refuse to plot an empty data set */
-  if ( n_data == 0 ) 
+  if ( m->n_data == 0 ) 
     return ; 
 
   chart_initialise(&np_chart);
@@ -1454,7 +1455,7 @@ np_plot(const struct metrics *m, const char *factorname)
   chart_write_ylabel(&dnp_chart, _("Dev from Normal"));
 
   yfirst = gsl_cdf_ugaussian_Pinv (wv[0].rank / ( m->n + 1));
-  ylast =  gsl_cdf_ugaussian_Pinv (wv[n_data-1].rank / ( m->n + 1));
+  ylast =  gsl_cdf_ugaussian_Pinv (wv[m->n_data-1].rank / ( m->n + 1));
 
   {
     /* Need to make sure that both the scatter plot and the ideal fit into the
@@ -1479,10 +1480,10 @@ np_plot(const struct metrics *m, const char *factorname)
   /* We have to cache the detrended data, beacause we need to 
      find its limits before we can plot it */
   double *d_data;
-  d_data = xmalloc (n_data * sizeof(double));
+  d_data = xmalloc (m->n_data * sizeof(double));
   double d_max = -DBL_MAX;
   double d_min = DBL_MAX;
-  for ( i = 0 ; i < n_data; ++i ) 
+  for ( i = 0 ; i < m->n_data; ++i ) 
     {
       const double ns = gsl_cdf_ugaussian_Pinv (wv[i].rank / ( m->n + 1));
 
@@ -1497,7 +1498,7 @@ np_plot(const struct metrics *m, const char *factorname)
   chart_write_yscale(&dnp_chart, d_min, d_max, 
                     chart_rounded_tick((d_max - d_min) / 5.0));
 
-  for ( i = 0 ; i < n_data; ++i ) 
+  for ( i = 0 ; i < m->n_data; ++i ) 
       chart_datum(&dnp_chart, 0, wv[i].v.f, d_data[i]);
 
   free(d_data);
index 16e1930d58188723db0ae4a7f64c3c9c9f083447..6794043cec20f5151e712fe4b63c63b184a112e7 100644 (file)
@@ -123,11 +123,6 @@ metrics_postcalc(struct metrics *m)
   int i;
   int j = 1;  
 
-  struct weighted_value **data;
-
-
-  int n_data;
-  
   m->mean = m->sum / m->n;
 
   sample_var = ( m->ssq / m->n  - m->mean * m->mean );
@@ -140,25 +135,16 @@ metrics_postcalc(struct metrics *m)
      Shouldn't we use the sample variance ??? */
   m->stderr = sqrt (m->var / m->n) ;
 
-  data = (struct weighted_value **) hsh_data(m->ordered_data);
-  n_data = hsh_count(m->ordered_data);
+  m->wvp = (struct weighted_value **) hsh_sort(m->ordered_data);
+  m->n_data = hsh_count(m->ordered_data);
 
-  if ( n_data == 0 ) 
+  if ( m->n_data == 0 ) 
     {
       m->trimmed_mean = m->mean;
       return;
     }
 
 
-  m->wv = xmalloc(sizeof(struct weighted_value ) * n_data);
-
-  for ( i = 0 ; i < n_data ; ++i )
-      m->wv[i] = *(data[i]);
-
-  sort (m->wv, n_data, sizeof (struct weighted_value) , 
-       (algo_compare_func *) compare_values, 0);
-
-  
   /* Trimmed mean calculation */
 
   tc = m->n * 0.05 ;
@@ -166,24 +152,24 @@ metrics_postcalc(struct metrics *m)
   k2 = -1;
 
 
-  for ( i = 0 ; i < n_data ; ++i ) 
+  for ( i = 0 ; i < m->n_data ; ++i ) 
     {
-      cc += m->wv[i].w;
-      m->wv[i].cc = cc;
+      cc += m->wvp[i]->w;
+      m->wvp[i]->cc = cc;
 
-      m->wv[i].rank = j + (m->wv[i].w - 1) / 2.0 ;
+      m->wvp[i]->rank = j + (m->wvp[i]->w - 1) / 2.0 ;
       
-      j += m->wv[i].w;
+      j += m->wvp[i]->w;
       
       if ( cc < tc ) 
        k1 = i;
 
     }
 
-  k2 = n_data;
-  for ( i = n_data -1  ; i >= 0; --i ) 
+  k2 = m->n_data;
+  for ( i = m->n_data -1  ; i >= 0; --i ) 
     {
-      if ( tc > m->n - m->wv[i].cc) 
+      if ( tc > m->n - m->wvp[i]->cc) 
        k2 = i;
     }
 
@@ -191,12 +177,12 @@ metrics_postcalc(struct metrics *m)
   m->trimmed_mean = 0;
   for ( i = k1 + 2 ; i <= k2 - 1 ; ++i ) 
     {
-      m->trimmed_mean += m->wv[i].v.f * m->wv[i].w;
+      m->trimmed_mean += m->wvp[i]->v.f * m->wvp[i]->w;
     }
 
 
-  m->trimmed_mean += (m->n - m->wv[k2 - 1].cc - tc) * m->wv[k2].v.f ;
-  m->trimmed_mean += (m->wv[k1 + 1].cc - tc) * m->wv[k1 + 1].v.f ;
+  m->trimmed_mean += (m->n - m->wvp[k2 - 1]->cc - tc) * m->wvp[k2]->v.f ;
+  m->trimmed_mean += (m->wvp[k1 + 1]->cc - tc) * m->wvp[k1 + 1]->v.f ;
   m->trimmed_mean /= 0.9 * m->n ;
 
 }
@@ -255,16 +241,14 @@ create_factor_statistics (int n, union value *id0, union value *id1)
 void
 factor_statistics_free(struct factor_statistics *f)
 {
+  hsh_destroy(f->m->ordered_data);
   free(f->m) ; 
-
   free(f);
 }
 
 
 
 
-
-
 int 
 factor_statistics_compare(const struct factor_statistics *f0,
                          const struct factor_statistics *f1, void *aux)
index cf660c6a1b25ec7634113ddd0e3c0fc91c0b8711..c193f883e47384008781b39bd41333f0969990c5 100644 (file)
@@ -52,11 +52,18 @@ struct metrics
 
   double trimmed_mean;
 
-  /* A hash of data for this factor */
+  /* A hash of data for this factor.
+   */
   struct hsh_table *ordered_data;
 
-  /* A SORTED array of weighted values */
-  struct weighted_value *wv;
+  /* A Pointer to this hash table AFTER it has been SORTED and crunched */
+  struct weighted_value **wvp;
+
+
+  /* The number of values in the above array
+     (if all the weights are 1, then this will
+     be the same as n) */
+  int n_data;
 };
 
 
index 21fdc5243d372649c0a19183bb31dae378cb3efa..b5d87bc32d5c69b7ffbe25f88d50dec0947710c2 100644 (file)
@@ -81,6 +81,7 @@ getl_initialize (void)
 void
 getl_uninitialize (void)
 {
+  getl_close_all();
 #if HAVE_LIBHISTORY && defined (unix)
   if (history_file)
     write_history (history_file);
index 5b35a9f1dbeb02c52f721a1dca431f625ffce373..457be8ace071b856fff5cd17d5fc5dd94d14bd16 100644 (file)
@@ -185,7 +185,7 @@ done_glob(void)
 {
   dict_destroy(default_dict);
   free(logfn);
-  /* done_settings(); */
+  done_settings();
   ds_destroy (&tokstr);
 }
 
index c291c1a87946575f20c37320fc7f49b240da723b..b6bcb23f7a5aa36a5fdcb06113df5c393e4a1ae6 100644 (file)
--- a/src/set.q
+++ b/src/set.q
@@ -1051,6 +1051,20 @@ set_viewport(int sig_num UNUSED)
 
 /* Public functions */
 
+void
+done_settings(void)
+{
+  free(set_pager);
+  free(set_journal);
+
+  free(cmd.s_endcmd);
+  free(cmd.s_prompt);
+  free(cmd.s_cprompt);
+  free(cmd.s_dprompt);
+}
+
+
+
 void
 init_settings(void)
 {
index 9786d328bc82faadc132e4ce04cb5eed99f2cd53..5ab78fd87f22effd5d4202ebcf3a7da97a5aee07 100644 (file)
@@ -10,6 +10,7 @@ TESTS = \
        command/data-list.sh \
        command/erase.sh \
        command/examine.sh \
+       command/examine-extremes.sh \
        command/file-label.sh \
        command/filter.sh \
        command/flip.sh \
diff --git a/tests/command/examine-extremes.sh b/tests/command/examine-extremes.sh
new file mode 100755 (executable)
index 0000000..3df60f1
--- /dev/null
@@ -0,0 +1,123 @@
+#!/bin/sh
+
+# This program tests  the EXTREME subcommand of the EXAMINE command.
+
+TEMPDIR=/tmp/pspp-tst-$$
+
+here=`pwd`;
+
+# ensure that top_srcdir is absolute
+cd $top_srcdir; top_srcdir=`pwd`
+
+export STAT_CONFIG_PATH=$top_srcdir/config
+
+
+cleanup()
+{
+     rm -rf $TEMPDIR
+}
+
+
+fail()
+{
+    echo $activity
+    echo FAILED
+    cleanup;
+    exit 1;
+}
+
+
+no_result()
+{
+    echo $activity
+    echo NO RESULT;
+    cleanup;
+    exit 2;
+}
+
+pass()
+{
+    cleanup;
+    exit 0;
+}
+
+mkdir -p $TEMPDIR
+
+cd $TEMPDIR
+
+activity="create program"
+cat > $TEMPDIR/out.stat <<EOF
+data list free /v1 w
+begin data.
+1  1
+2  1
+3  2
+3  1
+4  1
+5  1
+6  1
+7  1
+8  1
+9  1
+10 1
+11 1
+12 1
+13 1
+14 1
+15 1
+16 1
+17 1
+18 2
+19 1
+20 1
+end data.
+
+weight by w.
+
+examine v1 
+ /statistics=extreme(6)
+ .
+EOF
+if [ $? -ne 0 ] ; then no_result ; fi
+
+
+activity="run program"
+$SUPERVISOR $here/../src/pspp -o raw-ascii $TEMPDIR/out.stat
+if [ $? -ne 0 ] ; then no_result ; fi
+
+activity="compare results"
+diff $TEMPDIR/pspp.list - << EOF
+1.1 EXAMINE.  Case Processing Summary
+#==#===============================#
+#  #             Cases             #
+#  #----------+---------+----------#
+#  #   Valid  | Missing |   Total  #
+#  #--+-------+-+-------+--+-------#
+#  # N|Percent|N|Percent| N|Percent#
+#==#==#=======#=#=======#==#=======#
+#V1#23|   100%|0|     0%|23|   100%#
+#==#==#=======#=#=======#==#=======#
+
+1.2 EXAMINE.  Extreme Values
+#==========#===========#=====#
+#          #Case Number|Value#
+#==========#===========#=====#
+#V1Highest1#         21|20.00#
+#         2#         20|19.00#
+#         3#         19|18.00#
+#         4#         19|18.00#
+#         5#         18|17.00#
+#         6#         17|16.00#
+#  --------#-----------+-----#
+#   Lowest1#          1| 1.00#
+#         2#          2| 2.00#
+#         3#          4| 3.00#
+#         4#          3| 3.00#
+#         5#          3| 3.00#
+#         6#          5| 4.00#
+#==========#===========#=====#
+
+EOF
+if [ $? -ne 0 ] ; then fail ; fi
+
+pass