全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1101 3
2013-10-15
程序如下:
%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语句后面没有加分号?
二维码

扫码加我 拉你入群

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

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

全部回复
2013-10-16 10:20:14
没有人来解答啊,,,求帮忙解决!!
二维码

扫码加我 拉你入群

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

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

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;
二维码

扫码加我 拉你入群

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

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

2013-10-16 11:13:40
pobel 发表于 2013-10-16 10:53
楼主只要分清在一个宏中,哪些语句是宏语句,哪些语句是宏调用后产生的SAS语句或SAS语句的一部分,就能够回 ...
感谢感谢!!
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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