Fix EXPORT problem with string variables. From Andreas Streichardt
[pspp-builds.git] / src / numeric.c
index 065b1a30294488df4d1b912c68c3398d75938914..b97410a51bc234ffb826e06d6705f339ea56e6eb 100644 (file)
@@ -20,7 +20,6 @@
 #include <config.h>
 #include <assert.h>
 #include <stdlib.h>
-#include "cases.h"
 #include "command.h"
 #include "error.h"
 #include "lexer.h"
@@ -73,15 +72,13 @@ cmd_numeric (void)
       /* Create each variable. */
       for (i = 0; i < nv; i++)
        {
-         struct variable *new_var = create_variable (&default_dict, v[i],
-                                              NUMERIC, 0);
+         struct variable *new_var = dict_create_var (default_dict, v[i], 0);
          if (!new_var)
            msg (SE, _("There is already a variable named %s."), v[i]);
          else
            {
              if (f.type != -1)
                new_var->print = new_var->write = f;
-             envector (new_var);
            }
        }
 
@@ -156,15 +153,12 @@ cmd_string (void)
       /* Create each variable. */
       for (i = 0; i < nv; i++)
        {
-         struct variable *new_var = create_variable (&default_dict, v[i],
-                                              ALPHA, width);
+         struct variable *new_var = dict_create_var (default_dict, v[i],
+                                                      width);
          if (!new_var)
            msg (SE, _("There is already a variable named %s."), v[i]);
          else
-           {
-             new_var->print = new_var->write = f;
-             envector (new_var);
-           }
+            new_var->print = new_var->write = f;
        }
 
       /* Clean up. */
@@ -195,15 +189,14 @@ cmd_leave (void)
   int i;
 
   lex_match_id ("LEAVE");
-  if (!parse_variables (NULL, &v, &nv, PV_NONE))
+  if (!parse_variables (default_dict, &v, &nv, PV_NONE))
     return CMD_FAILURE;
   for (i = 0; i < nv; i++)
     {
-      if (v[i]->left)
+      if (!v[i]->reinit)
        continue;
-      devector (v[i]);
-      v[i]->left = 1;
-      envector (v[i]);
+      v[i]->reinit = 0;
+      v[i]->init = 1;
     }
   free (v);