lex_match (lexer, T_EQUALS);
if (lex_token (lexer) != T_LPAREN)
{
- struct variable *v;
-
- v = parse_variable (lexer, dict);
+ struct variable *v = parse_variable (lexer, dict);
if (v == NULL)
return 0;
- if (!lex_force_match (lexer, T_EQUALS)
- || !lex_force_id (lexer))
- return 0;
- if (dict_lookup_var (dict, lex_tokcstr (lexer)) != NULL)
+ if (!lex_force_match (lexer, T_EQUALS))
+ return 0;
+
+ char *new_name = parse_DATA_LIST_var (lexer, dict);
+ if (dict_lookup_var (dict, new_name) != NULL)
{
msg (SE, _("Cannot rename %s as %s because there already exists "
"a variable named %s. To rename variables with "
"overlapping names, use a single RENAME subcommand "
"such as `/RENAME (A=B)(B=C)(C=A)', or equivalently, "
"`/RENAME (A B C=B C A)'."),
- var_get_name (v), lex_tokcstr (lexer), lex_tokcstr (lexer));
+ var_get_name (v), new_name, new_name);
+ free (new_name);
return 0;
}
- dict_rename_var (dict, v, lex_tokcstr (lexer));
- lex_get (lexer);
+ dict_rename_var (dict, v, new_name);
+ free (new_name);
return 1;
}
goto done;
if (!lex_match (lexer, T_EQUALS))
{
- msg (SE, _("`=' expected after variable list."));
+ lex_error_expecting (lexer, "`='", NULL_SENTINEL);
goto done;
}
- if (!parse_DATA_LIST_vars (lexer, &new_names, &nn,
+ if (!parse_DATA_LIST_vars (lexer, dict, &new_names, &nn,
PV_APPEND | PV_NO_SCRATCH | PV_NO_DUPLICATE))
goto done;
if (nn != nv)