自动化变量存在宏

Automating variable exists macro

我正在尝试改进我所做的宏以查看变量是否仍然存在并为其分配空值

%macro VarExist(ds, var);
    %local rc dsid result;
    %let dsid =%sysfunc(open(&ds));
    
    %if %sysfunc(varnum(&dsid,&var)) > 0 %then %do;
        %let result =1;
        %put NOTE: Var &var exists in &ds;
    %end;
    %else %do;
        %let result= 0;
        %put NOTE: Variable &var was dropped at SDTM level per CDISC Compliance.
             Null value will be assigned.;
    
        data AE2;
            set work.&ds;
            &VAR=.;
        RUN;
    %END;
    %let rc=%sysfunc(close(&dsid));
%MEND VarExist;
    
%VarExist(ae1,AESDTH);

有没有办法自动分配变量实际 character/numeric 来源? vtype 可能还是 vvalue?同样对于 AE2,我可以做类似 &ds.n 的事情,甚至可以在原始 &ds 数据集中自动分配它。我只做了另一个数据集来实际测试它是否有效。有什么想法吗?相关论文的链接?

似乎不​​需要测试变量是否存在。

 data ae2;
   set ae1;
   length AESDTH 8;
 run;