From: John Darrington Date: Fri, 19 Mar 2004 16:58:57 +0000 (+0000) Subject: Implemented the SHOW command and massaged the SET command to fit X-Git-Tag: v0.4.0~315 X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=def7e6026513a3ee7c2b38416b30a2e890e34311;p=pspp-builds.git Implemented the SHOW command and massaged the SET command to fit --- diff --git a/TODO b/TODO index 7fb66b1d..0071c4b0 100644 --- a/TODO +++ b/TODO @@ -16,8 +16,6 @@ In debug mode hash table code should verify that collisions are reasonably low. Use posix_fadvise(POSIX_FADV_SEQUENTIAL) where available. -random.c should not know about set_seed. - Use AFM files instead of Groff font files, and include AFMs for our default fonts with the distribution. diff --git a/doc/ChangeLog b/doc/ChangeLog index 99a3e95e..fe449865 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,3 +1,7 @@ +Sat Mar 20 00:53:10 WST 2004 John Darrington + + * pspp.texi: Added a brief mention of the SHOW command. + Sun Mar 14 21:50:56 2004 Ben Pfaff * pspp.texi: Added details on how various features interact. diff --git a/doc/pspp.texi b/doc/pspp.texi index e79f8f62..31ad84b7 100644 --- a/doc/pspp.texi +++ b/doc/pspp.texi @@ -8057,6 +8057,7 @@ encountered in the input. * INCLUDE:: Include a file within the current one. * QUIT:: Terminate the PSPP session. * SET:: Adjust PSPP runtime parameters. +* SHOW:: Display runtime parameters. * SUBTITLE:: Provide a document subtitle. * TITLE:: Provide a document title. @end menu @@ -8236,7 +8237,7 @@ to the operating system. This command is not valid within a command file. -@node SET, SUBTITLE, QUIT, Utilities +@node SET, SHOW, QUIT, Utilities @section SET @vindex SET @@ -8551,7 +8552,33 @@ Be aware that this setting does not guarantee safety (commands can still overwrite files, for instance) but it is an improvement. @end table -@node SUBTITLE, TITLE, SET, Utilities +@node SHOW, SUBTITLE, SET, Utilities +@comment node-name, next, previous, up +@section SHOW +@vindex SHOW + +@display +SHOW + /@var{subcommand} + +@end display + +@cmd{SHOW} can be used to display the current state of PSPP's +execution parameters. All of the parameters which can be changed +using @code{SET} @xref{SET}, can be examined using @cmd{SHOW}, by +using a subcommand with the same name. +In addition, @code{SHOW} supports the following subcommands: + +@table @code +@item WARRANTY +Show details of the lack of warranty for PSPP. +@item COPYING +Display the terms of PSPP's copyright licence @ref{License}. +@end table + + + +@node SUBTITLE, TITLE, SHOW, Utilities @section SUBTITLE @vindex SUBTITLE diff --git a/po/en_GB.po b/po/en_GB.po index 82622e7b..80e9967b 100644 --- a/po/en_GB.po +++ b/po/en_GB.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PSPP 0.3.1\n" "Report-Msgid-Bugs-To: pspp-dev@gnu.org\n" -"POT-Creation-Date: 2004-03-13 14:14+0800\n" +"POT-Creation-Date: 2004-03-20 00:30+0800\n" "PO-Revision-Date: 2004-01-23 13:04+0800\n" "Last-Translator: John Darrington \n" "Language-Team: John Darrington \n" @@ -16,56 +16,56 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n!=1);\n" -#: src/aggregate.c:190 src/aggregate.c:231 src/data-list.c:1363 +#: src/aggregate.c:183 src/aggregate.c:216 src/data-list.c:1363 #: src/data-list.c:1398 src/data-list.c:1411 src/data-list.c:1424 #: src/data-list.c:1457 #, c-format msgid "%s subcommand given multiple times." msgstr "" -#: src/aggregate.c:216 +#: src/aggregate.c:203 msgid "while expecting COLUMNWISE" msgstr "" -#: src/aggregate.c:261 +#: src/aggregate.c:244 msgid "BREAK subcommand not specified." msgstr "" -#: src/aggregate.c:490 +#: src/aggregate.c:400 msgid "expecting aggregation function" msgstr "" -#: src/aggregate.c:506 +#: src/aggregate.c:416 #, c-format msgid "Unknown aggregation function %s." msgstr "" -#: src/aggregate.c:521 +#: src/aggregate.c:431 msgid "expecting `('" msgstr "" -#: src/aggregate.c:556 +#: src/aggregate.c:466 #, c-format msgid "Missing argument %d to %s." msgstr "" -#: src/aggregate.c:564 +#: src/aggregate.c:474 #, c-format msgid "Arguments to %s must be of same type as source variables." msgstr "" -#: src/aggregate.c:574 src/expr-prs.c:665 +#: src/aggregate.c:484 src/expr-prs.c:665 msgid "expecting `)'" msgstr "" -#: src/aggregate.c:586 src/autorecode.c:110 +#: src/aggregate.c:496 #, c-format msgid "" "Number of source variables (%d) does not match number of target variables (%" "d)." msgstr "" -#: src/aggregate.c:653 +#: src/aggregate.c:564 #, c-format msgid "" "Variable name %s is not unique within the aggregate file dictionary, which " @@ -221,31 +221,36 @@ msgstr "" msgid "%s - Page %d" msgstr "" -#: src/autorecode.c:121 src/command.c:697 src/compute.c:293 +#: src/autorecode.c:121 +#, c-format +msgid "Source variable count (%d) does not match target variable count (%d)." +msgstr "" + +#: src/autorecode.c:138 src/command.c:690 src/compute.c:293 #: src/data-list.c:380 src/data-list.c:878 src/data-list.c:1690 #: src/do-if.c:263 src/get.c:381 src/lexer.c:387 src/loop.c:241 -#: src/matrix-data.c:510 src/print.c:338 src/print.c:1060 src/recode.c:409 +#: src/matrix-data.c:510 src/print.c:338 src/print.c:1060 src/recode.c:405 #: src/sel-if.c:56 src/sel-if.c:138 src/vector.c:194 src/file-handle.q:88 msgid "expecting end of command" msgstr "" -#: src/autorecode.c:131 +#: src/autorecode.c:148 #, c-format msgid "Target variable %s duplicates existing variable %s." msgstr "" -#: src/autorecode.c:138 +#: src/autorecode.c:155 #, c-format msgid "Duplicate variable name %s among target variables." msgstr "" -#: src/cmdline.c:112 src/cmdline.c:131 src/cmdline.c:143 src/command.c:196 -#: src/set.q:315 src/set.q:317 src/set.q:857 +#: src/cmdline.c:114 src/cmdline.c:133 src/cmdline.c:145 src/command.c:196 +#: src/set.q:416 src/set.q:418 src/set.q:958 #, c-format msgid "%s is not yet implemented." msgstr "" -#: src/cmdline.c:157 +#: src/cmdline.c:159 msgid "" "\n" "Copyright (C) 1997-9, 2000 Free Software Foundation, Inc.\n" @@ -255,7 +260,7 @@ msgid "" "Written by Ben Pfaff ." msgstr "" -#: src/cmdline.c:217 +#: src/cmdline.c:221 #, c-format msgid "" "PSPP, a program for statistical analysis of sample data.\n" @@ -299,7 +304,7 @@ msgid "" "\n" msgstr "" -#: src/cmdline.c:249 +#: src/cmdline.c:253 #, c-format msgid "" "\n" @@ -378,30 +383,30 @@ msgstr "" msgid "The sentinel may not be the empty string." msgstr "" -#: src/command.c:574 +#: src/command.c:576 src/command.c:708 msgid "This command not allowed when the SAFER option is set." msgstr "" -#: src/command.c:597 +#: src/command.c:590 #, c-format msgid "Error removing `%s': %s." msgstr "" -#: src/command.c:647 +#: src/command.c:640 #, c-format msgid "Couldn't fork: %s." msgstr "" -#: src/command.c:688 +#: src/command.c:681 #, c-format msgid "Error executing command: %s." msgstr "" -#: src/command.c:734 +#: src/command.c:731 msgid "No operating system support for this command." msgstr "" -#: src/command.c:763 +#: src/command.c:760 msgid "This command is not valid in a syntax file." msgstr "" @@ -427,11 +432,11 @@ msgstr "" msgid "Extra characters after expression." msgstr "" -#: src/count.c:171 +#: src/count.c:156 msgid "Destination cannot be a string variable." msgstr "" -#: src/count.c:282 +#: src/count.c:263 #, c-format msgid "" "%g THRU %g is not a valid range. The number following THRU must be at least " @@ -709,7 +714,7 @@ msgid "" msgstr "" #: src/data-list.c:768 src/data-list.c:899 src/print.c:803 -#: src/sysfile-info.c:135 src/sysfile-info.c:370 src/vfm.c:1148 +#: src/sysfile-info.c:135 src/sysfile-info.c:370 src/vfm.c:1011 #: src/descript.q:791 msgid "Variable" msgstr "" @@ -1026,25 +1031,25 @@ msgstr "" msgid "Error writing file %s: %s." msgstr "" -#: src/dfm.c:657 +#: src/dfm.c:656 msgid "" "This command is not valid here since the current input program does not " "access the inline file." msgstr "" -#: src/dfm.c:664 +#: src/dfm.c:663 msgid "inline file: Opening for reading." msgstr "" -#: src/dfm.c:678 +#: src/dfm.c:677 msgid "Skipping remaining inline data." msgstr "" -#: src/dfm.c:690 +#: src/dfm.c:689 msgid "reading as a data file" msgstr "" -#: src/dfm.c:697 +#: src/dfm.c:696 msgid "writing as a data file" msgstr "" @@ -1089,41 +1094,41 @@ msgstr "" msgid "DO IF %d: missing\n" msgstr "" -#: src/error.c:113 +#: src/error.c:115 msgid "Terminating NOW due to a fatal error!" msgstr "" -#: src/error.c:190 +#: src/error.c:192 msgid "Terminating execution of syntax file due to error." msgstr "" -#: src/error.c:192 +#: src/error.c:194 #, c-format msgid "Errors (%d) exceeds limit (%d)." msgstr "" -#: src/error.c:195 +#: src/error.c:197 #, c-format msgid "Warnings (%d) exceed limit (%d)." msgstr "" -#: src/error.c:253 +#: src/error.c:255 msgid "fatal" msgstr "" -#: src/error.c:255 src/error.c:262 src/error.c:265 src/expr-prs.c:1464 +#: src/error.c:257 src/error.c:264 src/error.c:267 src/expr-prs.c:1464 msgid "error" msgstr "" -#: src/error.c:256 src/error.c:263 src/error.c:266 +#: src/error.c:258 src/error.c:265 src/error.c:268 msgid "warning" msgstr "" -#: src/error.c:257 src/error.c:267 +#: src/error.c:259 src/error.c:269 msgid "note" msgstr "" -#: src/error.c:259 src/error.c:260 +#: src/error.c:261 src/error.c:262 msgid "installation error" msgstr "" @@ -1531,59 +1536,64 @@ msgstr "" msgid "Unknown record type %g." msgstr "" -#: src/flip.c:210 +#: src/flip.c:76 +msgid "" +"FLIP ignores TEMPORARY. Temporary transformations will be made permanent." +msgstr "" + +#: src/flip.c:217 #, c-format msgid "Could not create acceptable variant for variable %s." msgstr "" -#: src/flip.c:226 +#: src/flip.c:233 msgid "Cannot create more than 99999 variable names." msgstr "" -#: src/flip.c:270 +#: src/flip.c:277 msgid "Could not create temporary file for FLIP." msgstr "" -#: src/flip.c:277 src/flip.c:339 +#: src/flip.c:284 src/flip.c:347 #, c-format msgid "Error writing FLIP file: %s." msgstr "" -#: src/flip.c:381 +#: src/flip.c:389 #, c-format msgid "Error rewinding FLIP file: %s." msgstr "" -#: src/flip.c:385 +#: src/flip.c:393 msgid "Error creating FLIP source file." msgstr "" -#: src/flip.c:394 +#: src/flip.c:402 #, c-format msgid "Error reading FLIP file: %s." msgstr "" -#: src/flip.c:406 +#: src/flip.c:414 #, c-format msgid "Error seeking FLIP source file: %s." msgstr "" -#: src/flip.c:411 +#: src/flip.c:419 #, c-format msgid "Error writing FLIP source file: %s." msgstr "" -#: src/flip.c:422 +#: src/flip.c:430 #, c-format msgid "Error rewind FLIP source file: %s." msgstr "" -#: src/flip.c:470 +#: src/flip.c:478 #, c-format msgid "Error reading FLIP temporary file: %s." msgstr "" -#: src/flip.c:473 +#: src/flip.c:481 msgid "Unexpected end of file reading FLIP temporary file." msgstr "" @@ -1697,7 +1707,7 @@ msgstr "" msgid "GET translation table from file to memory:\n" msgstr "" -#: src/get.c:117 src/get.c:1416 +#: src/get.c:117 src/get.c:1429 #, c-format msgid " %8s from %3d,%3d to %3d,%3d\n" msgstr "" @@ -1737,110 +1747,95 @@ msgid "" "Variables in dictionary:\n" msgstr "" -#: src/get.c:607 +#: src/get.c:610 msgid "The BY subcommand may be given once at most." msgstr "" -#: src/get.c:674 +#: src/get.c:677 msgid "The active file may not be specified more than once." msgstr "" -#: src/get.c:683 +#: src/get.c:686 msgid "Cannot specify the active file since no active file has been defined." msgstr "" -#: src/get.c:715 +#: src/get.c:694 +msgid "" +"MATCH FILES may not be used after TEMPORARY when the active file is an input " +"source. Temporary transformations will be made permanent." +msgstr "" + +#: src/get.c:727 msgid "" "IN, FIRST, and LAST subcommands may not occur before the first FILE or TABLE." msgstr "" -#: src/get.c:747 +#: src/get.c:759 #, c-format msgid "Multiple %s subcommands for a single FILE or TABLE." msgstr "" -#: src/get.c:757 +#: src/get.c:769 #, c-format msgid "Duplicate variable name %s while creating %s variable." msgstr "" -#: src/get.c:771 +#: src/get.c:783 msgid "" "RENAME, KEEP, and DROP subcommands may not occur before the first FILE or " "TABLE." msgstr "" -#: src/get.c:795 +#: src/get.c:807 msgid "The BY subcommand is required when a TABLE subcommand is given." msgstr "" -#: src/get.c:816 +#: src/get.c:828 #, c-format msgid "File %s lacks BY variable %s." msgstr "" -#: src/get.c:1328 +#: src/get.c:1341 #, c-format msgid "" "Variable %s in file %s (%s) has different type or width from the same " "variable in earlier file (%s)." msgstr "" -#: src/get.c:1378 +#: src/get.c:1391 msgid "expecting COMM or TAPE" msgstr "" -#: src/get.c:1411 +#: src/get.c:1424 #, c-format msgid "IMPORT translation table from file to memory:\n" msgstr "" -#: src/getline.c:161 +#: src/getline.c:163 #, c-format msgid "Can't find `%s' in include file search path." msgstr "" -#: src/getline.c:316 +#: src/getline.c:318 #, c-format msgid "%s: Opening as syntax file." msgstr "" -#: src/getline.c:321 +#: src/getline.c:323 #, c-format msgid "Opening `%s': %s." msgstr "" -#: src/getline.c:330 src/html.c:330 src/postscript.c:1461 +#: src/getline.c:332 src/html.c:330 src/postscript.c:1461 #, c-format msgid "Reading `%s': %s." msgstr "" -#: src/getline.c:388 +#: src/getline.c:390 #, c-format msgid "Closing `%s': %s." msgstr "" -#: src/glob.c:212 -msgid "data> " -msgstr "" - -#: src/glob.c:269 -msgid "Specify a terminal type with `setenv TERM '." -msgstr "" - -#: src/glob.c:275 -msgid "Could not access the termcap data base." -msgstr "" - -#: src/glob.c:277 -#, c-format -msgid "Terminal type `%s' is not defined." -msgstr "" - -#: src/glob.c:278 -msgid "Assuming screen of size 79x25." -msgstr "" - #: src/groff-font.c:107 #, c-format msgid "%s: Opening Groff font file..." @@ -2110,11 +2105,11 @@ msgstr "" msgid "expecting %s" msgstr "" -#: src/lexer.c:524 +#: src/lexer.c:524 src/val-labs.c:148 msgid "expecting string" msgstr "" -#: src/lexer.c:538 +#: src/lexer.c:538 src/val-labs.c:157 msgid "expecting integer" msgstr "" @@ -2198,32 +2193,6 @@ msgstr "" msgid "%s without %s." msgstr "" -#: src/main.c:71 -msgid "Error initializing output drivers." -msgstr "" - -#: src/main.c:132 -msgid "This command not executed." -msgstr "" - -#: src/main.c:136 -msgid "" -"Skipping the rest of this command. Part of this command may have been " -"executed." -msgstr "" - -#: src/main.c:141 -msgid "" -"Skipping the rest of this command. This command was fully executed up to " -"this point." -msgstr "" - -#: src/main.c:146 -msgid "" -"Trailing garbage was encountered following this command. The command was " -"fully executed to this point." -msgstr "" - #: src/matrix-data.c:191 msgid "VARIABLES subcommand multiply specified." msgstr "" @@ -2331,69 +2300,69 @@ msgstr "" msgid "End of line expected %s while reading %s." msgstr "" -#: src/matrix-data.c:1179 +#: src/matrix-data.c:1174 #, c-format msgid "expecting value for %s %s" msgstr "" -#: src/matrix-data.c:1339 +#: src/matrix-data.c:1336 #, c-format msgid "Syntax error expecting SPLIT FILE value %s." msgstr "" -#: src/matrix-data.c:1348 +#: src/matrix-data.c:1345 #, c-format msgid "Expecting value %g for %s." msgstr "" -#: src/matrix-data.c:1387 src/matrix-data.c:1842 +#: src/matrix-data.c:1386 src/matrix-data.c:1854 #, c-format msgid "Syntax error expecting factor value %s." msgstr "" -#: src/matrix-data.c:1396 +#: src/matrix-data.c:1395 #, c-format msgid "Syntax error expecting value %g for %s %s." msgstr "" -#: src/matrix-data.c:1623 +#: src/matrix-data.c:1631 #, c-format msgid "Syntax error %s expecting SPLIT FILE value." msgstr "" -#: src/matrix-data.c:1751 +#: src/matrix-data.c:1761 #, c-format msgid "" "Expected %d lines of data for %s content; actually saw %d lines. No data " "will be output for this content." msgstr "" -#: src/matrix-data.c:1785 +#: src/matrix-data.c:1796 #, c-format msgid "Multiply specified ROWTYPE_ %s." msgstr "" -#: src/matrix-data.c:1790 +#: src/matrix-data.c:1801 #, c-format msgid "Syntax error %s expecting ROWTYPE_ string." msgstr "" -#: src/matrix-data.c:1810 +#: src/matrix-data.c:1821 #, c-format msgid "Syntax error %s." msgstr "" -#: src/matrix-data.c:1958 +#: src/matrix-data.c:1971 #, c-format msgid "Duplicate specification for %s." msgstr "" -#: src/matrix-data.c:1970 +#: src/matrix-data.c:1983 #, c-format msgid "Too many rows of matrix data for %s." msgstr "" -#: src/matrix-data.c:2016 +#: src/matrix-data.c:2029 #, c-format msgid "Syntax error expecting value for %s %s." msgstr "" @@ -2458,69 +2427,75 @@ msgstr "" msgid "(!!!INTERNAL ERROR--%d!!!)\n" msgstr "" -#: src/modify-vars.c:108 +#: src/modify-vars.c:88 +msgid "" +"MODIFY VARS may not be used after TEMPORARY. Temporary transformations will " +"be made permanent." +msgstr "" + +#: src/modify-vars.c:115 msgid "REORDER subcommand may be given at most once." msgstr "" -#: src/modify-vars.c:131 +#: src/modify-vars.c:138 msgid "Cannot specify ALL after specifying a set of variables." msgstr "" -#: src/modify-vars.c:141 +#: src/modify-vars.c:148 msgid "`(' expected on REORDER subcommand." msgstr "" -#: src/modify-vars.c:153 +#: src/modify-vars.c:160 msgid "`)' expected following variable names on REORDER subcommand." msgstr "" -#: src/modify-vars.c:171 +#: src/modify-vars.c:178 msgid "RENAME subcommand may be given at most once." msgstr "" -#: src/modify-vars.c:184 +#: src/modify-vars.c:191 msgid "`(' expected on RENAME subcommand." msgstr "" -#: src/modify-vars.c:192 +#: src/modify-vars.c:199 msgid "" "`=' expected between lists of new and old variable names on RENAME " "subcommand." msgstr "" -#: src/modify-vars.c:200 src/rename-vars.c:70 +#: src/modify-vars.c:207 src/rename-vars.c:77 #, c-format msgid "" "Differing number of variables in old name list (%d) and in new name list (%" "d)." msgstr "" -#: src/modify-vars.c:211 +#: src/modify-vars.c:218 msgid "`)' expected after variable lists on RENAME subcommand." msgstr "" -#: src/modify-vars.c:225 +#: src/modify-vars.c:232 msgid "" "KEEP subcommand may be given at most once. It may notbe given in " "conjunction with the DROP subcommand." msgstr "" -#: src/modify-vars.c:267 +#: src/modify-vars.c:274 msgid "" "DROP subcommand may be given at most once. It may not be given in " "conjunction with the KEEP subcommand." msgstr "" -#: src/modify-vars.c:293 +#: src/modify-vars.c:300 #, c-format msgid "Unrecognized subcommand name `%s'." msgstr "" -#: src/modify-vars.c:295 +#: src/modify-vars.c:302 msgid "Subcommand name expected." msgstr "" -#: src/modify-vars.c:303 +#: src/modify-vars.c:310 msgid "`/' or `.' expected." msgstr "" @@ -3137,14 +3112,14 @@ msgid "" "SPACE a negative number of lines." msgstr "" -#: src/recode.c:288 +#: src/recode.c:283 #, c-format msgid "" "%d variable(s) cannot be recoded into %d variable(s). Specify the same " "number of variables as input and output variables." msgstr "" -#: src/recode.c:302 +#: src/recode.c:297 #, c-format msgid "" "There is no string variable named %s. (All string variables specified on " @@ -3152,77 +3127,73 @@ msgid "" "variable.)" msgstr "" -#: src/recode.c:311 +#: src/recode.c:306 #, c-format msgid "" "Type mismatch between input and output variables. Output variable %s is not " "a string variable, but all the input variables are string variables." msgstr "" -#: src/recode.c:330 +#: src/recode.c:325 #, c-format msgid "Type mismatch after INTO: %s is not a numeric variable." msgstr "" -#: src/recode.c:360 +#: src/recode.c:355 msgid "" "INTO must be used when the input values are numeric and output values are " "string." msgstr "" -#: src/recode.c:368 +#: src/recode.c:363 msgid "" "INTO must be used when the input values are string and output values are " "numeric." msgstr "" -#: src/recode.c:493 +#: src/recode.c:486 msgid "expecting output value" msgstr "" -#: src/recode.c:507 +#: src/recode.c:500 msgid "" "Inconsistent output types. The output values must be all numeric or all " "string." msgstr "" -#: src/recode.c:558 +#: src/recode.c:551 msgid "following LO THRU" msgstr "" -#: src/recode.c:574 src/recode.c:603 +#: src/recode.c:567 src/recode.c:596 msgid "in source value" msgstr "" -#: src/recode.c:616 +#: src/recode.c:609 msgid "" "Keyword CONVERT may only be used with string input values and numeric output " "values." msgstr "" -#: src/recode.c:876 -#, c-format -msgid "!!END!!" -msgstr "" - -#: src/recode.c:897 src/recode.c:913 -#, c-format -msgid "!!ERROR!!" +#: src/rename-vars.c:47 +msgid "" +"RENAME VARS may not be used after TEMPORARY. Temporary transformations will " +"be made permanent." msgstr "" -#: src/rename-vars.c:55 +#: src/rename-vars.c:62 msgid "`(' expected." msgstr "" -#: src/rename-vars.c:63 +#: src/rename-vars.c:70 msgid "`=' expected between lists of new and old variable names." msgstr "" -#: src/rename-vars.c:81 +#: src/rename-vars.c:88 msgid "`)' expected after variable names." msgstr "" -#: src/rename-vars.c:91 +#: src/rename-vars.c:98 #, c-format msgid "Renaming would duplicate variable name %s." msgstr "" @@ -3704,65 +3675,71 @@ msgstr "" msgid "writing as a system file" msgstr "" -#: src/sort.c:122 -msgid "`A' or `D' expected inside parentheses." +#: src/sort.c:82 +msgid "" +"SORT CASES may not be used after TEMPORARY. Temporary transformations will " +"be made permanent." msgstr "" #: src/sort.c:127 +msgid "`A' or `D' expected inside parentheses." +msgstr "" + +#: src/sort.c:132 msgid "`)' expected." msgstr "" -#: src/sort.c:418 +#: src/sort.c:421 #, c-format msgid "%s: Creating temporary directory: %s." msgstr "" -#: src/sort.c:449 +#: src/sort.c:452 #, c-format msgid "Generating temporary directory name failed: %s." msgstr "" -#: src/sort.c:457 +#: src/sort.c:460 #, c-format msgid "Creating temporary directory failed: %s." msgstr "" -#: src/sort.c:509 +#: src/sort.c:512 #, c-format msgid "%s: Error removing directory for temporary files: %s." msgstr "" -#: src/sort.c:538 +#: src/sort.c:541 #, c-format msgid "%s: Error opening temporary file for %s: %s." msgstr "" -#: src/sort.c:555 +#: src/sort.c:558 #, c-format msgid "%s: Error closing temporary file: %s." msgstr "" -#: src/sort.c:571 +#: src/sort.c:574 #, c-format msgid "%s: Error removing temporary file: %s." msgstr "" -#: src/sort.c:587 +#: src/sort.c:590 #, c-format msgid "%s: Error writing temporary file: %s." msgstr "" -#: src/sort.c:605 +#: src/sort.c:608 #, c-format msgid "%s: Error reading temporary file: %s." msgstr "" -#: src/sort.c:608 +#: src/sort.c:611 #, c-format msgid "%s: Unexpected end of temporary file." msgstr "" -#: src/sort.c:798 src/sort.c:1033 +#: src/sort.c:806 src/sort.c:1037 #, c-format msgid "" "Out of memory. Could not allocate room for minimum of %d cases of %d bytes " @@ -3870,7 +3847,7 @@ msgstr "" msgid "Documents in the active file:" msgstr "" -#: src/sysfile-info.c:377 src/sysfile-info.c:535 src/vfm.c:1150 +#: src/sysfile-info.c:377 src/sysfile-info.c:535 src/vfm.c:1013 msgid "Label" msgstr "" @@ -3893,8 +3870,8 @@ msgstr "" msgid "Missing Values: " msgstr "" -#: src/sysfile-info.c:534 src/vfm.c:1149 src/crosstabs.q:1158 -#: src/crosstabs.q:1185 src/crosstabs.q:1205 src/crosstabs.q:1227 +#: src/sysfile-info.c:534 src/vfm.c:1012 src/crosstabs.q:1159 +#: src/crosstabs.q:1186 src/crosstabs.q:1206 src/crosstabs.q:1228 #: src/frequencies.q:1009 src/frequencies.q:1126 msgid "Value" msgstr "" @@ -3918,11 +3895,11 @@ msgid "" "bad box: (%d+%d=%d,%d+%d=%d)-(%d+%d=%d,%d+%d=%d) in table size (%d,%d)\n" msgstr "" -#: src/temporary.c:49 +#: src/temporary.c:47 msgid "This command is not valid inside DO IF or LOOP." msgstr "" -#: src/temporary.c:56 +#: src/temporary.c:54 msgid "" "This command may only appear once between procedures and procedure-like " "commands." @@ -3952,39 +3929,22 @@ msgstr "" msgid "Document entered %s %02d:%02d:%02d by %s (%s):" msgstr "" -#: src/val-labs.c:138 +#: src/val-labs.c:112 #, c-format msgid "" "It is not possible to assign value labels to long string variables such as %" "s." msgstr "" -#: src/val-labs.c:176 -msgid "String expected for value." -msgstr "" - -#: src/val-labs.c:185 -msgid "Number expected for value." -msgstr "" - -#: src/val-labs.c:189 +#: src/val-labs.c:161 #, c-format msgid "Value label `%g' is not integer." msgstr "" -#: src/val-labs.c:199 +#: src/val-labs.c:171 msgid "Truncating value label to 60 characters." msgstr "" -#: src/val-labs.c:220 -msgid "Value labels:" -msgstr "" - -#: src/val-labs.c:237 -#, c-format -msgid " (no value labels)\n" -msgstr "" - #: src/var-labs.c:53 msgid "String expected for variable label." msgstr "" @@ -4109,56 +4069,39 @@ msgid "" "the long form or the short form of VECTOR." msgstr "" -#: src/vfm.c:391 -msgid "" +#: src/vfm.c:507 +#, c-format +msgid "" +"An error occurred creating a temporary file for use as the active file: %s." msgstr "" -#: src/vfm.c:554 +#: src/vfm.c:520 #, c-format msgid "" -"An error occurred attempting to create a temporary file for use as the " -"active file: %s." +"An error occurred writing to a temporary file used as the active file: %s." msgstr "" -#: src/vfm.c:579 +#: src/vfm.c:599 #, c-format msgid "" -"An error occurred while attempting to write to a temporary file used as the " -"active file: %s." +"Workspace limit of %d KB (%d cases at %d bytes each) overflowed. Writing " +"active file to disk." msgstr "" -#: src/vfm.c:606 +#: src/vfm.c:631 #, c-format msgid "" "An error occurred while attempting to rewind a temporary file used as the " "active file: %s." msgstr "" -#: src/vfm.c:651 +#: src/vfm.c:680 #, c-format msgid "" "An error occurred while attempting to read from a temporary file created for " "the active file: %s." msgstr "" -#: src/vfm.c:755 -msgid "Virtual memory exhausted. Writing active file to disk." -msgstr "" - -#: src/vfm.c:758 -#, c-format -msgid "" -"Workspace limit of %d KB (%d cases at %d bytes each) overflowed. Writing " -"active file to disk." -msgstr "" - -#: src/vfm.c:778 src/vfm.c:817 -#, c-format -msgid "" -"An error occurred while attempting to write to a temporary file created as " -"the active file: %s." -msgstr "" - #: src/weight.c:54 msgid "The weighting variable must be numeric." msgstr "" @@ -4176,267 +4119,267 @@ msgstr "" msgid "Write mode ALL not allowed in general mode. Assuming WRITE=CELLS." msgstr "" -#: src/crosstabs.q:321 +#: src/crosstabs.q:322 msgid "expecting BY" msgstr "" -#: src/crosstabs.q:388 +#: src/crosstabs.q:389 msgid "VARIABLES must be specified before TABLES." msgstr "" -#: src/crosstabs.q:425 +#: src/crosstabs.q:426 #, c-format msgid "Maximum value (%ld) less than minimum value (%ld)." msgstr "" -#: src/crosstabs.q:859 +#: src/crosstabs.q:860 msgid "Summary." msgstr "" -#: src/crosstabs.q:861 +#: src/crosstabs.q:862 msgid "Cases" msgstr "" -#: src/crosstabs.q:862 src/frequencies.q:1007 +#: src/crosstabs.q:863 src/frequencies.q:1007 msgid "Valid" msgstr "" -#: src/crosstabs.q:863 src/frequencies.q:1074 +#: src/crosstabs.q:864 src/frequencies.q:1074 msgid "Missing" msgstr "" -#: src/crosstabs.q:864 src/crosstabs.q:1067 src/crosstabs.q:1800 +#: src/crosstabs.q:865 src/crosstabs.q:1068 src/crosstabs.q:1801 #: src/frequencies.q:1083 msgid "Total" msgstr "" -#: src/crosstabs.q:874 src/t-test.q:655 src/t-test.q:678 src/t-test.q:769 -#: src/t-test.q:1343 +#: src/crosstabs.q:875 src/t-test.q:657 src/t-test.q:680 src/t-test.q:771 +#: src/t-test.q:1345 msgid "N" msgstr "" -#: src/crosstabs.q:875 src/frequencies.q:1011 src/frequencies.q:1012 +#: src/crosstabs.q:876 src/frequencies.q:1011 src/frequencies.q:1012 #: src/frequencies.q:1013 msgid "Percent" msgstr "" -#: src/crosstabs.q:1117 +#: src/crosstabs.q:1118 msgid "count" msgstr "" -#: src/crosstabs.q:1118 +#: src/crosstabs.q:1119 msgid "row %" msgstr "" -#: src/crosstabs.q:1119 +#: src/crosstabs.q:1120 msgid "column %" msgstr "" -#: src/crosstabs.q:1120 +#: src/crosstabs.q:1121 msgid "total %" msgstr "" -#: src/crosstabs.q:1121 +#: src/crosstabs.q:1122 msgid "expected" msgstr "" -#: src/crosstabs.q:1122 +#: src/crosstabs.q:1123 msgid "residual" msgstr "" -#: src/crosstabs.q:1123 +#: src/crosstabs.q:1124 msgid "std. resid." msgstr "" -#: src/crosstabs.q:1124 +#: src/crosstabs.q:1125 msgid "adj. resid." msgstr "" -#: src/crosstabs.q:1157 src/crosstabs.q:1184 src/crosstabs.q:1204 -#: src/crosstabs.q:1225 +#: src/crosstabs.q:1158 src/crosstabs.q:1185 src/crosstabs.q:1205 +#: src/crosstabs.q:1226 msgid "Statistic" msgstr "" -#: src/crosstabs.q:1159 src/t-test.q:920 src/t-test.q:1121 src/t-test.q:1227 +#: src/crosstabs.q:1160 src/t-test.q:922 src/t-test.q:1123 src/t-test.q:1229 msgid "df" msgstr "" -#: src/crosstabs.q:1161 +#: src/crosstabs.q:1162 msgid "Asymp. Sig. (2-sided)" msgstr "" -#: src/crosstabs.q:1163 +#: src/crosstabs.q:1164 msgid "Exact. Sig. (2-sided)" msgstr "" -#: src/crosstabs.q:1165 +#: src/crosstabs.q:1166 msgid "Exact. Sig. (1-sided)" msgstr "" -#: src/crosstabs.q:1183 src/crosstabs.q:1224 +#: src/crosstabs.q:1184 src/crosstabs.q:1225 msgid "Category" msgstr "" -#: src/crosstabs.q:1186 src/crosstabs.q:1228 +#: src/crosstabs.q:1187 src/crosstabs.q:1229 msgid "Asymp. Std. Error" msgstr "" -#: src/crosstabs.q:1187 src/crosstabs.q:1229 +#: src/crosstabs.q:1188 src/crosstabs.q:1230 msgid "Approx. T" msgstr "" -#: src/crosstabs.q:1188 src/crosstabs.q:1230 +#: src/crosstabs.q:1189 src/crosstabs.q:1231 msgid "Approx. Sig." msgstr "" -#: src/crosstabs.q:1203 +#: src/crosstabs.q:1204 #, c-format msgid " 95%% Confidence Interval" msgstr "" -#: src/crosstabs.q:1206 src/t-test.q:924 src/t-test.q:1118 src/t-test.q:1230 +#: src/crosstabs.q:1207 src/t-test.q:926 src/t-test.q:1120 src/t-test.q:1232 msgid "Lower" msgstr "" -#: src/crosstabs.q:1207 src/t-test.q:925 src/t-test.q:1119 src/t-test.q:1231 +#: src/crosstabs.q:1208 src/t-test.q:927 src/t-test.q:1121 src/t-test.q:1233 msgid "Upper" msgstr "" -#: src/crosstabs.q:1226 +#: src/crosstabs.q:1227 msgid "Type" msgstr "" -#: src/crosstabs.q:1976 +#: src/crosstabs.q:1977 msgid "Pearson Chi-Square" msgstr "" -#: src/crosstabs.q:1977 +#: src/crosstabs.q:1978 msgid "Likelihood Ratio" msgstr "" -#: src/crosstabs.q:1978 +#: src/crosstabs.q:1979 msgid "Fisher's Exact Test" msgstr "" -#: src/crosstabs.q:1979 +#: src/crosstabs.q:1980 msgid "Continuity Correction" msgstr "" -#: src/crosstabs.q:1980 +#: src/crosstabs.q:1981 msgid "Linear-by-Linear Association" msgstr "" -#: src/crosstabs.q:2017 src/crosstabs.q:2087 src/crosstabs.q:2146 +#: src/crosstabs.q:2018 src/crosstabs.q:2088 src/crosstabs.q:2147 msgid "N of Valid Cases" msgstr "" -#: src/crosstabs.q:2033 src/crosstabs.q:2162 +#: src/crosstabs.q:2034 src/crosstabs.q:2163 msgid "Nominal by Nominal" msgstr "" -#: src/crosstabs.q:2034 src/crosstabs.q:2163 +#: src/crosstabs.q:2035 src/crosstabs.q:2164 msgid "Ordinal by Ordinal" msgstr "" -#: src/crosstabs.q:2035 +#: src/crosstabs.q:2036 msgid "Interval by Interval" msgstr "" -#: src/crosstabs.q:2036 +#: src/crosstabs.q:2037 msgid "Measure of Agreement" msgstr "" -#: src/crosstabs.q:2041 +#: src/crosstabs.q:2042 msgid "Phi" msgstr "" -#: src/crosstabs.q:2042 +#: src/crosstabs.q:2043 msgid "Cramer's V" msgstr "" -#: src/crosstabs.q:2043 +#: src/crosstabs.q:2044 msgid "Contingency Coefficient" msgstr "" -#: src/crosstabs.q:2044 +#: src/crosstabs.q:2045 msgid "Kendall's tau-b" msgstr "" -#: src/crosstabs.q:2045 +#: src/crosstabs.q:2046 msgid "Kendall's tau-c" msgstr "" -#: src/crosstabs.q:2046 +#: src/crosstabs.q:2047 msgid "Gamma" msgstr "" -#: src/crosstabs.q:2047 +#: src/crosstabs.q:2048 msgid "Spearman Correlation" msgstr "" -#: src/crosstabs.q:2048 +#: src/crosstabs.q:2049 msgid "Pearson's R" msgstr "" -#: src/crosstabs.q:2049 +#: src/crosstabs.q:2050 msgid "Kappa" msgstr "" -#: src/crosstabs.q:2119 +#: src/crosstabs.q:2120 #, c-format msgid "Odds Ratio for %s (%g / %g)" msgstr "" -#: src/crosstabs.q:2122 +#: src/crosstabs.q:2123 #, c-format msgid "Odds Ratio for %s (%.*s / %.*s)" msgstr "" -#: src/crosstabs.q:2130 +#: src/crosstabs.q:2131 #, c-format msgid "For cohort %s = %g" msgstr "" -#: src/crosstabs.q:2133 +#: src/crosstabs.q:2134 #, c-format msgid "For cohort %s = %.*s" msgstr "" -#: src/crosstabs.q:2164 +#: src/crosstabs.q:2165 msgid "Nominal by Interval" msgstr "" -#: src/crosstabs.q:2169 +#: src/crosstabs.q:2170 msgid "Lambda" msgstr "" -#: src/crosstabs.q:2170 +#: src/crosstabs.q:2171 msgid "Goodman and Kruskal tau" msgstr "" -#: src/crosstabs.q:2171 +#: src/crosstabs.q:2172 msgid "Uncertainty Coefficient" msgstr "" -#: src/crosstabs.q:2172 +#: src/crosstabs.q:2173 msgid "Somers' d" msgstr "" -#: src/crosstabs.q:2173 +#: src/crosstabs.q:2174 msgid "Eta" msgstr "" -#: src/crosstabs.q:2178 +#: src/crosstabs.q:2179 msgid "Symmetric" msgstr "" -#: src/crosstabs.q:2179 src/crosstabs.q:2180 +#: src/crosstabs.q:2180 src/crosstabs.q:2181 #, c-format msgid "%s Dependent" msgstr "" -#: src/descript.q:151 src/frequencies.q:94 src/t-test.q:656 src/t-test.q:679 -#: src/t-test.q:768 src/t-test.q:1115 +#: src/descript.q:151 src/frequencies.q:94 src/t-test.q:658 src/t-test.q:681 +#: src/t-test.q:770 src/t-test.q:1117 msgid "Mean" msgstr "" @@ -4865,119 +4808,138 @@ msgstr "" msgid "Upper value (%g) is less than lower value (%g) on VARIABLES subcommand." msgstr "" -#: src/set.q:217 src/set.q:220 src/set.q:238 src/set.q:307 src/set.q:313 -#: src/set.q:338 src/set.q:340 src/set.q:359 src/set.q:363 src/set.q:367 -#: src/set.q:381 src/set.q:383 src/set.q:387 src/set.q:705 src/set.q:786 -#: src/set.q:867 +#: src/set.q:216 src/set.q:288 src/set.q:332 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:413 src/set.q:792 src/set.q:873 src/set.q:968 #, c-format msgid "%s is obsolete." msgstr "" #: src/set.q:224 -msgid "Active file compression is not yet implemented (and probably won't be)." +msgid "LISTING is ON" msgstr "" -#: src/set.q:233 -msgid "CPI must be greater than 0." +#: src/set.q:226 +msgid "LISTING is OFF" msgstr "" -#: src/set.q:242 -msgid "LPI must be greater than 0." +#: src/set.q:252 +msgid "Journalling is off" msgstr "" -#: src/set.q:249 +#: src/set.q:422 msgid "" "CASE is not implemented and probably won't be. If you care, complain about " "it." msgstr "" -#: src/set.q:279 +#: src/set.q:427 +msgid "Active file compression is not yet implemented (and probably won't be)." +msgstr "" + +#: src/set.q:441 #, c-format -msgid "Value for MITERATE (%ld) must be greater than 0." +msgid "" +"CC%c: Length of custom currency string `%s' (%d) exceeds maximum length of " +"16." msgstr "" -#: src/set.q:287 +#: src/set.q:463 #, c-format -msgid "Value for MNEST (%ld) must be greater than 0." +msgid "" +"CC%c: Custom currency string `%s' does not contain exactly three periods or " +"commas (not both)." msgstr "" -#: src/set.q:295 -msgid "MXERRS must be at least 1." +#: src/set.q:516 +msgid "None" msgstr "" -#: src/set.q:302 -msgid "MXLOOPS must be at least 1." +#: src/set.q:522 +msgid "Disabled" msgstr "" -#: src/set.q:323 -msgid "Workspace limit must be at least 1 MB." +#: src/set.q:527 +msgid "Screen" msgstr "" -#: src/set.q:401 -#, c-format -msgid "" -"CC%c: Length of custom currency string `%s' (%d) exceeds maximum length of " -"16." +#: src/set.q:534 +msgid "Listing" msgstr "" -#: src/set.q:423 -#, c-format -msgid "" -"CC%c: Custom currency string `%s' does not contain exactly three periods or " -"commas (not both)." +#: src/set.q:541 +msgid "Other" msgstr "" -#: src/set.q:566 +#: src/set.q:650 msgid "LENGTH must be at least 1." msgstr "" -#: src/set.q:603 +#: src/set.q:689 msgid "Missing identifier in RESULTS subcommand." msgstr "" -#: src/set.q:614 +#: src/set.q:700 msgid "Unrecognized identifier in RESULTS subcommand." msgstr "" -#: src/set.q:651 +#: src/set.q:738 msgid "WIDTH must be at least 1." msgstr "" -#: src/set.q:674 +#: src/set.q:761 #, c-format msgid "" "FORMAT requires numeric output format as an argument. Specified format %s " "is of type string." msgstr "" -#: src/set.q:718 +#: src/set.q:805 msgid "Text color must be in range 0-15." msgstr "Text colour must be in range 0-15." -#: src/set.q:731 +#: src/set.q:818 msgid "Background color must be in range 0-7." msgstr "Background colour must be in range 0-7." -#: src/set.q:742 +#: src/set.q:829 msgid "Border color must be in range 0-7." msgstr "Border colour must be in range 0-7." -#: src/set.q:798 +#: src/set.q:885 msgid "Lower window color must be between 0 and 6." msgstr "Lower window colour must be between 0 and 6." -#: src/set.q:812 +#: src/set.q:899 msgid "Upper window color must be between 0 and 6." msgstr "Upper window colour must be between 0 and 6." -#: src/set.q:824 +#: src/set.q:911 msgid "Frame color must be between 0 and 6." msgstr "Frame colour must be between 0 and 6." -#: src/set.q:876 +#: src/set.q:977 msgid "Drive letter expected in WORKDEV subcommand." msgstr "" +#: src/set.q:1012 +msgid "Specify a terminal type with `setenv TERM '." +msgstr "" + +#: src/set.q:1018 +msgid "Could not access the termcap data base." +msgstr "" + +#: src/set.q:1020 +#, c-format +msgid "Terminal type `%s' is not defined." +msgstr "" + +#: src/set.q:1048 +msgid "data> " +msgstr "" + #: src/t-test.q:237 msgid "TESTVAL, GROUPS and PAIRS subcommands are mutually exclusive." msgstr "" @@ -4986,149 +4948,149 @@ msgstr "" msgid "VARIABLES subcommand is not appropriate with PAIRS" msgstr "" -#: src/t-test.q:352 src/t-test.q:429 +#: src/t-test.q:354 src/t-test.q:431 #, c-format msgid "`%s' is not a variable name" msgstr "" -#: src/t-test.q:365 +#: src/t-test.q:367 #, c-format msgid "Long string variable %s is not valid here." msgstr "" -#: src/t-test.q:382 +#: src/t-test.q:384 msgid "" "When applying GROUPS to a string variable, at least one value must be " "specified." msgstr "" -#: src/t-test.q:464 +#: src/t-test.q:466 #, c-format msgid "" "PAIRED was specified but the number of variables preceding WITH (%d) did not " "match the number following (%d)." msgstr "" -#: src/t-test.q:481 +#: src/t-test.q:483 msgid "At least two variables must be specified on PAIRS." msgstr "" -#: src/t-test.q:653 +#: src/t-test.q:655 msgid "One-Sample Statistics" msgstr "" -#: src/t-test.q:657 src/t-test.q:680 src/t-test.q:770 src/t-test.q:1116 +#: src/t-test.q:659 src/t-test.q:682 src/t-test.q:772 src/t-test.q:1118 msgid "Std. Deviation" msgstr "" -#: src/t-test.q:658 src/t-test.q:681 src/t-test.q:771 +#: src/t-test.q:660 src/t-test.q:683 src/t-test.q:773 msgid "SE. Mean" msgstr "" -#: src/t-test.q:675 +#: src/t-test.q:677 msgid "Group Statistics" msgstr "" -#: src/t-test.q:765 +#: src/t-test.q:767 msgid "Paired Sample Statistics" msgstr "" -#: src/t-test.q:787 src/t-test.q:1144 src/t-test.q:1364 +#: src/t-test.q:789 src/t-test.q:1146 src/t-test.q:1366 #, c-format msgid "Pair %d" msgstr "" -#: src/t-test.q:905 +#: src/t-test.q:907 msgid "Independent Samples Test" msgstr "" -#: src/t-test.q:913 +#: src/t-test.q:915 msgid "Levene's Test for Equality of Variances" msgstr "" -#: src/t-test.q:915 +#: src/t-test.q:917 msgid "t-test for Equality of Means" msgstr "" -#: src/t-test.q:917 +#: src/t-test.q:919 msgid "F" msgstr "" -#: src/t-test.q:918 src/t-test.q:1345 +#: src/t-test.q:920 src/t-test.q:1347 msgid "Sig." msgstr "" -#: src/t-test.q:919 src/t-test.q:1120 src/t-test.q:1226 +#: src/t-test.q:921 src/t-test.q:1122 src/t-test.q:1228 msgid "t" msgstr "" -#: src/t-test.q:921 src/t-test.q:1122 src/t-test.q:1228 +#: src/t-test.q:923 src/t-test.q:1124 src/t-test.q:1230 msgid "Sig. (2-tailed)" msgstr "" -#: src/t-test.q:922 src/t-test.q:1229 +#: src/t-test.q:924 src/t-test.q:1231 msgid "Mean Difference" msgstr "" -#: src/t-test.q:923 +#: src/t-test.q:925 msgid "Std. Error Difference" msgstr "" -#: src/t-test.q:928 src/t-test.q:1112 src/t-test.q:1221 +#: src/t-test.q:930 src/t-test.q:1114 src/t-test.q:1223 #, c-format msgid "%d%% Confidence Interval of the Difference" msgstr "" -#: src/t-test.q:962 +#: src/t-test.q:964 msgid "Equal variances assumed" msgstr "" -#: src/t-test.q:977 +#: src/t-test.q:979 #, c-format msgid "Error calculating F statistic (cdff returned %d)." msgstr "" -#: src/t-test.q:1000 src/t-test.q:1020 src/t-test.q:1058 src/t-test.q:1070 -#: src/t-test.q:1165 src/t-test.q:1191 src/t-test.q:1271 src/t-test.q:1288 -#: src/t-test.q:1377 +#: src/t-test.q:1002 src/t-test.q:1022 src/t-test.q:1060 src/t-test.q:1072 +#: src/t-test.q:1167 src/t-test.q:1193 src/t-test.q:1273 src/t-test.q:1290 +#: src/t-test.q:1379 #, c-format msgid "Error calculating T statistic (cdft returned %d)." msgstr "" -#: src/t-test.q:1034 +#: src/t-test.q:1036 msgid "Equal variances not assumed" msgstr "" -#: src/t-test.q:1102 +#: src/t-test.q:1104 msgid "Paired Samples Test" msgstr "" -#: src/t-test.q:1105 +#: src/t-test.q:1107 msgid "Paired Differences" msgstr "" -#: src/t-test.q:1117 +#: src/t-test.q:1119 msgid "Std. Error Mean" msgstr "" -#: src/t-test.q:1210 +#: src/t-test.q:1212 msgid "One-Sample Test" msgstr "" -#: src/t-test.q:1215 +#: src/t-test.q:1217 #, c-format msgid "Test Value = %f" msgstr "" -#: src/t-test.q:1340 +#: src/t-test.q:1342 msgid "Paired Samples Correlations" msgstr "" -#: src/t-test.q:1344 +#: src/t-test.q:1346 msgid "Correlation" msgstr "" -#: src/t-test.q:1367 +#: src/t-test.q:1369 #, c-format msgid "%s & %s" msgstr "" diff --git a/po/pspp.pot b/po/pspp.pot index d1039a6c..90b5cffc 100644 --- a/po/pspp.pot +++ b/po/pspp.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: pspp-dev@gnu.org\n" -"POT-Creation-Date: 2004-03-13 14:14+0800\n" +"POT-Creation-Date: 2004-03-20 00:30+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,56 +17,56 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" -#: src/aggregate.c:190 src/aggregate.c:231 src/data-list.c:1363 +#: src/aggregate.c:183 src/aggregate.c:216 src/data-list.c:1363 #: src/data-list.c:1398 src/data-list.c:1411 src/data-list.c:1424 #: src/data-list.c:1457 #, c-format msgid "%s subcommand given multiple times." msgstr "" -#: src/aggregate.c:216 +#: src/aggregate.c:203 msgid "while expecting COLUMNWISE" msgstr "" -#: src/aggregate.c:261 +#: src/aggregate.c:244 msgid "BREAK subcommand not specified." msgstr "" -#: src/aggregate.c:490 +#: src/aggregate.c:400 msgid "expecting aggregation function" msgstr "" -#: src/aggregate.c:506 +#: src/aggregate.c:416 #, c-format msgid "Unknown aggregation function %s." msgstr "" -#: src/aggregate.c:521 +#: src/aggregate.c:431 msgid "expecting `('" msgstr "" -#: src/aggregate.c:556 +#: src/aggregate.c:466 #, c-format msgid "Missing argument %d to %s." msgstr "" -#: src/aggregate.c:564 +#: src/aggregate.c:474 #, c-format msgid "Arguments to %s must be of same type as source variables." msgstr "" -#: src/aggregate.c:574 src/expr-prs.c:665 +#: src/aggregate.c:484 src/expr-prs.c:665 msgid "expecting `)'" msgstr "" -#: src/aggregate.c:586 src/autorecode.c:110 +#: src/aggregate.c:496 #, c-format msgid "" "Number of source variables (%d) does not match number of target variables (%" "d)." msgstr "" -#: src/aggregate.c:653 +#: src/aggregate.c:564 #, c-format msgid "" "Variable name %s is not unique within the aggregate file dictionary, which " @@ -222,31 +222,36 @@ msgstr "" msgid "%s - Page %d" msgstr "" -#: src/autorecode.c:121 src/command.c:697 src/compute.c:293 +#: src/autorecode.c:121 +#, c-format +msgid "Source variable count (%d) does not match target variable count (%d)." +msgstr "" + +#: src/autorecode.c:138 src/command.c:690 src/compute.c:293 #: src/data-list.c:380 src/data-list.c:878 src/data-list.c:1690 #: src/do-if.c:263 src/get.c:381 src/lexer.c:387 src/loop.c:241 -#: src/matrix-data.c:510 src/print.c:338 src/print.c:1060 src/recode.c:409 +#: src/matrix-data.c:510 src/print.c:338 src/print.c:1060 src/recode.c:405 #: src/sel-if.c:56 src/sel-if.c:138 src/vector.c:194 src/file-handle.q:88 msgid "expecting end of command" msgstr "" -#: src/autorecode.c:131 +#: src/autorecode.c:148 #, c-format msgid "Target variable %s duplicates existing variable %s." msgstr "" -#: src/autorecode.c:138 +#: src/autorecode.c:155 #, c-format msgid "Duplicate variable name %s among target variables." msgstr "" -#: src/cmdline.c:112 src/cmdline.c:131 src/cmdline.c:143 src/command.c:196 -#: src/set.q:315 src/set.q:317 src/set.q:857 +#: src/cmdline.c:114 src/cmdline.c:133 src/cmdline.c:145 src/command.c:196 +#: src/set.q:416 src/set.q:418 src/set.q:958 #, c-format msgid "%s is not yet implemented." msgstr "" -#: src/cmdline.c:157 +#: src/cmdline.c:159 msgid "" "\n" "Copyright (C) 1997-9, 2000 Free Software Foundation, Inc.\n" @@ -256,7 +261,7 @@ msgid "" "Written by Ben Pfaff ." msgstr "" -#: src/cmdline.c:217 +#: src/cmdline.c:221 #, c-format msgid "" "PSPP, a program for statistical analysis of sample data.\n" @@ -300,7 +305,7 @@ msgid "" "\n" msgstr "" -#: src/cmdline.c:249 +#: src/cmdline.c:253 #, c-format msgid "" "\n" @@ -379,30 +384,30 @@ msgstr "" msgid "The sentinel may not be the empty string." msgstr "" -#: src/command.c:574 +#: src/command.c:576 src/command.c:708 msgid "This command not allowed when the SAFER option is set." msgstr "" -#: src/command.c:597 +#: src/command.c:590 #, c-format msgid "Error removing `%s': %s." msgstr "" -#: src/command.c:647 +#: src/command.c:640 #, c-format msgid "Couldn't fork: %s." msgstr "" -#: src/command.c:688 +#: src/command.c:681 #, c-format msgid "Error executing command: %s." msgstr "" -#: src/command.c:734 +#: src/command.c:731 msgid "No operating system support for this command." msgstr "" -#: src/command.c:763 +#: src/command.c:760 msgid "This command is not valid in a syntax file." msgstr "" @@ -428,11 +433,11 @@ msgstr "" msgid "Extra characters after expression." msgstr "" -#: src/count.c:171 +#: src/count.c:156 msgid "Destination cannot be a string variable." msgstr "" -#: src/count.c:282 +#: src/count.c:263 #, c-format msgid "" "%g THRU %g is not a valid range. The number following THRU must be at least " @@ -710,7 +715,7 @@ msgid "" msgstr "" #: src/data-list.c:768 src/data-list.c:899 src/print.c:803 -#: src/sysfile-info.c:135 src/sysfile-info.c:370 src/vfm.c:1148 +#: src/sysfile-info.c:135 src/sysfile-info.c:370 src/vfm.c:1011 #: src/descript.q:791 msgid "Variable" msgstr "" @@ -1027,25 +1032,25 @@ msgstr "" msgid "Error writing file %s: %s." msgstr "" -#: src/dfm.c:657 +#: src/dfm.c:656 msgid "" "This command is not valid here since the current input program does not " "access the inline file." msgstr "" -#: src/dfm.c:664 +#: src/dfm.c:663 msgid "inline file: Opening for reading." msgstr "" -#: src/dfm.c:678 +#: src/dfm.c:677 msgid "Skipping remaining inline data." msgstr "" -#: src/dfm.c:690 +#: src/dfm.c:689 msgid "reading as a data file" msgstr "" -#: src/dfm.c:697 +#: src/dfm.c:696 msgid "writing as a data file" msgstr "" @@ -1090,41 +1095,41 @@ msgstr "" msgid "DO IF %d: missing\n" msgstr "" -#: src/error.c:113 +#: src/error.c:115 msgid "Terminating NOW due to a fatal error!" msgstr "" -#: src/error.c:190 +#: src/error.c:192 msgid "Terminating execution of syntax file due to error." msgstr "" -#: src/error.c:192 +#: src/error.c:194 #, c-format msgid "Errors (%d) exceeds limit (%d)." msgstr "" -#: src/error.c:195 +#: src/error.c:197 #, c-format msgid "Warnings (%d) exceed limit (%d)." msgstr "" -#: src/error.c:253 +#: src/error.c:255 msgid "fatal" msgstr "" -#: src/error.c:255 src/error.c:262 src/error.c:265 src/expr-prs.c:1464 +#: src/error.c:257 src/error.c:264 src/error.c:267 src/expr-prs.c:1464 msgid "error" msgstr "" -#: src/error.c:256 src/error.c:263 src/error.c:266 +#: src/error.c:258 src/error.c:265 src/error.c:268 msgid "warning" msgstr "" -#: src/error.c:257 src/error.c:267 +#: src/error.c:259 src/error.c:269 msgid "note" msgstr "" -#: src/error.c:259 src/error.c:260 +#: src/error.c:261 src/error.c:262 msgid "installation error" msgstr "" @@ -1532,59 +1537,64 @@ msgstr "" msgid "Unknown record type %g." msgstr "" -#: src/flip.c:210 +#: src/flip.c:76 +msgid "" +"FLIP ignores TEMPORARY. Temporary transformations will be made permanent." +msgstr "" + +#: src/flip.c:217 #, c-format msgid "Could not create acceptable variant for variable %s." msgstr "" -#: src/flip.c:226 +#: src/flip.c:233 msgid "Cannot create more than 99999 variable names." msgstr "" -#: src/flip.c:270 +#: src/flip.c:277 msgid "Could not create temporary file for FLIP." msgstr "" -#: src/flip.c:277 src/flip.c:339 +#: src/flip.c:284 src/flip.c:347 #, c-format msgid "Error writing FLIP file: %s." msgstr "" -#: src/flip.c:381 +#: src/flip.c:389 #, c-format msgid "Error rewinding FLIP file: %s." msgstr "" -#: src/flip.c:385 +#: src/flip.c:393 msgid "Error creating FLIP source file." msgstr "" -#: src/flip.c:394 +#: src/flip.c:402 #, c-format msgid "Error reading FLIP file: %s." msgstr "" -#: src/flip.c:406 +#: src/flip.c:414 #, c-format msgid "Error seeking FLIP source file: %s." msgstr "" -#: src/flip.c:411 +#: src/flip.c:419 #, c-format msgid "Error writing FLIP source file: %s." msgstr "" -#: src/flip.c:422 +#: src/flip.c:430 #, c-format msgid "Error rewind FLIP source file: %s." msgstr "" -#: src/flip.c:470 +#: src/flip.c:478 #, c-format msgid "Error reading FLIP temporary file: %s." msgstr "" -#: src/flip.c:473 +#: src/flip.c:481 msgid "Unexpected end of file reading FLIP temporary file." msgstr "" @@ -1698,7 +1708,7 @@ msgstr "" msgid "GET translation table from file to memory:\n" msgstr "" -#: src/get.c:117 src/get.c:1416 +#: src/get.c:117 src/get.c:1429 #, c-format msgid " %8s from %3d,%3d to %3d,%3d\n" msgstr "" @@ -1738,110 +1748,95 @@ msgid "" "Variables in dictionary:\n" msgstr "" -#: src/get.c:607 +#: src/get.c:610 msgid "The BY subcommand may be given once at most." msgstr "" -#: src/get.c:674 +#: src/get.c:677 msgid "The active file may not be specified more than once." msgstr "" -#: src/get.c:683 +#: src/get.c:686 msgid "Cannot specify the active file since no active file has been defined." msgstr "" -#: src/get.c:715 +#: src/get.c:694 +msgid "" +"MATCH FILES may not be used after TEMPORARY when the active file is an input " +"source. Temporary transformations will be made permanent." +msgstr "" + +#: src/get.c:727 msgid "" "IN, FIRST, and LAST subcommands may not occur before the first FILE or TABLE." msgstr "" -#: src/get.c:747 +#: src/get.c:759 #, c-format msgid "Multiple %s subcommands for a single FILE or TABLE." msgstr "" -#: src/get.c:757 +#: src/get.c:769 #, c-format msgid "Duplicate variable name %s while creating %s variable." msgstr "" -#: src/get.c:771 +#: src/get.c:783 msgid "" "RENAME, KEEP, and DROP subcommands may not occur before the first FILE or " "TABLE." msgstr "" -#: src/get.c:795 +#: src/get.c:807 msgid "The BY subcommand is required when a TABLE subcommand is given." msgstr "" -#: src/get.c:816 +#: src/get.c:828 #, c-format msgid "File %s lacks BY variable %s." msgstr "" -#: src/get.c:1328 +#: src/get.c:1341 #, c-format msgid "" "Variable %s in file %s (%s) has different type or width from the same " "variable in earlier file (%s)." msgstr "" -#: src/get.c:1378 +#: src/get.c:1391 msgid "expecting COMM or TAPE" msgstr "" -#: src/get.c:1411 +#: src/get.c:1424 #, c-format msgid "IMPORT translation table from file to memory:\n" msgstr "" -#: src/getline.c:161 +#: src/getline.c:163 #, c-format msgid "Can't find `%s' in include file search path." msgstr "" -#: src/getline.c:316 +#: src/getline.c:318 #, c-format msgid "%s: Opening as syntax file." msgstr "" -#: src/getline.c:321 +#: src/getline.c:323 #, c-format msgid "Opening `%s': %s." msgstr "" -#: src/getline.c:330 src/html.c:330 src/postscript.c:1461 +#: src/getline.c:332 src/html.c:330 src/postscript.c:1461 #, c-format msgid "Reading `%s': %s." msgstr "" -#: src/getline.c:388 +#: src/getline.c:390 #, c-format msgid "Closing `%s': %s." msgstr "" -#: src/glob.c:212 -msgid "data> " -msgstr "" - -#: src/glob.c:269 -msgid "Specify a terminal type with `setenv TERM '." -msgstr "" - -#: src/glob.c:275 -msgid "Could not access the termcap data base." -msgstr "" - -#: src/glob.c:277 -#, c-format -msgid "Terminal type `%s' is not defined." -msgstr "" - -#: src/glob.c:278 -msgid "Assuming screen of size 79x25." -msgstr "" - #: src/groff-font.c:107 #, c-format msgid "%s: Opening Groff font file..." @@ -2111,11 +2106,11 @@ msgstr "" msgid "expecting %s" msgstr "" -#: src/lexer.c:524 +#: src/lexer.c:524 src/val-labs.c:148 msgid "expecting string" msgstr "" -#: src/lexer.c:538 +#: src/lexer.c:538 src/val-labs.c:157 msgid "expecting integer" msgstr "" @@ -2199,32 +2194,6 @@ msgstr "" msgid "%s without %s." msgstr "" -#: src/main.c:71 -msgid "Error initializing output drivers." -msgstr "" - -#: src/main.c:132 -msgid "This command not executed." -msgstr "" - -#: src/main.c:136 -msgid "" -"Skipping the rest of this command. Part of this command may have been " -"executed." -msgstr "" - -#: src/main.c:141 -msgid "" -"Skipping the rest of this command. This command was fully executed up to " -"this point." -msgstr "" - -#: src/main.c:146 -msgid "" -"Trailing garbage was encountered following this command. The command was " -"fully executed to this point." -msgstr "" - #: src/matrix-data.c:191 msgid "VARIABLES subcommand multiply specified." msgstr "" @@ -2332,69 +2301,69 @@ msgstr "" msgid "End of line expected %s while reading %s." msgstr "" -#: src/matrix-data.c:1179 +#: src/matrix-data.c:1174 #, c-format msgid "expecting value for %s %s" msgstr "" -#: src/matrix-data.c:1339 +#: src/matrix-data.c:1336 #, c-format msgid "Syntax error expecting SPLIT FILE value %s." msgstr "" -#: src/matrix-data.c:1348 +#: src/matrix-data.c:1345 #, c-format msgid "Expecting value %g for %s." msgstr "" -#: src/matrix-data.c:1387 src/matrix-data.c:1842 +#: src/matrix-data.c:1386 src/matrix-data.c:1854 #, c-format msgid "Syntax error expecting factor value %s." msgstr "" -#: src/matrix-data.c:1396 +#: src/matrix-data.c:1395 #, c-format msgid "Syntax error expecting value %g for %s %s." msgstr "" -#: src/matrix-data.c:1623 +#: src/matrix-data.c:1631 #, c-format msgid "Syntax error %s expecting SPLIT FILE value." msgstr "" -#: src/matrix-data.c:1751 +#: src/matrix-data.c:1761 #, c-format msgid "" "Expected %d lines of data for %s content; actually saw %d lines. No data " "will be output for this content." msgstr "" -#: src/matrix-data.c:1785 +#: src/matrix-data.c:1796 #, c-format msgid "Multiply specified ROWTYPE_ %s." msgstr "" -#: src/matrix-data.c:1790 +#: src/matrix-data.c:1801 #, c-format msgid "Syntax error %s expecting ROWTYPE_ string." msgstr "" -#: src/matrix-data.c:1810 +#: src/matrix-data.c:1821 #, c-format msgid "Syntax error %s." msgstr "" -#: src/matrix-data.c:1958 +#: src/matrix-data.c:1971 #, c-format msgid "Duplicate specification for %s." msgstr "" -#: src/matrix-data.c:1970 +#: src/matrix-data.c:1983 #, c-format msgid "Too many rows of matrix data for %s." msgstr "" -#: src/matrix-data.c:2016 +#: src/matrix-data.c:2029 #, c-format msgid "Syntax error expecting value for %s %s." msgstr "" @@ -2459,69 +2428,75 @@ msgstr "" msgid "(!!!INTERNAL ERROR--%d!!!)\n" msgstr "" -#: src/modify-vars.c:108 +#: src/modify-vars.c:88 +msgid "" +"MODIFY VARS may not be used after TEMPORARY. Temporary transformations will " +"be made permanent." +msgstr "" + +#: src/modify-vars.c:115 msgid "REORDER subcommand may be given at most once." msgstr "" -#: src/modify-vars.c:131 +#: src/modify-vars.c:138 msgid "Cannot specify ALL after specifying a set of variables." msgstr "" -#: src/modify-vars.c:141 +#: src/modify-vars.c:148 msgid "`(' expected on REORDER subcommand." msgstr "" -#: src/modify-vars.c:153 +#: src/modify-vars.c:160 msgid "`)' expected following variable names on REORDER subcommand." msgstr "" -#: src/modify-vars.c:171 +#: src/modify-vars.c:178 msgid "RENAME subcommand may be given at most once." msgstr "" -#: src/modify-vars.c:184 +#: src/modify-vars.c:191 msgid "`(' expected on RENAME subcommand." msgstr "" -#: src/modify-vars.c:192 +#: src/modify-vars.c:199 msgid "" "`=' expected between lists of new and old variable names on RENAME " "subcommand." msgstr "" -#: src/modify-vars.c:200 src/rename-vars.c:70 +#: src/modify-vars.c:207 src/rename-vars.c:77 #, c-format msgid "" "Differing number of variables in old name list (%d) and in new name list (%" "d)." msgstr "" -#: src/modify-vars.c:211 +#: src/modify-vars.c:218 msgid "`)' expected after variable lists on RENAME subcommand." msgstr "" -#: src/modify-vars.c:225 +#: src/modify-vars.c:232 msgid "" "KEEP subcommand may be given at most once. It may notbe given in " "conjunction with the DROP subcommand." msgstr "" -#: src/modify-vars.c:267 +#: src/modify-vars.c:274 msgid "" "DROP subcommand may be given at most once. It may not be given in " "conjunction with the KEEP subcommand." msgstr "" -#: src/modify-vars.c:293 +#: src/modify-vars.c:300 #, c-format msgid "Unrecognized subcommand name `%s'." msgstr "" -#: src/modify-vars.c:295 +#: src/modify-vars.c:302 msgid "Subcommand name expected." msgstr "" -#: src/modify-vars.c:303 +#: src/modify-vars.c:310 msgid "`/' or `.' expected." msgstr "" @@ -3138,14 +3113,14 @@ msgid "" "SPACE a negative number of lines." msgstr "" -#: src/recode.c:288 +#: src/recode.c:283 #, c-format msgid "" "%d variable(s) cannot be recoded into %d variable(s). Specify the same " "number of variables as input and output variables." msgstr "" -#: src/recode.c:302 +#: src/recode.c:297 #, c-format msgid "" "There is no string variable named %s. (All string variables specified on " @@ -3153,77 +3128,73 @@ msgid "" "variable.)" msgstr "" -#: src/recode.c:311 +#: src/recode.c:306 #, c-format msgid "" "Type mismatch between input and output variables. Output variable %s is not " "a string variable, but all the input variables are string variables." msgstr "" -#: src/recode.c:330 +#: src/recode.c:325 #, c-format msgid "Type mismatch after INTO: %s is not a numeric variable." msgstr "" -#: src/recode.c:360 +#: src/recode.c:355 msgid "" "INTO must be used when the input values are numeric and output values are " "string." msgstr "" -#: src/recode.c:368 +#: src/recode.c:363 msgid "" "INTO must be used when the input values are string and output values are " "numeric." msgstr "" -#: src/recode.c:493 +#: src/recode.c:486 msgid "expecting output value" msgstr "" -#: src/recode.c:507 +#: src/recode.c:500 msgid "" "Inconsistent output types. The output values must be all numeric or all " "string." msgstr "" -#: src/recode.c:558 +#: src/recode.c:551 msgid "following LO THRU" msgstr "" -#: src/recode.c:574 src/recode.c:603 +#: src/recode.c:567 src/recode.c:596 msgid "in source value" msgstr "" -#: src/recode.c:616 +#: src/recode.c:609 msgid "" "Keyword CONVERT may only be used with string input values and numeric output " "values." msgstr "" -#: src/recode.c:876 -#, c-format -msgid "!!END!!" -msgstr "" - -#: src/recode.c:897 src/recode.c:913 -#, c-format -msgid "!!ERROR!!" +#: src/rename-vars.c:47 +msgid "" +"RENAME VARS may not be used after TEMPORARY. Temporary transformations will " +"be made permanent." msgstr "" -#: src/rename-vars.c:55 +#: src/rename-vars.c:62 msgid "`(' expected." msgstr "" -#: src/rename-vars.c:63 +#: src/rename-vars.c:70 msgid "`=' expected between lists of new and old variable names." msgstr "" -#: src/rename-vars.c:81 +#: src/rename-vars.c:88 msgid "`)' expected after variable names." msgstr "" -#: src/rename-vars.c:91 +#: src/rename-vars.c:98 #, c-format msgid "Renaming would duplicate variable name %s." msgstr "" @@ -3705,65 +3676,71 @@ msgstr "" msgid "writing as a system file" msgstr "" -#: src/sort.c:122 -msgid "`A' or `D' expected inside parentheses." +#: src/sort.c:82 +msgid "" +"SORT CASES may not be used after TEMPORARY. Temporary transformations will " +"be made permanent." msgstr "" #: src/sort.c:127 +msgid "`A' or `D' expected inside parentheses." +msgstr "" + +#: src/sort.c:132 msgid "`)' expected." msgstr "" -#: src/sort.c:418 +#: src/sort.c:421 #, c-format msgid "%s: Creating temporary directory: %s." msgstr "" -#: src/sort.c:449 +#: src/sort.c:452 #, c-format msgid "Generating temporary directory name failed: %s." msgstr "" -#: src/sort.c:457 +#: src/sort.c:460 #, c-format msgid "Creating temporary directory failed: %s." msgstr "" -#: src/sort.c:509 +#: src/sort.c:512 #, c-format msgid "%s: Error removing directory for temporary files: %s." msgstr "" -#: src/sort.c:538 +#: src/sort.c:541 #, c-format msgid "%s: Error opening temporary file for %s: %s." msgstr "" -#: src/sort.c:555 +#: src/sort.c:558 #, c-format msgid "%s: Error closing temporary file: %s." msgstr "" -#: src/sort.c:571 +#: src/sort.c:574 #, c-format msgid "%s: Error removing temporary file: %s." msgstr "" -#: src/sort.c:587 +#: src/sort.c:590 #, c-format msgid "%s: Error writing temporary file: %s." msgstr "" -#: src/sort.c:605 +#: src/sort.c:608 #, c-format msgid "%s: Error reading temporary file: %s." msgstr "" -#: src/sort.c:608 +#: src/sort.c:611 #, c-format msgid "%s: Unexpected end of temporary file." msgstr "" -#: src/sort.c:798 src/sort.c:1033 +#: src/sort.c:806 src/sort.c:1037 #, c-format msgid "" "Out of memory. Could not allocate room for minimum of %d cases of %d bytes " @@ -3871,7 +3848,7 @@ msgstr "" msgid "Documents in the active file:" msgstr "" -#: src/sysfile-info.c:377 src/sysfile-info.c:535 src/vfm.c:1150 +#: src/sysfile-info.c:377 src/sysfile-info.c:535 src/vfm.c:1013 msgid "Label" msgstr "" @@ -3894,8 +3871,8 @@ msgstr "" msgid "Missing Values: " msgstr "" -#: src/sysfile-info.c:534 src/vfm.c:1149 src/crosstabs.q:1158 -#: src/crosstabs.q:1185 src/crosstabs.q:1205 src/crosstabs.q:1227 +#: src/sysfile-info.c:534 src/vfm.c:1012 src/crosstabs.q:1159 +#: src/crosstabs.q:1186 src/crosstabs.q:1206 src/crosstabs.q:1228 #: src/frequencies.q:1009 src/frequencies.q:1126 msgid "Value" msgstr "" @@ -3919,11 +3896,11 @@ msgid "" "bad box: (%d+%d=%d,%d+%d=%d)-(%d+%d=%d,%d+%d=%d) in table size (%d,%d)\n" msgstr "" -#: src/temporary.c:49 +#: src/temporary.c:47 msgid "This command is not valid inside DO IF or LOOP." msgstr "" -#: src/temporary.c:56 +#: src/temporary.c:54 msgid "" "This command may only appear once between procedures and procedure-like " "commands." @@ -3953,39 +3930,22 @@ msgstr "" msgid "Document entered %s %02d:%02d:%02d by %s (%s):" msgstr "" -#: src/val-labs.c:138 +#: src/val-labs.c:112 #, c-format msgid "" "It is not possible to assign value labels to long string variables such as %" "s." msgstr "" -#: src/val-labs.c:176 -msgid "String expected for value." -msgstr "" - -#: src/val-labs.c:185 -msgid "Number expected for value." -msgstr "" - -#: src/val-labs.c:189 +#: src/val-labs.c:161 #, c-format msgid "Value label `%g' is not integer." msgstr "" -#: src/val-labs.c:199 +#: src/val-labs.c:171 msgid "Truncating value label to 60 characters." msgstr "" -#: src/val-labs.c:220 -msgid "Value labels:" -msgstr "" - -#: src/val-labs.c:237 -#, c-format -msgid " (no value labels)\n" -msgstr "" - #: src/var-labs.c:53 msgid "String expected for variable label." msgstr "" @@ -4110,56 +4070,39 @@ msgid "" "the long form or the short form of VECTOR." msgstr "" -#: src/vfm.c:391 -msgid "" +#: src/vfm.c:507 +#, c-format +msgid "" +"An error occurred creating a temporary file for use as the active file: %s." msgstr "" -#: src/vfm.c:554 +#: src/vfm.c:520 #, c-format msgid "" -"An error occurred attempting to create a temporary file for use as the " -"active file: %s." +"An error occurred writing to a temporary file used as the active file: %s." msgstr "" -#: src/vfm.c:579 +#: src/vfm.c:599 #, c-format msgid "" -"An error occurred while attempting to write to a temporary file used as the " -"active file: %s." +"Workspace limit of %d KB (%d cases at %d bytes each) overflowed. Writing " +"active file to disk." msgstr "" -#: src/vfm.c:606 +#: src/vfm.c:631 #, c-format msgid "" "An error occurred while attempting to rewind a temporary file used as the " "active file: %s." msgstr "" -#: src/vfm.c:651 +#: src/vfm.c:680 #, c-format msgid "" "An error occurred while attempting to read from a temporary file created for " "the active file: %s." msgstr "" -#: src/vfm.c:755 -msgid "Virtual memory exhausted. Writing active file to disk." -msgstr "" - -#: src/vfm.c:758 -#, c-format -msgid "" -"Workspace limit of %d KB (%d cases at %d bytes each) overflowed. Writing " -"active file to disk." -msgstr "" - -#: src/vfm.c:778 src/vfm.c:817 -#, c-format -msgid "" -"An error occurred while attempting to write to a temporary file created as " -"the active file: %s." -msgstr "" - #: src/weight.c:54 msgid "The weighting variable must be numeric." msgstr "" @@ -4177,267 +4120,267 @@ msgstr "" msgid "Write mode ALL not allowed in general mode. Assuming WRITE=CELLS." msgstr "" -#: src/crosstabs.q:321 +#: src/crosstabs.q:322 msgid "expecting BY" msgstr "" -#: src/crosstabs.q:388 +#: src/crosstabs.q:389 msgid "VARIABLES must be specified before TABLES." msgstr "" -#: src/crosstabs.q:425 +#: src/crosstabs.q:426 #, c-format msgid "Maximum value (%ld) less than minimum value (%ld)." msgstr "" -#: src/crosstabs.q:859 +#: src/crosstabs.q:860 msgid "Summary." msgstr "" -#: src/crosstabs.q:861 +#: src/crosstabs.q:862 msgid "Cases" msgstr "" -#: src/crosstabs.q:862 src/frequencies.q:1007 +#: src/crosstabs.q:863 src/frequencies.q:1007 msgid "Valid" msgstr "" -#: src/crosstabs.q:863 src/frequencies.q:1074 +#: src/crosstabs.q:864 src/frequencies.q:1074 msgid "Missing" msgstr "" -#: src/crosstabs.q:864 src/crosstabs.q:1067 src/crosstabs.q:1800 +#: src/crosstabs.q:865 src/crosstabs.q:1068 src/crosstabs.q:1801 #: src/frequencies.q:1083 msgid "Total" msgstr "" -#: src/crosstabs.q:874 src/t-test.q:655 src/t-test.q:678 src/t-test.q:769 -#: src/t-test.q:1343 +#: src/crosstabs.q:875 src/t-test.q:657 src/t-test.q:680 src/t-test.q:771 +#: src/t-test.q:1345 msgid "N" msgstr "" -#: src/crosstabs.q:875 src/frequencies.q:1011 src/frequencies.q:1012 +#: src/crosstabs.q:876 src/frequencies.q:1011 src/frequencies.q:1012 #: src/frequencies.q:1013 msgid "Percent" msgstr "" -#: src/crosstabs.q:1117 +#: src/crosstabs.q:1118 msgid "count" msgstr "" -#: src/crosstabs.q:1118 +#: src/crosstabs.q:1119 msgid "row %" msgstr "" -#: src/crosstabs.q:1119 +#: src/crosstabs.q:1120 msgid "column %" msgstr "" -#: src/crosstabs.q:1120 +#: src/crosstabs.q:1121 msgid "total %" msgstr "" -#: src/crosstabs.q:1121 +#: src/crosstabs.q:1122 msgid "expected" msgstr "" -#: src/crosstabs.q:1122 +#: src/crosstabs.q:1123 msgid "residual" msgstr "" -#: src/crosstabs.q:1123 +#: src/crosstabs.q:1124 msgid "std. resid." msgstr "" -#: src/crosstabs.q:1124 +#: src/crosstabs.q:1125 msgid "adj. resid." msgstr "" -#: src/crosstabs.q:1157 src/crosstabs.q:1184 src/crosstabs.q:1204 -#: src/crosstabs.q:1225 +#: src/crosstabs.q:1158 src/crosstabs.q:1185 src/crosstabs.q:1205 +#: src/crosstabs.q:1226 msgid "Statistic" msgstr "" -#: src/crosstabs.q:1159 src/t-test.q:920 src/t-test.q:1121 src/t-test.q:1227 +#: src/crosstabs.q:1160 src/t-test.q:922 src/t-test.q:1123 src/t-test.q:1229 msgid "df" msgstr "" -#: src/crosstabs.q:1161 +#: src/crosstabs.q:1162 msgid "Asymp. Sig. (2-sided)" msgstr "" -#: src/crosstabs.q:1163 +#: src/crosstabs.q:1164 msgid "Exact. Sig. (2-sided)" msgstr "" -#: src/crosstabs.q:1165 +#: src/crosstabs.q:1166 msgid "Exact. Sig. (1-sided)" msgstr "" -#: src/crosstabs.q:1183 src/crosstabs.q:1224 +#: src/crosstabs.q:1184 src/crosstabs.q:1225 msgid "Category" msgstr "" -#: src/crosstabs.q:1186 src/crosstabs.q:1228 +#: src/crosstabs.q:1187 src/crosstabs.q:1229 msgid "Asymp. Std. Error" msgstr "" -#: src/crosstabs.q:1187 src/crosstabs.q:1229 +#: src/crosstabs.q:1188 src/crosstabs.q:1230 msgid "Approx. T" msgstr "" -#: src/crosstabs.q:1188 src/crosstabs.q:1230 +#: src/crosstabs.q:1189 src/crosstabs.q:1231 msgid "Approx. Sig." msgstr "" -#: src/crosstabs.q:1203 +#: src/crosstabs.q:1204 #, c-format msgid " 95%% Confidence Interval" msgstr "" -#: src/crosstabs.q:1206 src/t-test.q:924 src/t-test.q:1118 src/t-test.q:1230 +#: src/crosstabs.q:1207 src/t-test.q:926 src/t-test.q:1120 src/t-test.q:1232 msgid "Lower" msgstr "" -#: src/crosstabs.q:1207 src/t-test.q:925 src/t-test.q:1119 src/t-test.q:1231 +#: src/crosstabs.q:1208 src/t-test.q:927 src/t-test.q:1121 src/t-test.q:1233 msgid "Upper" msgstr "" -#: src/crosstabs.q:1226 +#: src/crosstabs.q:1227 msgid "Type" msgstr "" -#: src/crosstabs.q:1976 +#: src/crosstabs.q:1977 msgid "Pearson Chi-Square" msgstr "" -#: src/crosstabs.q:1977 +#: src/crosstabs.q:1978 msgid "Likelihood Ratio" msgstr "" -#: src/crosstabs.q:1978 +#: src/crosstabs.q:1979 msgid "Fisher's Exact Test" msgstr "" -#: src/crosstabs.q:1979 +#: src/crosstabs.q:1980 msgid "Continuity Correction" msgstr "" -#: src/crosstabs.q:1980 +#: src/crosstabs.q:1981 msgid "Linear-by-Linear Association" msgstr "" -#: src/crosstabs.q:2017 src/crosstabs.q:2087 src/crosstabs.q:2146 +#: src/crosstabs.q:2018 src/crosstabs.q:2088 src/crosstabs.q:2147 msgid "N of Valid Cases" msgstr "" -#: src/crosstabs.q:2033 src/crosstabs.q:2162 +#: src/crosstabs.q:2034 src/crosstabs.q:2163 msgid "Nominal by Nominal" msgstr "" -#: src/crosstabs.q:2034 src/crosstabs.q:2163 +#: src/crosstabs.q:2035 src/crosstabs.q:2164 msgid "Ordinal by Ordinal" msgstr "" -#: src/crosstabs.q:2035 +#: src/crosstabs.q:2036 msgid "Interval by Interval" msgstr "" -#: src/crosstabs.q:2036 +#: src/crosstabs.q:2037 msgid "Measure of Agreement" msgstr "" -#: src/crosstabs.q:2041 +#: src/crosstabs.q:2042 msgid "Phi" msgstr "" -#: src/crosstabs.q:2042 +#: src/crosstabs.q:2043 msgid "Cramer's V" msgstr "" -#: src/crosstabs.q:2043 +#: src/crosstabs.q:2044 msgid "Contingency Coefficient" msgstr "" -#: src/crosstabs.q:2044 +#: src/crosstabs.q:2045 msgid "Kendall's tau-b" msgstr "" -#: src/crosstabs.q:2045 +#: src/crosstabs.q:2046 msgid "Kendall's tau-c" msgstr "" -#: src/crosstabs.q:2046 +#: src/crosstabs.q:2047 msgid "Gamma" msgstr "" -#: src/crosstabs.q:2047 +#: src/crosstabs.q:2048 msgid "Spearman Correlation" msgstr "" -#: src/crosstabs.q:2048 +#: src/crosstabs.q:2049 msgid "Pearson's R" msgstr "" -#: src/crosstabs.q:2049 +#: src/crosstabs.q:2050 msgid "Kappa" msgstr "" -#: src/crosstabs.q:2119 +#: src/crosstabs.q:2120 #, c-format msgid "Odds Ratio for %s (%g / %g)" msgstr "" -#: src/crosstabs.q:2122 +#: src/crosstabs.q:2123 #, c-format msgid "Odds Ratio for %s (%.*s / %.*s)" msgstr "" -#: src/crosstabs.q:2130 +#: src/crosstabs.q:2131 #, c-format msgid "For cohort %s = %g" msgstr "" -#: src/crosstabs.q:2133 +#: src/crosstabs.q:2134 #, c-format msgid "For cohort %s = %.*s" msgstr "" -#: src/crosstabs.q:2164 +#: src/crosstabs.q:2165 msgid "Nominal by Interval" msgstr "" -#: src/crosstabs.q:2169 +#: src/crosstabs.q:2170 msgid "Lambda" msgstr "" -#: src/crosstabs.q:2170 +#: src/crosstabs.q:2171 msgid "Goodman and Kruskal tau" msgstr "" -#: src/crosstabs.q:2171 +#: src/crosstabs.q:2172 msgid "Uncertainty Coefficient" msgstr "" -#: src/crosstabs.q:2172 +#: src/crosstabs.q:2173 msgid "Somers' d" msgstr "" -#: src/crosstabs.q:2173 +#: src/crosstabs.q:2174 msgid "Eta" msgstr "" -#: src/crosstabs.q:2178 +#: src/crosstabs.q:2179 msgid "Symmetric" msgstr "" -#: src/crosstabs.q:2179 src/crosstabs.q:2180 +#: src/crosstabs.q:2180 src/crosstabs.q:2181 #, c-format msgid "%s Dependent" msgstr "" -#: src/descript.q:151 src/frequencies.q:94 src/t-test.q:656 src/t-test.q:679 -#: src/t-test.q:768 src/t-test.q:1115 +#: src/descript.q:151 src/frequencies.q:94 src/t-test.q:658 src/t-test.q:681 +#: src/t-test.q:770 src/t-test.q:1117 msgid "Mean" msgstr "" @@ -4866,119 +4809,138 @@ msgstr "" msgid "Upper value (%g) is less than lower value (%g) on VARIABLES subcommand." msgstr "" -#: src/set.q:217 src/set.q:220 src/set.q:238 src/set.q:307 src/set.q:313 -#: src/set.q:338 src/set.q:340 src/set.q:359 src/set.q:363 src/set.q:367 -#: src/set.q:381 src/set.q:383 src/set.q:387 src/set.q:705 src/set.q:786 -#: src/set.q:867 +#: src/set.q:216 src/set.q:288 src/set.q:332 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:413 src/set.q:792 src/set.q:873 src/set.q:968 #, c-format msgid "%s is obsolete." msgstr "" #: src/set.q:224 -msgid "Active file compression is not yet implemented (and probably won't be)." +msgid "LISTING is ON" msgstr "" -#: src/set.q:233 -msgid "CPI must be greater than 0." +#: src/set.q:226 +msgid "LISTING is OFF" msgstr "" -#: src/set.q:242 -msgid "LPI must be greater than 0." +#: src/set.q:252 +msgid "Journalling is off" msgstr "" -#: src/set.q:249 +#: src/set.q:422 msgid "" "CASE is not implemented and probably won't be. If you care, complain about " "it." msgstr "" -#: src/set.q:279 +#: src/set.q:427 +msgid "Active file compression is not yet implemented (and probably won't be)." +msgstr "" + +#: src/set.q:441 #, c-format -msgid "Value for MITERATE (%ld) must be greater than 0." +msgid "" +"CC%c: Length of custom currency string `%s' (%d) exceeds maximum length of " +"16." msgstr "" -#: src/set.q:287 +#: src/set.q:463 #, c-format -msgid "Value for MNEST (%ld) must be greater than 0." +msgid "" +"CC%c: Custom currency string `%s' does not contain exactly three periods or " +"commas (not both)." msgstr "" -#: src/set.q:295 -msgid "MXERRS must be at least 1." +#: src/set.q:516 +msgid "None" msgstr "" -#: src/set.q:302 -msgid "MXLOOPS must be at least 1." +#: src/set.q:522 +msgid "Disabled" msgstr "" -#: src/set.q:323 -msgid "Workspace limit must be at least 1 MB." +#: src/set.q:527 +msgid "Screen" msgstr "" -#: src/set.q:401 -#, c-format -msgid "" -"CC%c: Length of custom currency string `%s' (%d) exceeds maximum length of " -"16." +#: src/set.q:534 +msgid "Listing" msgstr "" -#: src/set.q:423 -#, c-format -msgid "" -"CC%c: Custom currency string `%s' does not contain exactly three periods or " -"commas (not both)." +#: src/set.q:541 +msgid "Other" msgstr "" -#: src/set.q:566 +#: src/set.q:650 msgid "LENGTH must be at least 1." msgstr "" -#: src/set.q:603 +#: src/set.q:689 msgid "Missing identifier in RESULTS subcommand." msgstr "" -#: src/set.q:614 +#: src/set.q:700 msgid "Unrecognized identifier in RESULTS subcommand." msgstr "" -#: src/set.q:651 +#: src/set.q:738 msgid "WIDTH must be at least 1." msgstr "" -#: src/set.q:674 +#: src/set.q:761 #, c-format msgid "" "FORMAT requires numeric output format as an argument. Specified format %s " "is of type string." msgstr "" -#: src/set.q:718 +#: src/set.q:805 msgid "Text color must be in range 0-15." msgstr "" -#: src/set.q:731 +#: src/set.q:818 msgid "Background color must be in range 0-7." msgstr "" -#: src/set.q:742 +#: src/set.q:829 msgid "Border color must be in range 0-7." msgstr "" -#: src/set.q:798 +#: src/set.q:885 msgid "Lower window color must be between 0 and 6." msgstr "" -#: src/set.q:812 +#: src/set.q:899 msgid "Upper window color must be between 0 and 6." msgstr "" -#: src/set.q:824 +#: src/set.q:911 msgid "Frame color must be between 0 and 6." msgstr "" -#: src/set.q:876 +#: src/set.q:977 msgid "Drive letter expected in WORKDEV subcommand." msgstr "" +#: src/set.q:1012 +msgid "Specify a terminal type with `setenv TERM '." +msgstr "" + +#: src/set.q:1018 +msgid "Could not access the termcap data base." +msgstr "" + +#: src/set.q:1020 +#, c-format +msgid "Terminal type `%s' is not defined." +msgstr "" + +#: src/set.q:1048 +msgid "data> " +msgstr "" + #: src/t-test.q:237 msgid "TESTVAL, GROUPS and PAIRS subcommands are mutually exclusive." msgstr "" @@ -4987,149 +4949,149 @@ msgstr "" msgid "VARIABLES subcommand is not appropriate with PAIRS" msgstr "" -#: src/t-test.q:352 src/t-test.q:429 +#: src/t-test.q:354 src/t-test.q:431 #, c-format msgid "`%s' is not a variable name" msgstr "" -#: src/t-test.q:365 +#: src/t-test.q:367 #, c-format msgid "Long string variable %s is not valid here." msgstr "" -#: src/t-test.q:382 +#: src/t-test.q:384 msgid "" "When applying GROUPS to a string variable, at least one value must be " "specified." msgstr "" -#: src/t-test.q:464 +#: src/t-test.q:466 #, c-format msgid "" "PAIRED was specified but the number of variables preceding WITH (%d) did not " "match the number following (%d)." msgstr "" -#: src/t-test.q:481 +#: src/t-test.q:483 msgid "At least two variables must be specified on PAIRS." msgstr "" -#: src/t-test.q:653 +#: src/t-test.q:655 msgid "One-Sample Statistics" msgstr "" -#: src/t-test.q:657 src/t-test.q:680 src/t-test.q:770 src/t-test.q:1116 +#: src/t-test.q:659 src/t-test.q:682 src/t-test.q:772 src/t-test.q:1118 msgid "Std. Deviation" msgstr "" -#: src/t-test.q:658 src/t-test.q:681 src/t-test.q:771 +#: src/t-test.q:660 src/t-test.q:683 src/t-test.q:773 msgid "SE. Mean" msgstr "" -#: src/t-test.q:675 +#: src/t-test.q:677 msgid "Group Statistics" msgstr "" -#: src/t-test.q:765 +#: src/t-test.q:767 msgid "Paired Sample Statistics" msgstr "" -#: src/t-test.q:787 src/t-test.q:1144 src/t-test.q:1364 +#: src/t-test.q:789 src/t-test.q:1146 src/t-test.q:1366 #, c-format msgid "Pair %d" msgstr "" -#: src/t-test.q:905 +#: src/t-test.q:907 msgid "Independent Samples Test" msgstr "" -#: src/t-test.q:913 +#: src/t-test.q:915 msgid "Levene's Test for Equality of Variances" msgstr "" -#: src/t-test.q:915 +#: src/t-test.q:917 msgid "t-test for Equality of Means" msgstr "" -#: src/t-test.q:917 +#: src/t-test.q:919 msgid "F" msgstr "" -#: src/t-test.q:918 src/t-test.q:1345 +#: src/t-test.q:920 src/t-test.q:1347 msgid "Sig." msgstr "" -#: src/t-test.q:919 src/t-test.q:1120 src/t-test.q:1226 +#: src/t-test.q:921 src/t-test.q:1122 src/t-test.q:1228 msgid "t" msgstr "" -#: src/t-test.q:921 src/t-test.q:1122 src/t-test.q:1228 +#: src/t-test.q:923 src/t-test.q:1124 src/t-test.q:1230 msgid "Sig. (2-tailed)" msgstr "" -#: src/t-test.q:922 src/t-test.q:1229 +#: src/t-test.q:924 src/t-test.q:1231 msgid "Mean Difference" msgstr "" -#: src/t-test.q:923 +#: src/t-test.q:925 msgid "Std. Error Difference" msgstr "" -#: src/t-test.q:928 src/t-test.q:1112 src/t-test.q:1221 +#: src/t-test.q:930 src/t-test.q:1114 src/t-test.q:1223 #, c-format msgid "%d%% Confidence Interval of the Difference" msgstr "" -#: src/t-test.q:962 +#: src/t-test.q:964 msgid "Equal variances assumed" msgstr "" -#: src/t-test.q:977 +#: src/t-test.q:979 #, c-format msgid "Error calculating F statistic (cdff returned %d)." msgstr "" -#: src/t-test.q:1000 src/t-test.q:1020 src/t-test.q:1058 src/t-test.q:1070 -#: src/t-test.q:1165 src/t-test.q:1191 src/t-test.q:1271 src/t-test.q:1288 -#: src/t-test.q:1377 +#: src/t-test.q:1002 src/t-test.q:1022 src/t-test.q:1060 src/t-test.q:1072 +#: src/t-test.q:1167 src/t-test.q:1193 src/t-test.q:1273 src/t-test.q:1290 +#: src/t-test.q:1379 #, c-format msgid "Error calculating T statistic (cdft returned %d)." msgstr "" -#: src/t-test.q:1034 +#: src/t-test.q:1036 msgid "Equal variances not assumed" msgstr "" -#: src/t-test.q:1102 +#: src/t-test.q:1104 msgid "Paired Samples Test" msgstr "" -#: src/t-test.q:1105 +#: src/t-test.q:1107 msgid "Paired Differences" msgstr "" -#: src/t-test.q:1117 +#: src/t-test.q:1119 msgid "Std. Error Mean" msgstr "" -#: src/t-test.q:1210 +#: src/t-test.q:1212 msgid "One-Sample Test" msgstr "" -#: src/t-test.q:1215 +#: src/t-test.q:1217 #, c-format msgid "Test Value = %f" msgstr "" -#: src/t-test.q:1340 +#: src/t-test.q:1342 msgid "Paired Samples Correlations" msgstr "" -#: src/t-test.q:1344 +#: src/t-test.q:1346 msgid "Correlation" msgstr "" -#: src/t-test.q:1367 +#: src/t-test.q:1369 #, c-format msgid "%s & %s" msgstr "" diff --git a/src/ChangeLog b/src/ChangeLog index 3a8fdf71..30730f0a 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,24 @@ +Sat Mar 20 00:05:42 WST 2004 John Darrington + + * set.q: Implemented the SHOW command, and synced it to the existing + SET cmd. + + Added a handler for SIGWINCH so that viewlength and viewwidth follow + changes as the window size is changed. + + Added fallback to set viewlength and viewwidth from LINES and COLUMS + environment variables if other methods are not available. + + glob.c: Removed a lot of global variables from glob.c and encapsulated + them in set.q + + random.c: Tidied up the way the random seed is set. + + str.c: Added a ds_vprintf function. + + error.c: Extended dump_message so that messages are always broken at + '\n' characters. + Thu Mar 18 11:07:14 2004 Ben Pfaff * pfm-write.c: (bufwrite) Write out the correct element for string diff --git a/src/Makefile.am b/src/Makefile.am index b9826373..487b4e36 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -28,15 +28,16 @@ $(q_sources_c): q2c$(EXEEXT) ./q2c $< $@ q_sources_c = correlations.c crosstabs.c descript.c file-handle.c \ -frequencies.c list.c means.c set.c t-test.c +frequencies.c list.c means.c set.c t-test.c q_sources_q = correlations.q crosstabs.q descript.q file-handle.q \ -frequencies.q list.q means.q set.q t-test.q +frequencies.q list.q means.q set.q t-test.q pspp_SOURCES = $(q_sources_c) \ aggregate.c algorithm.c algorithm.h alloc.c alloc.h \ apply-dict.c ascii.c autorecode.c bitvector.h \ cmdline.c cmdline.h command.c command.def command.h compute.c \ +copyleft.c copyleft.h \ count.c data-in.c data-in.h data-list.c data-list.h \ data-out.c debug-print.h devind.c devind.h dfm.c dfm.h \ dictionary.c do-if.c do-ifP.h error.c error.h expr-evl.c expr-opt.c \ diff --git a/src/aggregate.c b/src/aggregate.c index cb7cff06..72b46059 100644 --- a/src/aggregate.c +++ b/src/aggregate.c @@ -326,7 +326,7 @@ create_sysfile (struct agr_proc *agr) struct sfm_write_info w; w.h = agr->out_file; w.dict = agr->dict; - w.compress = set_scompression; + w.compress = get_scompression(); if (!sfm_write_dictionary (&w)) return 0; diff --git a/src/cmdline.c b/src/cmdline.c index ac33ee4a..fd4e6c45 100644 --- a/src/cmdline.c +++ b/src/cmdline.c @@ -41,6 +41,8 @@ static void usage (void); char *subst_vars (char *); +static int testing_mode=0; + /* Parses the command line specified by ARGC and ARGV as received by main(). */ void @@ -64,7 +66,7 @@ parse_command_line (int argc, char **argv) {"pipe", no_argument, NULL, 'p'}, {"recon", no_argument, NULL, 'n'}, {"safer", no_argument, NULL, 's'}, - {"testing-mode", no_argument, &set_testing_mode, 1}, + {"testing-mode", no_argument, &testing_mode, 1}, {"verbose", no_argument, NULL, 'v'}, {"version", no_argument, NULL, 'V'}, {0, 0, 0, 0}, @@ -147,7 +149,7 @@ parse_command_line (int argc, char **argv) no_statrc = 1; break; case 's': - set_safer = 1; + make_safe(); break; case 'v': err_verbosity++; @@ -172,11 +174,13 @@ parse_command_line (int argc, char **argv) } } - if (set_testing_mode) + + if (testing_mode) { /* FIXME: Later this option should do some other things, too. */ - set_viewwidth = 9999; + force_long_view(); } + for (i = optind; i < argc; i++) { diff --git a/src/command.c b/src/command.c index 316868a2..163f9845 100644 --- a/src/command.c +++ b/src/command.c @@ -566,21 +566,17 @@ cmd_execute (void) return lex_end_of_command (); } -#define assert_not_safer() \ - do { \ - if (set_safer) \ - { \ - msg (SE, _("This command not allowed when the SAFER option is set.")); \ - return CMD_FAILURE; \ - } \ -} while(0) - /* Parses, performs the ERASE command. */ int cmd_erase (void) { - assert_not_safer(); + if ( safer_mode() ) + { + msg (SE, _("This command not allowed when the SAFER option is set.")); + return CMD_FAILURE; + } + lex_match_id ("ERASE"); if (!lex_force_match_id ("FILE")) @@ -707,8 +703,12 @@ cmd_host (void) { int code; - assert_not_safer(); - + if ( safer_mode() ) + { + msg (SE, _("This command not allowed when the SAFER option is set.")); + return CMD_FAILURE; + } + lex_match_id ("HOST"); #ifdef unix diff --git a/src/command.def b/src/command.def index 790ed05d..c3ee874b 100644 --- a/src/command.def +++ b/src/command.def @@ -114,7 +114,7 @@ DEFCMD ("SAMPLE", ERRO, ERRO, TRAN, TRAN, cmd_sample) DEFCMD ("SAVE", ERRO, ERRO, PROC, PROC, cmd_save) DEFCMD ("SELECT IF", ERRO, ERRO, TRAN, TRAN, cmd_select_if) DEFCMD ("SET", INIT, INPU, TRAN, PROC, cmd_set) -UNIMPL ("SHOW", INIT, INPU, TRAN, PROC) +DEFCMD ("SHOW", INIT, INPU, TRAN, PROC, cmd_show) DEFCMD ("SORT CASES", ERRO, ERRO, PROC, PROC, cmd_sort_cases) DEFCMD ("SPLIT FILE", ERRO, INPU, TRAN, TRAN, cmd_split_file) DEFCMD ("STRING", ERRO, INPU, TRAN, TRAN, cmd_string) diff --git a/src/copyleft.c b/src/copyleft.c new file mode 100644 index 00000000..74799f53 --- /dev/null +++ b/src/copyleft.c @@ -0,0 +1,365 @@ +char lack_of_warranty[]="" +" NO WARRANTY\n" +"\n" +"BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY " +"FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN " +"OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES " +"PROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED " +"OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF " +"MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS " +"TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE " +"PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, " +"REPAIR OR CORRECTION.\n" +"\n" +"IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING " +"WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR " +"REDISTRIBUTE THE PROGRAM, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY " +"GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE " +"OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA " +"OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD " +"PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), " +"EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY " +"OF SUCH DAMAGES."; + +char copyleft[]="" +" GNU GENERAL PUBLIC LICENSE\n " +" Version 2, June 1991\n " +" \n" +" Copyright (C) 1989, 1991 Free Software Foundation, Inc. \n" +" 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\n " +" Everyone is permitted to copy and distribute verbatim copies " +" of this license document, but changing it is not allowed. " +" \n" +" Preamble \n" +"\n" +" The licenses for most software are designed to take away your " +"freedom to share and change it. By contrast, the GNU General Public " +"License is intended to guarantee your freedom to share and change free " +"software--to make sure the software is free for all its users. This " +"General Public License applies to most of the Free Software " +"Foundation\'s software and to any other program whose authors commit to " +"using it. (Some other Free Software Foundation software is covered by " +"the GNU Library General Public License instead.) You can apply it to " +"your programs, too. " +"\n" +" When we speak of free software, we are referring to freedom, not " +"price. Our General Public Licenses are designed to make sure that you " +"have the freedom to distribute copies of free software (and charge for " +"this service if you wish), that you receive source code or can get it " +"if you want it, that you can change the software or use pieces of it " +"in new free programs; and that you know you can do these things. " +" \n" +" To protect your rights, we need to make restrictions that forbid " +"anyone to deny you these rights or to ask you to surrender the rights. " +"These restrictions translate to certain responsibilities for you if you " +"distribute copies of the software, or if you modify it. " +" \n" +" For example, if you distribute copies of such a program, whether " +"gratis or for a fee, you must give the recipients all the rights that " +"you have. You must make sure that they, too, receive or can get the " +"source code. And you must show them these terms so they know their " +"rights. " +" \n" +" We protect your rights with two steps: (1) copyright the software, and " +"(2) offer you this license which gives you legal permission to copy, " +"distribute and/or modify the software. " +" \n" +" Also, for each author's protection and ours, we want to make certain " +"that everyone understands that there is no warranty for this free " +"software. If the software is modified by someone else and passed on, we " +"want its recipients to know that what they have is not the original, so " +"that any problems introduced by others will not reflect on the original " +"authors' reputations. " +" \n" +" Finally, any free program is threatened constantly by software " +"patents. We wish to avoid the danger that redistributors of a free " +"program will individually obtain patent licenses, in effect making the " +"program proprietary. To prevent this, we have made it clear that any " +"patent must be licensed for everyone's free use or not licensed at all. " +" \n" +" The precise terms and conditions for copying, distribution and " +"modification follow. " +"\n " +" GNU GENERAL PUBLIC LICENSE \n" +" TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION \n" +" \n" +" 0. This License applies to any program or other work which contains " +"a notice placed by the copyright holder saying it may be distributed " +"under the terms of this General Public License. The \"Program\", below, " +"refers to any such program or work, and a \"work based on the Program\" " +"means either the Program or any derivative work under copyright law: " +"that is to say, a work containing the Program or a portion of it, " +"either verbatim or with modifications and/or translated into another " +"language. (Hereinafter, translation is included without limitation in " +"the term \"modification\".) Each licensee is addressed as \"you\". " +" \n" +"Activities other than copying, distribution and modification are not " +"covered by this License; they are outside its scope. The act of " +"running the Program is not restricted, and the output from the Program " +"is covered only if its contents constitute a work based on the " +"Program (independent of having been made by running the Program). " +"Whether that is true depends on what the Program does. " +"\n" +" 1. You may copy and distribute verbatim copies of the Program's " +"source code as you receive it, in any medium, provided that you " +"conspicuously and appropriately publish on each copy an appropriate " +"copyright notice and disclaimer of warranty; keep intact all the " +"notices that refer to this License and to the absence of any warranty; " +"and give any other recipients of the Program a copy of this License " +"along with the Program. " +"\n" +"You may charge a fee for the physical act of transferring a copy, and " +"you may at your option offer warranty protection in exchange for a fee. " +"\n" +" 2. You may modify your copy or copies of the Program or any portion " +"of it, thus forming a work based on the Program, and copy and " +"distribute such modifications or work under the terms of Section 1 " +"above, provided that you also meet all of these conditions: " +"\n" +" a) You must cause the modified files to carry prominent notices " +" stating that you changed the files and the date of any change. " +"\n" +" b) You must cause any work that you distribute or publish, that in " +" whole or in part contains or is derived from the Program or any " +" part thereof, to be licensed as a whole at no charge to all third " +" parties under the terms of this License. " +"\n" +" c) If the modified program normally reads commands interactively " +" when run, you must cause it, when started running for such " +" interactive use in the most ordinary way, to print or display an " +" announcement including an appropriate copyright notice and a " +" notice that there is no warranty (or else, saying that you provide " +" a warranty) and that users may redistribute the program under " +" these conditions, and telling the user how to view a copy of this " +" License. (Exception: if the Program itself is interactive but " +" does not normally print such an announcement, your work based on " +" the Program is not required to print an announcement.) " +"\n " +"These requirements apply to the modified work as a whole. If " +"identifiable sections of that work are not derived from the Program, " +"and can be reasonably considered independent and separate works in " +"themselves, then this License, and its terms, do not apply to those " +"sections when you distribute them as separate works. But when you " +"distribute the same sections as part of a whole which is a work based " +"on the Program, the distribution of the whole must be on the terms of " +"this License, whose permissions for other licensees extend to the " +"entire whole, and thus to each and every part regardless of who wrote it. " +"\n" +"Thus, it is not the intent of this section to claim rights or contest " +"your rights to work written entirely by you; rather, the intent is to " +"exercise the right to control the distribution of derivative or " +"collective works based on the Program. " +"\n" +"In addition, mere aggregation of another work not based on the Program " +"with the Program (or with a work based on the Program) on a volume of " +"a storage or distribution medium does not bring the other work under " +"the scope of this License. " +"\n" +" 3. You may copy and distribute the Program (or a work based on it, " +"under Section 2) in object code or executable form under the terms of " +"Sections 1 and 2 above provided that you also do one of the following: " +"\n" +" a) Accompany it with the complete corresponding machine-readable " +" source code, which must be distributed under the terms of Sections " +" 1 and 2 above on a medium customarily used for software interchange; or, " +"\n" +" b) Accompany it with a written offer, valid for at least three " +" years, to give any third party, for a charge no more than your " +" cost of physically performing source distribution, a complete " +" machine-readable copy of the corresponding source code, to be " +" distributed under the terms of Sections 1 and 2 above on a medium " +" customarily used for software interchange; or, " +"\n" +" c) Accompany it with the information you received as to the offer " +" to distribute corresponding source code. (This alternative is " +" allowed only for noncommercial distribution and only if you " +" received the program in object code or executable form with such " +" an offer, in accord with Subsection b above.) " +"\n" +"The source code for a work means the preferred form of the work for " +"making modifications to it. For an executable work, complete source " +"code means all the source code for all modules it contains, plus any " +"associated interface definition files, plus the scripts used to " +"control compilation and installation of the executable. However, as a " +"special exception, the source code distributed need not include " +"anything that is normally distributed (in either source or binary " +"form) with the major components (compiler, kernel, and so on) of the " +"operating system on which the executable runs, unless that component " +"itself accompanies the executable. " +"\n" +"If distribution of executable or object code is made by offering " +"access to copy from a designated place, then offering equivalent " +"access to copy the source code from the same place counts as " +"distribution of the source code, even though third parties are not " +"compelled to copy the source along with the object code. " +"\n " +" 4. You may not copy, modify, sublicense, or distribute the Program " +"except as expressly provided under this License. Any attempt " +"otherwise to copy, modify, sublicense or distribute the Program is " +"void, and will automatically terminate your rights under this License. " +"However, parties who have received copies, or rights, from you under " +"this License will not have their licenses terminated so long as such " +"parties remain in full compliance. " +"\n" +" 5. You are not required to accept this License, since you have not " +"signed it. However, nothing else grants you permission to modify or " +"distribute the Program or its derivative works. These actions are " +"prohibited by law if you do not accept this License. Therefore, by " +"modifying or distributing the Program (or any work based on the " +"Program), you indicate your acceptance of this License to do so, and " +"all its terms and conditions for copying, distributing or modifying " +"the Program or works based on it. " +"\n" +" 6. Each time you redistribute the Program (or any work based on the " +"Program), the recipient automatically receives a license from the " +"original licensor to copy, distribute or modify the Program subject to " +"these terms and conditions. You may not impose any further " +"restrictions on the recipients' exercise of the rights granted herein. " +"You are not responsible for enforcing compliance by third parties to " +"this License. " +"\n" +" 7. If, as a consequence of a court judgment or allegation of patent " +"infringement or for any other reason (not limited to patent issues), " +"conditions are imposed on you (whether by court order, agreement or " +"otherwise) that contradict the conditions of this License, they do not " +"excuse you from the conditions of this License. If you cannot " +"distribute so as to satisfy simultaneously your obligations under this " +"License and any other pertinent obligations, then as a consequence you " +"may not distribute the Program at all. For example, if a patent " +"license would not permit royalty-free redistribution of the Program by " +"all those who receive copies directly or indirectly through you, then " +"the only way you could satisfy both it and this License would be to " +"refrain entirely from distribution of the Program. " +"\n" +"If any portion of this section is held invalid or unenforceable under " +"any particular circumstance, the balance of the section is intended to " +"apply and the section as a whole is intended to apply in other " +"circumstances. " +"\n" +"It is not the purpose of this section to induce you to infringe any " +"patents or other property right claims or to contest validity of any " +"such claims; this section has the sole purpose of protecting the " +"integrity of the free software distribution system, which is " +"implemented by public license practices. Many people have made " +"generous contributions to the wide range of software distributed " +"through that system in reliance on consistent application of that " +"system; it is up to the author/donor to decide if he or she is willing " +"to distribute software through any other system and a licensee cannot " +"impose that choice. " +"\n" +"This section is intended to make thoroughly clear what is believed to " +"be a consequence of the rest of this License. " +"\n " +" 8. If the distribution and/or use of the Program is restricted in " +"certain countries either by patents or by copyrighted interfaces, the " +"original copyright holder who places the Program under this License " +"may add an explicit geographical distribution limitation excluding " +"those countries, so that distribution is permitted only in or among " +"countries not thus excluded. In such case, this License incorporates " +"the limitation as if written in the body of this License. " +"\n" +" 9. The Free Software Foundation may publish revised and/or new versions " +"of the General Public License from time to time. Such new versions will " +"be similar in spirit to the present version, but may differ in detail to " +"address new problems or concerns. " +"\n" +"Each version is given a distinguishing version number. If the Program " +"specifies a version number of this License which applies to it and \"any " +"later version\", you have the option of following the terms and conditions " +"either of that version or of any later version published by the Free " +"Software Foundation. If the Program does not specify a version number of " +"this License, you may choose any version ever published by the Free Software " +"Foundation. " +"\n" +" 10. If you wish to incorporate parts of the Program into other free " +"programs whose distribution conditions are different, write to the author " +"to ask for permission. For software which is copyrighted by the Free " +"Software Foundation, write to the Free Software Foundation; we sometimes " +"make exceptions for this. Our decision will be guided by the two goals " +"of preserving the free status of all derivatives of our free software and " +"of promoting the sharing and reuse of software generally. " +"\n" +" NO WARRANTY " +"\n" +" 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY " +"FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN " +"OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES " +"PROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED " +"OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF " +"MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS " +"TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE " +"PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, " +"REPAIR OR CORRECTION. " +"\n" +" 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING " +"WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR " +"REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, " +"INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING " +"OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED " +"TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY " +"YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER " +"PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE " +"POSSIBILITY OF SUCH DAMAGES. " +"\n" +" END OF TERMS AND CONDITIONS " +"\n " +" How to Apply These Terms to Your New Programs " +"\n" +" If you develop a new program, and you want it to be of the greatest " +"possible use to the public, the best way to achieve this is to make it " +"free software which everyone can redistribute and change under these terms. " +"\n" +" To do so, attach the following notices to the program. It is safest " +"to attach them to the start of each source file to most effectively " +"convey the exclusion of warranty; and each file should have at least " +"the \"copyright\" line and a pointer to where the full notice is found. " +"\n" +" \n" +" Copyright (C) \n" +"\n" +" This program is free software; you can redistribute it and/or modify" +" it under the terms of the GNU General Public License as published by" +" the Free Software Foundation; either version 2 of the License, or" +" (at your option) any later version.\n" +"\n" +" This program is distributed in the hope that it will be useful," +" but WITHOUT ANY WARRANTY; without even the implied warranty of" +" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the" +" GNU General Public License for more details.\n" +"\n" +" You should have received a copy of the GNU General Public License" +" along with this program; if not, write to the Free Software" +" Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\n" +"\n" +"\n" +"Also add information on how to contact you by electronic and paper mail. " +"\n" +"If the program is interactive, make it output a short notice like this " +"when it starts in an interactive mode: " +"\n" +" Gnomovision version 69, Copyright (C) year name of author\n" +" Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.\n" +" This is free software, and you are welcome to redistribute it\n" +" under certain conditions; type `show c' for details.\n" +"\n" +"The hypothetical commands `show w' and `show c' should show the appropriate " +"parts of the General Public License. Of course, the commands you use may " +"be called something other than `show w' and `show c'; they could even be " +"mouse-clicks or menu items--whatever suits your program. " +"\n" +"You should also get your employer (if you work as a programmer) or your " +"school, if any, to sign a \"copyright disclaimer\" for the program, if " +"necessary. Here is a sample; alter the names: " +"\n" +" Yoyodyne, Inc., hereby disclaims all copyright interest in the program" +" `Gnomovision' (which makes passes at compilers) written by James Hacker.\n" +"\n" +" , 1 April 1989\n" +" Ty Coon, President of Vice\n" +"\n" +"This General Public License does not permit incorporating your program into " +"proprietary programs. If your program is a subroutine library, you may " +"consider it more useful to permit linking proprietary applications with the " +"library. If this is what you want to do, use the GNU Library General " +"Public License instead of this License. " +""; diff --git a/src/copyleft.h b/src/copyleft.h new file mode 100644 index 00000000..0467aada --- /dev/null +++ b/src/copyleft.h @@ -0,0 +1,26 @@ +/* PSPP - computes sample statistics. + Copyright (C) 1997-9, 2000 Free Software Foundation, Inc. + Written by Ben Pfaff . + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + 02111-1307, USA. */ + +#if !copyleft_h +#define copyleft_h 1 + +extern char lack_of_warranty[]; +extern char copyleft[]; + +#endif diff --git a/src/data-in.c b/src/data-in.c index 3a15f896..0c477fa2 100644 --- a/src/data-in.c +++ b/src/data-in.c @@ -145,13 +145,13 @@ parse_numeric (struct data_in *i) if (type != FMT_DOT) { - decimal = set_decimal; - grouping = set_grouping; + decimal = get_decimal(); + grouping = get_grouping(); } else { - decimal = set_grouping; - grouping = set_decimal; + decimal = get_grouping(); + grouping = get_decimal(); } i->v->f = SYSMIS; @@ -1491,7 +1491,7 @@ default_result (struct data_in *i) if (fmt->cat & FCAT_STRING) memset (i->v->s, ' ', i->format.w); else - i->v->f = set_blanks; + i->v->f = get_blanks(); } int @@ -1529,7 +1529,7 @@ data_in (struct data_in *i) if (++cp == i->e) { - i->v->f = set_blanks; + i->v->f = get_blanks(); return 1; } } diff --git a/src/data-list.c b/src/data-list.c index de50b437..a5ec8da2 100644 --- a/src/data-list.c +++ b/src/data-list.c @@ -839,7 +839,7 @@ parse_free (struct dls_var_spec **first, struct dls_var_spec **last) input.type = FMT_F; input.w = 8; input.d = 0; - output = set_format; + output = get_format(); } if (input.type == FMT_A || input.type == FMT_AHEX) @@ -1129,7 +1129,7 @@ read_from_data_list_list (const struct data_list_pgm *dls, if (column == 0) { - if (set_undefined) + if (get_undefined() ) msg (SW, _("Missing value(s) for all variables from %s onward. " "These will be filled with the system-missing value " "or blanks, as appropriate."), diff --git a/src/data-out.c b/src/data-out.c index c1f3ff81..1206dd99 100644 --- a/src/data-out.c +++ b/src/data-out.c @@ -413,8 +413,8 @@ convert_E (char *dst, const struct fmt_spec *fp, double number) /* The C locale always uses a period `.' as a decimal point. Translate to comma if necessary. */ - if ((set_decimal == ',' && fp->type != FMT_DOT) - || (set_decimal == '.' && fp->type == FMT_DOT)) + if ((get_decimal() == ',' && fp->type != FMT_DOT) + || (get_decimal() == '.' && fp->type == FMT_DOT)) { char *cp = strchr (buf, '.'); if (cp) @@ -1026,7 +1026,7 @@ insert_commas (char *dst, const char *src, const struct fmt_spec *fp) if (i % 3 == 0 && n_digits > i && n_items > n_reserved) { n_items--; - *dst++ = fp->type == FMT_COMMA ? set_grouping : set_decimal; + *dst++ = fp->type == FMT_COMMA ? get_grouping() : get_decimal(); } *dst++ = *sp++; } @@ -1052,7 +1052,7 @@ year4 (int year) static int try_CCx (char *dst, const struct fmt_spec *fp, double number) { - struct set_cust_currency *cc = &set_cc[fp->type - FMT_CCA]; + const struct set_cust_currency *cc = get_cc(fp->type - FMT_CCA); struct fmt_spec f; @@ -1062,7 +1062,7 @@ try_CCx (char *dst, const struct fmt_spec *fp, double number) /* Determine length available, decimal character for number proper. */ - f.type = cc->decimal == set_decimal ? FMT_COMMA : FMT_DOT; + f.type = cc->decimal == get_decimal() ? FMT_COMMA : FMT_DOT; f.w = fp->w - strlen (cc->prefix) - strlen (cc->suffix); if (number < 0) f.w -= strlen (cc->neg_prefix) + strlen (cc->neg_suffix) - 1; @@ -1297,8 +1297,8 @@ try_F (char *dst, const struct fmt_spec *fp, double number) if (n == n_int + n_dec) { /* Convert periods `.' to commas `,' for our foreign friends. */ - if ((set_decimal == ',' && fp->type != FMT_DOT) - || (set_decimal == '.' && fp->type == FMT_DOT)) + if ((get_decimal() == ',' && fp->type != FMT_DOT) + || (get_decimal() == '.' && fp->type == FMT_DOT)) { cp = strchr (cp, '.'); if (cp) diff --git a/src/error.c b/src/error.c index 9896fb27..3dadab42 100644 --- a/src/error.c +++ b/src/error.c @@ -79,14 +79,16 @@ tmsg (int class, const char *title, const char *format, ...) void msg (int class, const char *format, ...) { - char buf[1024]; + struct string buf; + ds_init (NULL, &buf, 1024); + /* Format the message into BUF. */ { va_list args; va_start (args, format); - vsnprintf (buf, 1024, format, args); + ds_vprintf (&buf, format, args); va_end (args); } @@ -97,7 +99,7 @@ msg (int class, const char *format, ...) e.class = class; err_location (&e.where); e.title = NULL; - e.text = buf; + e.text = buf.string; err_vmsg (&e); } } @@ -186,14 +188,14 @@ err_check_count (void) { int error_class = getl_interactive ? MM : FE; - if (set_errorbreak && err_error_count) + if (get_errorbreak() && err_error_count) msg (error_class, _("Terminating execution of syntax file due to error.")); - else if (err_error_count > set_mxerrs) + else if (err_error_count > get_mxerrs() ) msg (error_class, _("Errors (%d) exceeds limit (%d)."), - err_error_count, set_mxerrs); - else if (err_error_count + err_warning_count > set_mxwarns) + err_error_count, get_mxerrs()); + else if (err_error_count + err_warning_count > get_mxwarns() ) msg (error_class, _("Warnings (%d) exceed limit (%d)."), - err_error_count + err_warning_count, set_mxwarns); + err_error_count + err_warning_count, get_mxwarns() ); else return; @@ -243,7 +245,7 @@ err_vmsg (const struct error *e) /* Describes one class of error. */ struct error_class { - int flags; /* Zero or more of MSG_*. */ + int flags; /* Zero or more of ERR_*. */ int *count; /* Counting category. */ const char *banner; /* Banner. */ }; @@ -310,7 +312,7 @@ err_vmsg (const struct error *e) Please note that this is not trivial. We have to avoid an infinite loop in reporting errors that originate in the output section. */ - dump_message (ds_value (&msg), 8, puts_stdout, set_viewwidth); + dump_message (ds_value (&msg), 8, puts_stdout, get_viewwidth()); ds_destroy (&msg); @@ -337,13 +339,20 @@ puts_stdout (const char *s) puts (s); } +/* Returns 1 if the line must be broken here */ +static int +compulsory_break(int c) +{ + return ( c == '\n' ); +} + /* Returns 1 if C is a `break character', that is, if it is a good place to break a message into lines. */ static inline int char_is_break (int quote, int c) { return ((quote && c == DIR_SEPARATOR) - || (!quote && (isspace (c) || c == '-' || c == '/'))); + || (!quote && (isspace (c) || c == '-' || c == '/'))); } /* Returns 1 if C is a break character where the break should be made @@ -399,12 +408,13 @@ dump_message (char *msg, unsigned indent, void (*func) (const char *), if (indent > width / 3) indent = width / 3; - buf = local_alloc (width + 1); + buf = local_alloc (width + 2); /* Advance WIDTH characters into MSG. If that's a valid breakpoint, keep it; otherwise, back up. Output the line. */ - for (cp = msg; (unsigned) (cp - msg) < width - 1; cp++) + for (cp = msg; (unsigned) (cp - msg) < width - 1 && + ! compulsory_break(*cp); cp++) if (*cp == '"') quote ^= 1; @@ -430,44 +440,71 @@ dump_message (char *msg, unsigned indent, void (*func) (const char *), *cp = c; } + /* Repeat above procedure for remaining lines. */ for (;;) { + static int hard_break=0; + + int idx=0; char *cp2; /* Advance past whitespace. */ - while (isspace ((unsigned char) *cp)) + if (! hard_break ) + while ( isspace ((unsigned char) *cp) ) + cp++; + else cp++; + if (*cp == 0) - break; + break; + /* Advance WIDTH - INDENT characters. */ - for (cp2 = cp; (unsigned) (cp2 - cp) < width - indent && *cp2; cp2++) + for (cp2 = cp; (unsigned) (cp2 - cp) < width - indent && + *cp2 && !compulsory_break(*cp2); cp2++) if (*cp2 == '"') quote ^= 1; + + if ( compulsory_break(*cp2) ) + hard_break = 1; + else + hard_break = 0; + /* Back up if this isn't a breakpoint. */ { unsigned w = cp2 - cp; - if (*cp2) - for (cp2--; !char_is_break (quote, (unsigned char) *cp2) && cp2 > cp; + if (*cp2 && ! compulsory_break(*cp2) ) + for (cp2--; !char_is_break (quote, (unsigned char) *cp2) && + cp2 > cp; cp2--) + { + if (*cp2 == '"') quote ^= 1; + } if (w == width - indent && (unsigned) (cp2 - cp) <= (width - indent) * BREAK_LONG_WORD) - for (; (unsigned) (cp2 - cp) < width - indent && *cp2; cp2++) + for (; (unsigned) (cp2 - cp) < width - indent && *cp2 ; cp2++) if (*cp2 == '"') quote ^= 1; } + /* Write out the line. */ + memset (buf, ' ', indent); memcpy (&buf[indent], cp, cp2 - cp); - buf[indent + cp2 - cp] = '\0'; - func (buf); + if ( hard_break) + { + buf[indent + idx + cp2 - cp] = '\n'; + ++idx; + } + buf[indent + idx + cp2 - cp] = '\0'; + func (buf); cp = cp2; } diff --git a/src/filename.c b/src/filename.c index c9f0b62e..a56918f3 100644 --- a/src/filename.c +++ b/src/filename.c @@ -695,7 +695,7 @@ fn_open (const char *fn, const char *mode) #ifdef unix if (fn[0] == '|') { - if (set_safer) + if (safer_mode()) return safety_violation (fn); return popen (&fn[1], mode); @@ -705,7 +705,7 @@ fn_open (const char *fn, const char *mode) char *s; FILE *f; - if (set_safer) + if (safer_mode()) return safety_violation (fn); s = local_alloc (strlen (fn)); diff --git a/src/flip.c b/src/flip.c index 7e424ba2..5fd1dea3 100644 --- a/src/flip.c +++ b/src/flip.c @@ -359,7 +359,7 @@ flip_file (struct flip_pgm *flip) /* Allocate memory for many cases. */ case_bytes = flip->var_cnt * sizeof *input_buf; - case_capacity = set_max_workspace / case_bytes; + case_capacity = get_max_workspace() / case_bytes; if (case_capacity > flip->case_cnt * 2) case_capacity = flip->case_cnt * 2; if (case_capacity < 2) diff --git a/src/get.c b/src/get.c index 0906d711..c33680fd 100644 --- a/src/get.c +++ b/src/get.c @@ -299,7 +299,7 @@ static int rename_variables (struct dictionary * dict); static int trim_dictionary (struct dictionary *dict, int *options) { - if (set_scompression) + if (get_scompression()) *options |= GTSV_OPT_COMPRESSED; if (*options & GTSV_OPT_SAVE) diff --git a/src/getline.c b/src/getline.c index 89370b13..2988b078 100644 --- a/src/getline.c +++ b/src/getline.c @@ -57,6 +57,8 @@ extern int write_history (char *); #endif /* no readline/history.h */ #endif /* -lhistory */ +extern struct cmd_set cmd; + static struct string getl_include_path; /* Number of levels of DO REPEAT structures we're nested inside. If @@ -334,7 +336,7 @@ getl_read_line (void) if (ds_length (&getl_buf) > 0 && ds_end (&getl_buf)[-1] == '\n') ds_truncate (&getl_buf, ds_length (&getl_buf) - 1); - if (set_echo) + if (get_echo()) tab_output_text (TAB_LEFT | TAT_FIX, ds_value (&getl_buf)); getl_head->ln++; @@ -436,15 +438,15 @@ read_console (void) switch (getl_prompt) { case GETL_PRPT_STANDARD: - prompt = set_prompt; + prompt = get_prompt(); break; case GETL_PRPT_CONTINUATION: - prompt = set_cprompt; + prompt = get_cprompt(); break; case GETL_PRPT_DATA: - prompt = set_dprompt; + prompt = get_dprompt(); break; default: @@ -472,7 +474,7 @@ read_console (void) err_error_count = err_warning_count = 0; err_already_flagged = 0; - fputs (getl_prompt ? set_cprompt : set_prompt, stdout); + fputs (getl_prompt ? get_cprompt() : get_prompt(), stdout); ds_clear (&getl_buf); if (ds_getline (&getl_buf, stdin)) return 1; diff --git a/src/glob.c b/src/glob.c index 60da1fff..61c70b46 100644 --- a/src/glob.c +++ b/src/glob.c @@ -34,15 +34,6 @@ #endif #endif -#if HAVE_LIBTERMCAP -#if HAVE_TERMCAP_H -#include -#else /* !HAVE_TERMCAP_H */ -int tgetent (char *, char *); -int tgetnum (char *); -#endif /* !HAVE_TERMCAP_H */ -#endif /* !HAVE_LIBTERMCAP */ - #if HAVE_LIBHISTORY #if HAVE_READLINE_HISTORY_H #include @@ -120,9 +111,6 @@ int logging; static void get_date (void); -#if HAVE_LIBTERMCAP -static char term_buffer[16384]; -#endif void init_glob (int argc UNUSED, char **argv) @@ -137,10 +125,6 @@ init_glob (int argc UNUSED, char **argv) textdomain (PACKAGE); #endif /* ENABLE_NLS */ - /* Workable defaults before we determine the real terminal size. */ - set_viewwidth = 79; - set_viewlength = 24; - fn_init (); getl_initialize (); @@ -184,111 +168,8 @@ init_glob (int argc UNUSED, char **argv) cur_proc = NULL; } - /* settings.h */ -#if !USE_INTERNAL_PAGER - { - char *pager; - - pager = getenv ("STAT_PAGER"); - if (!pager) - pager = getenv ("PAGER"); - if (pager) - set_pager = xstrdup (pager); -#if DEFAULT_PAGER - else - set_pager = xstrdup (DEFAULT_PAGER); -#endif /* DEFAULT_PAGER */ - } -#endif /* !USE_INTERNAL_PAGER */ - - set_blanks = SYSMIS; - set_scompression = 1; - set_format.type = FMT_F; - set_format.w = 8; - set_format.d = 2; - set_cpi = 6; - set_lpi = 10; - set_results_file = xstrdup ("pspp.prc"); - set_dprompt = xstrdup (_("data> ")); - - { - int i; - - for (i = 0; i < 5; i++) - { - struct set_cust_currency *cc = &set_cc[i]; - strcpy (cc->buf, "-"); - cc->neg_prefix = cc->buf; - cc->prefix = &cc->buf[1]; - cc->suffix = &cc->buf[1]; - cc->neg_suffix = &cc->buf[1]; - cc->decimal = '.'; - cc->grouping = ','; - } - } - - set_decimal = '.'; - set_grouping = ','; - set_headers = 1; - set_journaling = 1; - set_journal = xstrdup ("pspp.jnl"); - set_messages = 1; - set_mexpand = 1; - set_mprint = 1; - set_mxerrs = 50; - set_mxwarns = 100; - set_printback = 1; - set_undefined = 1; - - set_cprompt = xstrdup (" > "); - set_echo = 0; - set_endcmd = '.'; - set_errorbreak = 0; - set_include = 1; - set_nullline = 1; - set_more = 1; - set_prompt = xstrdup ("PSPP> "); - set_seed = NOT_LONG; - -#if __DJGPP__ || __BORLANDC__ - { - struct text_info ti; - - gettextinfo (&ti); - set_viewlength = max (ti.screenheight, 25); - set_viewwidth = max (ti.screenwidth, 79); - } -#elif HAVE_LIBTERMCAP - { - char *termtype; - int success; - - /* This code stolen from termcap.info, though modified. */ - termtype = getenv ("TERM"); - if (!termtype) - msg (FE, _("Specify a terminal type with `setenv TERM '.")); - success = tgetent (term_buffer, termtype); - if (success <= 0) - { - if (success < 0) - msg (IE, _("Could not access the termcap data base.")); - else - msg (IE, _("Terminal type `%s' is not defined."), termtype); - msg (MM, _("Assuming screen of size 79x25.")); - set_viewlength = 25; - set_viewwidth = 79; - } - else - { - set_viewlength = tgetnum ("li"); - set_viewwidth = tgetnum ("co") - 1; - } - } -#else /* !HAVE_LIBTERMCAP */ - set_viewlength = 25; - set_viewwidth = 79; -#endif /* !HAVE_LIBTERMCAP */ + init_settings(); /* log.h */ logging = 1; diff --git a/src/lexer.c b/src/lexer.c index a3b43a96..5b1b3941 100644 --- a/src/lexer.c +++ b/src/lexer.c @@ -794,12 +794,12 @@ lex_preprocess_line (void) len--; /* Check for and remove terminal dot. */ - if (len > 0 && s[len - 1] == set_endcmd) + if (len > 0 && s[len - 1] == get_endcmd() ) { dot = 1; len--; } - else if (len == 0 && set_nullline) + else if (len == 0 && get_nullline() ) dot = 1; else dot = 0; diff --git a/src/loop.c b/src/loop.c index b0c836bc..7a31234c 100644 --- a/src/loop.c +++ b/src/loop.c @@ -418,7 +418,7 @@ loop_2_trns_proc (struct trns_header * trns, struct ccase * c, if (two->flags == 0) { two->pass++; - if (two->pass > set_mxloops) + if (two->pass > get_mxloops() ) return two->loop_term; } diff --git a/src/matrix.c b/src/matrix.c index 30e3fde2..42911f18 100644 --- a/src/matrix.c +++ b/src/matrix.c @@ -107,7 +107,7 @@ vec_print (const struct vector *vec) for (i = 0; i < vec->n; i++) { - if (i % ((set_viewwidth - 4) / 8) == 0) + if (i % ((get_viewwidth() - 4) / 8) == 0) { if (i) putchar ('\n'); diff --git a/src/output.c b/src/output.c index 64c1e8e8..bdbbf30a 100644 --- a/src/output.c +++ b/src/output.c @@ -74,7 +74,7 @@ char *outp_subtitle; /* A set of OUTP_DEV_* bits indicating the devices that are disabled. */ -int disabled_devices; +static int disabled_devices; static void destroy_driver (struct outp_driver *); static void configure_driver (char *); @@ -206,12 +206,12 @@ find_defn_value (const char *key) return d->value; if (!strcmp (key, "viewwidth")) { - sprintf (buf, "%d", set_viewwidth); + sprintf (buf, "%d", get_viewwidth()); return buf; } else if (!strcmp (key, "viewlength")) { - sprintf (buf, "%d", set_viewlength); + sprintf (buf, "%d", get_viewlength()); return buf; } else @@ -455,7 +455,7 @@ outp_done (void) void outp_list_classes (void) { - int width = set_viewwidth; + int width = get_viewwidth(); struct outp_driver_class_list *c; printf (_("Driver classes:\n\t")); @@ -465,7 +465,7 @@ outp_list_classes (void) if ((int) strlen (c->class->name) + 1 > width) { printf ("\n\t"); - width = set_viewwidth - 8; + width = get_viewwidth() - 8; } else putc (' ', stdout); diff --git a/src/q2c.c b/src/q2c.c index 20b24598..13e8013e 100644 --- a/src/q2c.c +++ b/src/q2c.c @@ -338,7 +338,7 @@ find_symbol (int x) return iter; } -#if DEBUGGING +#if DEBUGGING /* Writes a printable representation of the current token to stdout. */ void @@ -346,6 +346,9 @@ dump_token (void) { switch (token) { + case T_TSTRING: + printf ("TR_STRING\t\"%s\"\n", tokstr); + break; case T_STRING: printf ("STRING\t\"%s\"\n", tokstr); break; @@ -373,15 +376,7 @@ lex_get (void) fail ("%s: Unexpected end of file.", ifn); } - if (*cp == '_' || isalnum ((unsigned char) *cp)) - { - char *dest = tokstr; - token = T_ID; - while (*cp == '_' || isalnum ((unsigned char) *cp)) - *dest++ = toupper ((unsigned char) (*cp++)); - *dest++ = '\0'; - } - else if (*cp == '"') + if (*cp == '"') { char *dest = tokstr; token = T_STRING; @@ -403,6 +398,14 @@ lex_get (void) error ("Unterminated string literal."); cp++; } + else if (*cp == '_' || isalnum ((unsigned char) *cp)) + { + char *dest = tokstr; + token = T_ID; + while (*cp == '_' || isalnum ((unsigned char) *cp)) + *dest++ = toupper ((unsigned char) (*cp++)); + *dest++ = '\0'; + } else token = *cp++; @@ -543,11 +546,22 @@ struct subcommand const char *prefix; /* Prefix for variable and constant names. */ specifier *spec; /* Array of specifiers. */ - /* SBC_STRING only. */ + /* SBC_STRING and SBC_INT only. */ char *restriction; /* Expression restricting string length. */ char *message; /* Error message. */ + int translatable; /* Error message is translatable */ + }; + +typedef struct aux_subcommand aux_subcommand; +struct aux_subcommand + { + aux_subcommand *next; /* Next in the chain. */ + char *name; /* Subcommand name. */ + char *value; /* Subcommand value */ }; +static aux_subcommand *aux_subcommands ; + /* Name of the command; i.e., DESCRIPTIVES. */ char *cmdname; @@ -751,6 +765,7 @@ parse_subcommand (subcommand *sbc) sbc->narray = 0; sbc->type = SBC_PLAIN; sbc->spec = NULL; + sbc->translatable = 0; if (match_token ('[')) { @@ -796,7 +811,29 @@ parse_subcommand (subcommand *sbc) sbc->type = SBC_VARLIST; } else if (match_id ("INTEGER")) + { sbc->type = match_id ("LIST") ? SBC_INT_LIST : SBC_INT; + if ( token == T_STRING) + { + sbc->restriction = xstrdup (tokstr); + lex_get (); + if ( match_id("N_") ) + { + skip_token('('); + force_string (); + lex_get(); + skip_token(')'); + sbc->translatable = 1; + } + else { + force_string (); + lex_get (); + } + sbc->message = xstrdup (tokstr); + } + else + sbc->restriction = NULL; + } else if (match_id ("PINT")) sbc->type = SBC_PINT; else if (match_id ("DOUBLE")) @@ -1175,71 +1212,74 @@ dump_specifier_init (const specifier *spec, const subcommand *sbc) /* Write code to initialize all variables. */ static void -dump_vars_init (void) +dump_vars_init (int persistent) { /* Loop through all the subcommands. */ { subcommand *sbc; - + for (sbc = subcommands; sbc; sbc = sbc->next) { int f = 0; dump (0, "p->sbc_%s = 0;", st_lower (sbc->name)); - switch (sbc->type) + if ( ! persistent ) { - case SBC_DBL: - case SBC_INT_LIST: - case SBC_DBL_LIST: - case SBC_CUSTOM: - /* nothing */ - break; + switch (sbc->type) + { + case SBC_DBL: + case SBC_INT_LIST: + case SBC_DBL_LIST: + case SBC_CUSTOM: + /* nothing */ + break; - case SBC_PLAIN: - case SBC_ARRAY: - { - specifier *spec; + case SBC_PLAIN: + case SBC_ARRAY: + { + specifier *spec; - for (spec = sbc->spec; spec; spec = spec->next) - if (spec->s == NULL) - { - if (sbc->type == SBC_PLAIN) - dump (0, "p->%s%s = 0;", sbc->prefix, spec->varname); - else if (f == 0) + for (spec = sbc->spec; spec; spec = spec->next) + if (spec->s == NULL) { - dump (0, "memset (p->a_%s, 0, sizeof p->a_%s);", - st_lower (sbc->name), st_lower (sbc->name)); - f = 1; + if (sbc->type == SBC_PLAIN) + dump (0, "p->%s%s = 0;", sbc->prefix, spec->varname); + else if (f == 0) + { + dump (0, "memset (p->a_%s, 0, sizeof p->a_%s);", + st_lower (sbc->name), st_lower (sbc->name)); + f = 1; + } } - } - else - dump_specifier_init (spec, sbc); - } - break; - - case SBC_VARLIST: - dump (0, "p->%sn_%s = 0;", - st_lower (sbc->prefix), st_lower (sbc->name)); - dump (0, "p->%sv_%s = NULL;", - st_lower (sbc->prefix), st_lower (sbc->name)); - break; + else + dump_specifier_init (spec, sbc); + } + break; + + case SBC_VARLIST: + dump (0, "p->%sn_%s = 0;", + st_lower (sbc->prefix), st_lower (sbc->name)); + dump (0, "p->%sv_%s = NULL;", + st_lower (sbc->prefix), st_lower (sbc->name)); + break; - case SBC_VAR: - dump (0, "p->%sv_%s = NULL;", - st_lower (sbc->prefix), st_lower (sbc->name)); - break; - - case SBC_STRING: - dump (0, "p->s_%s = NULL;", st_lower (sbc->name)); - break; - - case SBC_INT: - case SBC_PINT: - dump (0, "p->n_%s = NOT_LONG;", st_lower (sbc->name)); - break; - - default: - assert (0); + case SBC_VAR: + dump (0, "p->%sv_%s = NULL;", + st_lower (sbc->prefix), st_lower (sbc->name)); + break; + + case SBC_STRING: + dump (0, "p->s_%s = NULL;", st_lower (sbc->name)); + break; + + case SBC_INT: + case SBC_PINT: + dump (0, "p->n_%s = NOT_LONG;", st_lower (sbc->name)); + break; + + default: + assert (0); + } } } } @@ -1529,6 +1569,7 @@ dump_subcommand (const subcommand *sbc) dump (-1, "}"); outdent (); } + dump (0, "free(p->s_%s);", st_lower(sbc->name) ); dump (0, "p->s_%s = xstrdup (ds_value (&tokstr));", st_lower (sbc->name)); dump (0, "lex_get ();"); @@ -1544,10 +1585,27 @@ dump_subcommand (const subcommand *sbc) } else if (sbc->type == SBC_INT) { + dump(1, "{"); + dump(0, "int x;"); dump (1, "if (!lex_force_int ())"); dump (0, "goto lossage;"); - dump (-1, "p->n_%s = lex_integer ();", st_lower (sbc->name)); + dump (-1, "x = lex_integer ();"); dump (0, "lex_get();"); + if (sbc->restriction) + { + char buf[1024]; + dump (1, "if (!(%s))", sbc->restriction); + dump (1, "{"); + sprintf(buf,sbc->message,sbc->name); + if ( sbc->translatable ) + dump (0, "msg (SE, gettext(\"%s\"));",buf); + else + dump (0, "msg (SE, \"%s\");",buf); + dump (0, "goto lossage;"); + dump (-1, "}"); + } + dump (-1, "p->n_%s = x;", st_lower (sbc->name)); + dump (-1,"}"); } else if (sbc->type == SBC_PINT) { @@ -1581,7 +1639,7 @@ dump_subcommand (const subcommand *sbc) /* Write out entire parser. */ static void -dump_parser (void) +dump_parser (int persistent) { int f; @@ -1592,7 +1650,7 @@ dump_parser (void) make_identifier (cmdname)); dump (1, "{"); - dump_vars_init (); + dump_vars_init (persistent); dump (1, "for (;;)"); dump (1, "{"); @@ -1691,6 +1749,148 @@ dump_parser (void) dump (0, nullstr); } + +/* Write out the code to parse aux subcommand SBC. */ +static void +dump_aux_subcommand (const subcommand *sbc) +{ + if (sbc->type == SBC_PLAIN ) + { + specifier *spec; + + for (spec = sbc->spec; spec; spec = spec->next) + { + char buf[80]; + sprintf(buf,"p->%s%s",st_lower(sbc->prefix),spec->varname); + + dump (0, "msg(MM,\"%s is %%s\",",sbc->name); + dump (0, "(%s < 1000)?\"not set\":settings[%s - 1000]", buf, buf); + + dump (0, ");"); + } + } + else if (sbc->type == SBC_STRING) + { + dump (0, "msg(MM,\"%s is \\\"%%s\\\"\",p->s_%s);", sbc->name,st_lower(sbc->name) ); + } + else if (sbc->type == SBC_INT) + { + dump (0, "msg(MM,\"%s is %%ld\",p->n_%s);", sbc->name,st_lower(sbc->name) ); + } + else if (sbc->type == SBC_CUSTOM) + { + dump (0, "aux_%scustom_%s(p);",st_lower(prefix),make_identifier(sbc->name)); + } + else + assert(0); +} + + + +/* Write out auxilliary parser. */ +static void +dump_aux_parser (void) +{ + int f=0; + subcommand *sbc; + aux_subcommand *asbc; + + /* Write out English strings for all the identifiers in the symbol table. */ + { + int f, k; + symbol *sym; + char *buf = NULL; + + /* Note the squirmings necessary to make sure that the last string + is not followed by a comma (is it necessary to do that ?? ) */ + for (sym = symtab, f = k = 0; sym; sym = sym->next) + if (!sym->unique && !is_keyword (sym->name)) + { + if (!f) + { + dump (0, "/* Strings for subcommand specifiers. */"); + dump (1, "static const char *settings[]="); + dump (1, "{"); + f = 1; + } + + if (buf == NULL) + buf = xmalloc (1024); + else + dump (0, buf); + + sprintf (buf, "\"%s\",",sym->name); + } + if (buf) + { + buf[strlen (buf) - 1] = 0; + dump (0, buf); + free (buf); + } + if (f) + { + dump (-1, "};"); + dump (-1, nullstr); + } + } + + + indent = 0; + + dump (0, "static int"); + dump (0, "aux_parse_%s (struct cmd_%s *p)", make_identifier (cmdname), + make_identifier (cmdname)); + dump (1, "{"); + + dump (1, "for (;;)"); + dump (1, "{"); + + + for (sbc = subcommands; sbc; sbc = sbc->next) + { + dump (1, "%sif (%s)", f ? "else " : "", make_match (sbc->name)); + f = 1; + dump (1, "{"); + + dump_aux_subcommand (sbc); + + dump (-1, "}"); + outdent (); + } + + for (asbc = aux_subcommands ; asbc ; asbc = asbc->next) + { + dump (1, "%sif (%s)", f ? "else " : "", make_match (asbc->name)); + f = 1; + dump (1, "{"); + dump(0,"aux_%s();",make_identifier(asbc->value)); + dump (-1, "}"); + outdent (); + } + + dump (1, "if (!lex_match ('/'))"); + dump (0, "break;"); + dump (-2, "}"); + outdent (); + dump (0, nullstr); + dump (1, "if (token != '.')"); + dump (1, "{"); + dump (0, "lex_error (_(\"expecting end of command\"));"); + dump (0, "goto lossage;"); + dump (-1, "}"); + dump (0, nullstr); + dump (-1, "return 1;"); + dump (0, nullstr); + dump (-1, "lossage:"); + indent (); + dump (0, "free_%s (p);", make_identifier (cmdname)); + dump (0, "return 0;"); + dump (-1, "} /* aux_parse_%s (struct cmd_%s *p) */", + make_identifier (cmdname), make_identifier (cmdname)); + dump (0, nullstr); +} + + /* Write the output file header. */ static void dump_header (void) @@ -1714,7 +1914,7 @@ dump_header (void) /* Write out commands to free variable state. */ static void -dump_free (void) +dump_free (int persistent) { subcommand *sbc; int used; @@ -1722,22 +1922,32 @@ dump_free (void) indent = 0; used = 0; - for (sbc = subcommands; sbc; sbc = sbc->next) - if (sbc->type == SBC_STRING) - used = 1; + if ( ! persistent ) + { + for (sbc = subcommands; sbc; sbc = sbc->next) + if (sbc->type == SBC_STRING) + used = 1; + } dump (0, "static void"); dump (0, "free_%s (struct cmd_%s *p%s)", make_identifier (cmdname), make_identifier (cmdname), used ? "" : " UNUSED"); dump (1, "{"); - for (sbc = subcommands; sbc; sbc = sbc->next) - if (sbc->type == SBC_STRING) - dump (0, "free (p->s_%s);", st_lower (sbc->name)); + if ( ! persistent ) + { + + for (sbc = subcommands; sbc; sbc = sbc->next) + if (sbc->type == SBC_STRING) + dump (0, "free (p->s_%s);", st_lower (sbc->name)); + } dump (-1, "}"); + } + + /* Returns the name of a directive found on the current input line, if any, or a null pointer if none found. */ static const char * @@ -1765,6 +1975,8 @@ recognize_directive (void) return directive; } +static void aux_parse (void); + int main (int argc, char *argv[]) { @@ -1828,8 +2040,18 @@ main (int argc, char *argv[]) dump_declarations (); else if (!strcmp (directive, "functions")) { - dump_parser (); - dump_free (); + dump_parser (0); + dump_free (0); + } + else if (!strcmp (directive, "_functions")) + { + dump_parser (1); + dump_free (1); + } + else if (!strcmp (directive, "aux_functions")) + { + aux_parse(); + dump_aux_parser (); } else error ("unknown directive `%s'", directive); @@ -1840,3 +2062,33 @@ main (int argc, char *argv[]) return EXIT_SUCCESS; } +/* Parse an entire auxilliary specification. */ +static void +aux_parse (void) +{ + aux_subcommand *sbc; + aux_subcommand *prevsbc = 0 ; + get_line(); + lex_get(); + + for (;;) + { + sbc = xmalloc(sizeof(aux_subcommand)); + sbc->next = prevsbc; + sbc->name = xstrdup (tokstr); + lex_get(); + skip_token('='); + sbc->value = xstrdup (tokstr); + lex_get(); + if (token == '.') + break; + skip_token(';'); + prevsbc = sbc; + + } + /* Skip trailing star-slash line. */ + get_line (); + aux_subcommands = sbc; +} + + diff --git a/src/random.c b/src/random.c index cae3f9e7..0352b602 100644 --- a/src/random.c +++ b/src/random.c @@ -40,15 +40,40 @@ struct rng double next_normal; }; + +/* Return a `random' seed by using the real time clock */ +unsigned long +random_seed(void) +{ + time_t t; + + time(&t); + + return (unsigned long) t; +} + /* Creates a new random number generator, seeds it based on the current time, and returns it. */ struct rng * rng_create (void) { struct rng *rng; - static time_t t=0; + static unsigned long seed=0; + unsigned long s; rng = xmalloc (sizeof *rng); + + + if ( seed_is_set(&s) ) + { + seed = s; + } + else if ( seed == 0 ) + { + seed = random_seed(); + } + assert(seed); + /* if (t == 0 || set_seed_used) { if (set_seed == NOT_LONG) @@ -59,7 +84,8 @@ rng_create (void) } else t++; - rng_seed (rng, &t, sizeof t); + */ + rng_seed (rng, &seed, sizeof seed); rng->next_normal = NOT_DOUBLE; return rng; } diff --git a/src/random.h b/src/random.h index 21aef7c9..7ab72377 100644 --- a/src/random.h +++ b/src/random.h @@ -33,4 +33,8 @@ double rng_get_double_normal (struct rng *); struct rng *pspp_rng (void); +/* Return a `random' seed by using the real time clock */ +unsigned long random_seed(void); + + #endif /* random.h */ diff --git a/src/repeat.c b/src/repeat.c index bf89fede..9141684c 100644 --- a/src/repeat.c +++ b/src/repeat.c @@ -548,7 +548,7 @@ perform_DO_REPEAT_substitutions (void) while (ds_length (&getl_buf) > 0 && isspace ((unsigned char) ds_end (&getl_buf)[-1])) ds_truncate (&getl_buf, ds_length (&getl_buf) - 1); - if (ds_length (&getl_buf) > 0 && ds_end (&getl_buf)[-1] == set_endcmd) + if (ds_length (&getl_buf) > 0 && ds_end (&getl_buf)[-1] == get_endcmd() ) { dot = 1; ds_truncate (&getl_buf, ds_length (&getl_buf) - 1); @@ -592,7 +592,7 @@ perform_DO_REPEAT_substitutions (void) } } if (dot) - ds_putchar (&output, (unsigned char) set_endcmd); + ds_putchar (&output, get_endcmd() ); ds_destroy (&getl_buf); getl_buf = output; diff --git a/src/set.q b/src/set.q index 2d90ac7e..f297bc84 100644 --- a/src/set.q +++ b/src/set.q @@ -73,58 +73,55 @@ #include "output.h" #include "var.h" #include "format.h" +#include "copyleft.h" +#include "random.h" + +#include "signal.h" + +#if HAVE_LIBTERMCAP +#if HAVE_TERMCAP_H +#include +#else /* !HAVE_TERMCAP_H */ +int tgetent (char *, const char *); +int tgetnum (const char *); +#endif /* !HAVE_TERMCAP_H */ +#endif /* !HAVE_LIBTERMCAP */ + +static int set_errors; +static int set_messages; +static int set_results; + +static double set_blanks=SYSMIS; + +static struct fmt_spec set_format={FMT_F,8,2}; + +static struct set_cust_currency set_cc[5]; + +static char *set_journal; +static int set_journaling; + +static int set_listing=1; -double set_blanks; -int set_compression; -struct set_cust_currency set_cc[5]; -int set_cpi; -char *set_cprompt; -int set_decimal; -int set_grouping; -char *set_dprompt; -int set_echo; -int set_endcmd; -int set_errorbreak; -int set_errors, set_messages, set_results; -struct fmt_spec set_format; -int set_headers; -int set_include; -char *set_journal; -int set_journaling; -int set_lpi; -int set_messages; -int set_mexpand; -int set_miterate; -int set_mnest; -int set_more; -int set_mprint; -int set_mxerrs; -int set_mxloops; -int set_mxwarns; -int set_nullline; -int set_printback; -int set_output = 1; #if !USE_INTERNAL_PAGER -char *set_pager; +static char *set_pager=0; #endif /* !USE_INTERNAL_PAGER */ -int set_printer; -char *set_prompt; -char *set_results_file; -int set_safer; -int set_scompression; -int set_screen; -long set_seed; -int set_seed_used; -int set_testing_mode; -int set_undefined; -int set_viewlength; -int set_viewwidth; -size_t set_max_workspace = 4L * 1024 * 1024; +static unsigned long set_seed; +static int seed_flag=0; + +static int long_view=0; +int set_testing_mode=0; +static int set_viewlength; +static int set_viewwidth; + +void aux_show_warranty(void); +void aux_show_copying(void); + +static const char *route_to_string(int routing); static void set_routing (int q, int *setting); + static int set_ccx (const char *cc_string, struct set_cust_currency * cc, int cc_name); - /* (specification) "SET" (stc_): automenu=automenu:on/off; @@ -140,9 +137,9 @@ static int set_ccx (const char *cc_string, struct set_cust_currency * cc, cce=string; color=custom; compression=compress:on/off; - cpi=integer; + cpi=integer "x>0" "%s must be greater than 0"; cprompt=string; - decimal=dec:dot/_comma; + decimal=dec:dot/comma; disk=custom; dprompt=string; echo=echo:on/off; @@ -161,16 +158,16 @@ static int set_ccx (const char *cc_string, struct set_cust_currency * cc, listing=custom; log=custom; lowres=lores:auto/on/off; - lpi=integer; + lpi=integer "x>0" "% must be greater than 0"; menus=menus:standard/extended; messages=messages:on/off/terminal/listing/both/none; mexpand=mexp:on/off; - miterate=integer; - mnest=integer; + miterate=integer "x>0" "%s must be greater than 0"; + mnest=integer "x>0" "%s must be greater than 0"; more=more:on/off; mprint=mprint:on/off; - mxerrs=integer; - mxloops=integer; + mxerrs=integer "x >= 1" "%s must be at least 1"; + mxloops=integer "x >=1" "%s must be at least 1"; mxmemory=integer; mxwarns=integer; nulline=null:on/off; @@ -191,63 +188,181 @@ static int set_ccx (const char *cc_string, struct set_cust_currency * cc, tbfonts=string; undefined=undef:warn/nowarn; viewlength=custom; - viewwidth=integer; + viewwidth=custom; width=custom; workdev=custom; - workspace=integer; + workspace=integer "x>=1024" "%s must be at least 1 MB"; xsort=xsort:yes/no. */ /* (declarations) */ -/* (functions) */ -int internal_cmd_set (void); +/* (_functions) */ + +static int +aux_stc_custom_blanks(struct cmd_set *cmd UNUSED) +{ + if ( set_blanks == SYSMIS ) + msg(MM, "SYSMIS"); + else + msg(MM, "%g", set_blanks); + return 0; +} + + +static int +aux_stc_custom_color(struct cmd_set *cmd UNUSED) +{ + msg (MW, _("%s is obsolete."),"COLOR"); + return 0; +} + +static int +aux_stc_custom_listing(struct cmd_set *cmd UNUSED) +{ + if ( set_listing ) + msg(MM, _("LISTING is ON")); + else + msg(MM, _("LISTING is OFF")); + + return 0; +} + +static int +aux_stc_custom_disk(struct cmd_set *cmd UNUSED) +{ + return aux_stc_custom_listing(cmd); +} + +static int +aux_stc_custom_format(struct cmd_set *cmd UNUSED) +{ + msg(MM, fmt_to_string(&set_format)); + return 0; +} + + + +static int +aux_stc_custom_journal(struct cmd_set *cmd UNUSED) +{ + if (set_journaling) + msg(MM, set_journal); + else + msg(MM, _("Journalling is off") ); + + return 0; +} + +static int +aux_stc_custom_length(struct cmd_set *cmd UNUSED) +{ + msg(MM, "%d", set_viewlength); + return 0; +} + +static int +aux_stc_custom_log(struct cmd_set *cmd ) +{ + return aux_stc_custom_journal (cmd); +} + +static int +aux_stc_custom_pager(struct cmd_set *cmd UNUSED) +{ +#if !USE_INTERNAL_PAGER + if ( set_pager ) + msg(MM, set_pager); + else + msg(MM, "No pager"); +#else /* USE_INTERNAL_PAGER */ + msg (MM, "Internal pager."); +#endif /* USE_INTERNAL_PAGER */ + + return 0; +} + +static int +aux_stc_custom_rcolor(struct cmd_set *cmd UNUSED) +{ + msg (SW, _("%s is obsolete."),"RCOLOR"); + return 0; +} + +static int +aux_stc_custom_results(struct cmd_set *cmd UNUSED) +{ + + msg(MM, route_to_string(set_results) ); + + return 0; +} + +static int +aux_stc_custom_seed(struct cmd_set *cmd UNUSED) +{ + msg(MM, "%ld",set_seed); + return 0; +} + +static int +aux_stc_custom_viewlength(struct cmd_set *cmd UNUSED) +{ + msg(MM, "%d", set_viewlength); + return 0; +} + +static int +aux_stc_custom_viewwidth(struct cmd_set *cmd UNUSED) +{ + msg(MM, "%d", set_viewwidth); + return 0; +} + +static int +aux_stc_custom_width(struct cmd_set *cmd UNUSED) +{ + msg(MM, "%d", set_viewwidth); + return 0; +} + +static int +aux_stc_custom_workdev(struct cmd_set *cmd UNUSED) +{ + msg (SW, _("%s is obsolete."),"WORKDEV"); + return 0; +} + + + +/* (aux_functions) + warranty=show_warranty; + copying=show_copying. +*/ + + +static struct cmd_set cmd; + +int +cmd_show (void) +{ + lex_match_id ("SHOW"); + + if (!aux_parse_set (&cmd)) + return CMD_FAILURE; + + return CMD_SUCCESS; +} int cmd_set (void) { - struct cmd_set cmd; lex_match_id ("SET"); if (!parse_set (&cmd)) return CMD_FAILURE; - if (cmd.sbc_block) - msg (SW, _("%s is obsolete."),"BLOCK"); - - if (cmd.sbc_boxstring) - msg (SW, _("%s is obsolete."),"BOXSTRING"); - - if (cmd.compress != -1) - { - msg (MW, _("Active file compression is not yet implemented " - "(and probably won't be).")); - set_compression = cmd.compress == STC_OFF ? 0 : 1; - } - if (cmd.scompress != -1) - set_scompression = cmd.scompress == STC_OFF ? 0 : 1; - if (cmd.n_cpi != NOT_LONG) - { - if (cmd.n_cpi <= 0) - msg (SE, _("CPI must be greater than 0.")); - else - set_cpi = cmd.n_cpi; - } - if (cmd.sbc_histogram) - msg (MW, _("%s is obsolete."),"HISTOGRAM"); - if (cmd.n_lpi != NOT_LONG) - { - if (cmd.n_lpi <= 0) - msg (SE, _("LPI must be greater than 0.")); - else - set_lpi = cmd.n_lpi; - } - - /* Windows compatible syntax. */ - if (cmd.sbc_case) - msg (SW, _("CASE is not implemented and probably won't be. If you care, " - "complain about it.")); if (cmd.sbc_cca) set_ccx (cmd.s_cca, &set_cc[0], 'A'); if (cmd.sbc_ccb) @@ -258,135 +373,60 @@ cmd_set (void) set_ccx (cmd.s_ccd, &set_cc[3], 'D'); if (cmd.sbc_cce) set_ccx (cmd.s_cce, &set_cc[4], 'E'); - if (cmd.dec != -1) - { - set_decimal = cmd.dec == STC_DOT ? '.' : ','; - set_grouping = cmd.dec == STC_DOT ? ',' : '.'; - } - if (cmd.errors != -1) + + if (cmd.sbc_errors) set_routing (cmd.errors, &set_errors); - if (cmd.headers != -1) - set_headers = cmd.headers == STC_NO ? 0 : (cmd.headers == STC_YES ? 1 : 2); - if (cmd.messages != -1) + if (cmd.sbc_messages) set_routing (cmd.messages, &set_messages); - if (cmd.mexp != -1) - set_mexpand = cmd.mexp == STC_OFF ? 0 : 1; - if (cmd.n_miterate != NOT_LONG) - { - if (cmd.n_miterate > 0) - set_miterate = cmd.n_miterate; - else - msg (SE, _("Value for MITERATE (%ld) must be greater than 0."), - cmd.n_miterate); - } - if (cmd.n_mnest != NOT_LONG) - { - if (cmd.n_mnest > 0) - set_mnest = cmd.n_mnest; - else - msg (SE, _("Value for MNEST (%ld) must be greater than 0."), - cmd.n_mnest); - } - if (cmd.mprint != -1) - set_mprint = cmd.mprint == STC_OFF ? 0 : 1; - if (cmd.n_mxerrs != NOT_LONG) - { - if (set_mxerrs < 1) - msg (SE, _("MXERRS must be at least 1.")); - else - set_mxerrs = cmd.n_mxerrs; - } - if (cmd.n_mxloops != NOT_LONG) - { - if (set_mxloops < 1) - msg (SE, _("MXLOOPS must be at least 1.")); - else - set_mxloops = cmd.n_mxloops; - } - if (cmd.n_mxmemory != NOT_LONG) - msg (SE, _("%s is obsolete."),"MXMEMORY"); - if (cmd.n_mxwarns != NOT_LONG) - set_mxwarns = cmd.n_mxwarns; - if (cmd.prtbck != -1) - set_printback = cmd.prtbck == STC_OFF ? 0 : 1; - if (cmd.s_scripttab) - msg (SE, _("%s is obsolete."),"SCRIPTTAB"); - if (cmd.s_tbfonts) - msg (SW, _("%s is not yet implemented."),"TBFONTS"); - if (cmd.s_tb1) - msg (SW, _("%s is not yet implemented."),"TB1"); - if (cmd.undef != -1) - set_undefined = cmd.undef == STC_NOWARN ? 0 : 1; - if (cmd.n_workspace != NOT_LONG) - { - if (cmd.n_workspace < 1024) - msg (SE, _("Workspace limit must be at least 1 MB.")); - else - { - if (cmd.n_workspace > (size_t) -1 / 1024) - set_max_workspace = -1; - else - set_max_workspace = 1024 * cmd.n_workspace; - } - } /* PC+ compatible syntax. */ - if (cmd.scrn != -1) + if (cmd.sbc_screen) outp_enable_device (cmd.scrn == STC_OFF ? 0 : 1, OUTP_DEV_SCREEN); + if (cmd.sbc_printer) + outp_enable_device (cmd.prtr == STC_OFF ? 0 : 1, OUTP_DEV_PRINTER); - if (cmd.automenu != -1) + if (cmd.sbc_automenu ) msg (SW, _("%s is obsolete."),"AUTOMENU"); - if (cmd.beep != -1) + if (cmd.sbc_beep ) msg (SW, _("%s is obsolete."),"BEEP"); - - if (cmd.s_cprompt) - { - free (set_cprompt); - set_cprompt = cmd.s_cprompt; - cmd.s_cprompt = NULL; - } - if (cmd.s_dprompt) - { - free (set_dprompt); - set_dprompt = cmd.s_dprompt; - cmd.s_dprompt = NULL; - } - if (cmd.echo != -1) - set_echo = cmd.echo == STC_OFF ? 0 : 1; - if (cmd.s_endcmd) - set_endcmd = cmd.s_endcmd[0]; - if (cmd.eject != -1) + if (cmd.sbc_block) + msg (SW, _("%s is obsolete."),"BLOCK"); + if (cmd.sbc_boxstring) + msg (SW, _("%s is obsolete."),"BOXSTRING"); + if (cmd.sbc_eject ) msg (SW, _("%s is obsolete."),"EJECT"); - if (cmd.errbrk != -1) - set_errorbreak = cmd.errbrk == STC_OFF ? 0 : 1; - if (cmd.helpwin != -1) + if (cmd.sbc_helpwindows ) msg (SW, _("%s is obsolete."),"HELPWINDOWS"); - if (cmd.inc != -1) - set_include = cmd.inc == STC_OFF ? 0 : 1; - if (cmd.menus != -1) + if (cmd.sbc_histogram) + msg (MW, _("%s is obsolete."),"HISTOGRAM"); + if (cmd.sbc_menus ) msg (MW, _("%s is obsolete."),"MENUS"); - if (cmd.null != -1) - set_nullline = cmd.null == STC_OFF ? 0 : 1; - if (cmd.more != -1) - set_more = cmd.more == STC_OFF ? 0 : 1; - if (cmd.prtr != -1) - outp_enable_device (cmd.prtr == STC_OFF ? 0 : 1, OUTP_DEV_PRINTER); - if (cmd.s_prompt) - { - free (set_prompt); - set_prompt = cmd.s_prompt; - cmd.s_prompt = NULL; - } - if (cmd.ptrans != -1) + if (cmd.sbc_ptranslate ) msg (SW, _("%s is obsolete."),"PTRANSLATE"); - if (cmd.runrev != -1) + if (cmd.sbc_runreview ) msg (SW, _("%s is obsolete."),"RUNREVIEW"); - if (cmd.safe == STC_ON) - set_safer = 1; - if (cmd.xsort != -1) + if (cmd.sbc_xsort ) msg (SW, _("%s is obsolete."),"XSORT"); + if (cmd.sbc_mxmemory ) + msg (SE, _("%s is obsolete."),"MXMEMORY"); + if (cmd.sbc_scripttab) + msg (SE, _("%s is obsolete."),"SCRIPTTAB"); - free_set (&cmd); + if (cmd.sbc_tbfonts) + msg (SW, _("%s is not yet implemented."),"TBFONTS"); + if (cmd.sbc_tb1 && cmd.s_tb1) + msg (SW, _("%s is not yet implemented."),"TB1"); + + /* Windows compatible syntax. */ + if (cmd.sbc_case) + msg (SW, _("CASE is not implemented and probably won't be. " + "If you care, complain about it.")); + + if (cmd.sbc_compression) + { + msg (MW, _("Active file compression is not yet implemented " + "(and probably won't be).")); + } return CMD_SUCCESS; } @@ -463,6 +503,50 @@ set_ccx (const char *cc_string, struct set_cust_currency * cc, int cc_name) return 1; } + +const char * +route_to_string(int routing) +{ + static char s[255]; + + s[0]='\0'; + + if ( routing == 0 ) + { + strcpy(s, _("None")); + return s; + } + + if (routing & SET_ROUTE_DISABLE ) + { + strcpy(s, _("Disabled") ); + return s; + } + + if (routing & SET_ROUTE_SCREEN) + strcat(s, _("Screen") ); + + if (routing & SET_ROUTE_LISTING) + { + if(s[0] != '\0') + strcat(s,", "); + + strcat(s, _("Listing") ); + } + + if (routing & SET_ROUTE_OTHER) + { + if(s[0] != '\0') + strcat(s,", "); + strcat(s, _("Other") ); + } + + + return s; + + +} + /* Sets *SETTING, which is a combination of SET_ROUTE_* bits that indicates what to do with some sort of output, to the value indicated by Q, which is a value provided by the input parser. */ @@ -471,10 +555,10 @@ set_routing (int q, int *setting) { switch (q) { - case STC_ON: + case STC_OFF: *setting |= SET_ROUTE_DISABLE; break; - case STC_OFF: + case STC_ON: *setting &= ~SET_ROUTE_DISABLE; break; case STC_TERMINAL: @@ -570,7 +654,9 @@ stc_custom_length (struct cmd_set *cmd UNUSED) lex_get (); } - /* FIXME: Set page length. */ + if ( page_length != -1 ) + set_viewlength = page_length; + return 1; } @@ -620,7 +706,7 @@ stc_custom_seed (struct cmd_set *cmd UNUSED) { lex_match ('='); if (lex_match_id ("RANDOM")) - set_seed = NOT_LONG; + set_seed = random_seed(); else { if (!lex_force_num ()) @@ -628,7 +714,8 @@ stc_custom_seed (struct cmd_set *cmd UNUSED) set_seed = tokval; lex_get (); } - set_seed_used=1; + seed_flag = 1; + return 1; } @@ -655,7 +742,7 @@ stc_custom_width (struct cmd_set *cmd UNUSED) lex_get (); } - /* FIXME: Set page width. */ + set_viewwidth = page_width; return 1; } @@ -755,29 +842,29 @@ stc_custom_listing (struct cmd_set *cmd UNUSED) { lex_match ('='); if (lex_match_id ("ON") || lex_match_id ("YES")) - outp_enable_device (1, OUTP_DEV_LISTING); + set_listing = 1; else if (lex_match_id ("OFF") || lex_match_id ("NO")) - outp_enable_device (0, OUTP_DEV_LISTING); + set_listing = 0; else { /* FIXME */ + return 0; } + outp_enable_device (set_listing, OUTP_DEV_LISTING); - return 0; + return 1; } static int stc_custom_disk (struct cmd_set *cmd UNUSED) { - stc_custom_listing (cmd); - return 0; + return stc_custom_listing (cmd); } static int stc_custom_log (struct cmd_set *cmd UNUSED) { - stc_custom_journal (cmd); - return 0; + return stc_custom_journal (cmd); } static int @@ -829,6 +916,20 @@ stc_custom_rcolor (struct cmd_set *cmd UNUSED) return 1; } +static int +stc_custom_viewwidth (struct cmd_set *cmd UNUSED) +{ + lex_match ('='); + + if ( !lex_force_int() ) + return 0; + + set_viewwidth = lex_integer(); + lex_get(); + + return 1; +} + static int stc_custom_viewlength (struct cmd_set *cmd UNUSED) { @@ -877,6 +978,353 @@ stc_custom_workdev (struct cmd_set *cmd UNUSED) return 0; } + + +static void +set_viewport(void) +{ +#if HAVE_LIBTERMCAP + static char term_buffer[16384]; +#endif + + /* Workable defaults before we determine the real terminal size. */ + set_viewwidth = 79; + set_viewlength = 24; + + + +#if __DJGPP__ || __BORLANDC__ + { + struct text_info ti; + + gettextinfo (&ti); + set_viewlength = max (ti.screenheight, 25); + set_viewwidth = max (ti.screenwidth, 79); + } +#elif HAVE_LIBTERMCAP + { + char *termtype; + int success; + + /* This code stolen from termcap.info, though modified. */ + termtype = getenv ("TERM"); + if (!termtype) + msg (FE, _("Specify a terminal type with `setenv TERM '.")); + + success = tgetent (term_buffer, termtype); + if (success <= 0) + { + if (success < 0) + msg (IE, _("Could not access the termcap data base.")); + else + msg (IE, _("Terminal type `%s' is not defined."), termtype); + } + else + { + set_viewlength = tgetnum ("li"); + set_viewwidth = tgetnum ("co") - 1; + } + } +#else + { + char *s; + + /* Try the environment variables */ + s = getenv("COLUMNS"); + if ( s ) set_viewwidth = atoi(s); + + s = getenv("LINES"); + if ( s ) set_viewlength = atoi(s); + } +#endif /* !HAVE_LIBTERMCAP */ + +} + +/* Public functions */ + +void +init_settings(void) +{ + cmd.s_dprompt = xstrdup (_("data> ")); + cmd.s_cprompt = xstrdup (" > "); + cmd.s_prompt = xstrdup ("PSPP> "); + cmd.s_endcmd = xstrdup ("."); + + assert(cmd.safe == 0 ); + cmd.safe = STC_OFF; + + cmd.dec = STC_DOT; + cmd.n_cpi = 6; + cmd.n_lpi = 10; + cmd.echo = STC_OFF; + cmd.more = STC_ON; + cmd.headers = STC_YES; + cmd.errbrk = STC_OFF; + + cmd.scompress = STC_OFF; + cmd.undef = STC_WARN; + cmd.mprint = STC_ON ; + cmd.prtbck = STC_ON ; + cmd.null = STC_ON ; + cmd.inc = STC_ON ; + + set_journal = xstrdup ("pspp.jnl"); + set_journaling = 1; + + cmd.n_mxwarns = 100; + cmd.n_mxerrs = 100; + cmd.n_mxloops = 1; + cmd.n_workspace = 4L * 1024 * 1024; + + +#if !USE_INTERNAL_PAGER + { + char *pager; + + pager = getenv ("STAT_PAGER"); + if (!pager) set_pager = getenv ("PAGER"); + + if (pager) + set_pager = xstrdup (pager); +#if DEFAULT_PAGER + else + set_pager = xstrdup (DEFAULT_PAGER); +#endif /* DEFAULT_PAGER */ + } +#endif /* !USE_INTERNAL_PAGER */ + + + { + int i; + + for (i = 0; i < 5; i++) + { + struct set_cust_currency *cc = &set_cc[i]; + strcpy (cc->buf, "-"); + cc->neg_prefix = cc->buf; + cc->prefix = &cc->buf[1]; + cc->suffix = &cc->buf[1]; + cc->neg_suffix = &cc->buf[1]; + cc->decimal = '.'; + cc->grouping = ','; + } + } + + if ( ! long_view ) + { + set_viewport(); + signal (SIGWINCH,set_viewport); + } + +} + +void +force_long_view(void) +{ + long_view = 1; + set_viewwidth=9999; +} + +int +safer_mode(void) +{ + return !(cmd.safe != STC_ON) ; +} + + +/* Set safer mode */ +void +make_safe(void) +{ + cmd.safe = STC_ON; +} + + +char +get_decimal(void) +{ + return (cmd.dec == STC_DOT ? '.' : ','); +} + + +char +get_grouping(void) +{ + return (cmd.dec == STC_DOT ? ',' : '.'); +} + + +char * +get_prompt(void) +{ + return cmd.s_prompt; +} + +char * +get_dprompt(void) +{ + return cmd.s_dprompt; +} + +char * +get_cprompt(void) +{ + return cmd.s_cprompt; +} + + +int +get_echo(void) +{ + return (cmd.echo != STC_OFF ); +} + + +int +get_errorbreak(void) +{ + return (cmd.errbrk != STC_OFF); +} + + +int +get_scompression(void) +{ + return (cmd.scompress != STC_OFF ); +} + +int +get_undefined(void) +{ + return (cmd.undef != STC_NOWARN); +} + +int +get_mxwarns(void) +{ + return cmd.n_mxwarns; +} + +int +get_mxerrs(void) +{ + return cmd.n_mxerrs; +} + +int +get_mprint(void) +{ + return ( cmd.mprint != STC_OFF ); +} + +int +get_printback(void) +{ + return (cmd.prtbck != STC_OFF ); +} + +int +get_mxloops(void) +{ + return cmd.n_mxloops; +} + +int +get_nullline(void) +{ + return (cmd.null != STC_OFF ); +} + +int +get_include(void) +{ + return (cmd.inc != STC_OFF ); +} + +unsigned char +get_endcmd(void) +{ + return cmd.s_endcmd[0]; +} + + +size_t +get_max_workspace(void) +{ + return cmd.n_workspace; +} + +double +get_blanks(void) +{ + return set_blanks; +} + +struct fmt_spec +get_format(void) +{ + return set_format; +} + +/* CCA through CCE. */ +const struct set_cust_currency * +get_cc(int i) +{ + return &set_cc[i]; +} + +void +aux_show_warranty(void) +{ + msg(MM,lack_of_warranty); +} + +void +aux_show_copying(void) +{ + msg(MM,copyleft); +} + + +int +get_viewlength(void) +{ + return set_viewlength; +} + +int +get_viewwidth(void) +{ + return set_viewwidth; +} + +const char * +get_pager(void) +{ + return set_pager; +} + +/* Return 1 if the seed has been set since the last time this function + was called. + Fill the value pointed to by seed with the seed . +*/ +int +seed_is_set(unsigned long *seed) +{ + int result = 0; + + *seed = set_seed ; + + if ( seed_flag ) + result = 1; + + seed_flag = 0; + + return result; + +} + + /* Local Variables: mode: c diff --git a/src/settings.h b/src/settings.h index 30256ae3..5ca01526 100644 --- a/src/settings.h +++ b/src/settings.h @@ -101,9 +101,6 @@ #include #include -/* The value that blank numeric fields are set to when read in; - normally SYSMIS. */ -extern double set_blanks; /* Describes one custom currency specification. */ struct set_cust_currency @@ -117,35 +114,8 @@ struct set_cust_currency int grouping; /* Grouping character. */ }; -/* CCA through CCE. */ -extern struct set_cust_currency set_cc[5]; - -/* Whether the active file should be compressed. */ -extern int set_compression; - -/* Characters per inch (horizontal). */ -extern int set_cpi; -/* Continuation prompt. */ -extern char *set_cprompt; - -/* The character used for a decimal point: ',' or '.'. Only respected - for data input and output. */ -extern int set_decimal; -/* The character used for grouping in numbers: '.' or ','; the - opposite of set_decimal. Only used in COMMA data input and - output. */ -extern int set_grouping; - -/* Prompt used for lines between BEGIN DATA and END DATA. */ -extern char *set_dprompt; - -/* Whether we echo commands to the listing file/printer; 0=no, 1=yes. */ -extern int set_echo; - -/* The character used to terminate commands. */ -extern int set_endcmd; /* Types of routing. */ enum @@ -156,103 +126,112 @@ enum SET_ROUTE_DISABLE = 010 /* Disable output--overrides all other bits. */ }; -/* Routing for errors, messages, and procedure results. */ -extern int set_errors, set_messages, set_results; -/* Whether an error stops execution; 0=no, 1=yes. */ -extern int set_errorbreak; +/* Set view width to a very long value, and prevent it from + ever changing */ +void force_long_view(void); -/* Default format for variables created by transformations and by DATA - LIST {FREE,LIST}. */ -extern struct fmt_spec set_format; -/* I don't know what this setting means; 0=no, 1=yes, 2=blank. */ -extern int set_headers; +/* Requested "view length" in lines. */ +int get_viewlength(void); -/* If set_echo is on, whether commands from include files are echoed; - * 0=no, 1=yes. */ -extern int set_include; +/* Screen width. */ +int get_viewwidth(void); -/* Journal file's name. */ -extern char *set_journal; +void init_settings(void) ; -/* Whether we're journaling. */ -extern int set_journaling; +/* Whether pspp can erase and overwrite files */ +int safer_mode(void); -/* Lines per inch (vertical). */ -extern int set_lpi; +/* Put into safer mode */ +void make_safe(void); -/* 0=macro expansion is disabled, 1=macro expansion is enabled. */ -extern int set_mexpand; +/* The character used for a decimal point: ',' or '.'. Only respected + for data input and output. */ +char get_decimal(void); -/* Maximum number of iterations in a macro loop. */ -extern int set_miterate; +/* The character used for grouping in numbers: '.' or ','; the + opposite of set_decimal. Only used in COMMA data input and + output. */ -/* Maximum nesting level for macros. */ -extern int set_mnest; +char get_grouping(void); -/* Whether we pause after each screen of output; 0=no, 1=yes. */ -extern int set_more; +char *get_prompt(void); -/* Independent of set_printback, controls whether the commands - generated by macro invocations are displayed. */ -extern int set_mprint; +/* Prompt used for lines between BEGIN DATA and END DATA. */ +char *get_dprompt(void); -/* Maximum number of errors. */ -extern int set_mxerrs; +/* Continuation prompt. */ +char *get_cprompt(void); -/* Implied limit of unbounded loop. */ -extern int set_mxloops; -/* Maximum number of warnings + errors. */ -extern int set_mxwarns; +/* Whether we echo commands to the listing file/printer;*/ +int get_echo(void); -/* Whether a blank line is a command terminator; 0=no, 1=yes. */ -extern int set_nullline; +/* If echo is on, whether commands from include files are echoed */ +int get_include(void); -/* Whether commands are written to the display; 0=off, 1=on. */ -extern int set_printback; +/* Whether an error stops execution; */ +int get_errorbreak(void); -#if !USE_INTERNAL_PAGER -/* Name of the pager program. */ -extern char *set_pager; -#endif /* !USE_INTERNAL_PAGER */ - -/* The command prompt. */ -extern char *set_prompt; +/* Whether save files should be compressed by default. */ +int get_scompression(void); -/* Name of the results file. */ -extern char *set_results_file; +/* Whether to warn on undefined values in numeric data. */ +int get_undefined(void); -/* Whether to allow certain unsafe operations. Cannot be unset after - it is set. */ -extern int set_safer; +/* Maximum number of warnings + errors. */ +int get_mxwarns(void); -/* Whether save files should be compressed by default. */ -extern int set_scompression; +/* Maximum number of errors. */ +int get_mxerrs(void); -/* The random number seed; NOT_LONG if we want a "random" random - number seed. */ -extern long set_seed; +/* 0=macro expansion is disabled, 1=macro expansion is enabled. */ +int get_mexpand(void); -/* 1=The user has modified or made use of the random number seed. */ -extern int set_seed_used; +/* Whether commands are written to the display */ +int get_printback(void); -/* 1=Turn on some heuristics that make testing PSPP for correct - workings a little easier. */ -extern int set_testing_mode; +/* Independent of get_printback, controls whether the commands + generated by macro invocations are displayed. */ +int get_mprint(void); -/* Whether to warn on undefined values in numeric data. */ -extern int set_undefined; +/* Implied limit of unbounded loop. */ +int get_mxloops(void); -/* Requested "view length" in lines. */ -extern int set_viewlength; +/* Whether a blank line is a command terminator */ +int get_nullline(void); -/* Screen width. */ -extern int set_viewwidth; +/* The character used to terminate commands. */ +unsigned char get_endcmd(void); /* Approximate maximum amount of memory to use for cases, in bytes. */ -extern size_t set_max_workspace; +size_t get_max_workspace(void); + +/* The value that blank numeric fields are set to when read in; + normally SYSMIS. */ +double get_blanks(void); + + +/* Default format for variables created by transformations and by DATA + LIST {FREE,LIST}. */ +struct fmt_spec get_format(void); + +/* CCA through CCE. */ +const struct set_cust_currency *get_cc(int i); + +#if !USE_INTERNAL_PAGER +/* Name of the pager program. */ +const char *get_pager(void); +#endif /* !USE_INTERNAL_PAGER */ + + +/* Return 1 if the seed has been set since the last time this function + was called. + Fill the value pointed to by seed with the seed . +*/ +int seed_is_set(unsigned long *seed); + #endif /* !settings_h */ diff --git a/src/sort.c b/src/sort.c index 5fd2eaec..ac70da11 100644 --- a/src/sort.c +++ b/src/sort.c @@ -231,7 +231,7 @@ do_internal_sort (struct sort_cases_pgm *scp, int separate) if (case_cnt <= 0) return isrt; - if (case_cnt > set_max_workspace / sizeof *case_array) + if (case_cnt > get_max_workspace() / sizeof *case_array) goto error; case_list = storage_source_get_cases (vfm_source); @@ -780,7 +780,7 @@ allocate_cases (struct initial_run_state *irs) + sizeof *irs->free_list + irs->xsrt->scp->case_size + 4 * sizeof (void *)); - max_cases = set_max_workspace / approx_case_cost; + max_cases = get_max_workspace() / approx_case_cost; irs->records = malloc (sizeof *irs->records * max_cases); for (i = 0; i < max_cases; i++) { @@ -806,7 +806,7 @@ allocate_cases (struct initial_run_state *irs) msg (SE, _("Out of memory. Could not allocate room for minimum of %d " "cases of %d bytes each. (PSPP workspace is currently " "restricted to a maximum of %d KB.)"), - MIN_BUFFER_TOTAL_SIZE_RECS, approx_case_cost, set_max_workspace / 1024); + MIN_BUFFER_TOTAL_SIZE_RECS, approx_case_cost, get_max_workspace() / 1024); return 0; } return 1; @@ -1019,7 +1019,7 @@ merge (struct external_sort *xsrt) /* Allocate as many cases as possible into cases. */ approx_case_cost = (sizeof *mrg.cases + xsrt->scp->case_size + 4 * sizeof (void *)); - mrg.case_cnt = set_max_workspace / approx_case_cost; + mrg.case_cnt = get_max_workspace() / approx_case_cost; mrg.cases = malloc (sizeof *mrg.cases * mrg.case_cnt); if (mrg.cases == NULL) goto done; @@ -1037,7 +1037,7 @@ merge (struct external_sort *xsrt) msg (SE, _("Out of memory. Could not allocate room for minimum of %d " "cases of %d bytes each. (PSPP workspace is currently " "restricted to a maximum of %d KB.)"), - MIN_BUFFER_TOTAL_SIZE_RECS, approx_case_cost, set_max_workspace / 1024); + MIN_BUFFER_TOTAL_SIZE_RECS, approx_case_cost, get_max_workspace() / 1024); return 0; } diff --git a/src/str.c b/src/str.c index 8912f3e5..98a8e52e 100644 --- a/src/str.c +++ b/src/str.c @@ -350,40 +350,50 @@ ds_concat_buffer (struct string *st, const char *buf, size_t len) st->length += len; } +void ds_vprintf (struct string *st, const char *format, va_list args); + + /* Formats FORMAT as a printf string and appends the result to ST. */ void ds_printf (struct string *st, const char *format, ...) +{ + va_list args; + + va_start (args, format); + ds_vprintf(st,format,args); + va_end (args); + +} + +/* Formats FORMAT as a printf string and appends the result to ST. */ +void +ds_vprintf (struct string *st, const char *format, va_list args) { /* Fscking glibc silently changed behavior between 2.0 and 2.1. Fsck fsck fsck. Before, it returned -1 on buffer overflow. Now, it returns the number of characters (not bytes) that would have been written. */ - va_list args; int avail, needed; - va_start (args, format); avail = st->size - st->length + 1; needed = vsnprintf (st->string + st->length, avail, format, args); - va_end (args); + if (needed >= avail) { ds_extend (st, st->length + needed); - va_start (args, format); vsprintf (st->string + st->length, format, args); - va_end (args); } else while (needed == -1) { ds_extend (st, (st->size + 1) * 2); avail = st->size - st->length + 1; - - va_start (args, format); + needed = vsnprintf (st->string + st->length, avail, format, args); - va_end (args); + } st->length += needed; diff --git a/src/str.h b/src/str.h index 719b503b..1951507c 100644 --- a/src/str.h +++ b/src/str.h @@ -180,6 +180,7 @@ int ds_get_config_line (FILE *, struct string *, struct file_locator *); void ds_putchar (struct string *, int ch); void ds_concat (struct string *, const char *); void ds_concat_buffer (struct string *, const char *buf, size_t len); +void ds_vprintf (struct string *st, const char *format, va_list args); void ds_printf (struct string *, const char *, ...) PRINTF_FORMAT (2, 3); diff --git a/src/vfm.c b/src/vfm.c index 4a693bc2..0c152c09 100644 --- a/src/vfm.c +++ b/src/vfm.c @@ -492,7 +492,7 @@ storage_sink_open (struct case_sink *sink) else { info->mode = MEMORY; - info->max_cases = (set_max_workspace + info->max_cases = (get_max_workspace() / (sizeof (struct case_list) + info->case_size)); } } @@ -598,7 +598,7 @@ storage_sink_write (struct case_sink *sink, const struct ccase *c) workspace_overflow = 1; msg (MW, _("Workspace limit of %d KB (%d cases at %d bytes each) " "overflowed. Writing active file to disk."), - set_max_workspace / 1024, info->max_cases, + get_max_workspace() / 1024, info->max_cases, sizeof (struct case_list) + info->case_size); storage_to_disk (info, sink->value_cnt); diff --git a/tests/bugs/random.sh b/tests/bugs/random.sh index 72da71fc..1e0e55e2 100755 --- a/tests/bugs/random.sh +++ b/tests/bugs/random.sh @@ -63,10 +63,12 @@ list. EOF if [ $? -ne 0 ] ; then no_result ; fi +activity="run program" $SUPERVISOR $here/../src/pspp -o raw-ascii $TEMPDIR/rnd.sps if [ $? -ne 0 ] ; then no_result ; fi +activity="compare output" diff -b -B -w $TEMPDIR/pspp.list - << EOF R1 -------- diff --git a/tests/command/print.sh b/tests/command/print.sh index fdfcf9cb..f408a0fa 100755 --- a/tests/command/print.sh +++ b/tests/command/print.sh @@ -86,7 +86,7 @@ if [ $? -ne 0 ] ; then no_result ; fi activity="run program" -$SUPERVISOR $here/../src/pspp -o raw-ascii --testing-mode $TEMPDIR/print.stat > $TEMPDIR/errs +$SUPERVISOR $here/../src/pspp --testing-mode -o raw-ascii --testing-mode $TEMPDIR/print.stat > $TEMPDIR/errs # Note vv --- there are errors in input. Therefore, the command must FAIL if [ $? -eq 0 ] ; then fail ; fi @@ -110,7 +110,6 @@ EOF if [ $? -ne 0 ] ; then fail ; fi - activity="compare output" diff -b -B $TEMPDIR/pspp.list - << EOF ---------------------------------------------------------------------- @@ -194,9919 +193,6 @@ Testing use of DATA LIST LIST. 12.00 . . . 12.00 . . . - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - EOF if [ $? -ne 0 ] ; then fail ; fi