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

时间:2017-02-01 14:10:33

标签: macros sas cat

假设我有一个名为var1var1_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;

1 个答案:

答案 0 :(得分:1)

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

%let var2 = &var._test;

你也使用错误的CAT函数,catx用于在中间放置分隔符,因此第一个参数是分隔符(因此它不会连接任何东西,因为它只能看到一个连接的东西) 。你还在参数周围有引号,这些引号在%sysfunc中不正确 - 该上下文中的引号被视为实际字符,而不是字符串分隔符。