X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flanguage%2Fstats%2Fcrosstabs.q;h=23b12a9d8af184a3f18091725e33c2959fc9d250;hb=18f6e8958244f938e9e9a03a4230cacf0d22a470;hp=d6de30528a246881a75f02356d1fdaf1697154eb;hpb=8444d8d47de5e5f8d076b6f43f73c2c29494031e;p=pspp diff --git a/src/language/stats/crosstabs.q b/src/language/stats/crosstabs.q index d6de30528a..23b12a9d8a 100644 --- a/src/language/stats/crosstabs.q +++ b/src/language/stats/crosstabs.q @@ -30,29 +30,33 @@ */ #include -#include + #include +#include #include #include -#include -#include -#include + #include #include -#include -#include +#include +#include +#include #include -#include +#include #include -#include +#include +#include +#include +#include +#include #include +#include +#include #include -#include +#include #include +#include #include -#include -#include -#include #include "gettext.h" #define _(msgid) gettext (msgid) @@ -60,8 +64,6 @@ /* (headers) */ -#include - /* (specification) crosstabs (crs_): *^tables=custom; @@ -173,9 +175,9 @@ static struct pool *pl_tc; /* For table cells. */ static struct pool *pl_col; /* For column data. */ static int internal_cmd_crosstabs (void); -static void precalc (void *); -static bool calc_general (struct ccase *, void *); -static bool calc_integer (struct ccase *, void *); +static void precalc (const struct ccase *, void *); +static bool calc_general (const struct ccase *, void *); +static bool calc_integer (const struct ccase *, void *); static void postcalc (void *); static void submit (struct tab_table *); @@ -209,7 +211,7 @@ internal_cmd_crosstabs (void) pl_tc = pool_create (); pl_col = pool_create (); - if (!parse_crosstabs (&cmd)) + if (!parse_crosstabs (&cmd, NULL)) return CMD_FAILURE; mode = variables ? INTEGER : GENERAL; @@ -299,7 +301,7 @@ internal_cmd_crosstabs (void) /* Parses the TABLES subcommand. */ static int -crs_custom_tables (struct cmd_crosstabs *cmd UNUSED) +crs_custom_tables (struct cmd_crosstabs *cmd UNUSED, void *aux UNUSED) { struct var_set *var_set; int n_by; @@ -403,7 +405,7 @@ crs_custom_tables (struct cmd_crosstabs *cmd UNUSED) /* Parses the VARIABLES subcommand. */ static int -crs_custom_variables (struct cmd_crosstabs *cmd UNUSED) +crs_custom_variables (struct cmd_crosstabs *cmd UNUSED, void *aux UNUSED) { if (nxtab) { @@ -485,8 +487,9 @@ static unsigned hash_table_entry (const void *, void *); /* Set up the crosstabulation tables for processing. */ static void -precalc (void *aux UNUSED) +precalc (const struct ccase *first, void *aux UNUSED) { + output_split_file_values (first); if (mode == GENERAL) { gen_tab = hsh_create (512, compare_table_entry, hash_table_entry, @@ -558,7 +561,7 @@ precalc (void *aux UNUSED) /* Form crosstabulations for general mode. */ static bool -calc_general (struct ccase *c, void *aux UNUSED) +calc_general (const struct ccase *c, void *aux UNUSED) { int bad_warn = 1; @@ -632,7 +635,7 @@ calc_general (struct ccase *c, void *aux UNUSED) } static bool -calc_integer (struct ccase *c, void *aux UNUSED) +calc_integer (const struct ccase *c, void *aux UNUSED) { int bad_warn = 1; @@ -1659,7 +1662,7 @@ static void table_value_missing (struct tab_table *table, int c, int r, unsigned char opt, const union value *v, const struct variable *var) { - struct fixed_string s; + struct substring s; const char *label = val_labs_find (var->val_labs, *v); if (label) @@ -1706,7 +1709,7 @@ format_cell_entry (struct tab_table *table, int c, int r, double value, { const struct fmt_spec f = {FMT_F, 10, 1}; union value v; - struct fixed_string s; + struct substring s; s.length = 10; s.string = tab_alloc (table, 16);