SAS的宏和一般编程语言的函数不是一个东西
一般编程语言的函数中的参数是值的传递,你传进的数据就是局部的,做完一系列运算后得到的结果必须返回才行,否则函数运行完了就什么都不剩了
而SAS宏是文本原样的传递,你传进去的看似一个数据集,其实只是这个数据集的名字,你在宏里做的一系列操作,其实就是对这个数据集进行了操作,宏运行完之后,这个数据集也就发生变化了。另外只有宏变量有全局和局部的区分,其他的数据集什么的就没有了。所以SAS的宏一般是不搞什么返回值的。只不过还是有个例外,如果你非要返回一个值,并且可以用a=%macro()这样的方式把返回值赋给变量a,那么可以用我下面的方法,即宏的最后一行写上你要返回的值,且不加最后的分号。我下面给的程序应该可以满足你的要求了,只不过一般写SAS宏不这么折腾
%macro a(a);
&a
%mend a;
%macro b(b);
%put >>%a(a=&b)<<;
%mend b;
%b(b=Get It Out);
%put >>%a(a=It also works)<<;


雷达卡



京公网安备 11010802022788号







