SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 757|回复: 3
打印 上一主题 下一主题

关于%do循环的一个问题

[复制链接]

0

主题

0

帖子

2

积分

新手上路

Rank: 1

积分
2
楼主
 楼主| 发表于 2009-9-10 17:25:48 | 只看该作者

关于%do循环的一个问题

对于下面
data _null_;
do i='she','he';
put i;
end;
run;
想试着做到macro里面,但下面的code会报错~~~
%macro a();
%do i='she','he';
%put &i;
%end;
%mend a();
%a;
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
发表于 2009-9-10 20:42:41 | 只看该作者

Re: 关于%do循环的一个问题

do语句可以这么用,但%do语句好像不支持这种用法
%DO macro-variable=start %TO stop <%BY increment>;
        text and macro language statements  
%END;  
[code:adg6kjy7]%macro a;         /* 如果没有参数,可以不写() */
        %let i=she; /* 宏变量总是存储为character,不需要"" */
        %put &i;
%mend a; /* 写宏的名字就可以了(也可以不写),不需要写() */

%a /* 调用宏不需要写; */[/code:adg6kjy7]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
发表于 2009-9-14 00:08:52 | 只看该作者

Re: 关于%do循环的一个问题

[code:3b7wso0a]%let av=she he;
%macro abcd;
%do i=1 %to 2;
%let x=%scan(&av,&i);
%put &x;
%end;
%mend abcd;
%abcd[/code:3b7wso0a]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
发表于 2009-9-14 01:44:14 | 只看该作者

Re: 关于%do循环的一个问题

[code:3pibleyi]%macro abcd(av);
%let a=1;
%do i=1 %to %length(&av) ;
   %if %qsubstr(&av,&i,1)=%str(*) %then %let a=%eval(&a+1);
   %if &i=%length(&av) %then
   %do;
     %do j=1 %to &a;
       %let x=%scan(&av,&j);
       %put &x;
     %end;
   %end;
%end;
%mend abcd;
%abcd(she*he*ban*aj*aoh)[/code:3pibleyi]
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-6 02:39 , Processed in 0.069861 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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