/* PSPP - computes sample statistics.
Copyright (C) 1997-9, 2000 Free Software Foundation, Inc.
- Written by Ben Pfaff <blp@gnu.org>.
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
struct criteria *next;
/* Variables to count. */
- struct variable **vars;
+ const struct variable **vars;
size_t var_cnt;
- /* Count special values?. */
+ /* Count special values? */
bool count_system_missing; /* Count system missing? */
bool count_user_missing; /* Count user missing? */
for (;;)
{
bool ok;
-
+
crit->next = NULL;
crit->vars = NULL;
- if (!parse_variables (lexer, dataset_dict (ds), &crit->vars, &crit->var_cnt,
+ if (!parse_variables_const (lexer, dataset_dict (ds), &crit->vars,
+ &crit->var_cnt,
PV_DUPLICATE | PV_SAME_TYPE))
goto fail;
pool_register (trns->pool, free, crit->vars);
for (i = 0; i < crit->var_cnt; i++)
{
double x = case_num (c, crit->vars[i]);
- if (x == SYSMIS)
- counter += crit->count_system_missing;
- else if (crit->count_user_missing
- && var_is_num_user_missing (crit->vars[i], x))
- counter++;
+ if (var_is_num_missing (crit->vars[i], x, MV_ANY))
+ {
+ if (x == SYSMIS
+ ? crit->count_system_missing
+ : crit->count_user_missing)
+ counter++;
+ }
else
{
struct num_value *v;