/* PSPP - computes sample statistics.
Copyright (C) 1997-9, 2000 Free Software Foundation, Inc.
- Written by Ben Pfaff <blp@gnu.org>.
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
/* Ensure that all the output strings are at least as wide
as the widest destination variable. */
- if (trns->dst_type == ALPHA)
+ if (trns->dst_type == VAR_STRING)
enlarge_dst_widths (trns);
/* Create destination variables, if needed.
if (!parse_map_out (lexer, trns->pool, &out))
return false;
- dst_type = out.width == 0 ? NUMERIC : ALPHA;
+ dst_type = var_type_from_width (out.width);
if (have_dst_type && dst_type != trns->dst_type)
{
msg (SE, _("Inconsistent target variable types. "
set_map_in_generic (&in, MAP_CONVERT);
add_mapping (trns, &map_allocated, &in);
- dst_type = NUMERIC;
- if (trns->src_type != ALPHA
- || (have_dst_type && trns->dst_type != NUMERIC))
+ dst_type = VAR_NUMERIC;
+ if (trns->src_type != VAR_STRING
+ || (have_dst_type && trns->dst_type != VAR_NUMERIC))
{
msg (SE, _("CONVERT requires string input values and "
"numeric output values."));
{
if (lex_match_id (lexer, "ELSE"))
set_map_in_generic (in, MAP_ELSE);
- else if (src_type == NUMERIC)
+ else if (src_type == VAR_NUMERIC)
{
if (lex_match_id (lexer, "MISSING"))
set_map_in_generic (in, MAP_MISSING);
{
struct variable *v;
v = trns->dst_vars[i] = dict_lookup_var (dict, trns->dst_names[i]);
- if (v == NULL && trns->dst_type == ALPHA)
+ if (v == NULL && trns->dst_type == VAR_STRING)
{
msg (SE, _("There is no variable named "
"%s. (All string variables specified "
{
msg (SE, _("INTO is required with %s input values "
"and %s output values."),
- var_type_adj (trns->src_type),
- var_type_adj (trns->dst_type));
+ trns->src_type == VAR_NUMERIC ? _("numeric") : _("string"),
+ trns->dst_type == VAR_NUMERIC ? _("numeric") : _("string"));
return false;
}
}
{
msg (SE, _("Type mismatch. Cannot store %s data in "
"%s variable %s."),
- trns->dst_type == ALPHA ? _("string") : _("numeric"),
+ trns->dst_type == VAR_STRING ? _("string") : _("numeric"),
var_is_alpha (v) ? _("string") : _("numeric"),
var_get_name (v));
return false;
struct variable *src_var = trns->src_vars[i];
struct variable *dst_var = trns->dst_vars[i];
- const union value *src_data = case_data (c, src_var->fv);
- union value *dst_data = case_data_rw (c, dst_var->fv);
+ const union value *src_data = case_data (c, src_var);
+ union value *dst_data = case_data_rw (c, dst_var);
const struct map_out *out;
- if (trns->src_type == NUMERIC)
+ if (trns->src_type == VAR_NUMERIC)
out = find_src_numeric (trns, src_data->f, src_var);
else
out = find_src_string (trns, src_data->s, var_get_width (src_var));
- if (trns->dst_type == NUMERIC)
+ if (trns->dst_type == VAR_NUMERIC)
{
if (out != NULL)
dst_data->f = !out->copy_input ? out->value.f : src_data->f;