楼主: crackman
2281 1

[原创博文] 跟crackman读SAS程序(6) [推广有奖]

已卖:401份资源

院士

83%

还不是VIP/贵宾

-

威望
6
论坛币
91928 个
通用积分
23.5045
学术水平
424 点
热心指数
505 点
信用等级
256 点
经验
112978 点
帖子
2940
精华
0
在线时间
2532 小时
注册时间
2007-4-26
最后登录
2025-6-25

初级热心勋章 中级热心勋章 初级学术勋章 初级信用勋章

楼主
crackman 发表于 2010-8-20 14:11:50 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
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很值得推广
二维码

扫码加我 拉你入群

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

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

关键词:crackman Ackman CRACK sas程序 CRA error ERROR 程序

已有 7 人评分学术水平 热心指数 信用等级 收起 理由
kaeod + 1 + 1 + 1 精彩帖子
hopewell + 1 + 1 + 1 精彩帖子
Isscaliu + 1 + 1 + 1 精彩帖子
peijiamei + 3 + 3 精彩帖子
pobel + 1 + 1 我很赞同
soporaeternus + 1 6个了.....吐血支持.....
warrenzhang + 1 牛!

总评分: 学术水平 + 9  热心指数 + 7  信用等级 + 3   查看全部评分

沙发
pobel 在职认证  发表于 2010-8-20 14:32:19
顶一个!
一般宏定义都包括很多%和&,可读性差。
判断一个宏的好坏不应该只看它实现其功能的算法和效率,也应该看当对宏的调用出现问题时,这个宏给出的反馈信息。出现问题时,一个好的宏应该能够让调用者知道问题出在哪里,而不是面对整版“乱码”而茫然无措。
已有 3 人评分学术水平 热心指数 信用等级 收起 理由
hopewell + 1 + 1 + 1 我很赞同
soporaeternus + 1 这个是一种境界,很难很难
peijiamei + 2 精彩帖子

总评分: 学术水平 + 2  热心指数 + 3  信用等级 + 1   查看全部评分

和谐拯救危机

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-25 01:53