lexer: New functions for parsing real numbers in specified ranges.
[pspp] / src / language / stats / logistic.c
index d62390644da7264925cd5bd44a140c411f1731f6..75f1d2a13fb4f6a439fb0a6e4428b3cc3a45cec1 100644 (file)
@@ -478,7 +478,7 @@ initial_pass (const struct lr_spec *cmd, struct lr_result *res, struct casereade
       double weight = dict_get_case_weight (cmd->dict, c, &res->warn_bad_weight);
       const union value *depval = case_data (c, cmd->dep_var);
 
-      if (var_is_value_missing (cmd->dep_var, depval, cmd->exclude))
+      if (var_is_value_missing (cmd->dep_var, depval) & cmd->exclude)
        {
          missing = true;
        }
@@ -486,7 +486,7 @@ initial_pass (const struct lr_spec *cmd, struct lr_result *res, struct casereade
       for (v = 0; v < cmd->n_indep_vars; ++v)
        {
          const union value *val = case_data (c, cmd->indep_vars[v]);
-         if (var_is_value_missing (cmd->indep_vars[v], val, cmd->exclude))
+         if (var_is_value_missing (cmd->indep_vars[v], val) & cmd->exclude)
            {
              missing = true;
              break;
@@ -982,18 +982,11 @@ cmd_logistic (struct lexer *lexer, struct dataset *ds)
                {
                  if (lex_force_match (lexer, T_LPAREN))
                    {
-                     if (! lex_force_num (lexer))
-                       {
-                         lex_error (lexer, NULL);
-                         goto error;
-                       }
+                      if (!lex_force_num_range_closed (lexer, "CUT", 0, 1))
+                        goto error;
+
                      cp = lex_number (lexer);
 
-                     if (cp < 0 || cp > 1.0)
-                       {
-                         msg (ME, _("Cut point value must be in the range [0,1]"));
-                         goto error;
-                       }
                      lex_get (lexer);
                      if (! lex_force_match (lexer, T_RPAREN))
                        {