X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flanguage%2Fstats%2Ffrequencies.c;h=484ce1af1e7095bf2f18e8eef0d6c0ebee16607b;hb=422944fc7812cf13e616348412fecdbd85670e06;hp=736b6ae55599f4c6340fbce94e10d8e74c4206cf;hpb=29917c4f5908454803e663d2ad78bca4bc35e805;p=pspp diff --git a/src/language/stats/frequencies.c b/src/language/stats/frequencies.c index 736b6ae555..484ce1af1e 100644 --- a/src/language/stats/frequencies.c +++ b/src/language/stats/frequencies.c @@ -797,7 +797,7 @@ cmd_frequencies (struct lexer *lexer, struct dataset *ds) else if (lex_match_id (lexer, "LIMIT")) { if (!lex_force_match (lexer, T_LPAREN) - || !lex_force_int (lexer)) + || !lex_force_int_range (lexer, "LIMIT", 0, INT_MAX)) goto error; frq.max_categories = lex_integer (lexer); @@ -833,12 +833,11 @@ cmd_frequencies (struct lexer *lexer, struct dataset *ds) { lex_match (lexer, T_EQUALS); - if (lex_force_int (lexer)) + if (lex_force_int_range (lexer, "NTILES", 0, INT_MAX)) { - int i; int n = lex_integer (lexer); lex_get (lexer); - for (i = 0; i < n + 1; ++i) + for (int i = 0; i < n + 1; ++i) { frq.percentiles = xrealloc (frq.percentiles, @@ -896,13 +895,9 @@ cmd_frequencies (struct lexer *lexer, struct dataset *ds) hi_scale = FRQ_FREQ; if (lex_match (lexer, T_LPAREN)) { - if (lex_force_int (lexer)) + if (lex_force_int_range (lexer, "FREQ", 1, INT_MAX)) { hi_freq = lex_integer (lexer); - if (hi_freq <= 0) - { - lex_error (lexer, _("Histogram frequency must be greater than zero.")); - } lex_get (lexer); if (! lex_force_match (lexer, T_RPAREN)) goto error; @@ -914,13 +909,9 @@ cmd_frequencies (struct lexer *lexer, struct dataset *ds) hi_scale = FRQ_PERCENT; if (lex_match (lexer, T_LPAREN)) { - if (lex_force_int (lexer)) + if (lex_force_int_range (lexer, "PERCENT", 1, INT_MAX)) { hi_pcnt = lex_integer (lexer); - if (hi_pcnt <= 0) - { - lex_error (lexer, _("Histogram percentage must be greater than zero.")); - } lex_get (lexer); if (! lex_force_match (lexer, T_RPAREN)) goto error; @@ -1489,10 +1480,13 @@ do_barchart(const struct frq_chart *bar, const struct variable **var, int n_slices; struct freq **slices = pick_cat_counts_ptr (bar, frq_tab, &n_slices); - chart_submit (barchart_create (var, 1, - (bar->y_scale == FRQ_FREQ) ? _("Count") : _("Percent"), - (bar->y_scale == FRQ_PERCENT), - slices, n_slices)); + if (n_slices < 1) + msg (SW, _("Omitting bar chart, which has no values.")); + else + chart_submit (barchart_create (var, 1, + (bar->y_scale == FRQ_FREQ) ? _("Count") : _("Percent"), + (bar->y_scale == FRQ_PERCENT), + slices, n_slices)); free (slices); }