Macros 如何从另一个宏变量和字符串创建SAS宏变量名称?

Macros 如何从另一个宏变量和字符串创建SAS宏变量名称?,macros,sas,cat,Macros,Sas,Cat,假设我有一个名为var1和var1\u test的变量数据集。我正在用inputvar1编写一个宏。现在我正在寻找一种从var1和字符串“\u test”创建var1\u test的方法。最后,我想在where条件下使用这个变量。我尝试了以下方法: %macro some_name(var =); %let var2 = %sysfunc(catx(&var., '_test')); proc sql; select ... from ...

假设我有一个名为
var1
var1\u test
的变量数据集。我正在用input
var1
编写一个宏。现在我正在寻找一种从
var1
和字符串
“\u test”
创建
var1\u test
的方法。最后,我想在where条件下使用这个变量。我尝试了以下方法:

%macro some_name(var =);

   %let var2 = %sysfunc(catx(&var., '_test'));

   proc sql;
    select ...
        from ...
           where &var2. = 1;
quit;

%mend;

在宏语言中,不需要对宏变量使用
cat
函数。它们只是打开的文本,所以在它们旁边放置更多文本会自动连接

%let var2 = &var._test;

你也使用了错误的猫函数,<代码> CATX是在中间放置一个定界符,所以第一个参数是定界符(所以它不会连接任何东西,因为它只看到一个东西来连接)。参数周围还有引号,在

%sysfunc
中不正确-该上下文中的引号被视为实际字符,而不是字符串分隔符。

尝试以下操作:
%let var2=&var.\u test非常简单。谢谢:-)您正在尝试创建名为
var2
的宏变量,还是希望名称为
var1\u test
?或者,只要它能进入
WHERE
子句,这不重要吗?