X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flanguage%2Fstats%2Ft-test-parser.c;h=138969f8bf4f3d3437733fc53e9d2a34393b2c97;hb=9cb6dec84b34ad0b8d424e2e023b66ab2d84e5c1;hp=51f30b9cfcd16a383af8725b8dfd94f685216ea3;hpb=71eea20b080f51f1aa00ef35acf4f49ce742d10a;p=pspp diff --git a/src/language/stats/t-test-parser.c b/src/language/stats/t-test-parser.c index 51f30b9cfc..138969f8bf 100644 --- a/src/language/stats/t-test-parser.c +++ b/src/language/stats/t-test-parser.c @@ -1,5 +1,5 @@ /* PSPP - a program for statistical analysis. - Copyright (C) 2011 Free Software Foundation, Inc. + Copyright (C) 2011, 2015 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -48,18 +48,18 @@ cmd_t_test (struct lexer *lexer, struct dataset *ds) const struct variable **v2 = NULL; size_t n_v2; - size_t n_pairs; + size_t n_pairs = 0; vp *pairs = NULL; /* One sample mode */ - double testval; + double testval = SYSMIS; /* Independent samples mode */ const struct variable *gvar; union value gval0; union value gval1; - bool cut; + bool cut = false; tt.wv = dict_get_weight (dict); tt.dict = dict; @@ -68,6 +68,7 @@ cmd_t_test (struct lexer *lexer, struct dataset *ds) tt.missing_type = MISS_ANALYSIS; tt.n_vars = 0; tt.vars = NULL; + tt.mode = MODE_undef; lex_match (lexer, T_EQUALS); @@ -119,8 +120,8 @@ cmd_t_test (struct lexer *lexer, struct dataset *ds) if ( cut == true && var_is_alpha (gvar)) { - msg (SE, _("When applying GROUPS to a string variable, two " - "values must be specified.")); + msg (SE, _("When applying %s to a string variable, two " + "values must be specified."), "GROUPS"); goto parse_failed; } } @@ -128,6 +129,13 @@ cmd_t_test (struct lexer *lexer, struct dataset *ds) { bool with = false; bool paired = false; + + if (tt.n_vars > 0) + { + msg (SE, _("%s subcommand may not be used with %s."), "VARIABLES", "PAIRS"); + goto parse_failed; + } + mode_count++; tt.mode = MODE_PAIRED; lex_match (lexer, T_EQUALS); @@ -170,8 +178,7 @@ cmd_t_test (struct lexer *lexer, struct dataset *ds) else n_pairs = n_v1 * n_v2; - pairs = xcalloc (sizeof *pairs, n_pairs); - + pairs = xcalloc (n_pairs, sizeof *pairs); if ( with) { @@ -221,7 +228,7 @@ cmd_t_test (struct lexer *lexer, struct dataset *ds) { if ( tt.mode == MODE_PAIRED) { - msg (SE, _("VARIABLES subcommand may not be used with PAIRS.")); + msg (SE, _("%s subcommand may not be used with %s."), "VARIABLES", "PAIRS"); goto parse_failed; } @@ -265,7 +272,7 @@ cmd_t_test (struct lexer *lexer, struct dataset *ds) else if (lex_match_id (lexer, "CRITERIA")) { lex_match (lexer, T_EQUALS); - if ( lex_force_match_id (lexer, "CIN")) + if ( lex_match_id (lexer, "CIN") || lex_force_match_id (lexer, "CI")) if ( lex_force_match (lexer, T_LPAREN)) { lex_force_num (lexer); @@ -290,7 +297,7 @@ cmd_t_test (struct lexer *lexer, struct dataset *ds) if (tt.n_vars == 0 && tt.mode != MODE_PAIRED) { - msg (SE, _("One or more VARIABLES must be specified.")); + lex_sbc_missing ("VARIABLES"); goto parse_failed; }