我是SAS的新手,来自SQL,所以我正在处理它们之间的差异。
我有一个SAS程序“Master.sas”,其中包括以下内容:
%include "c:\script1.sas";
%include "c:\script2.sas";
%include "c:\script3.sas";
问题是,如果我选择所有这些并运行它,它是按顺序还是并行运行? 例如,如果script2使用在script1中加载的表,它将无法成功运行吗? 好吧,这个例子在我测试时可能听起来很明显,但是如果script1计算变量会发生什么,script2将计算变量或者使用它在运行时发现的变量(因为,例如,script2先前已经运行过script1)? 为了澄清,我需要SAS依次顺序运行它们。
在SQL中存在“GO”来分隔批处理,即:
CREATE TABLE XXXXX
GO
SELECT * FROM XXXXX
GO
如果有人试图用GO运行该脚本,SQL会并行运行它们,在第二个脚本上产生错误,告诉“表XXXXX不存在”。
在上一次完成后,我是否需要在SAS或SAS中使用类似的东西?
提前致谢!
答案 0 :(得分:2)
%include
将按顺序运行。 SAS将运行第一个%include
,就好像它只是代码中的行,然后点击第二个并执行相同的操作等。
SAS的GO
相当于RUN
,但在大多数情况下,RUN
实际上并不包含PROC SQL
(尽管它是&#39} ; s被认为是一种很好的做法)。 SAS不会仅仅因为你没有RUN而以并行模式运行,而是告诉SAS继续并运行给定的代码。但 适用于;
;它不支持运行组处理,并立即执行由%include
终止的每个语句。
有办法让它并行运行;例如,this hands-on workshop from SUGI 29 on Parallel Processing显示了如何使用RSUBMIT来执行此操作。企业指南允许并行处理程序(但在一个程序中不是while(cin>>temp)
),如果你告诉它(但不是默认情况下)。
答案 1 :(得分:1)
%include将始终按顺序运行。
如果在脚本1中创建了一些变量,则可以在脚本2中使用相同的变量,但是如果脚本1依赖于在脚本2中创建的某些变量,则会出错。
答案 2 :(得分:0)
%include将按顺序运行。如果您在第一%include中的代码遇到错误,那么您的程序将停止并且不会处理其他行。