您能否写入 sas 日志以指示当前脚本的位置,例如行号?

inv*_*ell 2 sas

我希望在脚本中更新日志,以便我知道程序已经完成了多少。我知道“put”命令,但这似乎只在我收到“Exit 2”、“Exit 1”或“Done”通知后在最终打印的“.log”文件中起作用。

Dom*_*azz 5

在批处理模式下,日志会在进程运行时写入。有一个缓冲机制,这意味着您无法完美实时地跟踪,但对于大型作业来说,它已经接近了。假设(根据你的命令)你在 Unix/Linix 系统上:

tail -f blah.log
Run Code Online (Sandbox Code Playgroud)

将在写入终端时输出日志。

正如 Reeza 在评论中提到的,您的另一个选择是在运行期间写入单独的文件。

filename status "~/status.log";

data _null_;
file status ;
now = datetime();
put "Start at " now datetime.;
run;

<other stuff>

data _null_;
file status mod;
now = datetime();
put "I'm here at at " now datetime.;
run;

...
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用相同的tail -f ~/status.log命令来跟踪该文件并查看处理已通过的位置。