REGRESSION: Warn when REGRESSION with SAVE runs with a filter configured.
[pspp] / src / language / stats / regression.c
index 52009e29683a72e4722df66674aead46fd1e2562..9379ce70ef5d1591ad3fa855edb49ef54a957ba6 100644 (file)
@@ -1,5 +1,5 @@
 /* PSPP - a program for statistical analysis.
-   Copyright (C) 2005, 2009, 2010, 2011, 2012, 2013, 2014 Free Software Foundation, Inc.
+   Copyright (C) 2005, 2009, 2010, 2011, 2012, 2013, 2014, 2016 Free Software Foundation, Inc.
 
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -225,8 +225,7 @@ cmd_regression (struct lexer *lexer, struct dataset *ds)
 
       if (lex_match_id (lexer, "DEPENDENT"))
         {
-          if (!lex_force_match (lexer, T_EQUALS))
-            goto error;
+          lex_match (lexer, T_EQUALS);
 
          free (regression.dep_vars);
          regression.n_dep_vars = 0;
@@ -248,6 +247,7 @@ cmd_regression (struct lexer *lexer, struct dataset *ds)
         }
       else if (lex_match_id (lexer, "STATISTICS"))
         {
+         unsigned long statistics = 0;
           lex_match (lexer, T_EQUALS);
 
           while (lex_token (lexer) != T_ENDCMD
@@ -255,31 +255,31 @@ cmd_regression (struct lexer *lexer, struct dataset *ds)
             {
               if (lex_match (lexer, T_ALL))
                 {
-                 regression.stats = ~0;
+                 statistics = ~0;
                 }
               else if (lex_match_id (lexer, "DEFAULTS"))
                 {
-                 regression.stats |= STATS_DEFAULT;
+                 statistics |= STATS_DEFAULT;
                 }
               else if (lex_match_id (lexer, "R"))
                 {
-                 regression.stats |= STATS_R;
+                 statistics |= STATS_R;
                 }
               else if (lex_match_id (lexer, "COEFF"))
                 {
-                 regression.stats |= STATS_COEFF;
+                 statistics |= STATS_COEFF;
                 }
               else if (lex_match_id (lexer, "ANOVA"))
                 {
-                 regression.stats |= STATS_ANOVA;
+                 statistics |= STATS_ANOVA;
                 }
               else if (lex_match_id (lexer, "BCOV"))
                 {
-                 regression.stats |= STATS_BCOV;
+                 statistics |= STATS_BCOV;
                 }
               else if (lex_match_id (lexer, "CI"))
                 {
-                 regression.stats |= STATS_CI;
+                 statistics |= STATS_CI;
 
                  if (lex_match (lexer, T_LPAREN))
                    {
@@ -294,6 +294,10 @@ cmd_regression (struct lexer *lexer, struct dataset *ds)
                   goto error;
                 }
             }
+
+         if (statistics)
+           regression.stats = statistics;
+
         }
       else if (lex_match_id (lexer, "SAVE"))
         {
@@ -372,6 +376,10 @@ cmd_regression (struct lexer *lexer, struct dataset *ds)
         msg (SW, _("REGRESSION with SAVE ignores TEMPORARY.  "
                    "Temporary transformations will be made permanent."));
 
+      if (dict_get_filter (dict))
+        msg (SW, _("REGRESSION with SAVE ignores FILTER.  "
+                   "All cases will be processed."));
+
       workspace.writer = autopaging_writer_create (proto);
       caseproto_unref (proto);
     }