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; |
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; |
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 |
|
|
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 |
|
|
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 |
{ |
{ |
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 |
{ |
{ |
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++) |
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++) |