SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 531|回复: 4
打印 上一主题 下一主题

请教为什么macro运行后出现WARNING: 没有分配逻辑库名

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2010-12-24 17:09:51 | 只看该作者

请教为什么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。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2010-12-24 20:01:56 | 只看该作者

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]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2010-12-24 22:17:31 | 只看该作者

Re: 请教为什么macro运行后出现WARNING: 没有分配逻辑库名

谢谢!有意思!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2010-12-25 12:35:54 | 只看该作者

Re: 请教为什么macro运行后出现WARNING: 没有分配逻辑库名

因为你前面已经清除了aa库,再clear当然报这个warning了。
那么你前面什么时候清除了aa库呢?
现解释如下:当libname函数的第二个变量缺失的话,其实就是删除第一个变量代表库的功能。
例如libname(aa)其实就是指删除aa库的操作。
rc只不过是记录libname函数操作成功与否,你删除aa,所以成功,那么rc=0,但是你删除后,又用libname语句再去删除一次,有点看不懂了。
个人观点,进攻参考。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
5#
 楼主| 发表于 2010-12-26 11:13:34 | 只看该作者

Re: 请教为什么macro运行后出现WARNING: 没有分配逻辑库名

to byes
谢谢!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2025-6-13 19:41 , Processed in 0.070931 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表