Change how checking for missing values works.
[pspp] / src / language / stats / mcnemar.c
index 7ee52f43134afdc018548b88ff25f3e0eb0d8be3..a12800726dfec6ae94af4b0ff724e7785f6c021d 100644 (file)
@@ -83,9 +83,9 @@ mcnemar_execute (const struct dataset *ds,
 
   struct casereader *r = input;
 
-  struct mcnemar *mc = xcalloc (t2s->n_pairs, sizeof *mc);
+  struct mcnemar *mc = XCALLOC (t2s->n_pairs,  struct mcnemar);
 
-  for (i = 0 ; i < t2s->n_pairs; ++i )
+  for (i = 0 ; i < t2s->n_pairs; ++i)
     {
       mc[i].val0.f = mc[i].val1.f = SYSMIS;
     }
@@ -94,20 +94,20 @@ mcnemar_execute (const struct dataset *ds,
     {
       const double weight = dict_get_case_weight (dict, c, &warn);
 
-      for (i = 0 ; i < t2s->n_pairs; ++i )
+      for (i = 0 ; i < t2s->n_pairs; ++i)
        {
          variable_pair *vp = &t2s->pairs[i];
          const union value *value0 = case_data (c, (*vp)[0]);
          const union value *value1 = case_data (c, (*vp)[1]);
 
-         if (var_is_value_missing ((*vp)[0], value0, exclude))
+         if (var_is_value_missing ((*vp)[0], value0) & exclude)
            continue;
 
-         if (var_is_value_missing ((*vp)[1], value1, exclude))
+         if (var_is_value_missing ((*vp)[1], value1) & exclude)
            continue;
 
 
-         if ( mc[i].val0.f == SYSMIS)
+         if (mc[i].val0.f == SYSMIS)
            {
              if (mc[i].val1.f != value0->f)
                mc[i].val0.f = value0->f;
@@ -115,7 +115,7 @@ mcnemar_execute (const struct dataset *ds,
                mc[i].val0.f = value1->f;
            }
 
-         if ( mc[i].val1.f == SYSMIS)
+         if (mc[i].val1.f == SYSMIS)
            {
              if (mc[i].val0.f != value1->f)
                mc[i].val1.f = value1->f;
@@ -127,15 +127,15 @@ mcnemar_execute (const struct dataset *ds,
            {
              mc[i].n00 += weight;
            }
-         else if ( mc[i].val0.f == value0->f && mc[i].val1.f == value1->f)
+         else if (mc[i].val0.f == value0->f && mc[i].val1.f == value1->f)
            {
              mc[i].n10 += weight;
            }
-         else if ( mc[i].val1.f == value0->f && mc[i].val0.f == value1->f)
+         else if (mc[i].val1.f == value0->f && mc[i].val0.f == value1->f)
            {
              mc[i].n01 += weight;
            }
-         else if ( mc[i].val1.f == value0->f && mc[i].val1.f == value1->f)
+         else if (mc[i].val1.f == value0->f && mc[i].val1.f == value1->f)
            {
              mc[i].n11 += weight;
            }