当前位置: 首页 > 知识库问答 >
问题:

SAS SYSCC宏变量行为

杜英叡
2023-03-14

我的理解是,如果SAS进程遇到错误

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

%macro test;


sdsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfs

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

%mend;

%test;

我是不是误会了什么?

谢谢

共有1个答案

宋昕
2023-03-14

这是一个时机问题。在执行%put语句时未生成任何错误。%test宏生成一些文本(sdfs..)并编写有效的put语句。宏调用后的分号 创建语句边界(SDF…;)然后抛出一个错误。

执行顺序:

1) 编译宏

2) 执行宏(%test

3) 执行%put语句

4)发送sdsdfsdfsdfsdfsdfsdfsdfsdfsdfs到输入堆栈

5) 完成宏的执行

6)将最终分号发送到输入堆栈(

7)sdsdfsdfsdfsdfsdfsdfsdfsdfsdfs;被执行,这可能会抛出错误(它太长而不是变量名,但可能是有效%let语句的一部分);

 类似资料:
  • 我有一个内联变量函数内联int foo(…) 我需要调用一个宏(我们称它为宏),它也是可变的 基本上,我需要将其所有输入参数传递给宏。由于使用了选项,将重新定义为另一个宏将是一个简单的解决方案,但我还需要来返回值<注意:我正在尝试连接已编写代码的两部分,不允许更改它们<代码>foo(…) 用于代码的第一部分,宏定义于第二部分。我要做的唯一一件事就是定义一个使用宏的foo(),我不能,因为它们都是可

  • 为了使Playbook更灵活、通用性更强,允许用户在执行的时候传入变量的值,这个时候就需要用到“额外变量”。 定义命令行变量 在release.yml文件里,hosts和user都定义为变量,需要从命令行传递变量值。 --- - hosts: '{{ hosts }}' remote_user: '{{ user }}' tasks: - ... 使用命令行变量 在命令行里面传值

  • 把task的执行结果当作是一个变量的值也是可以的。这个时候就需要用到“注册变量”,将执行结果注册到一个变量中,待后面的action使用: --- - hosts: web tasks: - shell: ls register: result ignore_errors: True - shell: echo "{{ result.stdout

  • 问题内容: 例如,如果我有一个变量,并且在主线程中声明了一个runnable,并且想将x传递给该runnable的方法,则必须对其进行声明。为什么? 问题答案: 因为如果能够更改它们,可能会导致很多问题,请考虑以下事项: 这是一个粗略的示例,但您可以看到可能发生许多无法解释的错误。这就是变量必须为最终变量的原因。这是解决上述问题的简单方法: 如果您需要更完整的说明,则有点像同步。Java希望防止您

  • 问题内容: 我继承了一些Python代码,这些代码用于创建巨大的表(最多19列,每行5000行)。花了 九秒钟 时间在屏幕上绘制了表格。我注意到每一行都是使用以下代码添加的: 字符串在哪里。 我将其更改为: 我注意到桌子现在出现了 六秒 。 然后我将其更改为: 基于这些Python性能提示(仍为6秒)。 由于调用了大约5000次,因此突出了性能问题。但是为什么会有如此大的差异呢?为什么编译器没有在

  • 问题内容: 在我的Java类中,我这样声明变量 或者我们必须在多行中这样声明 我们应该遵循哪一个? 问题答案: 这只是口味和喜好问题。但是,如果您不设置准则,它将与Vim与Emacs或IntelliJ与Eclipse一起,成为大多数开发团队中无休止的辩论/争论的温床。 我建议为您的团队设置编码标准,最简单的方法是引用现有的标准,例如Sun(现在为Oracle)Java准则,在这种情况下建议每行使用