function NUMBER (string s, ni_format f)
{
union value out;
- data_in (ss_head (s, f->w), LEGACY_NATIVE, f->type, f->d, 0, 0, &out, 0);
+ data_in (ss_head (s, f->w), LEGACY_NATIVE, f->type, f->d, 0, 0, NULL, &out, 0);
return out.f;
}
{
union value v;
struct substring dst;
+ char *s;
v.f = x;
- dst = alloc_string (e, f->w);
+
assert (!fmt_is_string (f->type));
- data_out (&v, f, dst.string);
+ s = data_out (&v, LEGACY_NATIVE, f);
+ dst = alloc_string (e, strlen (s));
+ strcpy (dst.string, s);
+ free (s);
return dst;
}
// Artificial.
operator SQUARE (x) = x * x;
-boolean operator NUM_TO_BOOLEAN (x)
+boolean operator NUM_TO_BOOLEAN (x, string op_name)
{
if (x == 0. || x == 1. || x == SYSMIS)
return x;
else
{
- msg (SE, _("A number being treated as a Boolean in an "
- "expression was found to have a value other than "
- "0 (false), 1 (true), or the system-missing value. "
- "The result was forced to 0."));
+ msg (SE, _("An operand of the %.*s operator was found to have a value "
+ "other than 0 (false), 1 (true), or the system-missing "
+ "value. The result was forced to 0."),
+ (int) op_name.length, op_name.string);
return 0.;
}
}