我的程序是这样的:
data a;
input p1-p3;
datalines;
1 2 3
4 5 6
;
%macro hello(version=);
proc print data=a;
where &version2=5;
run;
%mend hello;
%hello(version=p)
如何找到p2 = 5的位置?
答案 0 :(得分:1)
Sasfrog在评论中有正确的答案。只需将where &version2=5;
更改为where &version.2=5;
即可。原因是SAS认为& version2实际上是宏变量的名称,但它找不到名为& version2的宏变量!把句点放在那里告诉SAS“这是宏变量名称的结尾,所以按照你的惯例对待它之后的所有内容。”
答案 1 :(得分:0)
另一种方法是从代码中删除2并将其添加到宏调用中,如下所示:
%macro hello(version=);
proc print data=a;
where &version=5;
run;
%mend hello;
%hello(version=p2)