标题: sas macro 大师快来帮忙 SOS [打印本页] 作者: shiyiming 时间: 2005-8-19 04:32 标题: 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;
这段程序怎么老是调试有错误,哪位大虾帮忙改一下,非常感谢,非常感谢。作者: shiyiming 时间: 2005-8-19 08:11 标题: Re: sas macro 大师快来帮忙 SOS [quote:fe8ee]ERROR: There were 1 unclosed %DO statements. The macro PRINTIT will not be compiled.[/quote:fe8ee]
PS,请不要重复发相同内容的帖子。 <!-- s:idea: --><img src="{SMILIES_PATH}/icon_idea.gif" alt=":idea:" title="Idea" /><!-- s:idea: -->作者: shiyiming 时间: 2005-8-19 15:01 标题: 谢谢楼上的回复 但是我加了%号在end 前还是有错误出现,牛人能不能帮忙看一下,非常感谢 。非常感谢作者: shiyiming 时间: 2005-8-19 15:40 标题: to maayy1980 加了%后,在我这里运行是没有错误的。如果你还有错,请把你的log贴上来。作者: shiyiming 时间: 2005-8-20 03:33 标题: 非常感谢楼主 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
应该将条件语句的逻辑关系反转,当not(&syslast=_null_)的时候,再执行对默认数据集的打印。作者: shiyiming 时间: 2005-8-21 06:21 标题: 非常感谢楼上的回复,但是我改了程序还是有错误出现。 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;
上边是我又改了一遍的程序,但是还是有错误出现。楼上的前辈能不能再给看一下,非常感谢非常感谢。作者: shiyiming 时间: 2005-8-21 10:50 标题: @ [code:01be5]options mlogic mprint;
data kkk;
set sashelp.class;
run;
%macro printit;
%if &syslast^=_NULL_ %then %do;
proc print data=_last_(obs=5);
title "last created data set is &syslast";
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;