SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 1271|回复: 5
打印 上一主题 下一主题

在宏中如何实现continue的功能

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2004-3-25 18:38:23 | 只看该作者

在宏中如何实现continue的功能

有一宏
%macro test;
data temp;
%do i=1 %to 3;
%if &i=1 %then continue;
.....
%end;
run;
%mend;
运行该宏出现错误,“No matching DO/SELECT statemen”。
请问各位,如何解决?
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2004-3-26 08:29:46 | 只看该作者

试试看这样行不行?

如果是在宏内做循环,则continue改为:%continue.
如果在data step内做循环,则将循环语句的%都去掉。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2004-3-26 09:15:46 | 只看该作者
若如下程序:
%macro test;
data temp;
  %do i=1 %to 3;
    %if &i=1 %then %continue;
    %put &i;
  %end;
run;
%mend;
%test;
错误提示为”Statement is not valid or it is used out of proper order“;
将%全部去掉的确没问题
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2004-3-26 09:51:47 | 只看该作者

是我想当然了

是我想当然了,以为continue也可以参与宏循环的。查了帮助后看到continue只是data step 的 statement. 呵呵~~
看来对宏循环的控制只能够加上 %if &i^=1 %then %do;实现continue等价功能了。你可以试试这个,这一次我自己测试过了,没有问题的。
[code:0b972]%macro test;
data temp;
%do i=1 %to 3;
%if &i^=1 %then %do;
i=&i;
output;
%end;
%end;
run;
%mend;
%test;[/code:0b972]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
5#
 楼主| 发表于 2004-3-26 14:03:52 | 只看该作者
我改用%goto也可实现
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
6#
 楼主| 发表于 2004-3-26 14:12:53 | 只看该作者
受教受教。呵呵~
想必gbt对VB是很熟的哦
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-8 16:06 , Processed in 0.101672 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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