全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1799 7
2013-01-27
这个宏运行错误是 局域变量和全局变量的缘故吗??求高手对宏详解
%let a=2134.45;
%let b=-45000;
%macro t;
%let x=%sysevalf(&a+&b);
%put x= &x;
%if &x>0 %then %do;
%put fushu x= &x;
%end;
%else %do;
%put zehng x= &x;
%end;
%mend t;
%t;
二维码

扫码加我 拉你入群

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

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

全部回复
2013-1-28 01:21:33
%if %sysevalf(&x>0) %then %do;
二维码

扫码加我 拉你入群

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

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

2013-1-28 09:00:04
jingju11 发表于 2013-1-28 01:21
%if %sysevalf(&x>0) %then %do;
这样是对的,谢谢。为什么不能直接用呢?
二维码

扫码加我 拉你入群

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

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

2013-1-28 11:38:02
宏的本质只是文本,不会对数字字符进行自动运算。要将其视为数字计算要用%evalf or %sysevalf.
不过在DATA 步里,会自动运算比较。

%let a=2134.45;
%let b=-45000;
%let x=%sysevalf(&a+&b);
data _null_;
   if &x>0 then  put  "zhengsshu   x= &x" ;
   else  put "fushu x= &x"   ;
run;
  
二维码

扫码加我 拉你入群

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

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

2013-1-28 16:59:06
紫血丹心 发表于 2013-1-28 09:00
这样是对的,谢谢。为什么不能直接用呢?
宏就是文本,字符串与0比大小?
二维码

扫码加我 拉你入群

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

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

2013-1-28 16:59:52
jingju11 发表于 2013-1-28 01:21
%if %sysevalf(&x>0) %then %do;
京剧言之有理,学习了
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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