全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
4740 6
2013-01-08
悬赏 100 个论坛币 未解决
比如

%let date='20FEB2012'd;
%let time='12:31:78't
%let datetime='20FEB2012:00:00:00'dt;

有没有宏函数可以判断上述变量的合法性,并返回1或0给指定宏变量

要求不要在LOG窗口显示错误提示,不要用复杂的宏和正则

如果在data步里用IFN的话,还是会显示错误的LOG,除非屏蔽LOG

多谢高手指教!
二维码

扫码加我 拉你入群

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

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

全部回复
2013-1-9 09:46:49
再顶一下吧

顺便贴一下我过去写的判断是否是闰年的一个宏的一部分
里面SourceTable是包含一个日期变量的数据集
最后生成OutputVar,为标记变量,如果是闰年则返回1,否则返回0
里面就屏蔽了LOG输出

复制代码

二维码

扫码加我 拉你入群

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

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

2013-1-9 11:11:14
proc printto log='recycle bin';
run;
%let datetime='20FEB2012:00:00:00'dt;
%let id=%sysfunc(ifn(%sysfunc(putn(&datetime,20.))>0,1,0));
proc printto log=log;
run;
%put &id;
二维码

扫码加我 拉你入群

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

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

2013-1-9 13:13:37
ziyenano 发表于 2013-1-9 11:11
proc printto log='recycle bin';
run;
%let datetime='20FEB2012:00:00:00'dt;
多谢
只不过这种方法我知道

我的目的是要在我写的所有宏内加入日期变量的合法性检验
所以想尽可能简洁
因此在这里悬赏求助
不知道有没有更简洁的方法
谢谢!
二维码

扫码加我 拉你入群

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

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

2013-1-9 13:54:49
playmore 发表于 2013-1-9 13:13
多谢
只不过这种方法我知道
如果要检验日期或时间“常量”的合法性,当所输入的值不合法的时候,如“32Jan2013”d,我感觉log里总会有异常信息出现。因为在你对这个值做任何处理之前,SAS就会看到这不是一个合法的时间/日期常量了。只能将log信息转移到别的地方才能确保”log窗口“里不会有这个错误信息。

二维码

扫码加我 拉你入群

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

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

2013-1-9 13:57:24
pobel 发表于 2013-1-9 13:54
如果要检验日期或时间“常量”的合法性,当所输入的值不合法的时候,如“32Jan2013”d,我感觉log里总会有 ...
嗯,我是在想在SAS里有没有类似Excel的ISERROR函数
如果参数有错就返回1这样的
我搜了下没有搜到
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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