SAS中文论坛

标题: 请教为什么macro运行后出现WARNING: 没有分配逻辑库名 [打印本页]

作者: shiyiming    时间: 2010-12-24 17:09
标题: 请教为什么macro运行后出现WARNING: 没有分配逻辑库名
libname aa "c:\";
libname aa clear;
运行没有warning

libname aa "c:\";
%macro remove_libref(lib_name);
%let rc = %sysfunc(libname(&lib_name));
%if &rc = 0 %then %do;
libname &lib_name clear;
%end;
%mend;
%remove_libref(aa);

为什么macro运行后出现WARNING: 没有分配逻辑库名 AA。
作者: shiyiming    时间: 2010-12-24 20:01
标题: Re: 请教为什么macro运行后出现WARNING: 没有分配逻辑库名
是这意思吗?
[code:9oe4nq70]%macro remove_libref(lib_name);
    %if %sysfunc(libref(&lib_name)) = 0 %then %do;
        libname &lib_name clear;
    %end;
%mend;
%remove_libref(aa)[/code:9oe4nq70]
作者: shiyiming    时间: 2010-12-24 22:17
标题: Re: 请教为什么macro运行后出现WARNING: 没有分配逻辑库名
谢谢!有意思!
作者: shiyiming    时间: 2010-12-25 12:35
标题: Re: 请教为什么macro运行后出现WARNING: 没有分配逻辑库名
因为你前面已经清除了aa库,再clear当然报这个warning了。
那么你前面什么时候清除了aa库呢?
现解释如下:当libname函数的第二个变量缺失的话,其实就是删除第一个变量代表库的功能。
例如libname(aa)其实就是指删除aa库的操作。
rc只不过是记录libname函数操作成功与否,你删除aa,所以成功,那么rc=0,但是你删除后,又用libname语句再去删除一次,有点看不懂了。
个人观点,进攻参考。
作者: shiyiming    时间: 2010-12-26 11:13
标题: Re: 请教为什么macro运行后出现WARNING: 没有分配逻辑库名
to byes
谢谢!




欢迎光临 SAS中文论坛 (https://mysas.net/forum/) Powered by Discuz! X3.2