楼主: mingfeng07
921 3

关于macro问题 [推广有奖]

副教授

65%

还不是VIP/贵宾

-

威望
0
论坛币
1147 个
通用积分
2.0601
学术水平
113 点
热心指数
105 点
信用等级
83 点
经验
30381 点
帖子
643
精华
0
在线时间
1147 小时
注册时间
2012-11-20
最后登录
2023-5-23

初级热心勋章

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
程序如下:
%macro names(name,number);
%do n=1 %to &number;
&name&n
%end;
%mend names;
data %names(dasn,5);
run;
以上是关于宏names通过宏参数name,number和宏变量生成的数据集名字,
我的疑问是为什么在%do语句之后的&names&n语句后面没有加分号?
二维码

扫码加我 拉你入群

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

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

关键词:Macro acr CRO Mac Number number names 程序

欢迎扫一扫我头像关注, 不定期分享SAS技术知识。
沙发
mingfeng07 学生认证  发表于 2013-10-16 10:20:14 |只看作者 |坛友微信交流群
没有人来解答啊,,,求帮忙解决!!
欢迎扫一扫我头像关注, 不定期分享SAS技术知识。

使用道具

藤椅
pobel 在职认证  发表于 2013-10-16 10:53:42 |只看作者 |坛友微信交流群
楼主只要分清在一个宏中,哪些语句是宏语句,哪些语句是宏调用后产生的SAS语句或SAS语句的一部分,就能够回答你的问题了。

宏name的目的是要产生一串数据集的名字,并放到DATA语句中使用。

&name&n只是宏执行时每次%DO循环所产生的数据集名字,而不是要执行的宏语句。宏变量name和n解析之后的结果会放到宏被调用的位置,作为SAS语句去执行。

如果加上分号之后,分号也将会作为结果的一部分输出:
%macro names(name,number);
%do n=1 %to &number;
&name&n;
%end;
%mend names;

data _null_;
  x="%names(dsn,5)";
  put x=;
run;
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
mingfeng07 + 1 + 1 + 1 分析的有道理

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

和谐拯救危机

使用道具

板凳
mingfeng07 学生认证  发表于 2013-10-16 11:13:40 |只看作者 |坛友微信交流群
pobel 发表于 2013-10-16 10:53
楼主只要分清在一个宏中,哪些语句是宏语句,哪些语句是宏调用后产生的SAS语句或SAS语句的一部分,就能够回 ...
感谢感谢!!
欢迎扫一扫我头像关注, 不定期分享SAS技术知识。

使用道具

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

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

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

GMT+8, 2024-4-30 19:39