SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 2388|回复: 13
打印 上一主题 下一主题

sas macro 大师快来帮忙 SOS

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2005-8-19 04:32:49 | 只看该作者

sas macro 大师快来帮忙 SOS

%macro printit;
%if &syslast = _NULL_ %then %do;
proc print data=_last_(obs=5);
title "last created data set is &syslast";
run;
end;
%mend;

这段程序怎么老是调试有错误,哪位大虾帮忙改一下,非常感谢,非常感谢。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2005-8-19 08:11:46 | 只看该作者

Re: sas macro 大师快来帮忙 SOS

[quote:fe8ee]ERROR: There were 1 unclosed %DO statements.  The macro PRINTIT will not be compiled.[/quote:fe8ee]

知道下面怎么改了吧? <!-- s:D --><img src="{SMILIES_PATH}/icon_biggrin.gif" alt=":D" title="Very Happy" /><!-- s:D -->
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2005-8-19 14:49:46 | 只看该作者

to maayy1980

[code:d4d99]%if expression %then %do;
%end;[/code:d4d99]

PS,请不要重复发相同内容的帖子。 <!-- s:idea: --><img src="{SMILIES_PATH}/icon_idea.gif" alt=":idea:" title="Idea" /><!-- s:idea: -->
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2005-8-19 15:01:58 | 只看该作者

谢谢楼上的回复

但是我加了%号在end 前还是有错误出现,牛人能不能帮忙看一下,非常感谢 。非常感谢
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
5#
 楼主| 发表于 2005-8-19 15:40:01 | 只看该作者

to maayy1980

加了%后,在我这里运行是没有错误的。如果你还有错,请把你的log贴上来。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
6#
 楼主| 发表于 2005-8-20 03:33:01 | 只看该作者

非常感谢楼主

2    %macro printit;
3    %if &syslast = _NULL_ %then %do;
4    proc print data=_last_(obs=5);
5    title "last created data set is &syslast";
6    run;
7    %end;
8    %mend;
9    %printit
NOTE: Writing HTML Body file: sashtml.htm
ERROR: There is not a default input data set (_LAST_ is _NULL_).
NOTE: The SAS System stopped processing this step because of errors.
NOTE: PROCEDURE PRINT used (Total process time):
      real time           0.13 seconds
      cpu time            0.09 seconds

10   run;


非常感谢楼主
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
7#
 楼主| 发表于 2005-8-20 10:06:33 | 只看该作者

逻辑问题

宏变量&amp;syslast和_last_实际上是一回事,而你的程序逻辑有问题。

当&amp;syslast=_null_的时候,系统没有一个默认数据集可用,而在此条件下你却要print过程打印默认数据集,肯定会出错。

应该将条件语句的逻辑关系反转,当not(&amp;syslast=_null_)的时候,再执行对默认数据集的打印。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
8#
 楼主| 发表于 2005-8-21 06:21:40 | 只看该作者

非常感谢楼上的回复,但是我改了程序还是有错误出现。

67   options mlogic mprint;
68   %macro printit;
69   %if &syslast^=_NULL_ %then %do;
70   proc print data=_last_(obs=5);
71   title "last created data set is &syslast";
72   run;
73   %end;
74   %mend;
75   %printit
MLOGIC(PRINTIT):  Beginning execution.
MLOGIC(PRINTIT):  %IF condition &syslast^=_NULL_ is FALSE
MLOGIC(PRINTIT):  Ending execution.
76   run;
上边是我又改了一遍的程序,但是还是有错误出现。楼上的前辈能不能再给看一下,非常感谢非常感谢。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
9#
 楼主| 发表于 2005-8-21 10:50:37 | 只看该作者

@

[code:01be5]options mlogic mprint;
data kkk;
set sashelp&#46;class;
run;

%macro printit;
%if &syslast^=_NULL_ %then %do;
proc print data=_last_&#40;obs=5&#41;;
title &quot;last created data set is &syslast&quot;;
run;
%end;
%mend;
%printit [/code:01be5]


[quote:01be5]
27
28   %macro printit;
29   %if &syslast^=_NULL_ %then %do;
30   proc print data=_last_(obs=5);
31    title "last created data set is &syslast";
32   run;
33    %end;
34    %mend;
35    %printit
MLOGIC(PRINTIT):  Beginning execution.
MLOGIC(PRINTIT):  %IF condition &syslast^=_NULL_ is TRUE
MPRINT(PRINTIT):   proc print data=_last_(obs=5);
MPRINT(PRINTIT):   title "last created data set is WORK.KKK                             ";
MPRINT(PRINTIT):   run;

NOTE: 有 5 个观测从数据集 WORK.KKK. 中读取
NOTE: PROCEDURE PRINT占用:
      实际时间         0.02 秒
      CPU 时间         0.02 秒


MLOGIC(PRINTIT):  Ending execution.[/quote:01be5]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
10#
 楼主| 发表于 2005-8-22 05:07:29 | 只看该作者

非常感谢楼上的帮助。

非常感谢楼上的帮助。
我再调试一下。非常感谢,非常感谢。能不能再问一个问题,如果前边不加data precess 这一步,为什么log 会出现错误,但是加上数据后,问题就会解决呢,非常感谢。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-9 07:11 , Processed in 0.073792 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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