【问题标题】:Batching SAS jobs批处理 SAS 作业
【发布时间】:2016-12-02 01:14:05
【问题描述】:

我正在寻找一个简单的解决方案,它可以支持批处理 SAS 程序,它可以直接从 cmd 运行,例如, "C:\Program Files\SASHome2\SASFoundation\9.4\sas.exe" -CONFIG "C:\Program Files\SASHome2\SASFoundation\9.4\nls\en\sasv9.cfg" -sysin "C:\Users\Documents\sas\Run_Program.sas" -LOG "C:\Users\Documents\sas\f2.log"

但问题是我有两个 SAS 文件 - 一个代表 config,第二个代表 program(配置文件加载特定数据集、全局变量等...)。

是否有一个简单的解决方案,我可以使用当前文件结构从 cmd 自动化程序运行过程。

其他考虑的想法: 我考虑过创建新的(动态)sas 文件 batch.sas,其内容为 %inc "config.sas"; %inc "program.sas",其中“program.sas”是为每次运行提供的动态参数。

【问题讨论】:

  • 为什么不直接制作一个 autoexec.sas 文件?

标签: windows batch-file cmd sas


【解决方案1】:

如果我理解正确 - 您希望在 program.sas 文件之前运行 config.sas 文件?您通过%inc 这样做的建议很好,另一种方法是在启动时调用您的 config.sas 文件,将其用作自动执行程序,例如如下:

"C:\Program Files\SASHome2\SASFoundation\9.4\sas.exe"  
  -CONFIG "C:\Program Files\SASHome2\SASFoundation\9.4\nls\en\sasv9.cfg" 
  -sysin "C:\Users\Documents\sas\Run_Program.sas" 
  -LOG  "C:\Users\Documents\sas\f2.log" 
  -autoexec "C:\Users\Documents\sas\config.sas"

在初始化 SAS 会话时,自动执行文件运行一次。如果需要,您的 config.sas 文件可以通过调用任何相关/现有的 autoexec(s) 开始。

【讨论】:

  • 是否有 SAS 支持的可用参数列表/一些未记录的选项?
  • 一个简短的问题:有什么办法可以运行两个具有不同 autoexec 的程序但保留部分结果,例如每个工作的表?
  • 您可以使用上面的命令行选项切换自动执行(所以对第 1 部分是肯定的),关于部分结果 - 这取决于您的作业的配置方式。如果您需要保留部分结果,那么您应该将这些表保存在暂存区域而不是 SASWORK 中。这是在工作本身中完成的。也就是说,如果会话仍处于活动状态,您当然可以查看 sas 工作中的文件 - 请参阅%sysfunc(pathname(work))。要获得更全面的答案,我建议提出一个新问题..
  • 不同/多个 sysin 怎么样,例如 1 和 2 程序?我的目标是在运行程序 2 时看到第一个程序结果 table_1?
【解决方案2】:

autoexec 解决方案是一个合理的解决方案,但我认为除非您始终(在您曾经运行的每个 SAS 程序/会话中)加载完全相同的配置,否则这最终是正确的方法这样做与 c 程序几十年来使用头文件的方式相同。

如果您有一个为特定程序加载数据集的config.sas,则该程序应在顶部包含%include config.sas。然后你只需批处理程序。

【讨论】:

    猜你喜欢
    • 2019-11-16
    • 1970-01-01
    • 1970-01-01
    • 2018-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-02
    • 2012-11-12
    相关资源
    最近更新 更多