带有宏变量名的substr函数

时间:2016-01-18 15:12:17

标签: macros sas

我正在尝试在SAS宏中使用substr函数,如下所示:

%let hg=Name;
data gg_;
set sashelp.class; 
gh=%substr(&hg,1,3);
run;

我也试过

data gg_;
set sashelp.class; 
gh=%sysfunc(substr(&hg,1,3));
run;

这里Name是sashelp.class中的变量

但是我没有从Name变量得到前三个字符到gh。 我该怎么做?

2 个答案:

答案 0 :(得分:1)

您正在混合宏和数据步骤逻辑。 由于它是数据步骤,因此使用SUBSTR()函数,而不是%substr。如果宏变量由要提取的文本组成,则引用它,否则保持宏变量不加引号。

gh=substr(&hg, 1, 3);

注意:编辑以反映评论。

答案 1 :(得分:0)

如果要在宏函数中创建数据集,则需要使用普通的sas函数,因此只需使用substr()而不是%substr()

%let hg=Name;
data gg_;
set sashelp.class; 
gh=substr(&hg,1,3);
run;
相关问题