【发布时间】:2015-01-21 23:00:16
【问题描述】:
我们在企业指南中构建了一个项目,目的是创建易于理解和可维护的代码。该项目包含一组应按特定顺序运行的流程。我们需要在运行 SAS 元数据服务器的 Linux 服务器机器上运行这个项目。 基本思路是将这个项目提取为 SAS 代码,我们可以在 Linux 中作为批处理作业从命令行运行。
问题一:
- 还有其他方法可以在 Linux 托管的 SAS 服务器中安排批处理作业吗?我已经阅读了有关用于调度/运行批处理作业的 VBS 脚本,但是为了在 Linux 服务器上完成这项工作,需要安装 WINE,它在已经运行许多其他重要应用程序的生产机器上几乎完全不可用问题。
- 如果我给出了运行流程的具体顺序,有没有办法将完整的项目导出到 SAS 代码中?我试过有序列表,它可以让你按顺序运行的任务列表(虽然没有办法选择整个流程流作为单个任务),但不幸的是,这个有序列表本身以后是不可能的导出为 SAS 代码。
我们目前的解决方案如下: 我们将 SAS EG 项目的每个单个流程流导出为 SAS 代码,然后使用 %include 行创建另一个 SAS 代码,以按照我们想要的顺序运行所有提取的代码。这当然是一种可能的解决方案,但绝对不是最优雅的解决方案。
问题2:
- 由于我不知道之后代码是如何导出的,所以我选择的解决方案是否有任何危险。
- 还有其他更优雅的方式吗?
【问题讨论】:
-
不是答案,但这可能会有所帮助。如果将 .egp(项目文件)重命名为 .zip,则可以查看 EG 项目的内容(通常是 .sas 文件,其中包含描述流程的代码和 XML 文件)。
-
我让用户导出到“每日”、“每小时”、“每周”或“每月”文件夹之一。他们还需要维护一个带有作业名称的 Excel 工作簿。然后我有一个循环遍历 Excel 工作簿中的作业并使用 X 命令提交它们的作业。收集作业的返回代码 (&SYSRC),并在完成时发送摘要电子邮件。
-
导出的代码有一个问题,行的长度可能会太长。 EG 中有一个“错误”,它可能会在一行中创建超过约 250 个字符的行。我不记得确切的数字,但批处理作业只能有大约 250 个字符。导出项目的用户应该得到通知,这样他们就可以“断”行。
-
这是描述批量提交超过 256 个字符的行的问题的 SAS 说明:support.sas.com/kb/15/883.html
-
在 9.2 之后,您应该将 LRECL 系统选项设置为比 256 长得多,您不必担心这个限制。
标签: linux batch-file sas enterprise