我是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代码并从另一个文件引用它。这样的事情可行吗?或者我今天在这里做梦:)请等一下,请告诉我。
答案 0 :(得分:2)
将libname语句放入另一个文件中,并使用以下命令在主SAS程序中调用它:
%inc "/data/mytestfolder/scenarios/pgms/libs.sas";
(更改文件路径以适应)
这将运行外部文件中的语句,并分配库。