pspp-cvs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Pspp-cvs] Changes to pspp/src/aggregate.c


From: Ben Pfaff
Subject: [Pspp-cvs] Changes to pspp/src/aggregate.c
Date: Sun, 20 Mar 2005 02:08:33 -0500

Index: pspp/src/aggregate.c
diff -u pspp/src/aggregate.c:1.29 pspp/src/aggregate.c:1.30
--- pspp/src/aggregate.c:1.29   Sat Mar 19 22:50:59 2005
+++ pspp/src/aggregate.c        Sun Mar 20 07:08:32 2005
@@ -524,6 +524,7 @@
          /* Create the target variable in the aggregate
              dictionary. */
          {
+            static const struct fmt_spec f8_2 = {FMT_F, 8, 2};
            struct variable *destvar;
            
            v->function = func_index;
@@ -545,15 +546,9 @@
                   {
                     destvar = dict_create_var (agr->dict, dest[i], 0);
                         
-                    if ((func_index == N
-                            || func_index == N_NO_VARS
-                            || func_index == NMISS)
+                    if ((func_index == N || func_index == NMISS)
                         && dict_get_weight (default_dict) != NULL)
-                      {
-                        static const struct fmt_spec f8_2 = {FMT_F, 8, 2};
-                            
-                        destvar->print = destvar->write = f8_2; 
-                      }
+                      destvar->print = destvar->write = f8_2; 
                     else
                       destvar->print = destvar->write = function->format;
                   }
@@ -563,6 +558,11 @@
              } else {
                v->src = NULL;
                destvar = dict_create_var (agr->dict, dest[i], 0);
+                if (func_index == N_NO_VARS
+                    && dict_get_weight (default_dict) != NULL)
+                  destvar->print = destvar->write = f8_2; 
+                else
+                  destvar->print = destvar->write = function->format;
              }
          
            if (!destvar)
@@ -834,6 +834,7 @@
          {
          case SUM:
            iter->dbl[0] += v->f * weight;
+            iter->int1 = 1;
            break;
          case MEAN:
             iter->dbl[0] += v->f * weight;
@@ -1006,7 +1007,7 @@
        switch (i->function)
          {
          case SUM:
-           v->f = i->dbl[0];
+           v->f = i->int1 ? i->dbl[0] : SYSMIS;
            break;
          case MEAN:
            v->f = i->dbl[1] != 0.0 ? i->dbl[0] / i->dbl[1] : SYSMIS;




reply via email to

[Prev in Thread] Current Thread [Next in Thread]