我不知道如果我在星期六晚上的任何答案,但我会给留言:)检查在SAS代码中的变量的存在
我想的Automize一个SAS-代码做比较在2-3家公司之间进行变异。在每项任务中,我可能会与不同的公司合作,所以我想我只能手动输入公司名称。
我描述了宏观变量对每个公司,例如:
%let C1=CompanyNo1; %let C2=CompanyNo2; %let C3=CompanyNo3;
,然后我只能把&C1
在剩余的代码。如果我不晚于另一家公司工作,那么我只更改代码中的CompanyNo1。
但问题是,我可能需要稍后进行不同数目的公司之间的比较。如果我为4家公司编写代码,并且如果我需要在下次运行中对两家公司进行比较,那么我必须停用部分代码。
所以我想写一个存在于代码中的检查;
data _null_; if &C3 is true then continue the run; else if quit the code. run;
有人告诉我,我可以做到这一点%Macro
声明(他说,也许,他不知道)。但我不确定如何通过%Macro
来实现此目的。
感谢提前任何贡献......
看看[这个问题](http://stackoverflow.com/questions/9009944/is-there-a-way-to-make-sas-stop-upon-the-first-warning-or-错误/ 9217932#9217932) - 它与您的不太一样,但提供的解决方案可以很容易地进行调整。 – user667489
感谢您的链接。现在我没有我的原始代码和SAS程序,但它可能会有所帮助。该链接打开了另一个问题: 是否有可能在%macro中实现该功能,以避免收到任何错误消息?例如,我像往常一样为前两家公司编写“数据运行语句”,但我在第三家公司(&C3)的%Macro检查中编写了“数据运行”语句,如: %macro check_for_errors; %data table3; %process =&C3 bla bla bla process ...; %运行; %if&syserr> 0%then%do;endsas; %end; %修复check_for_errors; – user3714330
你的问题含糊不清,不知道你在做什么,或者你如何比较,很难提出替代方案。您可以轻松编写循环来处理宏变量,直到遇到缺失的值。 – Reeza