楼主: 来梦来人
2115 12

[原创博文] 求解一个关于宏的小问题 [推广有奖]

  • 4关注
  • 10粉丝

已卖:1962份资源

副教授

11%

还不是VIP/贵宾

-

威望
0
论坛币
10918 个
通用积分
0.1200
学术水平
17 点
热心指数
22 点
信用等级
18 点
经验
339039 点
帖子
473
精华
0
在线时间
812 小时
注册时间
2011-10-16
最后登录
2019-3-13

楼主
来梦来人 发表于 2011-11-15 11:03:20 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
本人一直在学习宏,对于如下语句一直没搞清楚,请懂的人解释,谢谢!

%macro names(name,number);
%do n=1 %to &number;
&&names&n
%end;
%mend names;
%names(dsn,5)
求解释为什么生成的 DSN1 DSN2 DSN3 DSN4 DSN5之间有空格?
二维码

扫码加我 拉你入群

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

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

关键词:小问题 Number Names Macro name number names

沙发
来梦来人 发表于 2011-11-15 12:19:17
怎么没人回答啊?

藤椅
hubertweir 发表于 2011-11-15 18:28:16
求解释,你的结果是怎么跑出来的?

板凳
来梦来人 发表于 2011-11-16 10:54:18
%macro names(name,number);
%do n=1 %to &number;
&&names&n
%end;
%mend names;
data %names(dsn,5);
run;
这个的产生结果为 data dsn1 dsn2 dsn3 dsn4 dsn5;
run;
就是之间为什么有空格?是怎样解析的

报纸
来梦来人 发表于 2011-11-16 10:56:53
hubertweir 发表于 2011-11-15 18:28
求解释,你的结果是怎么跑出来的?
%macro names(name,number);
%do n=1 %to &number;
&&names&n
%end;
%mend names;
data %names(dsn,5);
run;
这个的产生结果为 data dsn1 dsn2 dsn3 dsn4 dsn5;
run;
就是之间为什么有空格?是怎样解析的

地板
spssone 发表于 2011-11-16 15:13:23
没有结果

7
来梦来人 发表于 2011-11-16 19:42:42
spssone 发表于 2011-11-16 15:13
没有结果
是这样的:
%macro names(name,number);
%do n=1 %to &number;
&names&n
%end;
%mend names;
data %names(dsn,5);
这个的产生结果为 data dsn1 dsn2 dsn3 dsn4 dsn5;

就是之间为什么有空格?是怎样解析的

8
来梦来人 发表于 2011-11-17 19:15:25
怎么没人帮忙啊?

9
meishanjia1900 发表于 2011-11-17 20:44:08
由我再重复一遍,你的程序我运行了,出现明显错误。

连结果都无法产生。出错信息倒有一大堆。

所以我很奇怪,你的结果是怎么得出来的?

10
来梦来人 发表于 2011-11-17 22:35:47
meishanjia1900 发表于 2011-11-17 20:44
由我再重复一遍,你的程序我运行了,出现明显错误。

连结果都无法产生。出错信息倒有一大堆。
Generating Repetitive Pieces of Text Using %DO Loops
“Conditionally Generating SAS Code” on page 8 presents a %DO-%END group of
statements to conditionally execute several SAS statements. To generate repetitive
pieces of text, use an iterative %DO loop. For example, the following macro, NAMES,
uses an iterative %DO loop to create a series of names to be used in a DATA statement:
%macro names(name= ,number= );
%do n=1 %to &number;
&name&n
%end;
%mend names;
The macro NAMES creates a series of names by concatenating the value of the
parameter NAME and the value of the macro variable N. You supply the stopping value
for N as the value of the parameter NUMBER, as in the following DATA statement:
data %names(name=dsn,number=5);
Submitting this statement produces the following complete DATA statement:
data dsn1 dsn2 dsn3 dsn4 dsn5;

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-31 03:17