有没有办法在不启用XCMD的情况下从SAS脚本中压缩来自?

时间:2013-08-27 04:37:12

标签: sas

我有一个SAS服务器的用户,希望能够通过将文件“zip”编程到同一个脚本中来“压缩”他们从SAS脚本输出的文件。

我犹豫是否允许XCMD允许在运行SAS的Linux服务器上本地完成此操作。有没有人知道在不启用XCMD的情况下执行此操作的替代方法?

3 个答案:

答案 0 :(得分:0)

取决于他们正在做什么。

如果他们正在生成.sas7bdat(SAS数据集),那么options compress=yes;(或=char)将压缩SAS数据集,其中一些。它的压缩程度几乎与正常的gzip压缩程度差不多。

如果他们写出文本文件,有一种编写zip文件的方法。在9.4中,这是生产;有关详细信息,请参阅this doc page。基本上你可以这样写:

filename myfile zip '//mydir/myfile.z';

然后像普通文件一样写入它。你可能也可以写出其他类型的文件(例如HTML),如果你把它们作为文本文件读出来并将它们逐行写回zip fileref;但目前没有太多可用的信息,因为它是全新的。

在9.4之前,有SASZIPAM文件名引擎,这是官方不支持的,不适合生产使用。您也许可以类似地使用它。

如果他们正在编写PDF或类似文件,那么可能没有合适的方法,除非您可以通过使用recfmt = n读取pdf并使用pdf输入zip文件来使用zip文件名引擎办法;但这似乎很危险。

从我的观点来看,如果你不习惯启用XCMD,那么最好的解决方案就是让SAS写出一个包含zip指令的批处理文件(所以在我认为是Linux中的.sh文件),并且有一个过程,运行SAS在完成后执行该.sh文件。

答案 1 :(得分:0)

如果您的输出转到ODS目的地,您可以创建一个ODS包并将所有输出包含在zip文件中。

ods package open;
ods html package;
 proc print data=sashelp.class;
 run;
ods html close;
ods package publish archive properties(archive_name="class.zip" archive_path="\");
ods package close;

答案 2 :(得分:0)

我没有UNIX安装,因此我无法使用-NOXCMD进行测试。

在Unix中,您可以像使用任何其他Unix进程一样使用SAS来编写pipe