检查 SAS 代码中是否存在变量



我不确定周六晚上我是否得到任何答案,但我会大喊大叫:)

我正在尝试自动化一个 SAS 代码,该代码在 2-3 家公司之间进行比较。在每个任务中,我可能会与不同的公司合作,所以我想我只能手动输入公司名称。

我描述了每个公司的宏观变量,例如:

%let C1=CompanyNo1; %let C2=CompanyNo2; %let C3=CompanyNo3;

然后我只在剩余的代码中放入&C1。如果我以后在另一家公司工作,那么我只会更改代码中的 CompanyNo1。

但是,问题是我以后可能需要对不同数量的公司进行比较。如果我为 4 家公司编写代码,并且如果我需要在下一次运行中对 2 家公司进行比较,那么我必须停用代码的某些部分。

所以我想在代码中写一个存在检查,比如;

data _null_; if &C3 is true then continue the run; else if quit the code. run;

有人告诉我,我可以用%Macro声明来做到这一点(他说也许,他不确定)。但我不确定如何通过%Macro实现这一目标.

提前感谢您的任何贡献...

您可以使用

%SYMEXIST宏函数和SYMEXIST数据步骤函数检查代码中是否存在宏变量。

最后我找到了一个有效的解决方案。

%Macro checking;
  %let C3=CompanyNo3;
  %if &SYSERR > 0 %then %do;
     %goto exit;
  %end;
  'other data processes here';
  %exit:   /* Be careful, it is not semicolon  */
 %Mend;

因此,如果没有 CompanyNo3,则 SAS 只会发出警告,指出 CompanyNo3 无人值守。然后它转到exit,它不做其他数据处理。它完成该过程,没有错误消息。

相关内容

  • 没有找到相关文章

最新更新