如果SAS表中存在列,则返回TRUE值

时间:2018-12-04 22:33:10

标签: sas

当表中存在列时,我不太清楚如何返回TRUE值(注意-TRUE值可以是我可以在下游评估为{{1}的任何值})

示例-修改星号之间的代码

TRUE

1 个答案:

答案 0 :(得分:3)

如果要创建“函数”样式的宏,它将无法生成任何实际的SAS代码。它只能包含宏语句。

您可以使用%sysfunc()宏函数以宏代码调用SAS函数,例如OPEN()和VARNUM()。

%macro varexist(ds,var);
%local dsid ;
%let dsid = %sysfunc(open(&ds));
%if (&dsid) %then %sysfunc(varnum(&dsid,&var));
%else 0 ;
%let dsid = %sysfunc(close(&dsid));
%mend varexist;

有关完整的宏定义以及注释和其他功能,请参见此链接。 https://github.com/sasutils/macros/blob/master/varexist.sas