是否可以使用symget()而不是以某种方式取消对宏变量(&var1)的引用?为了设置表:dataset1?
%let var1 = dataset1;
data one;
set symget('var1');
run;
答案 0 :(得分:2)
是-使用call set。
%let var1 = sashelp.class;
data one;
length name $8 sex $1 age height weight 8. ;
drop dsid;
dsid=open(symget('var1'),"i");
call set (dsid);
i=1;
do while (fetchobs(dsid,i)=0);
output;
i+1;
end;
run;
上面的示例要求对列进行预初始化,但是也可以使用Vxxx函数动态地找出这些列。
答案 1 :(得分:0)
一旦数据步骤开始执行,您就只能使用symget
,因此您不能使用它来生成set语句的一部分,除非可能使用call execute
之类的东西,并且仅当您要为整个数据步骤生成代码时。
我将不做进一步阐述,因为我强烈怀疑您实际上尝试在这里做的事情可能有更好的方法。