在SAS中退出vs Run语句

Vic*_*tor 9 sas

在SAS中,'quit'和'run'之间有什么区别?声明?我无法弄清楚何时使用'quit'以及何时使用'run'?例如,为什么proc datasets使用quitproc contents使用run

Joe*_*Joe 14

这可以追溯到SAS曾经是大型机程序的地方(现在仍然可以!).

RUN;是SAS运行提交的语句的命令.回到较旧的大型机时代,语句将一次一个地(或分批地)提交给SAS,但这里的核心概念是每条线与SAS的观点是分开的.SAS接受语句而不做任何事情,直到它碰到一个RUN;或其他会产生阶梯边界的东西(通常是另一个DATAPROC一条线).在数据步骤中,或者非交互式proc(proc表示,例如 - 一个只能执行一组指令然后退出的proc),run告诉它做(无论如何),然后返回一个空白的平板.

QUIT;用于交互式编程环境.IML,SQL,许多回归和建模PROC,FORMAT,TEMPLATE,DATASETS等 - 都可以交互使用,这意味着可以向它们发送多组指令.

在这些交互式情况下,您希望SAS继续运行一些指令,但仍然保持PROC的环境打开 - 例如,您的下一个语句将位于同一个PROC中.其中一些立即运行 - PROC SQL就是一个很好的例子 - 虽然有些(特别是建模的PROC)RUN;做了某些事情(告诉它到目前为止运行模型)但是它会在QUIT;遇到之前不会退出proc (或者是另一个步骤边界,要求它退出,即数据/ 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;
Run Code Online (Sandbox Code Playgroud)

(来自运行组处理)

  • 谢谢,那是顽固的。 (2认同)