2016-04-28 24 views
1

的聲明我只是寫了一個宏其中SO這裏登錄到遠程服務器,當然是一個簡單的宏錯誤使用中如果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的幫助打印聲明,但不知道如何。

+0

我們用來測試遠程會話是否工作的原因是提交了使用sysrput更改本地SAS會話中宏變量設置的代碼。 – Tom

+0

嗨,湯姆, 我只想使用put語句打印我想要的某些行,如果登錄不通過任何原因。 – user3658367

回答

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命令或語句由於語法錯誤而失敗,則宏變量未設置。

+0

哇這是我正在尋找,非常感謝TOM。 – user3658367