有些时候我们需要知道某个逻辑库下的所有数据集的名称,并把这些数据集名称汇总为一个新的数据集。
第一种方法:用proc contents过程
proc contentsdata=SASHELP._all_ out=AllSASHelpData noprint;/*注意_all_的用法*/
run;
proc contents data=MAPS._all_ out=AllMapsData noprint;
run;
data AllDataSets;
set AllSASHelpData AllMapsData;
run;
proc sort data=AllDataSets nodupkey;
/*http://crackman.net/?p=702 对nodupkey的解释*/
by Memname Libname Memtype;
run;
proc print data=AllDataSets;
where Memname like “R%”;/*http://crackman.net/?tag=where-like 对where的Like介绍*/
var Memname Libname Memtype;
title1 “Data Sets Starting with ‘R’ in Specified Libraries”;
run;
看看第二种方法:
采用SQL查询语句
proc sqlnumber;
title1 “Files Starting with ‘R’ in Specified Libraries”;
select Libname, Memname, Memtype
from dictionary.members
where libname in (“SASHELP”,”MAPS”) and Memname like “R%”
order by Memname, Libname;
quit;
下面对dictionary的几个对象进行介绍。
CATALOGS:SAS目录的信息
COLUMNS:SAS变量和列的信息
EXTFILES:外部数据信息
INDEXES:参与索引的列的信息
MACROS:宏相关信息
MEMBERS:所有数据类型(表、视图、目录等)的信息
OPTIONS:当前会话选项
STYLES:ODS的样式信息
TABLES:表和数据集信息
TITLES:标题和脚注信息
VIEWS: 视图信息
第二个方法比第一个方法简洁多了,没有第一个方法那样需要对信息进行二次处理,不需要输出全部的contents内容。