使用%include运行SAS脚本

时间:2016-09-19 19:06:04

标签: sas

我是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中使用类似的东西?

提前致谢!

3 个答案:

答案 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中的代码遇到错误,那么您的程序将停止并且不会处理其他行。