SAS中文论坛

标题: 关于%do循环的一个问题 [打印本页]

作者: Qiong    时间: 2009-9-10 17:25
标题: 关于%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;
作者: shiyiming    时间: 2009-9-10 20:42
标题: 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]
作者: shiyiming    时间: 2009-9-14 00:08
标题: 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]
作者: shiyiming    时间: 2009-9-14 01:44
标题: 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]




欢迎光临 SAS中文论坛 (https://mysas.net/forum/) Powered by Discuz! X3.2