SAS Macro如何定义部分单词?

时间:2013-11-27 00:29:47

标签: macros sas

我的程序是这样的:

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的位置?

2 个答案:

答案 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)