楼主: 紫血丹心
1850 7

这个宏运行错误是 局域变量和全局变量的缘故吗 求高手对宏详解 [推广有奖]

  • 0关注
  • 1粉丝

已卖:1126份资源

硕士生

40%

还不是VIP/贵宾

-

威望
0
论坛币
1957 个
通用积分
318.7989
学术水平
7 点
热心指数
6 点
信用等级
6 点
经验
5995 点
帖子
109
精华
0
在线时间
177 小时
注册时间
2009-5-29
最后登录
2025-8-16

楼主
紫血丹心 在职认证  发表于 2013-1-27 23:42:18 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
这个宏运行错误是 局域变量和全局变量的缘故吗??求高手对宏详解
%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;
二维码

扫码加我 拉你入群

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

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

关键词:运行错误 求高手 Macro eval else

拼搏

沙发
jingju11 发表于 2013-1-28 01:21:33
%if %sysevalf(&x>0) %then %do;
已有 2 人评分学术水平 热心指数 信用等级 收起 理由
ihust + 1 + 1 + 1 分析的有道理
hopewell + 1 + 1 + 1 我很赞同

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

藤椅
紫血丹心 在职认证  发表于 2013-1-28 09:00:04
jingju11 发表于 2013-1-28 01:21
%if %sysevalf(&x>0) %then %do;
这样是对的,谢谢。为什么不能直接用呢?
拼搏

板凳
webgu 发表于 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;
  
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
ihust + 1 + 1 + 1 分析的有道理

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

SAS资源
1. SAS 微信:StatsThinking
2. SAS QQ群:348941365

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

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

7
ihust 发表于 2013-1-28 17:03:40
webgu 发表于 2013-1-28 11:38
宏的本质只是文本,不会对数字字符进行自动运算。要将其视为数字计算要用%evalf or %sysevalf.
不过在DATA ...
webgu分析的很好,学习了

8
紫血丹心 在职认证  发表于 2013-1-29 12:31:53
ihust 发表于 2013-1-28 16:59
宏就是文本,字符串与0比大小?
明白了谢谢
拼搏

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-1 10:05