找回密码
 注册
查看: 4408|回复: 4

跟版主crackman读SAS程序(6)

[复制链接]
发表于 2010-8-27 16:04:05 | 显示全部楼层 |阅读模式


原程序和解答过程

程序如下:
%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很值得推广

回复

使用道具 举报

发表于 2011-5-10 00:24:47 | 显示全部楼层
楼主很给力
回复 支持 反对

使用道具 举报

发表于 2011-9-5 09:00:31 | 显示全部楼层
跟着楼主好好学啊
回复 支持 反对

使用道具 举报

发表于 2011-11-14 11:03:41 | 显示全部楼层
hmm, I understand the logic but I don't get the purpose of this macro.
Can you give an example you would use this?
Why do you need an input dataset?
I am just learning SAS programming, please forgive me for asking dumb questions!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|小黑屋|生物统计家园 网站价格

GMT+8, 2024-11-22 02:58 , Processed in 0.033244 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表