gpt4 book ai didi

macros - 将宏变量值分配给SAS中的数据步骤变量

转载 作者:行者123 更新时间:2023-12-01 04:36:43 25 4
gpt4 key购买 nike

我在数据步骤中调用宏并将宏变量分配给数据步骤变量,如下所示。

宏的输入来自具有大约 500 条记录的输入数据集。

%macro test(inp_var);
%global macro_var;
--- using inp_var variable here---
%if --some condition-- %then call symput('macro_var',-- some value--);
%mend;

data output;
set input;
%test(inp_var);
new_data_step_var = symget('macro_var');
run;

但它显示的错误消息指向变量 new_data_step_var - ERROR 180-322: Statement is not valid or it is used out of proper order

最佳答案

没有 SAS 宏实际上在数据步骤“内部”执行。宏语言处理器和数据步编译器作为两个不同的子系统共享代码输入流。他们在“吃掉”SAS 代码块时互相交接。对于原始程序,SAS 中的语言处理器会看到“数据”语句并将其交给数据步编译器。嵌入的 %test 宏调用被检测到,代码输入流首先被传递给宏处理器!宏处理器展开 %test 宏内的所有代码和宏逻辑,然后将整个代码流交还给 SAS 数据步编译器进行编译。

因此 %test 将在数据步骤编译之前运行完成。

如果您希望在数据步骤中创建自己的子例程,请尝试使用 proc fcmp。否则,只需按照建议在数据步骤中实现您的条件逻辑。

关于macros - 将宏变量值分配给SAS中的数据步骤变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18567495/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com