SAS错误:在%EVAL函数或%IF条件中找到了一个字符操作数,其中需要数字操作数

时间:2017-07-14 01:23:38

标签: if-statement macros sas eval

我有一个包含以下宏变量的宏:cat_var,model,validate。

当我输入以下调用时,宏运行良好:

%models(cat_var=mommy dadmy,model=age readhr mommy dadmy,validate=no);

但是当我进入这个电话时:

%models(cat_var=mommy dadmy,model=age readhr mommy dadmy age*readhr,validate=no);

我收到此错误消息:

在%EVAL函数或%IF条件中找到了字符操作数 其中需要数字操作数。条件是:(& validate =)或 ((& cat_var =)和(& model =))或((& cat_var ^ =)和(& model =))

因此,我相信我已将此问题与我编写的以下代码隔离开来:

%if (&validate =) or ((&cat_var =) and (&model =)) or ((&cat_var ^=) and (&model =)) %then 
%put ERROR: One or more inputs are missing. Check to make sure all macro variables have an input where necessary. (It is not necessary to have cat_var inputs);

我打算使用此代码的逻辑如下:

如果缺少输入OR(cat_var AND模型缺少输入)或(cat_var不缺少输入AND模型缺少输入)则显示错误消息。

此代码按照我的预期工作,直到我在模型输入中输入*符号。这是什么搞砸了?我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

因为%eval()函数也可以计算整数运算,所以你会因为引入算术运算符而得到错误。

如果要测试宏变量是空还是空白,请参阅此问题。 Testing for an empty parameter in a SAS Macro