X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flanguage%2Fdata-io%2Fmatrix-data.c;h=4ae4ef70cd7b13ced5138a1d71a549e65e66b94b;hb=f5d1ac814687386b4cd6af9fa9e6f2f98913aa7d;hp=fbf82c084cb40ad5933f325a9ccb8b682220c221;hpb=510cc9dd9baf3108ba55cfb7893384517c9930b4;p=pspp diff --git a/src/language/data-io/matrix-data.c b/src/language/data-io/matrix-data.c index fbf82c084c..4ae4ef70cd 100644 --- a/src/language/data-io/matrix-data.c +++ b/src/language/data-io/matrix-data.c @@ -847,7 +847,10 @@ parse_matrix_data_variables (struct lexer *lexer) if (!strcasecmp (names[i], "ROWTYPE_")) dict_create_var_assert (dict, "ROWTYPE_", 8); else - dict_create_var_assert (dict, names[i], 0); + { + struct variable *var = dict_create_var_assert (dict, names[i], 0); + var_set_measure (var, MEASURE_SCALE); + } for (size_t i = 0; i < n_names; ++i) free (names[i]); @@ -891,6 +894,7 @@ parse_matrix_data_subvars (struct lexer *lexer, struct dictionary *dict, } *tv = true; + var_set_measure (v, MEASURE_NOMINAL); var_set_both_formats (v, &(struct fmt_spec) { .type = FMT_F, .w = 4 }); } return true; @@ -911,7 +915,7 @@ cmd_matrix_data (struct lexer *lexer, struct dataset *ds) if (!dict) return CMD_FAILURE; - size_t n_input_vars = dict_get_var_cnt (dict); + size_t n_input_vars = dict_get_n_vars (dict); struct variable **input_vars = xnmalloc (n_input_vars, sizeof *input_vars); for (size_t i = 0; i < n_input_vars; i++) input_vars[i] = dict_get_var (dict, i); @@ -1007,6 +1011,7 @@ cmd_matrix_data (struct lexer *lexer, struct dataset *ds) mf.svars = xmalloc (sizeof *mf.svars); mf.svars[0] = dict_create_var_assert (dict, lex_tokcstr (lexer), 0); + var_set_measure (mf.svars[0], MEASURE_NOMINAL); var_set_both_formats ( mf.svars[0], &(struct fmt_spec) { .type = FMT_F, .w = 4 }); mf.n_svars = 1; @@ -1028,7 +1033,9 @@ cmd_matrix_data (struct lexer *lexer, struct dataset *ds) else if (lex_match_id (lexer, "CELLS")) { if (mf.input_rowtype) - msg (SW, _("CELLS is ignored when VARIABLES includes ROWTYPE_")); + lex_next_msg (lexer, SW, + -1, -1, _("CELLS is ignored when VARIABLES " + "includes ROWTYPE_")); lex_match (lexer, T_EQUALS); @@ -1053,7 +1060,14 @@ cmd_matrix_data (struct lexer *lexer, struct dataset *ds) if (open || in_parens || (lex_token (lexer) != T_ENDCMD && lex_token (lexer) != T_SLASH)) { - lex_error (lexer, _("Row type keyword expected.")); + const char *rowtypes[] = { +#define RT(NAME, DIMS) #NAME, + ROWTYPES +#undef RT + "N_VECTOR", "SD", + }; + lex_error_expecting_array ( + lexer, rowtypes, sizeof rowtypes / sizeof *rowtypes); goto error; } break; @@ -1144,7 +1158,7 @@ cmd_matrix_data (struct lexer *lexer, struct dataset *ds) goto error; } - struct variable **order = xnmalloc (dict_get_var_cnt (dict), sizeof *order); + struct variable **order = xnmalloc (dict_get_n_vars (dict), sizeof *order); size_t n_order = 0; for (size_t i = 0; i < mf.n_svars; i++) order[n_order++] = mf.svars[i]; @@ -1154,11 +1168,11 @@ cmd_matrix_data (struct lexer *lexer, struct dataset *ds) order[n_order++] = mf.varname; for (size_t i = 0; i < mf.n_cvars; i++) order[n_order++] = mf.cvars[i]; - assert (n_order == dict_get_var_cnt (dict)); + assert (n_order == dict_get_n_vars (dict)); dict_reorder_vars (dict, order, n_order); free (order); - dict_set_split_vars (dict, mf.svars, mf.n_svars); + dict_set_split_vars (dict, mf.svars, mf.n_svars, SPLIT_LAYERED); schedule_matrices (&mf);