全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2989 7
2012-03-24
小弟在编写一个宏循环中遇到了一个困难,先上程序!

%macro a(v1=);
    ……
%mend;

%macro loop;
    %do i='t1','t2','t3';
        %macro a(&i.);
    %end;
%mend;

%loop;

当调用%loop时,系统提示‘ERROR: 在 %DO 语句中未找到期望的 %TO,系统将编译哑宏’;

请问,%do循环必须要配合%to吗?如果循环下标是指定的若干个字符,该如何做?多谢论坛中的大侠!
二维码

扫码加我 拉你入群

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

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

全部回复
2012-3-24 15:31:18
没有人回答吗?自己顶!
二维码

扫码加我 拉你入群

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

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

2012-3-24 15:56:34
试试下面的code.

%macro loop;
  %do i=1 %to 3 %by 1;
  %put &t.;
    %do %while( &t.=t&i.);
        %macro a(&t.);
    %end;
   %end;
%mend;

%loop;
二维码

扫码加我 拉你入群

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

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

2012-3-24 16:11:39
嗯,priss111提出的解决方法的确可以,但如果我的循环下标是不规则的,不包含数字的字符,比如f,i,o,p这四个字符,又该如何做的?
二维码

扫码加我 拉你入群

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

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

2012-3-24 21:10:12
自己再顶一下
二维码

扫码加我 拉你入群

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

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

2012-3-25 05:06:06
iRoss2007 发表于 2012-3-24 16:11
嗯,priss111提出的解决方法的确可以,但如果我的循环下标是不规则的,不包含数字的字符,比如f,i,o,p这 ...
There are many ways. Here is an example to illustrate the idea.

950  %macro loop(varlist=);
1951  %let n= %eval(%sysfunc(countc(%cmpres(&varlist),%str( )))+ (%length(&varlist)>0) );
1952
1953  %do i = 1 %to &n;
1954       %let cur_var=%scan(&varlist,&i);
1955       %put >>>&i &cur_var<<<;
1956
1957   %end;
1958
1959  %mend;
1960
1961  %loop(varlist=a b E f G)
>>>1 a<<<
>>>2 b<<<
>>>3 E<<<
>>>4 f<<<
>>>5 G<<<
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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