今天我遇到了问题并解决了,但我不太清楚为什么会出现这个问题。 我们有一个SAS批处理工作:
/path_to_script/sasbatch.sh -log /some_path/Logs/replication_#Y.#m.#d_#H.#M.#s.log -batch -noterminal -logparm "rollover=session" -sysin /another_path/macros/replication.sas
今天这份工作失误了:
ERROR: Insufficient authorization to access /sas_path/sasconfig/Lev1/SASApp/replication.lst.
我发现错误的原因是NOPRINT
语句没有出现在PROC SQL
个语句中。将NOPRINT
嵌入PROC SQL
标头后,它正常工作。
那么NOPRINT
在SAS工作中的作用是什么?为什么会导致错误呢?
答案 0 :(得分:3)
错误诊断
您尚未在SAS批处理作业中设置-print
选项,因此它选择写入默认目录。提交作业的用户对此目录没有写入权限:
/ sas_path / sasconfig / LEV1 / SASApp
NOPRINT选项&典型用途
NOPRINT
语句中的PROC SQL
选项会抑制SQL过程的任何输出。您必须在SQL过程中生成一个产生输出的语句,通常类似于:
select col1 into :c1
from table;
它不必要地产生输出,因为它创建了一个名为c1的宏变量,可以在程序的其他地方使用。
<强>分辨率强>
设置NOPRINT
,或将批处理作业中的-print
选项设置为可写目录,并根据需要查看/删除输出文件。
答案 1 :(得分:1)
NOPRINT
阻止将任何内容写入lst文件。 lst文件是输出窗口的批处理等价物。将在交互式会话中写入输出窗口的任何内容(因为ODS LISTING处于活动状态)将写入lst文件。我总是使用NOPRINT