Implemented long variable names a la spss V12.
[pspp-builds.git] / src / repeat.c
index 2d788e27a273960e6c1dc7d19d8e0b289812ef67..42467096808b98d9a6891584c383b41eb65ce6da 100644 (file)
@@ -25,6 +25,7 @@
 #include <stdlib.h>
 #include "alloc.h"
 #include "command.h"
+#include "dictionary.h"
 #include "error.h"
 #include "getline.h"
 #include "lexer.h"
@@ -39,7 +40,7 @@
 struct repeat_entry
   {
     int type;                  /* 1=variable names, 0=any other. */
-    char id[9];                        /* Macro identifier. */
+    char id[SHORT_NAME_LEN + 1];       /* Macro identifier. */
     char **replacement;                /* Macro replacement. */
     struct repeat_entry *next;
   };
@@ -124,7 +125,7 @@ static int
 internal_cmd_do_repeat (void)
 {
   /* Name of first DO REPEAT macro. */
-  char first_name[9];
+  char first_name[SHORT_NAME_LEN + 1];
 
   /* Current filename. */
   const char *current_filename = NULL;
@@ -168,7 +169,7 @@ internal_cmd_do_repeat (void)
       
       if (token == T_ID)
        result = parse_ids (e);
-      else if (token == T_NUM)
+      else if (lex_is_number ())
        result = parse_numbers (e);
       else if (token == T_STRING)
        result = parse_strings (e);
@@ -552,12 +553,12 @@ perform_DO_REPEAT_substitutions (void)
 
       /* Collect an identifier. */
       {
-       char name[9];
+       char name[SHORT_NAME_LEN + 1];
        char *start = cp;
        char *np = name;
        char *substitution;
 
-       while (CHAR_IS_IDN (*cp) && np < &name[8])
+       while (CHAR_IS_IDN (*cp) && np < &name[SHORT_NAME_LEN])
          *np++ = *cp++;
        while (CHAR_IS_IDN (*cp))
          cp++;