【问题标题】:SAS SYSCC Macro Variable BehaviourSAS SYSCC 宏变量行为
【发布时间】:2019-04-22 19:23:17
【问题描述】:

据我了解,如果 SAS 进程遇到错误,则 &SYSCC.不会为 0。这是成功返回码。我正在将所述变量写入文本文件,以充当 Python 脚本的通过/不通过信号,我正在使用该脚本来编排一些更广泛的流程。

在通过触发一些简单的故意错误来测试所述变量的行为时,我注意到它仍然返回零:

%macro test;


sdsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfs

%put &syscc. **********************************;

%mend;

%test;

我是不是误会了什么?

谢谢

【问题讨论】:

    标签: sas


    【解决方案1】:

    这是一个时间问题。在 %put 语句执行时没有产生错误。 %test 宏会生成一些文本 (sdsfsdfs..) 并写入有效的 put 语句。宏调用; 之后的分号会创建一个语句边界(sdsfsdf...;),然后会引发错误。

    执行顺序:

    1) 编译宏

    2) 执行宏(%test)

    3) 执行%put 语句

    4) 将sdsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfs 发送到输入堆栈

    5) 完成宏执行

    6) 将最后的分号发送到输入堆栈 (;)

    7) sdsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfs; 被执行,这可能会引发错误(变量名太长,但可能是有效%let 语句的一部分);

    【讨论】:

    • 是的,我现在看到了,谢谢。当我在我的无意义字符串 SAS 返回错误代码 3000 后添加了一个分号时......当我的代码进入批处理状态时,我的错误测试用例不太可能发生,因为手指问题(例如缺少半冒号)将被熨烫在交互式开发代码的同时退出......
    猜你喜欢
    • 1970-01-01
    • 2014-12-02
    • 2021-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多