假设我有一个名为var1
和var1_test
的变量的数据集。我正在编写一个输入var1
的宏。现在,我正在寻找一种从var1_test
和字符串var1
创建"_test"
的方法。最终,我想在where条件中使用此变量。我尝试了以下方法:
%macro some_name(var =);
%let var2 = %sysfunc(catx(&var., '_test'));
proc sql;
select ...
from ...
where &var2. = 1;
quit;
%mend;
答案 0 :(得分:1)
您不需要在宏语言中使用宏变量的cat
函数。它们只是打开文本,所以只需在它们旁边添加更多文本就会自动连接。
%let var2 = &var._test;
你也使用错误的CAT函数,catx
用于在中间放置分隔符,因此第一个参数是分隔符(因此它不会连接任何东西,因为它只能看到一个连接的东西) 。你还在参数周围有引号,这些引号在%sysfunc
中不正确 - 该上下文中的引号被视为实际字符,而不是字符串分隔符。