/[pspp]/pspp/src/crosstabs.q
ViewVC logotype

Diff of /pspp/src/crosstabs.q

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.25 by blp, Sun Jul 31 21:42:46 2005 UTC revision 1.26 by blp, Sun Aug 7 04:39:28 2005 UTC
# Line 576  calc_general (struct ccase *c, void *aux Line 576  calc_general (struct ccase *c, void *aux
576          assert (x != NULL);          assert (x != NULL);
577          for (j = 0; j < x->nvar; j++)          for (j = 0; j < x->nvar; j++)
578            {            {
579              if ((cmd.miss == CRS_TABLE              const union value *v = case_data (c, x->vars[j]->fv);
580                   && is_missing (case_data (c, x->vars[j]->fv), x->vars[j]))              const struct missing_values *mv = &x->vars[j]->miss;
581                if ((cmd.miss == CRS_TABLE && mv_is_value_missing (mv, v))
582                  || (cmd.miss == CRS_INCLUDE                  || (cmd.miss == CRS_INCLUDE
583                      && is_system_missing (case_data (c, x->vars[j]->fv),                      && mv_is_value_system_missing (mv, v)))
                                           x->vars[j])))  
584                {                {
585                  x->missing += weight;                  x->missing += weight;
586                  goto next_crosstab;                  goto next_crosstab;
# Line 650  calc_integer (struct ccase *c, void *aux Line 650  calc_integer (struct ccase *c, void *aux
650                        
651            /* Note that the first test also rules out SYSMIS. */            /* Note that the first test also rules out SYSMIS. */
652            if ((value < vr->min || value >= vr->max)            if ((value < vr->min || value >= vr->max)
653                || (cmd.miss == CRS_TABLE && is_num_user_missing (value, v)))                || (cmd.miss == CRS_TABLE
654                      && mv_is_num_user_missing (&v->miss, value)))
655              {              {
656                x->missing += weight;                x->missing += weight;
657                goto next_crosstab;                goto next_crosstab;
# Line 1410  delete_missing (void) Line 1411  delete_missing (void)
1411      int r;      int r;
1412    
1413      for (r = 0; r < n_rows; r++)      for (r = 0; r < n_rows; r++)
1414        if (is_num_user_missing (rows[r].f, x->vars[ROW_VAR]))        if (mv_is_num_user_missing (&x->vars[ROW_VAR]->miss, rows[r].f))
1415          {          {
1416            int c;            int c;
1417    
# Line 1424  delete_missing (void) Line 1425  delete_missing (void)
1425      int c;      int c;
1426    
1427      for (c = 0; c < n_cols; c++)      for (c = 0; c < n_cols; c++)
1428        if (is_num_user_missing (cols[c].f, x->vars[COL_VAR]))        if (mv_is_num_user_missing (&x->vars[COL_VAR]->miss, cols[c].f))
1429          {          {
1430            int r;            int r;
1431    
# Line 1657  table_value_missing (struct tab_table *t Line 1658  table_value_missing (struct tab_table *t
1658    s.string = tab_alloc (table, var->print.w);    s.string = tab_alloc (table, var->print.w);
1659    format_short (s.string, &var->print, v);    format_short (s.string, &var->print, v);
1660    s.length = strlen (s.string);    s.length = strlen (s.string);
1661    if (cmd.miss == CRS_REPORT && is_num_user_missing (v->f, var))    if (cmd.miss == CRS_REPORT && mv_is_num_user_missing (&var->miss, v->f))
1662      s.string[s.length++] = 'M';      s.string[s.length++] = 'M';
1663    while (s.length && *s.string == ' ')    while (s.length && *s.string == ' ')
1664      {      {
# Line 1740  display_crosstabulation (void) Line 1741  display_crosstabulation (void)
1741              int mark_missing = 0;              int mark_missing = 0;
1742              double expected_value = row_tot[r] * col_tot[c] / W;              double expected_value = row_tot[r] * col_tot[c] / W;
1743              if (cmd.miss == CRS_REPORT              if (cmd.miss == CRS_REPORT
1744                  && (is_num_user_missing (cols[c].f, x->vars[COL_VAR])                  && (mv_is_num_user_missing (&x->vars[COL_VAR]->miss, cols[c].f)
1745                      || is_num_user_missing (rows[r].f, x->vars[ROW_VAR])))                      || mv_is_num_user_missing (&x->vars[ROW_VAR]->miss,
1746                                                   rows[r].f)))
1747                mark_missing = 1;                mark_missing = 1;
1748              for (i = 0; i < num_cells; i++)              for (i = 0; i < num_cells; i++)
1749                {                {
# Line 1806  display_crosstabulation (void) Line 1808  display_crosstabulation (void)
1808          int mark_missing = 0;          int mark_missing = 0;
1809    
1810          if (cmd.miss == CRS_REPORT          if (cmd.miss == CRS_REPORT
1811              && is_num_user_missing (rows[r].f, x->vars[ROW_VAR]))              && mv_is_num_user_missing (&x->vars[ROW_VAR]->miss, rows[r].f))
1812            mark_missing = 1;            mark_missing = 1;
1813    
1814          for (i = 0; i < num_cells; i++)          for (i = 0; i < num_cells; i++)
# Line 1862  display_crosstabulation (void) Line 1864  display_crosstabulation (void)
1864          int i;          int i;
1865                            
1866          if (cmd.miss == CRS_REPORT && c < n_cols          if (cmd.miss == CRS_REPORT && c < n_cols
1867              && is_num_user_missing (cols[c].f, x->vars[COL_VAR]))              && mv_is_num_user_missing (&x->vars[COL_VAR]->miss, cols[c].f))
1868            mark_missing = 1;            mark_missing = 1;
1869    
1870          for (i = 0; i < num_cells; i++)          for (i = 0; i < num_cells; i++)

Legend:
Removed from v.1.25  
changed lines
  Added in v.1.26

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26