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

您是否可以写入sas日志以指示当前脚本的位置,例如,行号?,sas,Sas,我想在脚本中更新日志,这样我就知道程序完成了多少。我知道“put”命令,但这似乎只在我收到通知“Exit 2”、“Exit 1”或“Done”后在最终打印的“.log”文件中起作用 在批处理模式下,在进程运行时将日志写入。有一个缓冲机制,这意味着你不能完全实时地跟随,但对于大的工作来说,它是接近的。假设(根据您的命令)您在Unix/Linix系统上: tail -f blah.log 将在日志写入终端时输出日志 正如Reeza在评论中提到的,您的另一个选择是在运行期间写入一个单独的文件 fil

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

在批处理模式下,在进程运行时将日志写入。有一个缓冲机制,这意味着你不能完全实时地跟随,但对于大的工作来说,它是接近的。假设(根据您的命令)您在Unix/Linix系统上:

tail -f blah.log
将在日志写入终端时输出日志

正如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;

...
文件名状态“~/status.log”;
数据为空;
文件状态;
现在=日期时间();
把“开始时间”改为现在日期时间。;
跑
数据为空;
文件状态模块;
现在=日期时间();
把“我在”写在日期时间。;
跑
...

然后,您可以使用相同的
tail-f~/status.log
命令跟踪该文件,查看处理过程在哪里进行。

您如何调用SAS?这是一个“视情况而定”的问题。我通过Bash命令行调用sas,如下所示:'sas-noterminal myscrpt.sas&'@DomPazzWrite语句到一个将在运行中更新的文件中。我认为您可能只有在流程完成后才能访问日志。@Reeza这是错误的。批处理模式下的日志在运行期间写入。在*nix系统上,您可以使用
tail-f blah.log
在作业运行时跟踪。不过,有一个缓冲机制,所以它不是完全实时的。@DomPazz谢谢。如果您只需要处理状态,我认为单独的文件仍然有意义。日志包含不同的信息。我想是个人喜好吧。谢谢你的回复。我将在明天试用,如果有效,请选择作为答案:)。