全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2898 10
2016-01-17
复制代码
为什么宏里面时间常数不能做比较
上面的代码写成时间常数就无法比较,输出的是aa
换成该常数对应的数值就可以比较,输出的是bb
二维码

扫码加我 拉你入群

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

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

全部回复
2016-1-19 11:11:54
首先,用代码也是可以比较的。
如果改成>=号,结果就都是aa了。
问题在于为什么>号不行,还在研究
二维码

扫码加我 拉你入群

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

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

2016-1-19 11:18:40
宏里面的 %IF ... %then 语句是比较两个字符串的大小。
你的程序中 第一个%if 语句比较的是 字符 "20346" 与 "‘15DEC2015’d" 的大小。
           第一个%if 语句比较的是 字符 ‘20346’ 与 ‘20437’ 的大小。

复制代码
二维码

扫码加我 拉你入群

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

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

2016-1-19 11:20:42
follow up
    %macro test;
    %if 20437>'15DEC2015'd %then %put aa;
    %else %put bb;
    %mend;
    %test;
结果是aa 说明20437>'15DEC2015'd
二维码

扫码加我 拉你入群

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

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

2016-1-19 11:29:25
yongyitian 发表于 2016-1-19 11:18
宏里面的 %IF ... %then 语句是比较两个字符串的大小。
你的程序中 第一个%if 语句比较的是 字符 "20346" ...
不太同意你的观点。
根据下面的程序和结果,%sysfunc(intnx(month,'15SEP2015'd,3,s))和20346或者“20346”并不相等。
第一个%if 语句比较的自然也不是 字符"20346" 与 "‘15DEC2015’d" 的大小。
   %macro test;
    %if %sysfunc(intnx(month,'15SEP2015'd,3,s))=20346 %then %put aa;
    %else %put bb;
    %if %sysfunc(intnx(month,'15SEP2015'd,3,s))=20437 %then %put aa;
    %else %put bb;
        %if %sysfunc(intnx(month,'15SEP2015'd,3,s))='20346' %then %put aa;
    %else %put bb;
    %if %sysfunc(intnx(month,'15SEP2015'd,3,s))='20437' %then %put aa;
    %else %put bb;
    %mend;
    %test;
结果是
bb
aa
bb
bb
二维码

扫码加我 拉你入群

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

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

2016-1-19 12:47:22
co_fund 发表于 2016-1-19 11:29
不太同意你的观点。
根据下面的程序和结果,%sysfunc(intnx(month,'15SEP2015'd,3,s))和20346或者“203 ...
MP767.JPG
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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