X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flanguage%2Fstats%2Fnpar.c;h=5d8d8742f9c51935a32966c17b7722e3acb59344;hb=912833f9331784d692ade66c76bffb5497b890e0;hp=8d40faad0144bd9c327ee8a39c0784d5a5da0279;hpb=ec19587bd09b05588cd757533e5366d1e2fbf447;p=pspp diff --git a/src/language/stats/npar.c b/src/language/stats/npar.c index 8d40faad01..5d8d8742f9 100644 --- a/src/language/stats/npar.c +++ b/src/language/stats/npar.c @@ -155,22 +155,26 @@ static int parse_npar_tests (struct lexer *lexer, struct dataset *ds, struct cmd_npar_tests *npt, struct npar_specs *nps) { - npt->binomial = 0; npt->chisquare = 0; - npt->ks_one_sample = 0; npt->cochran = 0; + npt->binomial = 0; + npt->ks_one_sample = 0; + npt->wilcoxon = 0; + npt->sign = 0; + npt->runs = 0; npt->friedman = 0; + npt->kendall = 0; npt->kruskal_wallis = 0; npt->mann_whitney = 0; - npt->jonckheere_terpstra = 0; npt->mcnemar = 0; - npt->runs = 0; - npt->sign = 0; - npt->wilcoxon = 0; - npt->missing = 0; + npt->median = 0; + npt->jonckheere_terpstra = 0; + npt->miss = MISS_ANALYSIS; + npt->missing = 0; npt->method = 0; npt->statistics = 0; + memset (npt->a_statistics, 0, sizeof npt->a_statistics); for (;;) { @@ -530,7 +534,7 @@ npar_execute (struct casereader *input, const struct npar_test *test = specs->test[t]; if ( NULL == test->execute ) { - msg (SW, _("NPAR subcommand not currently implemented.")); + msg (SW, _("%s subcommand not currently implemented."), "NPAR"); continue; } test->execute (ds, casereader_clone (input), specs->filter, test, specs->exact, specs->timer); @@ -684,7 +688,7 @@ npar_runs (struct lexer *lexer, struct dataset *ds, } else { - lex_error (lexer, _("Expecting MEAN, MEDIAN, MODE or number")); + lex_error (lexer, _("Expecting %s, %s, %s or a number."), "MEAN", "MEDIAN", "MODE"); return 0; } @@ -826,11 +830,11 @@ npar_chisquare (struct lexer *lexer, struct dataset *ds, { cstp->ranged = true; if ( ! lex_force_num (lexer)) return 0; - cstp->lo = lex_integer (lexer); + cstp->lo = lex_number (lexer); lex_get (lexer); lex_force_match (lexer, T_COMMA); if (! lex_force_num (lexer) ) return 0; - cstp->hi = lex_integer (lexer); + cstp->hi = lex_number (lexer); if ( cstp->lo >= cstp->hi ) { msg (ME, @@ -941,7 +945,8 @@ npar_binomial (struct lexer *lexer, struct dataset *ds, { if (lex_match (lexer, T_LPAREN)) { - lex_force_num (lexer); + if (! lex_force_num (lexer)) + return 2; btp->category1 = lex_number (lexer); lex_get (lexer); if ( lex_match (lexer, T_COMMA)) @@ -1076,7 +1081,7 @@ parse_two_sample_related_test (struct lexer *lexer, if (!parse_variables_const_pool (lexer, pool, dict, &vlist1, &n_vlist1, - PV_NUMERIC | PV_NO_SCRATCH | PV_NO_DUPLICATE) ) + PV_NUMERIC | PV_NO_SCRATCH | PV_DUPLICATE) ) return false; if ( lex_match (lexer, T_WITH)) @@ -1084,7 +1089,7 @@ parse_two_sample_related_test (struct lexer *lexer, with = true; if ( !parse_variables_const_pool (lexer, pool, dict, &vlist2, &n_vlist2, - PV_NUMERIC | PV_NO_SCRATCH | PV_NO_DUPLICATE) ) + PV_NUMERIC | PV_NO_SCRATCH | PV_DUPLICATE) ) return false; paired = (lex_match (lexer, T_LPAREN) && @@ -1097,9 +1102,12 @@ parse_two_sample_related_test (struct lexer *lexer, if (paired) { if ( n_vlist1 != n_vlist2) - msg (SE, _("PAIRED was specified but the number of variables " + { + msg (SE, _("PAIRED was specified but the number of variables " "preceding WITH (%zu) did not match the number " "following (%zu)."), n_vlist1, n_vlist2); + return false; + } test_parameters->n_pairs = n_vlist1 ; } @@ -1266,9 +1274,8 @@ npar_median (struct lexer *lexer, mt->median = SYSMIS; - if ( lex_match (lexer, T_LPAREN)) + if ( lex_match (lexer, T_LPAREN) && lex_force_num (lexer)) { - lex_force_num (lexer); mt->median = lex_number (lexer); lex_get (lexer); lex_force_match (lexer, T_RPAREN);