【问题标题】:In SAS, what are good techniques/options for catching syntax errors?在 SAS 中,什么是捕捉语法错误的好技术/选项?
【发布时间】:2010-10-24 14:00:09
【问题描述】:

在增强的编辑器中,着色可能会给您一些提示。但是,在大型机上,我认为编辑器中没有任何东西可以帮助您。

我用

OPTIONS OBS=0 noreplace;

obs=0 选项指定从输入中读取 0 个观测值 dataset 和 NOREPLACE 告诉 SAS 不要用其中一个覆盖现有的 SAS 数据集 一样的名字。如果您正在创建一个新的数据集,它将使用所有属性创建, 但有 0 个观察值。 (如果需要,请务必将选项重置为 Options Obs=max replace ; 当没有发现更多语法错误时)。

我会对任何其他技术感兴趣。 谢谢

关于选项的解释来自here.

【问题讨论】:

    标签: sas


    【解决方案1】:

    我在运行语句中使用取消选项。它将检查数据步骤的语法,然后终止它而不实际执行它。它是类似于 proc sql 中的noexec 选项的数据步骤。

    data something;
    <stuff here>
    run cancel;
    

    SUGI pdf 中有更多详细信息

    【讨论】:

    • 好提示。我记得现在得到一个提示(来自课堂或论文)使用宏 var 而不是取消。然后,当您真正想要运行程序时,可以将宏 var 更改为空白。感谢您的链接。这是一篇好论文。
    • 哦,太好了 - 我用过noexec,但不知道有一个等效的数据步...谢谢!
    【解决方案2】:

    我在 PC 上使用 SAS 和增强的彩色编码编辑器在 PC 上编写所有代码。然后我使用 SAS/CONNECT 在大型机上处理它。如果数据集在 DASD 上,我使用 SAS/CONNECT 和 Enterprise Guide 直接在大型机上运行代码(没有 JCL!)如果涉及数据磁带,因此必须批量运行,我使用 SAS/CONNECT 和 SAS ftp 引擎将代码发送到大型机批处理队列。我使用 SAS 电子邮件引擎将我的输出和日志通过电子邮件发送给我。我把ODS三明治放在我的代码中,让大型机生成一个WORD文档用于输出。我使用 PROC 下载将输出下载到我的服务器,以便我可以在 WORD 中打开它。

    【讨论】:

    • 请注意,SAS/CONNECT 和 SAS Enterprise Guide 与 Base SAS 分开许可,因此此解决方案不适用于未获得这些产品许可的用户。
    【解决方案3】:

    此建议与语言无关。

    我认为捕获语法(和逻辑)错误的一种更可取的技术是仔细阅读(或检查)您自己的代码(这应该会捕获大部分语法错误),然后对小型数据集进行单元测试(如果您的测试设计良好,它将捕获任何剩余的语法错误以及许多逻辑错误)。

    我同意单独进行语法检查是有价值的,但是在第一次编译之前充分阅读和理解您的代码以便您知道它将编译是一个很好的理想目标。 Steve McConnell 在 Code Complete 中谈到了这个想法(参见第 2 版的第 827 页)。

    附:您在原始帖子中提到了语法突出显示;还有其他编辑器(例如 VIM)将对 SAS 文件执行语法高亮显示。

    【讨论】:

      猜你喜欢
      • 2017-02-25
      • 2021-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-08
      • 2011-07-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多