expressions: Improve error messages evaluating invalid Boolean values.
[pspp] / src / language / expressions / operations.def
index d78827a8da8aaf933dc3d6fc2be09774ba39b9f7..d3044043df4a168bac21a466422eb4038ea38388 100644 (file)
@@ -573,7 +573,7 @@ string function RTRIM (string s, string c)
 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;
 }
 
@@ -587,7 +587,7 @@ absorb_miss string function STRING (x, no_format f)
   v.f = x;
 
   assert (!fmt_is_string (f->type));
-  s = data_out (&v, "no-such-encoding", f);
+  s = data_out (&v, LEGACY_NATIVE, f);
   dst = alloc_string (e, strlen (s));
   strcpy (dst.string, s);
   free (s);
@@ -630,16 +630,16 @@ absorb_miss no_opt no_abbrev string function VALUELABEL (var v)
 
 // 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.;
     }
 }