学习过程中遇到的一点小小问题,大神们能否指点一下?
LIBNAME RESDAT "I:\SAS_DATA_SET\RESDAT"; *定义SAS永久数据库;
X
"DIR
I:\SAS_DATA_SET\RESDAT\*.SAV
/B >
I:\SAS_DATA_SET\ALL.TXT"; *将I:\SAS_DATA_SET\RESDAT文件夹下以.SAV为后缀的数据集的名称写入到I:\SAS_DATA_SET\ALL.TXT中的ALL数据集中;
*定义读取.SAV格式数据及的MACRO;
%MACRO DAORU(NAME);
PROC IMPORT DATAFILE = "I:\SAS_DATA_SET\RESDAT\&NAME"
OUT = S&NAME.
DBMS = SAV
REPLACE;
RUN;
QUIT;
%MEND DAORU;
DATA _NULL_;
INFILE "I:\SAS_DATA_SET\ALL.TXT";*读取已经读入到I:\SAS_DATA_SET\ALL.TXT中ALL数据集中的全部数据集的名称;
INPUT FNAME: $100.;*将ALL中的数据全部读入到FNAME变量中;
CALL EXECUTE(
COMPRESS(
'%DAORU('
||
SCAN(FNAME,1,'.')
||
');'
)
); *利用SCAN():对FNAME变量进行扫描,以"."为分割符;
*利用EXECUTE():函数逐个调用%DAORU宏,利用COMPRESS()去掉'%DAORU(' || SCAN(FNAME,1,'.')||')'中的空格;
*%DAORU():MACRO中的参数通过SCAN()扫描获取;
RUN;
QUIT;
疑问:
在%DAORU中,通过
SCAN(FNAME,1,'.')得到的数据集名称并没有.SAV后:
1 为何DATAFIKLE = "I:\SAS_DATA_SET\RESDAT\&NAME"可以正常读取数据?
2 为何DATAFIKLE = "I:\SAS_DATA_SET\RESDAT\&NAME..SAV"则一直报错?
参考帖子:
1.
http://blog.sina.com.cn/s/blog_534569bc0100duq3.html
2.
https://bbs.pinggu.org/thread-1036775-1-1.html