132 |
struct variable *single_split; /* Single SPLIT FILE variable. */ |
struct variable *single_split; /* Single SPLIT FILE variable. */ |
133 |
|
|
134 |
/* Factor variables. */ |
/* Factor variables. */ |
135 |
int n_factors; /* Number of factor variables. */ |
size_t n_factors; /* Number of factor variables. */ |
136 |
struct variable **factors; /* Factor variables. */ |
struct variable **factors; /* Factor variables. */ |
137 |
int is_per_factor[PROX + 1]; /* Is there per-factor data? */ |
int is_per_factor[PROX + 1]; /* Is there per-factor data? */ |
138 |
|
|
204 |
if (lex_match_id ("VARIABLES")) |
if (lex_match_id ("VARIABLES")) |
205 |
{ |
{ |
206 |
char **v; |
char **v; |
207 |
int nv; |
size_t nv; |
208 |
|
|
209 |
if (seen & 1) |
if (seen & 1) |
210 |
{ |
{ |
218 |
goto lossage; |
goto lossage; |
219 |
|
|
220 |
{ |
{ |
221 |
int i; |
size_t i; |
222 |
|
|
223 |
for (i = 0; i < nv; i++) |
for (i = 0; i < nv; i++) |
224 |
if (!strcasecmp (v[i], "VARNAME_")) |
if (!strcasecmp (v[i], "VARNAME_")) |
233 |
} |
} |
234 |
|
|
235 |
{ |
{ |
236 |
int i; |
size_t i; |
237 |
|
|
238 |
for (i = 0; i < nv; i++) |
for (i = 0; i < nv; i++) |
239 |
{ |
{ |
327 |
else |
else |
328 |
{ |
{ |
329 |
struct variable **split; |
struct variable **split; |
330 |
int n; |
size_t n; |
331 |
|
|
332 |
if (!parse_variables (default_dict, &split, &n, PV_NO_DUPLICATE)) |
if (!parse_variables (default_dict, &split, &n, PV_NO_DUPLICATE)) |
333 |
goto lossage; |
goto lossage; |
366 |
} |
} |
367 |
seen |= 4; |
seen |= 4; |
368 |
|
|
369 |
if (!parse_variables (default_dict, &mx->factors, &mx->n_factors, PV_NONE)) |
if (!parse_variables (default_dict, &mx->factors, &mx->n_factors, |
370 |
|
PV_NONE)) |
371 |
goto lossage; |
goto lossage; |
372 |
|
|
373 |
{ |
{ |
374 |
int i; |
size_t i; |
375 |
|
|
376 |
for (i = 0; i < mx->n_factors; i++) |
for (i = 0; i < mx->n_factors; i++) |
377 |
{ |
{ |
572 |
system file output. */ |
system file output. */ |
573 |
{ |
{ |
574 |
struct variable **v; |
struct variable **v; |
575 |
int nv; |
size_t nv; |
576 |
|
|
577 |
dict_get_vars (default_dict, &v, &nv, 0); |
dict_get_vars (default_dict, &v, &nv, 0); |
578 |
qsort (v, nv, sizeof *v, compare_variables_by_mxd_var_type); |
qsort (v, nv, sizeof *v, compare_variables_by_mxd_var_type); |
961 |
|
|
962 |
nr.mx = mx; |
nr.mx = mx; |
963 |
nr.data = NULL; |
nr.data = NULL; |
964 |
nr.factor_values = xmalloc (sizeof *nr.factor_values * mx->n_factors * mx->cells); |
nr.factor_values = xmalloc (sizeof *nr.factor_values |
965 |
|
* mx->n_factors * mx->cells); |
966 |
nr.max_cell_idx = 0; |
nr.max_cell_idx = 0; |
967 |
nr.split_values = xmalloc (sizeof *nr.split_values |
nr.split_values = xmalloc (sizeof *nr.split_values |
968 |
* dict_get_split_cnt (default_dict)); |
* dict_get_split_cnt (default_dict)); |
1311 |
} |
} |
1312 |
|
|
1313 |
{ |
{ |
1314 |
int i; |
size_t i; |
1315 |
|
|
1316 |
for (i = 0; i < mx->n_factors; i++) |
for (i = 0; i < mx->n_factors; i++) |
1317 |
{ |
{ |
1405 |
for (cell = 0; cell < mx->cells; cell++) |
for (cell = 0; cell < mx->cells; cell++) |
1406 |
{ |
{ |
1407 |
{ |
{ |
1408 |
int factor; |
size_t factor; |
1409 |
|
|
1410 |
for (factor = 0; factor < mx->n_factors; factor++) |
for (factor = 0; factor < mx->n_factors; factor++) |
1411 |
{ |
{ |
1435 |
int content; |
int content; |
1436 |
|
|
1437 |
{ |
{ |
1438 |
int factor; |
size_t factor; |
1439 |
|
|
1440 |
for (factor = 0; factor < mx->n_factors; factor++) |
for (factor = 0; factor < mx->n_factors; factor++) |
1441 |
case_data_rw (c, mx->factors[factor]->fv)->f = SYSMIS; |
case_data_rw (c, mx->factors[factor]->fv)->f = SYSMIS; |
1666 |
for (iter = wr->data; iter; iter = iter->next) |
for (iter = wr->data; iter; iter = iter->next) |
1667 |
{ |
{ |
1668 |
{ |
{ |
1669 |
int factor; |
size_t factor; |
1670 |
|
|
1671 |
for (factor = 0; factor < mx->n_factors; factor++) |
for (factor = 0; factor < mx->n_factors; factor++) |
1672 |
case_data_rw (c, mx->factors[factor]->fv)->f |
case_data_rw (c, mx->factors[factor]->fv)->f |
1767 |
|
|
1768 |
wr->content = -1; |
wr->content = -1; |
1769 |
{ |
{ |
1770 |
int i; |
size_t i; |
1771 |
|
|
1772 |
for (i = 0; i < mx->n_factors; i++) |
for (i = 0; i < mx->n_factors; i++) |
1773 |
{ |
{ |
1804 |
mechanism. */ |
mechanism. */ |
1805 |
if (wr->current) |
if (wr->current) |
1806 |
{ |
{ |
1807 |
int i; |
size_t i; |
1808 |
|
|
1809 |
for (i = 0; i < mx->n_factors; i++) |
for (i = 0; i < mx->n_factors; i++) |
1810 |
if (factor_values[i] != wr->current->factors[i]) |
if (factor_values[i] != wr->current->factors[i]) |
1819 |
|
|
1820 |
for (iter = wr->data; iter; iter = iter->next) |
for (iter = wr->data; iter; iter = iter->next) |
1821 |
{ |
{ |
1822 |
int i; |
size_t i; |
1823 |
|
|
1824 |
for (i = 0; i < mx->n_factors; i++) |
for (i = 0; i < mx->n_factors; i++) |
1825 |
if (factor_values[i] != iter->factors[i]) |
if (factor_values[i] != iter->factors[i]) |
1836 |
{ |
{ |
1837 |
struct factor_data *new = pool_alloc (mx->container, sizeof *new); |
struct factor_data *new = pool_alloc (mx->container, sizeof *new); |
1838 |
|
|
1839 |
new->factors = pool_alloc (mx->container, sizeof *new->factors * mx->n_factors); |
new->factors = pool_alloc (mx->container, |
1840 |
|
sizeof *new->factors * mx->n_factors); |
1841 |
|
|
1842 |
{ |
{ |
1843 |
int i; |
size_t i; |
1844 |
|
|
1845 |
for (i = 0; i < mx->n_factors; i++) |
for (i = 0; i < mx->n_factors; i++) |
1846 |
new->factors[i] = factor_values[i]; |
new->factors[i] = factor_values[i]; |