全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
4265 9
2011-08-10
/************************************************************************/
%let ValueChoose= *A1= '6' '7'*A2= '6541'*A3= 'N0010' 'N0012' 'J0230'*;
%let temp=%scan(&ValueChoose,1,*);
%put temp:&temp;
%let &temp;
%put 在宏函数外查看宏变量A1是否赋值成功:&A1;

%macro test;
%let temp=%scan(&ValueChoose,2,*);
%put temp:&temp;
%let &temp;
%put 在宏函数外查看宏变量A2是否赋值成功:&A2;
%mend;
%test;
/************************************************************************/

问题:为什么在宏函数外对宏变量A1赋值成功,而在宏函数%test()内对宏变量A2却赋值不成功?
二维码

扫码加我 拉你入群

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

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

全部回复
2011-8-10 16:59:35
第一个是global macro,第二个是local macro
二维码

扫码加我 拉你入群

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

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

2011-8-10 17:18:34
试试这个:


%macro test;
      %let temp=%scan(&ValueChoose,2,*);
      %put temp:&temp;
      %str(%%)%str(let &temp;);
      %put Value of A2: &a2;
%mend;

%test
二维码

扫码加我 拉你入群

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

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

2011-8-11 09:06:41
honghejing 发表于 2011-8-10 16:59
第一个是global macro,第二个是local macro
不是全局与局部的问题,谢谢!
二维码

扫码加我 拉你入群

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

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

2011-8-11 09:07:43
pobel 发表于 2011-8-10 17:18
试试这个:
这个我试了可以,但能否解释一下原因吗?谢谢!
二维码

扫码加我 拉你入群

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

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

2011-8-11 17:00:11
个人浅见感觉像是楼主的宏编译时已经报错,因此执行时是不是忽略了宏编译时报错的那一句?
%str(%%)%str(let &temp;);
这么写估计是不让宏在编译时就报错。写成    %%str(let &temp);也是没问题的。
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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