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
的变量数据集。我正在用inputvar1
编写一个宏。现在我正在寻找一种从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
子句,这不重要吗?