SAS的if语句中使用错误

SAS的if语句中使用错误,sas,Sas,我刚刚写了一个宏,可以登录到远程服务器,当然是一个简单的宏 %macro sign(servername); %put ; %put ********* You are now entering the server ********* ; %put ********* ********* ; sign

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

%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的帮助下打印一条语句,但不确定如何打印

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

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

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

返回代码在登录处理完成后生成,您指定的名称将成为当前服务器会话的默认名称。。然后可以通过编程方式查询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命令或语句由于语法错误而失败,则不会设置宏变量


我们用来测试远程会话是否正常工作的方法是重新提交代码,该代码将使用sysrput更改本地SAS会话中宏变量的设置。嗨,汤姆,我只想使用put语句打印一些我想要的行,如果登录由于任何原因无法通过。哇,这就是我要找的,非常感谢汤姆。