与&

时间:2018-07-25 02:03:29

标签: sas

是否可以使用symget()而不是以某种方式取消对宏变量(&var1)的引用?为了设置表:dataset1?

%let var1 = dataset1;

data one;
set symget('var1');
run;

2 个答案:

答案 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函数动态地找出这些列。

enter image description here

答案 1 :(得分:0)

一旦数据步骤开始执行,您就只能使用symget,因此您不能使用它来生成set语句的一部分,除非可能使用call execute之类的东西,并且仅当您要为整个数据步骤生成代码时。

我将不做进一步阐述,因为我强烈怀疑您实际上尝试在这里做的事情可能有更好的方法。