/* PSPP - EXAMINE data for normality . -*-c-*-
Copyright (C) 2004 Free Software Foundation, Inc.
-Author: John Darrington 2004, 2006
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
static struct cmd_examine cmd;
-static struct variable **dependent_vars;
+static const struct variable **dependent_vars;
static size_t n_dependent_vars;
/* Output functions */
-static void show_summary (struct variable **dependent_var, int n_dep_var,
+static void show_summary (const struct variable **dependent_var, int n_dep_var,
const struct factor *f);
-static void show_extremes (struct variable **dependent_var,
+static void show_extremes (const struct variable **dependent_var,
int n_dep_var,
const struct factor *factor,
int n_extremities);
-static void show_descriptives (struct variable **dependent_var,
+static void show_descriptives (const struct variable **dependent_var,
int n_dep_var,
struct factor *factor);
-static void show_percentiles (struct variable **dependent_var,
+static void show_percentiles (const struct variable **dependent_var,
int n_dep_var,
struct factor *factor);
-/* Function to use for testing for missing values */
-static var_is_missing_func *value_is_missing;
-
+/* Categories of missing values to exclude. */
+static enum mv_class exclude_values;
/* PERCENTILES */
}
/* If /MISSING=INCLUDE is set, then user missing values are ignored */
- if (cmd.incl == XMN_INCLUDE )
- value_is_missing = var_is_value_system_missing;
- else
- value_is_missing = var_is_value_missing;
+ exclude_values = cmd.incl == XMN_INCLUDE ? MV_SYSTEM : MV_ANY;
if ( cmd.st_n == SYSMIS )
cmd.st_n = 5;
return 2;
}
- if (!parse_variables (lexer, dict, &dependent_vars, &n_dependent_vars,
+ if (!parse_variables_const (lexer, dict, &dependent_vars, &n_dependent_vars,
PV_NO_DUPLICATE | PV_NUMERIC | PV_NO_SCRATCH) )
{
free (dependent_vars);
union value *indep_vals[2] ;
indep_vals[0] = value_dup (
- case_data (c, fctr->indep_var[0]->fv),
+ case_data (c, fctr->indep_var[0]),
var_get_width (fctr->indep_var[0])
);
if ( fctr->indep_var[1] )
indep_vals[1] = value_dup (
- case_data (c, fctr->indep_var[1]->fv),
+ case_data (c, fctr->indep_var[1]),
var_get_width (fctr->indep_var[1])
);
else
{
const struct variable *var = dependent_vars[v];
union value *val = value_dup (
- case_data (c, var->fv),
+ case_data (c, var),
var_get_width (var)
);
- if ( value_is_missing (var, val) || case_missing )
+ if (case_missing || var_is_value_missing (var, val, exclude_values))
{
free (val);
continue;
{
const struct variable *var = dependent_vars[v];
union value *val = value_dup (
- case_data (&c, var->fv),
+ case_data (&c, var),
var_get_width (var)
);
- if ( value_is_missing (var, val))
+ if ( var_is_value_missing (var, val, exclude_values))
case_missing = 1;
free (val);
{
const struct variable *var = dependent_vars[v];
union value *val = value_dup (
- case_data (&c, var->fv),
+ case_data (&c, var),
var_get_width (var)
);
- if ( value_is_missing (var, val) || case_missing )
+ if ( var_is_value_missing (var, val, exclude_values)
+ || case_missing )
{
free (val) ;
continue ;
static void
-show_summary (struct variable **dependent_var, int n_dep_var,
+show_summary (const struct variable **dependent_var, int n_dep_var,
const struct factor *fctr)
{
static const char *subtitle[]=
(i * n_factors ) + count +
heading_rows,
TAB_LEFT | TAT_TITLE,
- value_to_string ((*fs)->id[0],
- fctr->indep_var[0])
+ var_get_value_name (fctr->indep_var[0],
+ (*fs)->id[0])
);
if (fctr->indep_var[1] && count > 0 )
(i * n_factors ) + count +
heading_rows,
TAB_LEFT | TAT_TITLE,
- value_to_string ((*fs)->id[1], fctr->indep_var[1])
+ var_get_value_name (fctr->indep_var[1], (*fs)->id[1])
);
populate_summary (tbl, heading_columns,
static void
-show_extremes (struct variable **dependent_var, int n_dep_var,
+show_extremes (const struct variable **dependent_var, int n_dep_var,
const struct factor *fctr, int n_extremities)
{
int i;
tab_text (tbl,
1, row,
TAB_LEFT | TAT_TITLE,
- value_to_string ((*fs)->id[0], fctr->indep_var[0])
+ var_get_value_name (fctr->indep_var[0],
+ (*fs)->id[0])
);
}
if ( fctr->indep_var[1])
tab_text (tbl, 2, row,
TAB_LEFT | TAT_TITLE,
- value_to_string ((*fs)->id[1], fctr->indep_var[1])
+ var_get_value_name (fctr->indep_var[1], (*fs)->id[1])
);
populate_extremes (tbl, heading_columns - 2,
/* Show the descriptives table */
void
-show_descriptives (struct variable **dependent_var,
+show_descriptives (const struct variable **dependent_var,
int n_dep_var,
struct factor *fctr)
{
tab_text (tbl,
1, row,
TAB_LEFT | TAT_TITLE,
- value_to_string ((*fs)->id[0], fctr->indep_var[0])
+ var_get_value_name (fctr->indep_var[0],
+ (*fs)->id[0])
);
}
if ( fctr->indep_var[1])
tab_text (tbl, 2, row,
TAB_LEFT | TAT_TITLE,
- value_to_string ((*fs)->id[1], fctr->indep_var[1])
+ var_get_value_name (fctr->indep_var[1], (*fs)->id[1])
);
populate_descriptives (tbl, heading_columns - 2,
}
-
-
/* Fill in the descriptives data */
void
populate_descriptives (struct tab_table *tbl, int col, int row,
const struct metrics *m)
{
-
- const double t = gsl_cdf_tdist_Qinv (1 - cmd.n_cinterval[0]/100.0/2.0, \
+ const double t = gsl_cdf_tdist_Qinv ((1 - cmd.n_cinterval[0] / 100.0)/2.0,
m->n -1);
-
tab_text (tbl, col,
row,
TAB_LEFT | TAT_TITLE,
/* Show the percentiles */
void
-show_percentiles (struct variable **dependent_var,
+show_percentiles (const struct variable **dependent_var,
int n_dep_var,
struct factor *fctr)
{
tab_text (tbl,
1, row,
TAB_LEFT | TAT_TITLE,
- value_to_string ((*fs)->id[0], fctr->indep_var[0])
+ var_get_value_name (fctr->indep_var[0],
+ (*fs)->id[0])
);
if ( fctr->indep_var[1])
tab_text (tbl, 2, row,
TAB_LEFT | TAT_TITLE,
- value_to_string ((*fs)->id[1], fctr->indep_var[1])
+ var_get_value_name (fctr->indep_var[1], (*fs)->id[1])
);
snprintf (buf2, 100, "%s = %s",
var_to_string (fctr->indep_var[0]),
- value_to_string (fs->id[0], fctr->indep_var[0]));
+ var_get_value_name (fctr->indep_var[0], fs->id[0]));
strcat (buf1, buf2);
{
sprintf (buf2, "; %s = %s)",
var_to_string (fctr->indep_var[1]),
- value_to_string (fs->id[1],
- fctr->indep_var[1]));
+ var_get_value_name (fctr->indep_var[1], fs->id[1]));
strcat (buf1, buf2);
}
else
char buf2[100];
snprintf (buf, 100, "%s",
- value_to_string (fs->id[0], fctr->indep_var[0]));
+ var_get_value_name (fctr->indep_var[0], fs->id[0]));
if ( fctr->indep_var[1] )
{
- sprintf (buf2, ",%s)", value_to_string (fs->id[1], fctr->indep_var[1]) );
+ sprintf (buf2, ",%s)", var_get_value_name (fctr->indep_var[1],
+ fs->id[1]) );
strcat (buf, buf2);
}