SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 927|回复: 4
打印 上一主题 下一主题

请教一个do loop的问题

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2012-2-9 22:20:55 | 只看该作者

请教一个do loop的问题

在一个macro中,
%macro ds;
%do i=1 %to 30;
data ds_%scan(&t.,&i.);
  set a;
...
%end;
%mend;

&t=(a1 a2 a3 a4... a28 a30),问题就在于i=1,2,3,...,28,30 没有29(也就是没有a29),这种情况如何解决?
谢谢!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2012-2-10 18:02:22 | 只看该作者

Re: 请教一个do loop的问题

或许这是你想要的
[code:74pb37nx]data a;
    x=1;
run;
%macro hope(t=);
    %let i=1;
    %let subt=%scan(&t,1,%str( ));
    %do %until(&subt eq);
        data ds_&subt;
            set a;
        run;
        %put ERROR-DATA SET %upcase(&subt) CREATED!;
        %let i=%eval(&i+1);
        %let subt=%scan(&t,&i,%str( ));
    %end;
%mend;
%hope(t=a1 a2 a5)[/code:74pb37nx]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2012-2-20 17:13:03 | 只看该作者

Re: 请教一个do loop的问题

你的表的列表里面就没有29啊,所以没出来是正常的,不知道你想做什么。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2012-2-21 09:18:08 | 只看该作者

Re: 请教一个do loop的问题

right, but an ERROR message will show up in SAS log(ERROR message is not allowed by a regualation), and I just wonder how to modify the SAS code to run the code without ERROR message(if 29 is missing).
thanks.
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
5#
 楼主| 发表于 2012-2-21 13:50:00 | 只看该作者

Re: 请教一个do loop的问题

一般情况下不用你那种确定的循环次数,可以用do while,do until等判断是否还有东西可以读,或者先判断你的表列表中有多少个需要处理。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-6 23:22 , Processed in 0.071485 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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