SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 2347|回复: 16
打印 上一主题 下一主题

Data步循环宏变量的赋值

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2010-2-21 18:07:49 | 只看该作者

Data步循环宏变量的赋值

%do q = 1 %to &n;
PROC FSEDIT DATA=dedata.p&&dsn&q  mod
  SCREEN=GLSCN.descn.p&&dsn&q...SCREEN;
RUN;
%end;

我今天突然想用do loop来代替%do,后来发现宏变量赋值应该最简单有效。
但是后来又发现,这个东西在宏变量做文件名的时候根本不管事儿。
后来想起了%sysfunc,但是发现根本不支持put函数。。。
有什么简单有效的建议么?
谢谢!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2010-2-21 21:37:21 | 只看该作者

Re: Data步循环宏变量的赋值

一不小心,好像又问到了一个不太好办的问题。。。。我是没什么办法了。。。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2010-2-22 01:20:55 | 只看该作者

Re: Data步循环宏变量的赋值

I don't think I fully understand your needs but in order for %sysfunc() to work with put() data step function, you may try %sysfunc(put[color=#008000:2bnpq4u0]n[/color:2bnpq4u0](&lt;...&gt;,  &lt;...&gt;)) or %sysfunc(put[color=#BF0000:2bnpq4u0]c[/color:2bnpq4u0](&lt;...&gt;,  &lt;...&gt;)) depending on whether your operator is [color=#008000:2bnpq4u0]numeric[/color:2bnpq4u0] or [color=#BF0000:2bnpq4u0]character[/color:2bnpq4u0]. <!-- s:-) --><img src="{SMILIES_PATH}/icon_smile.gif" alt=":-)" title="Smile" /><!-- s:-) -->
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2010-2-22 11:19:14 | 只看该作者

Re: Data步循环宏变量的赋值

Thank you so~ much!
I've tried....
but still don't work when creating the varable names....
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
5#
 楼主| 发表于 2010-2-22 13:51:39 | 只看该作者

Re: Data步循环宏变量的赋值

我也没看懂你要用PUT做什么。最好简化你的问题描述!!!!!不过PUTN PUTC的确很可能是你需要的东西。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
6#
 楼主| 发表于 2010-2-22 15:58:33 | 只看该作者

Re: Data步循环宏变量的赋值

我想用data步do loop,把%do去掉就行。
但是又需要变量名能够方便定位。 <!-- s:lol: --><img src="{SMILIES_PATH}/icon_lol.gif" alt=":lol:" title="Laughing" /><!-- s:lol: -->
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
7#
 楼主| 发表于 2010-2-22 16:49:40 | 只看该作者

Re: Data步循环宏变量的赋值

还是没懂,因为你现在的描述还是偏向于“你想怎么做”,而不是你要“做什么”。
比如你可以描述。你想生成多个PROC XXX的语句,其中XX参数要如何如何变化。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
8#
 楼主| 发表于 2010-2-22 18:35:25 | 只看该作者

Re: Data步循环宏变量的赋值

....

我要用data步do loop代替%do,在不影响变量名命名的前提下。
比如说
[code:1ipyse0j]%macro a;
data a;
%do i=1 %to 10;
  x&amp;i=&amp;i;
%end;
run;
%mend a;
%a;[/code:1ipyse0j]

我不想用%do,或者说,有什么方便的函数支持直接返回变量值作为宏变量复制方法的么?
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
9#
 楼主| 发表于 2010-2-23 02:20:31 | 只看该作者

Re: Data步循环宏变量的赋值

maybe you can try CALL EXECUTE();
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
10#
 楼主| 发表于 2010-2-23 13:58:12 | 只看该作者

Re: Data步循环宏变量的赋值

to oloolo
Thank you. <!-- s:D --><img src="{SMILIES_PATH}/icon_biggrin.gif" alt=":D" title="Very Happy" /><!-- s:D -->
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2026-3-3 19:15 , Processed in 0.222746 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表