/* PSPP - computes sample statistics. -*-c-*-
Copyright (C) 1997-9, 2000 Free Software Foundation, Inc.
- Written by John Williams <johnr.williams@stonebow.otago.ac.nz>.
- Almost completly re-written by John Darrington 2004
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 pair *pairs=0;
-static int parse_value (struct lexer *lexer, union value * v, int type) ;
+static int parse_value (struct lexer *lexer, union value * v, enum var_type);
/* Structures and Functions for the Statistics Summary Box */
struct ssbox;
struct hsh_table *hash;
struct variable *v;
- hash = hsh_create (n_pairs, compare_var_names, hash_var_name, 0, 0);
+ hash = hsh_create (n_pairs, compare_vars_by_name, hash_var_by_name,
+ 0, 0);
for (i=0; i < n_pairs; ++i)
{
return 0;
}
- if (indep_var->type == T_STRING && indep_var->width > MAX_SHORT_STRING)
+ if (var_is_long_string (indep_var))
{
msg (SE, _("Long string variable %s is not valid here."),
- indep_var->name);
+ var_get_name (indep_var));
return 0;
}
if (!lex_match (lexer, '('))
{
- if (indep_var->type == NUMERIC)
+ if (var_is_numeric (indep_var))
{
gp.v.g_value[0].f = 1;
gp.v.g_value[1].f = 2;
}
}
- if (!parse_value (lexer, &gp.v.g_value[0], indep_var->type))
+ if (!parse_value (lexer, &gp.v.g_value[0], var_get_type (indep_var)))
return 0;
lex_match (lexer, ',');
if (lex_match (lexer, ')'))
{
- if (indep_var->type != NUMERIC)
+ if (var_is_alpha (indep_var))
{
-
msg (SE, _("When applying GROUPS to a string variable, two "
"values must be specified."));
return 0;
return 1;
}
- if (!parse_value (lexer, &gp.v.g_value[1], indep_var->type))
+ if (!parse_value (lexer, &gp.v.g_value[1], var_get_type (indep_var)))
return 0;
n_group_values = 2;
/* Parses the current token (numeric or string, depending on type)
value v and returns success. */
static int
-parse_value (struct lexer *lexer, union value * v, int type )
+parse_value (struct lexer *lexer, union value * v, enum var_type type)
{
- if (type == NUMERIC)
+ if (type == VAR_NUMERIC)
{
if (!lex_force_num (lexer))
return 0;
ssbox_base_init(this, hsize,vsize);
tab_vline (this->t, TAL_GAP, 1, 0,vsize - 1);
tab_title (this->t, _("Group Statistics"));
- tab_text (this->t, 1, 0, TAB_CENTER | TAT_TITLE, indep_var->name);
+ tab_text (this->t, 1, 0, TAB_CENTER | TAT_TITLE, var_get_name (indep_var));
tab_text (this->t, 2, 0, TAB_CENTER | TAT_TITLE, _("N"));
tab_text (this->t, 3, 0, TAB_CENTER | TAT_TITLE, _("Mean"));
tab_text (this->t, 4, 0, TAB_CENTER | TAT_TITLE, _("Std. Deviation"));
{
int i;
- char *val_lab0=0;
- char *val_lab1=0;
+ const char *val_lab0;
+ const char *val_lab1;
double indep_value[2];
char prefix[2][3]={"",""};
- if ( indep_var->type == NUMERIC )
+ if ( var_is_numeric (indep_var) )
{
- val_lab0 = val_labs_find( indep_var->val_labs,gp.v.g_value[0]);
- val_lab1 = val_labs_find( indep_var->val_labs,gp.v.g_value[1]);
+ val_lab0 = var_lookup_value_label (indep_var, &gp.v.g_value[0]);
+ val_lab1 = var_lookup_value_label (indep_var, &gp.v.g_value[1]);
}
else
{
struct hsh_table *grp_hash = group_proc_get (var)->group_hash;
int count=0;
- tab_text (ssb->t, 0, i*2+1, TAB_LEFT, cmd->v_variables[i]->name);
+ tab_text (ssb->t, 0, i*2+1, TAB_LEFT,
+ var_get_name (cmd->v_variables[i]));
if (val_lab0)
tab_text (ssb->t, 1, i*2+1, TAB_LEFT | TAT_PRINTF,
/* Titles */
- tab_text (ssb->t, 1, i*2+j+1, TAB_LEFT, pairs[i].v[j]->name);
+ tab_text (ssb->t, 1, i*2+j+1, TAB_LEFT,
+ var_get_name (pairs[i].v[j]));
/* Values */
tab_float (ssb->t,2, i*2+j+1, TAB_RIGHT, pairs[i].mean[j], 8, 2);
{
struct group_statistics *gs = &group_proc_get (cmd->v_variables[i])->ugs;
- tab_text (ssb->t, 0, i+1, TAB_LEFT, cmd->v_variables[i]->name);
+ tab_text (ssb->t, 0, i+1, TAB_LEFT, var_get_name (cmd->v_variables[i]));
tab_float (ssb->t,1, i+1, TAB_RIGHT, gs->n, 2, 0);
tab_float (ssb->t,2, i+1, TAB_RIGHT, gs->mean, 8, 2);
tab_float (ssb->t,3, i+1, TAB_RIGHT, gs->std_dev, 8, 2);
assert(gs1);
- tab_text (self->t, 0, i*2+3, TAB_LEFT, cmd->v_variables[i]->name);
+ tab_text (self->t, 0, i*2+3, TAB_LEFT, var_get_name (cmd->v_variables[i]));
tab_text (self->t, 1, i*2+3, TAB_LEFT, _("Equal variances assumed"));
tab_text (trb->t, 0, i+3, TAB_LEFT | TAT_PRINTF, _("Pair %d"),i);
tab_text (trb->t, 1, i+3, TAB_LEFT | TAT_PRINTF, "%s - %s",
- pairs[i].v[0]->name, pairs[i].v[1]->name);
+ var_get_name (pairs[i].v[0]),
+ var_get_name (pairs[i].v[1]));
tab_float(trb->t, 2, i+3, TAB_RIGHT, pairs[i].mean_diff, 8, 4);
struct group_statistics *gs = &group_proc_get (cmd->v_variables[i])->ugs;
- tab_text (trb->t, 0, i+3, TAB_LEFT, cmd->v_variables[i]->name);
+ tab_text (trb->t, 0, i+3, TAB_LEFT, var_get_name (cmd->v_variables[i]));
t = (gs->mean - cmd->n_testval[0] ) * sqrt(gs->n) / gs->std_dev ;
_("Pair %d"), i);
tab_text(table, 1,i+1, TAB_LEFT | TAT_TITLE | TAT_PRINTF,
- _("%s & %s"), pairs[i].v[0]->name, pairs[i].v[1]->name);
+ _("%s & %s"),
+ var_get_name (pairs[i].v[0]),
+ var_get_name (pairs[i].v[1]));
/* row data */
if (! casefilter_variable_missing (filter, c, v) )
{
struct group_statistics *gs;
- const union value *val = case_data (c, v->fv);
+ const union value *val = case_data (c, v);
gs = &group_proc_get (cmd->v_variables[i])->ugs;
gs->n += weight;
{
struct group_statistics *gs;
struct variable *v = cmd->v_variables[i];
- const union value *val = case_data (c, v->fv);
+ const union value *val = case_data (c, v);
gs= &group_proc_get (cmd->v_variables[i])->ugs;
struct variable *v0 = pairs[i].v[0];
struct variable *v1 = pairs[i].v[1];
- const union value *val0 = case_data (c, v0->fv);
- const union value *val1 = case_data (c, v1->fv);
+ const union value *val0 = case_data (c, v0);
+ const union value *val1 = case_data (c, v1);
if ( ! casefilter_variable_missing (filter, c, v0) &&
! casefilter_variable_missing (filter, c, v1) )
/* There's always 2 groups for a T - TEST */
ttpr->n_groups = 2;
- gp.indep_width = indep_var->width;
+ gp.indep_width = var_get_width (indep_var);
ttpr->group_hash = hsh_create(2,
(hsh_compare_func *) compare_group_binary,
if ( casefilter_variable_missing (filter, c, indep_var))
return 0;
- gv = case_data (c, indep_var->fv);
+ gv = case_data (c, indep_var);
for(i=0; i< cmd->n_variables ; ++i)
{
struct variable *var = cmd->v_variables[i];
- const union value *val = case_data (c, var->fv);
+ const union value *val = case_data (c, var);
struct hsh_table *grp_hash = group_proc_get (var)->group_hash;
struct group_statistics *gs;