【问题标题】:SAS macro ERROR 180-322: Statement is not valid or it is used out of proper orderSAS 宏错误 180-322:语句无效或使用顺序不正确
【发布时间】:2015-08-02 09:13:59
【问题描述】:

我正在尝试在我公司的 SAS 服务器上使用 SAS 宏语言。其余的(基于 SAS 的)代码工作正常,但宏不能。即使是简单的 %let 也会导致错误(这是程序的第一行):

5789  %let pgm = XXX ;
      -
      180
ERROR 180-322: Statement is not valid or it is used out of proper order

我已经检查了工具下的系统选项,并且'macro'选项设置为1。

有人知道如何让宏正常工作吗?

谢谢:)

【问题讨论】:

  • 是否有任何代码执行此语句?什么版本的 SAS?
  • 嗯,日志说它是程序的第 5789 行。 :) 如果你开始一个新的会话,你能重复这个问题吗?您是否尝试批量提交程序?尝试添加选项宏;也许运行 proc options 以确认宏选项已打开。看起来必须在 SAS 调用期间设置。 (即使是宏讨厌者通常也不会关闭它,所以如果有人故意关闭它,我会感到惊讶)。

标签: sas sas-macro let


【解决方案1】:

我会通过运行 proc options 来检查宏选项:

proc options option=macro;
run;

需要在 SAS 调用期间设置宏选项。因此,您可能需要检查 SAS 会话使用的配置文件。在服务器 SAS 中,可能意味着与您的 SAS 管理员交谈,因为不同的逻辑服务器可能有大量的配置文件......

通过在调用期间指定 -nomacro,我能够在 PC SAS 中复制您的结果。我认识很多讨厌宏语言的人,但他们从来没有真正把它关掉。我关闭宏语言后的日志是:

1    proc options option=macro;
2    run;

    SAS (r) Proprietary Software Release 9.3  TS1M2

 NOMACRO           Do not allow use of SAS macro facility

3
4    %let x=1;
     -
     180

ERROR 180-322: Statement is not valid or it is used out of proper order.

【讨论】:

  • 哇,不知道你可以关闭宏语言。
  • 谢谢,我忘了有 proc 选项。这是我得到的:“13062 proc options value option=macro; 13063 run ; SAS (r) Proprietary Software Release 9.4 TS1M2 Option Value Information For SAS Option MACRO Value: MACRO Scope: Default How option value set: Shipped Default” .. ..所以听起来宏选项至少打开了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-22
  • 1970-01-01
  • 2022-10-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多