全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
5531 5
2013-04-08
悬赏 50 个论坛币 已解决
我有这么一个想法:

%macro a;
%let abc=0;
data _null_;
do i=1 to 10;
  if i=12 then
  (宏语句,例如:%let abc=1;);
end;
run;
%put &abc;
%mend;

%a;

结果Put为“1”,显然%Let没受到if控制。

我记得在宏内的data步,是先运行里面的宏语句或者替换里面的宏变量的;我想请问下,有没有能在data步中由data步条件(例如if)控制宏语句的语句呢?就像call symputx这样的语句,谢谢。

最佳答案

zhengbo8 查看完整内容

LOG: 在execute()中,放宏代码的字符串。
二维码

扫码加我 拉你入群

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

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

全部回复
2013-4-8 23:55:03
复制代码

LOG:

2013-04-09_085902.gif

在execute()中,放宏代码的字符串。

二维码

扫码加我 拉你入群

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

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

2013-4-9 11:20:23
call execute()应该能够实现楼主的目的。
例如:

%macro a;
%let abc=0;
data test;
     a=2;
      if a=1 then call execute('%let abc=1;');
          else if a=2 then call execute('%let abc=5');
run;

%put &abc;
%mend;


%a
二维码

扫码加我 拉你入群

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

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

2013-4-9 13:00:40
感觉没有必要那样。

%macro a;
%let abc=0;
  %do i=1 %to 10;
      %if &i=12 %then   &abc=1;
         %end;
%put &abc;
%mend;

%a;
二维码

扫码加我 拉你入群

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

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

2013-4-9 13:06:02
牛人很多!
二维码

扫码加我 拉你入群

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

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

2017-11-10 21:59:34
pobel 发表于 2013-4-9 11:20
call execute()应该能够实现楼主的目的。
例如:
然而,如果不是'%let abc=1’,而是'%let abc=数据步里的变量' 呢?
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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