宏错误:在 %IF 条件中找到字符操作数

问题描述 投票:0回答:1

我收到“在需要数字操作数的 %EVAL 函数或 %IF 条件中找到字符操作数。条件是: &不。 = 4" 以下代码出现错误:

%MACRO system(no, center); %if &no. = 4 %then do%; data system_%no.; set system1 system2 (rename=(sysid=systemid)); if systemid > (&no. * 4) then delete; if systemid < ((&no. * 4) -3) then delete; sysid=systemid+30; drop systemid; system = &no.; center = put(strip("&center."),20.); run; %end; %MEND system;
我不知道问题出在哪里

error-handling syntax sas macros sas-macro
1个回答
0
投票
您的代码中存在拼写错误

do%

 而不是 
%do

请给出产生此问题的宏定义和宏调用的示例。这是宏的简化版本,它不会通过这些调用产生错误消息:

%MACRO system(no, center); %if &no. = 4 %then %do; %put I ran &=no; %end; %MEND system; %system(,foo) %system(3,foo) %system(4,foo) %system(5,foo)
可以通过如下调用产生错误消息:

%system(OR,foo)
在这种情况下,您可以使用宏引用来避免问题,但根据您的描述,我怀疑您的情况是否发生了这种情况。

测试宏时,不要只突出显示并提交部分宏定义。您需要提交整个宏定义才能编译它,然后提交宏调用来调用它。

请务必检查整个日志,包括编译宏的步骤和宏执行的步骤,以确保没有错误消息。

© www.soinside.com 2019 - 2024. All rights reserved.