CORRELATIONS: Fixed bug displaying non-sqaure correlation matrices
[pspp] / src / language / command.c
index f5db9731c1e6f6d30f8f77bf04d1a76f53c29bf7..8580a18374feeb38569834f9ad5cdb36bab69571 100644 (file)
@@ -26,6 +26,7 @@
 #include "data/casereader.h"
 #include "data/dataset.h"
 #include "data/dictionary.h"
+#include "data/session.h"
 #include "data/settings.h"
 #include "data/variable.h"
 #include "language/lexer/command-name.h"
@@ -129,10 +130,12 @@ enum cmd_result
 cmd_parse_in_state (struct lexer *lexer, struct dataset *ds,
                    enum cmd_state state)
 {
+  struct session *session = dataset_session (ds);
   int result;
 
   result = do_parse_command (lexer, ds, state);
 
+  ds = session_active_dataset (session);
   assert (!proc_is_open (ds));
   unset_cmd_algorithm ();
   dict_clear_aux (dataset_dict (ds));
@@ -382,24 +385,23 @@ report_state_mismatch (const struct command *command, enum cmd_state state)
         case S_INITIAL | S_DATA:
           NOT_REACHED ();
         case S_INITIAL | S_INPUT_PROGRAM:
-          msg (SE, _("%s is allowed only before the active dataset has "
-                     "been defined or inside INPUT PROGRAM."), command->name);
+          msg (SE, _("%s is allowed only before the active dataset has been defined or inside %s."),
+              command->name, "INPUT PROGRAM");
           break;
         case S_INITIAL | S_FILE_TYPE:
-          msg (SE, _("%s is allowed only before the active dataset has "
-                     "been defined or inside FILE TYPE."), command->name);
+          msg (SE, _("%s is allowed only before the active dataset has been defined or inside %s."),
+              command->name, "FILE TYPE");
           break;
         case S_DATA | S_INPUT_PROGRAM:
-          msg (SE, _("%s is allowed only after the active dataset has "
-                     "been defined or inside INPUT PROGRAM."), command->name);
+          msg (SE, _("%s is allowed only after the active dataset has been defined or inside %s."),
+              command->name, "INPUT PROGRAM");
           break;
         case S_DATA | S_FILE_TYPE:
-          msg (SE, _("%s is allowed only after the active dataset has "
-                     "been defined or inside FILE TYPE."), command->name);
+          msg (SE, _("%s is allowed only after the active dataset has been defined or inside %s."),
+              command->name, "FILE TYPE");
           break;
         case S_INPUT_PROGRAM | S_FILE_TYPE:
-          msg (SE, _("%s is allowed only inside INPUT PROGRAM "
-                     "or inside FILE TYPE."), command->name);
+          msg (SE, _("%s is allowed only inside INPUT PROGRAM or inside FILE TYPE."), command->name);
           break;
 
           /* Three allowed states. */
@@ -428,7 +430,7 @@ report_state_mismatch (const struct command *command, enum cmd_state state)
     }
   else if (state == CMD_STATE_INPUT_PROGRAM)
     msg (SE, _("%s is not allowed inside %s."),
-         command->name, "INPUT PROGRAM" );
+        command->name, "INPUT PROGRAM" );
   else if (state == CMD_STATE_FILE_TYPE)
     msg (SE, _("%s is not allowed inside %s."), command->name, "FILE TYPE");