全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2257 1
2010-08-20
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很值得推广
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2010-8-20 14:32:19
顶一个!
一般宏定义都包括很多%和&,可读性差。
判断一个宏的好坏不应该只看它实现其功能的算法和效率,也应该看当对宏的调用出现问题时,这个宏给出的反馈信息。出现问题时,一个好的宏应该能够让调用者知道问题出在哪里,而不是面对整版“乱码”而茫然无措。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群