X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flanguage%2Fstats%2Fctables.c;h=68d3e852bada61724c5fcfd5f45696eca28c7903;hb=981adc6169ffe7227de286f92f70edf684d37a2b;hp=12f9958c3c1dfc8ebdbcc282e87c60a6efbc53ac;hpb=50e00137bfcc4eb3d4ae753a5e57e7a444194c96;p=pspp diff --git a/src/language/stats/ctables.c b/src/language/stats/ctables.c index 12f9958c3c..68d3e852ba 100644 --- a/src/language/stats/ctables.c +++ b/src/language/stats/ctables.c @@ -229,8 +229,6 @@ struct ctables_cell axes[PIVOT_N_AXES]; union ctables_summary *summaries; - - //char *name; }; struct ctables @@ -873,6 +871,15 @@ parse_ctables_summary_function (struct lexer *lexer, return false; struct substring name = lex_tokss (lexer); + if (ss_ends_with_case (name, ss_cstr (".LCL")) + || ss_ends_with_case (name, ss_cstr (".UCL")) + || ss_ends_with_case (name, ss_cstr (".SE"))) + { + lex_error (lexer, _("Support for LCL, UCL, and SE summary functions " + "is not yet implemented.")); + return false; + } + bool u = ss_match_byte (&name, 'U') || ss_match_byte (&name, 'u'); bool e = !u && (ss_match_byte (&name, 'E') || ss_match_byte (&name, 'e')); @@ -1235,6 +1242,13 @@ ctables_axis_parse_primary (struct ctables_axis_parse_ctx *ctx) if (!lex_force_id (ctx->lexer)) return NULL; + if (lex_tokcstr (ctx->lexer)[0] == '$') + { + lex_error (ctx->lexer, + _("Multiple response set support not implemented.")); + return NULL; + } + int start_ofs = lex_ofs (ctx->lexer); struct variable *var = parse_variable (ctx->lexer, ctx->dict); if (!var) @@ -2109,6 +2123,7 @@ ctables_table_parse_categories (struct lexer *lexer, struct dictionary *dict, } else if (!c->n_cats && lex_match_id (lexer, "KEY")) { + int start_ofs = lex_ofs (lexer) - 1; lex_match (lexer, T_EQUALS); if (lex_match_id (lexer, "VALUE")) cat.type = CCT_VALUE; @@ -2145,6 +2160,10 @@ ctables_table_parse_categories (struct lexer *lexer, struct dictionary *dict, bool UNUSED b = lex_force_match (lexer, T_LPAREN); goto error; } + + lex_ofs_error (lexer, start_ofs, lex_ofs (lexer) - 1, + _("Data-dependent sorting is not implemented.")); + goto error; } } else if (!c->n_cats && lex_match_id (lexer, "MISSING")) @@ -3183,7 +3202,6 @@ ctables_cell_insert__ (struct ctables_section *s, const struct ccase *c, cell->sv = sv; cell->omit_areas = 0; cell->postcompute = false; - //struct string name = DS_EMPTY_INITIALIZER; for (enum pivot_axis_type a = 0; a < PIVOT_N_AXES; a++) { const struct ctables_nest *nest = s->nests[a]; @@ -3233,28 +3251,8 @@ ctables_cell_insert__ (struct ctables_section *s, const struct ccase *c, cell->axes[a].cvs[i].category = cat; value_clone (&cell->axes[a].cvs[i].value, value, var_get_width (var)); - -#if 0 - if (i != nest->scale_idx) - { - if (!ds_is_empty (&name)) - ds_put_cstr (&name, ", "); - char *value_s = data_out (value, var_get_encoding (var), - var_get_print_format (var), - settings_get_fmt_settings ()); - if (cat->type == CCT_TOTAL - || cat->type == CCT_SUBTOTAL - || cat->type == CCT_POSTCOMPUTE) - ds_put_format (&name, "%s=total", var_get_name (var)); - else - ds_put_format (&name, "%s=%s", var_get_name (var), - value_s + strspn (value_s, " ")); - free (value_s); - } -#endif } } - //cell->name = ds_steal_cstr (&name); const struct ctables_nest *ss = s->nests[s->table->summary_axis]; const struct ctables_summary_spec_set *specs = &ss->specs[cell->sv]; @@ -4162,32 +4160,6 @@ ctables_table_output (struct ctables *ct, struct ctables_table *t) struct ctables_cell_sort_aux aux = { .nest = nest, .a = a }; sort (sorted, n_sorted, sizeof *sorted, ctables_cell_compare_3way, &aux); -#if 0 - if (a == PIVOT_AXIS_ROW) - { - size_t ids[N_CTATS]; - memset (ids, 0, sizeof ids); - for (size_t j = 0; j < n_sorted; j++) - { - struct ctables_cell *cell = sorted[j]; - for (enum ctables_area_type at = 0; at < N_CTATS; at++) - { - struct ctables_area *area = cell->areas[at]; - if (!area->sequence) - area->sequence = ++ids[at]; - } - } - } -#endif - -#if 0 - for (size_t j = 0; j < n_sorted; j++) - { - printf ("%s (%s): %f/%f = %.1f%%\n", sorted[j]->name, sorted[j]->contributes_to_areas ? "y" : "n", sorted[j]->summaries[0].count, sorted[j]->areas[CTAT_COL]->e_count, sorted[j]->summaries[0].count / sorted[j]->areas[CTAT_COL]->e_count * 100.0); - } - printf ("\n"); -#endif - struct ctables_level { enum ctables_level_type @@ -4847,24 +4819,6 @@ ctables_prepare_table (struct ctables_table *t) } free (items); -#if 0 - for (size_t j = 0; j < merged->n; j++) - printf ("%s\n", ctables_summary_function_name (merged->specs[j].function)); - - for (size_t j = 0; j < stack->n; j++) - { - const struct ctables_nest *nest = &stack->nests[j]; - for (enum ctables_summary_variant sv = 0; sv < N_CSVS; sv++) - { - const struct ctables_summary_spec_set *specs = &nest->specs[sv]; - for (size_t k = 0; k < specs->n; k++) - printf ("(%s, %zu) ", ctables_summary_function_name (specs->specs[k].function), - specs->specs[k].axis_idx); - printf ("\n"); - } - } -#endif - size_t allocated_sum_vars = 0; enumerate_sum_vars (t->axes[t->summary_axis], &t->sum_vars, &t->n_sum_vars, &allocated_sum_vars); @@ -6483,6 +6437,7 @@ cmd_ctables (struct lexer *lexer, struct dataset *ds) } else if (lex_match_id (lexer, "SIGTEST")) { + int start_ofs = lex_ofs (lexer) - 1; if (!t->chisq) { t->chisq = xmalloc (sizeof *t->chisq); @@ -6538,9 +6493,14 @@ cmd_ctables (struct lexer *lexer, struct dataset *ds) } while (lex_token (lexer) != T_SLASH && lex_token (lexer) != T_ENDCMD); + + lex_ofs_error (lexer, start_ofs, lex_ofs (lexer) - 1, + _("Support for SIGTEST not yet implemented.")); + goto error; } else if (lex_match_id (lexer, "COMPARETEST")) { + int start_ofs = lex_ofs (lexer); if (!t->pairwise) { t->pairwise = xmalloc (sizeof *t->pairwise); @@ -6680,6 +6640,10 @@ cmd_ctables (struct lexer *lexer, struct dataset *ds) } while (lex_token (lexer) != T_SLASH && lex_token (lexer) != T_ENDCMD); + + lex_ofs_error (lexer, start_ofs, lex_ofs (lexer) - 1, + _("Support for COMPARETEST not yet implemented.")); + goto error; } else {