SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 710|回复: 0
打印 上一主题 下一主题

跟crackman读SAS程序(91)--宏程序中表达式里面的数值比较

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2010-11-4 17:49:40 | 只看该作者

跟crackman读SAS程序(91)--宏程序中表达式里面的数值比较

From crackman's blog on Baidu


               
                <p>%macro aa;<br>
%let condition=( 1.2&gt;=1 and 1.2&lt;1.5 ) and ( 1123&gt;=800 and 1123&lt;1200 );</p>
<p>%if &amp;condition %then %do;<br>
&nbsp;&nbsp;&nbsp;  %put x;<br>
&nbsp;&nbsp;  %end;<br>
&nbsp;&nbsp;  %else %do;<br>
%put M;<br>
&nbsp;&nbsp;  %end;<br>
&nbsp;&nbsp;  %mend aa;<br>
%aa;</p>
<p>这个结果是X</p>
<p>%macro aa;<br>
%let condition=( 1.2&gt;=1 and 1.2&lt;1.5 ) and ( 1123.1&gt;=800 and 1123.1&lt;1200 );</p>
<p>%if &amp;condition %then %do;<br>
&nbsp;&nbsp;&nbsp;  %put x;<br>
&nbsp;&nbsp;  %end;<br>
&nbsp;&nbsp;  %else %do;<br>
%put M;<br>
&nbsp;&nbsp;  %end;<br>
&nbsp;&nbsp;  %mend aa;<br>
%aa;</p>
<p>结果是M</p>
<p>解释是这样的:</p>
<p> %macro aa;<br>
&nbsp;&nbsp;  %put ERROR-%nrstr(%eval(1999999999.9 &gt; 9) --&gt;) <strong><font color="#ff0000">%eval</font></strong>(199999999.1&gt;9);<br>
&nbsp;&nbsp;  %put ERROR-%nrstr(%sysevalf(1999999999.9 &gt; 9) --&gt;) <strong><font color="#ff0000">%sysevalf</font></strong>(199999999.1&gt;9);<br>
%mend aa;<br>
%aa<br>
宏编译器在解析这个语句的时候,是要区别数据类型,也是类型不同的数据比较,返回为FALSE,也就是0。</p>
<p>谢谢hopewell。</p> <a href="http://hi.baidu.com/crack%5Fman/blog/item/40222e7bccccf80729388a88.html">阅读全文</a>
               
                <br/><b>类别:</b><a href="http://hi.baidu.com/crack%5Fman/blog/category/%B8%FAcrackman%B6%C1sas%B3%CC%D0%F2">跟crackman读sas程序</a>&nbsp;<a href="http://hi.baidu.com/crack%5Fman/blog/item/40222e7bccccf80729388a88.html#comment">查看评论</a>
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2026-2-3 20:10 , Processed in 0.066622 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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