SAS中文论坛

标题: 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]

知道下面怎么改了吧? <!-- s:D --><img src="{SMILIES_PATH}/icon_biggrin.gif" alt=":D" title="Very Happy" /><!-- s:D -->
作者: shiyiming    时间: 2005-8-19 14:49
标题: 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: -->
作者: 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

10   run;


非常感谢楼主
作者: shiyiming    时间: 2005-8-20 10:06
标题: 逻辑问题
宏变量&amp;syslast和_last_实际上是一回事,而你的程序逻辑有问题。

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

应该将条件语句的逻辑关系反转,当not(&amp;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&#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]
作者: shiyiming    时间: 2005-8-22 05:07
标题: 非常感谢楼上的帮助。
非常感谢楼上的帮助。
我再调试一下。非常感谢,非常感谢。能不能再问一个问题,如果前边不加data precess 这一步,为什么log 会出现错误,但是加上数据后,问题就会解决呢,非常感谢。
作者: shiyiming    时间: 2005-8-22 09:50
标题: Re: 非常感谢楼上的帮助。
参见student的回复。
作者: shiyiming    时间: 2005-8-23 03:41
标题: 非常感谢,楼上的。
非常感谢。非常感谢。
作者: shiyiming    时间: 2005-9-2 16:10
标题: 感谢大家
感谢大家
作者: shiyiming    时间: 2005-9-6 22:44
标题: 试着回答,但不一定对
可能因为,你的sas在刚启动时,就运行宏,所以系统没有记录,故不出现结果。
如有不对请指正 <!-- s:roll: --><img src="{SMILIES_PATH}/icon_rolleyes.gif" alt=":roll:" title="Rolling Eyes" /><!-- s:roll: -->




欢迎光临 SAS中文论坛 (http://mysas.net/forum/) Powered by Discuz! X3.2