在SAS中,'quit'和'run'之间有什么区别?声明?我无法弄清楚何时使用'quit'以及何时使用'run'?例如,为什么proc datasets
使用quit
而proc contents
使用run
答案 0 :(得分:13)
这可以追溯到SAS曾经是大型机程序的地方(现在仍然可以!)。
RUN;
是SAS运行提交的语句的命令。回到较旧的大型机时代,语句将一次一个地(或分批地)提交给SAS,但这里的核心概念是每条线与SAS的观点是分开的。 SAS接受语句而不做任何事情,直到它遇到RUN;
或其他会产生步边界的东西(通常是另一条DATA
或PROC
行)。在数据步骤中,或非交互式proc(proc表示,例如 - 一个只能执行一组指令然后退出的proc),run
告诉它做(无论如何)然后返回到一块空白的石板。
QUIT;
用于交互式编程环境。 IML,SQL,许多回归和建模PROC,FORMAT,TEMPLATE,DATASETS等 - 都可以交互使用,这意味着可以向它们发送多组指令。
在这些交互式案例中,您希望SAS继续执行某些指令,但仍然保持PROC的环境开放 - 例如,您的下一个语句将位于同一个PROC中。其中一些立即运行 - PROC SQL
就是一个很好的例子 - 而一些(特别是建模的PROC)RUN;
做了一些事情(告诉它到目前为止运行模型)但它不会退出proc遇到QUIT;
(或另一个需要退出的步边界,即data / proc语句)。这些被称为“运行组”,“运行组处理”是您将看到与之相关的术语。
你会发现有些人会在run; quit;
或run;
可能合适的每一点上放置quit;
;这并没有伤害任何东西,尽管它也不是真的“正确”。在某些情况下,需要这样做!
一个例子:
/* first run group*/
proc gplot data=sales;
title1 "Sales Summary";
plot sales*model_a;
run;
/* second run group */
plot sales*model_b;
run;
quit;