楼主: caibirdcnb
2653 5

[问答] 请问CALL SYMPUT为什么不能在%do里面使用?谢谢! [推广有奖]

  • 0关注
  • 36粉丝

讲师

47%

还不是VIP/贵宾

-

威望
0
论坛币
1367 个
通用积分
16.5538
学术水平
67 点
热心指数
70 点
信用等级
64 点
经验
6762 点
帖子
206
精华
2
在线时间
433 小时
注册时间
2011-8-31
最后登录
2023-9-23

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
  1. %macro test;
  2. data test;
  3.         x = 'abc';
  4.         call symput('x',x);
  5. run;
  6. %mend;
  7. %test
  8. %put _user_;

  9. %macro test2;
  10. %do i=1 %to 2;
  11.         data test&i;
  12.                 y = 'def';
  13.                 call symput('y',y);
  14.         run;
  15. %end;
  16. %mend;
  17. %test2
  18. %put _user_;
复制代码
上面的第一个例子test会创建X宏变量,但第二个例子不会创建Y宏变量。为什么?请高手指点,谢谢!






二维码

扫码加我 拉你入群

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

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

关键词:symput call put Macro test abc

沙发
goldbaodi 发表于 2012-4-4 23:21:07 |只看作者 |坛友微信交流群
不是高手.妄言两句:

1.- The fiction of "CALL  SYMPUT (MV, value)" is  to assign a value to a macro variable DURING THE EXECUTION OF A DATA STEP.
2.- Macros consist of collections of regular SAS program statements, macro variables, macro language statements, and macro functions contained within a %MACRO and a %MEND

SO:
3. - 第一个例子test, 因为CALL SYMPUT 在regular SAS step中,故会创建X宏变量,
4. - 但第二个例子test1, CALL SYMPUT 在macro language statements(%DO..%END)中, 故不会创建Y宏变量

The above is my understanding, which is maybe incorrect. - just for your ref.

使用道具

藤椅
caibirdcnb 发表于 2012-4-5 18:30:10 |只看作者 |坛友微信交流群
谢谢你goldbaodi,如果是这样,那请问究竟如何循环call symput()?非常感谢!

使用道具

板凳
怪盗圣桃 发表于 2019-12-8 12:03:44 |只看作者 |坛友微信交流群
请问楼主解决了这个问题吗?

使用道具

报纸
jg.sas 发表于 2019-12-10 14:28:20 |只看作者 |坛友微信交流群
  1. %macro test2;
  2. %do i=1 %to 2;
  3.         data test&i;
  4.                 y = 'def';
  5.                 call symput('y',y);
  6.         run;
  7. %end;
  8. %put _user_;
  9. %mend;
  10. %test2
复制代码

这样就可以输出,可能生成了类似局部这样的宏变量

使用道具

地板
jg.sas 发表于 2019-12-10 14:28:48 |只看作者 |坛友微信交流群
jg.sas 发表于 2019-12-10 14:28
这样就可以输出,可能生成了类似局部这样的宏变量
这也只是猜测

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-19 11:50