楼主: katherineat
641 2

[问答] 求问大神SAS循环嵌套 [推广有奖]

  • 0关注
  • 0粉丝

初中生

95%

还不是VIP/贵宾

-

威望
0
论坛币
111 个
通用积分
3.1801
学术水平
0 点
热心指数
1 点
信用等级
0 点
经验
441 点
帖子
14
精华
0
在线时间
10 小时
注册时间
2017-4-15
最后登录
2024-8-16

10论坛币
求大神指点迷津!!!写一个macro里面的嵌套循环的时候只能识别到第一个循环,无法识别到第二个,只有删掉第一个外部循环( j ),第二个内置循环( i )才能顺利跑通,请问有大神知道如何解决吗?如能指点迷津不胜感激!!!代码结构如下:
%macro adsl;

%do j=1 %to &nstudy.;
%let EXDSC=%scan(&EXDS,&j,%str( ));

%let EXN=%scan(&EXN,&j,%str( ));
    %do i=1 %to &EXN.;
        %let EX_&i=%scan(&EXDSC,&i,%str(,));

    %end;
%end;

%mend;

关键词:Macro study scan 指点迷津 ADSL
沙发
learsaas 发表于 2024-8-27 15:01:24 |只看作者 |坛友微信交流群
EXN?????

使用道具

不太理解是不是没搞明白 你嵌套循环的目的 我改写了一下 可以运行, 你看看结果

%let EXDS=%str(a|b|bc|bcd);
%let nstudy=4;
%let EXN=%str(1|2|3|4);

%put &=nstudy &=EXDS &=exn;

%global exn EXDS nstudy j EX_1 EX_2 EX_3 EX_4;
%macro adsl;

%do j=1 %to &nstudy.;
  %let EXDSC=%scan(&EXDS,&j,'|');
  %put &=EXDSC &=j;
  %put &=EXN;

  %let EXcN=%scan(&EXN,&j.,'|');
  %put &=EXcN;
    %do i=1 %to &EXcN.;
        %let EX_&i=%scan(&EXDSC,&i,'|');
        %put &=EX_1 &=EX_2 &=EX_3 &=EX_4;
    %end;
%end;

%mend;

%adsl;

结果:
EXDSC=a J=1
EXN=1|2|3|4
EXCN=1
EX_1=a EX_2= EX_3= EX_4=
EXDSC=b J=2
EXN=1|2|3|4
EXCN=2
EX_1=b EX_2= EX_3= EX_4=
EX_1=b EX_2= EX_3= EX_4=
EXDSC=bc J=3
EXN=1|2|3|4
EXCN=3
EX_1=bc EX_2= EX_3= EX_4=
EX_1=bc EX_2= EX_3= EX_4=
EX_1=bc EX_2= EX_3= EX_4=
EXDSC=bcd J=4
EXN=1|2|3|4
EXCN=4
EX_1=bcd EX_2= EX_3= EX_4=
EX_1=bcd EX_2= EX_3= EX_4=
EX_1=bcd EX_2= EX_3= EX_4=
EX_1=bcd EX_2= EX_3= EX_4=


使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-11-9 23:12