SAS - 使用在另一个文件中声明的lib名称

时间:2014-10-29 14:39:39

标签: sas

我是SAS的新手,我不确定这是否可行,目前我有一个我在SAS代码中声明的用于我的SAS代码的libnames列表。见下文

%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代码并从另一个文件引用它。这样的事情可行吗?或者我今天在这里做梦:)请等一下,请告诉我。

1 个答案:

答案 0 :(得分:2)

将libname语句放入另一个文件中,并使用以下命令在主SAS程序中调用它:

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

(更改文件路径以适应)

这将运行外部文件中的语句,并分配库。