Macros 具有宏变量名的substr函数

Macros 具有宏变量名的substr函数,macros,sas,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。 我该怎么做 您正在混合宏和数据步骤逻辑。 由于这是一

我尝试在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

我该怎么做

您正在混合宏和数据步骤逻辑。 由于这是一个数据步骤,请使用SUBSTR()函数,而不是%SUBSTR。如果宏变量包含要提取的文本,请将其引用,否则将宏变量保留为未引用

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

注意:编辑以反映注释。

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


我想他的意思是宏变量包含SUBSTR()函数调用中使用的变量的名称。所以删除引号。
%let hg=Name;
data gg_;
set sashelp.class; 
gh=substr(&hg,1,3);
run;