http://www.pinggu.org/bbs/thread-885667-1-1.html
原程序和解答过程
程序如下:
%macro test(dataset,type=NOMISSING);
%let type=%upcase(&type);
%if &type=NOMISSING %then
%do;
%put NOTE: NOMISSING已执行!;
%end;
%else %if &type=MISSING %then
%do;
%put NOTE: MISSING已执行!;
%end;
%else %put ERROR: 输入的TYPE值(&type)未知!;
%mend;
%test(temp)
%test(temp,type=missing)
%test(temp,type=error)
其实这个程序比较好理解,就是在宏参数时,设置默认参数。
不过几点值得学习:
1.当你对外界输入的TYPE参数大小写不清楚的时候,最好进行统一处理,大写或者小写,程序用了UPCASE函数
2.当在程序运行过程中,最好设置默认参数值,这样不至于宏走不动,但是默认参数值一定要具有提示性。例如这里的NOTE很值得推广