在SAS的if语句中使用ERROR

时间:2016-04-28 11:40:08

标签: sas

我刚写了一个宏来登录远程服务器,当然是一个简单的宏

%macro sign(servername);
%put                                                         ;
%put *********   You are now entering the server   ********* ;
%put *********                                     ********* ;


signon &servername user=_promopt_ password=_prompt_;

%if error %then

%put There is a problem in logging in;

%else 


%put *********                                     ********* ;
%put *********                                     ********* ;
%put *********   You are now ready to use server   ********* ;
%put *********                                     ********* ;
%put *********                                     ********* ;
%mend;

所以我想在日志中写一些内容,如果它因任何原因抛出错误。,这可能是错误的密码或连接或任何东西,我想在%Put的帮助下打印声明但不确定如何。

1 个答案:

答案 0 :(得分:3)

您应该能够在SIGNON语句中使用CMACVAR选项。

signon &servername user=_promopt_ password=_prompt_ cmacvar=cerror;
%if &cerror %then
  

CMACVAR =值

     

指定宏变量的名称,其中SAS存储指示当前登录状态的代码。执行SIGNON时,SAS会检查登录状态,并在指定的CMACVAR变量中存储返回码0,1或2。

     

在SIGNON处理完成后生成返回代码,并且您指定的名称将成为当前服务器会话的默认名称。然后可以通过编程方式查询CMACVAR宏变量以了解登录的处理状态(已完成,失败或正在进行中。有关每个返回码的含义的说明,请参阅SIGNON中的CMACVAR宏变量值。

CMACVAR Macro Variable Values in SIGNON
Value Description
0 The sign-on is complete.
1 The sign-on failed.
2 You have already signed on to the current server session.
3 The sign-on is in progress.
     

注意:如果SIGNON命令或语句因语法错误而失败,则不会设置宏变量。