2014-10-29 55 views
2

我是SAS新手,不確定是否可以這樣做,目前我有一個在我的SAS代碼中聲明的libname列表,供我的SAS代碼使用。見下文SAS - 使用在另一個文件中聲明的lib名稱

%macro libs; 
libname lib1 ODBC DATASRC=XXX schema=YYY USER=&uid1 PWD=&pwd1; 
libname lib2 ODBC DATASRC=XXX schema=YYY USER=&uid2 PWD=&pwd2; 
libname lib3 ODBC DATASRC=XXX schema=YYY USER=&uid3 PWD=&pwd3; 
%mend; 
%libs 

我使用下面的代碼

data input_uid_pwd; 
infile '/data/mytestfolder/scenarios/pgms/uidpwd.txt' dlm=',' firstobs=4; 
input uid1: $30. pwd1: $30. uid2: $30. pwd2: $30. uid3: $30. pwd3: $30.; 

call symputx('uid1', put(uid1, $30.), G); 
call symputx('pwd1', put(pwd1, $30.), G); 
call symputx('uid2', put(uid2, $30.), G); 
call symputx('pwd2', put(pwd2, $30.), G); 
call symputx('uid3', put(uid3, $30.), G); 
call symputx('pwd3', put(pwd3, $30.), G); 
run; 

我想知道如果它是在任何可能的方式移動整個LIBNAME宏和數據從外部文件源的用戶名和密碼跳出當前SAS代碼並從另一個文件中引用它。這樣的事情是可行的嗎?或者我是在這裏做夢的時候:)請讓我知道你什麼時候開始。

回答

2

把LIBNAME語句到另一個文件,並使用調用它在你的主SAS程序:

%inc "/data/mytestfolder/scenarios/pgms/libs.sas"; 

(更改文件路徑,以適應)

這將在外部文件中運行的聲明,並分配這些庫。

+0

哇!感謝mjsqu的快速反應,我會立即嘗試並讓你知道。非常感謝 – vbala2014 2014-10-29 14:55:35

+1

好吧,我剛剛嘗試了這一點,它的作品就像一個魅力,非常感謝你mjsqu,給你+1代表和複選標記正確的答案 – vbala2014 2014-10-29 15:07:17

+1

高興地幫助,歡呼! – mjsqu 2014-10-29 15:14:11

相關問題