Make the missing value code do more work, so that its callers can do
[pspp-builds.git] / src / language / stats / oneway.q
index a792a2fb2b38d09717483fb254a041c9ce183964..69ab5a48e15d2bf664af388681d03f589fc9594c 100644 (file)
@@ -1,7 +1,6 @@
 /* PSPP - One way ANOVA. -*-c-*-
 
 Copyright (C) 1997-9, 2000 Free Software Foundation, Inc.
-Author: John Darrington 2004
 
 This program is free software; you can redistribute it and/or
 modify it under the terms of the GNU General Public License as
@@ -435,7 +434,8 @@ show_descriptives(void)
          gs = gs_array[count];
 
          tab_text (t, 1, row + count, 
-                   TAB_LEFT | TAT_TITLE ,value_to_string(&gs->id,indep_var));
+                   TAB_LEFT | TAT_TITLE, var_get_value_name(indep_var,
+                                                             &gs->id));
 
          /* Now fill in the numbers ... */
 
@@ -621,7 +621,7 @@ show_contrast_coeffs (short *bad_contrast)
       group_value = group_values[count];
 
       tab_text (t, count + 2, 1, TAB_CENTER | TAT_TITLE, 
-               value_to_string(group_value, indep_var));
+               var_get_value_name (indep_var, group_value));
 
       for (i = 0 ; i < cmd.sbc_contrast ; ++i ) 
        {
@@ -867,7 +867,7 @@ precalc ( struct cmd_oneway *cmd UNUSED )
                   (hsh_compare_func *) compare_group,
                   (hsh_hash_func *) hash_group,
                   (hsh_free_func *) free_group,
-                  (void *) indep_var->width );
+                  (void *) var_get_width (indep_var) );
 
 
       totals->sum=0;
@@ -896,11 +896,12 @@ run_oneway(const struct ccase *first, const struct casefile *cf,
                                 (hsh_compare_func *) compare_values,
                                 (hsh_hash_func *) hash_value,
                                 0,
-                                (void *) indep_var->width );
+                                (void *) var_get_width (indep_var) );
 
   precalc(cmd);
 
-  filter = casefilter_create ( (cmd->incl != ONEWAY_INCLUDE), 
+  filter = casefilter_create ( (cmd->incl != ONEWAY_INCLUDE
+                                ? MV_ANY : MV_SYSTEM), 
                               vars, n_vars );
 
   for(r = casefile_get_reader (cf, filter);
@@ -917,7 +918,7 @@ run_oneway(const struct ccase *first, const struct casefile *cf,
       if ( casefilter_variable_missing (filter, &c, indep_var))
        continue;
 
-      indep_val = case_data (&c, indep_var->fv);
+      indep_val = case_data (&c, indep_var);
          
       hsh_insert ( global_group_hash, (void *) indep_val );
 
@@ -925,7 +926,7 @@ run_oneway(const struct ccase *first, const struct casefile *cf,
        {
          const struct variable *v = vars[i];
 
-         const union value *val = case_data (&c, v->fv);
+         const union value *val = case_data (&c, v);
 
           struct group_proc *gp = group_proc_get (vars[i]);
          struct hsh_table *group_hash = gp->group_hash;