SAS - проблема с zip-файлом ODS - нет логического назначения?
У меня проблемы с следующим кодом, и я не могу найти много информации, чтобы помочь мне разобраться с этим. Я пытаюсь записать некоторые имена файлов из каталога в набор данных, а затем создать zip-файл из этих файлов. Это работает нормально, пока я не достигну шага данных с оператором infile. Я получил следующую ошибку...
ОШИБКА: нет логического назначения для имени файла DIRLIST.
Вот мой код...
%macro get_filenames(location);
filename _dir_ "%bquote(&location.)";
data filenames(keep=fname);
handle=dopen( '_dir_' );
if handle > 0 then do;
count=dnum(handle);
do i=1 to count;
fname=dread(handle,i);
output filenames;
end;
end;
rc=dclose(handle);
run;
filename _dir_ clear;
%mend;
%get_filenames(c:\temp\);
data dirlist;
set filenames;
where fname like 'scra%.txt';
run;
ods package(testfile) open nopf;
data _null_;
infile dirlist pad lrecl=80;
input @1 filename $80.;
call execute
(catx
(' ',
'ods package(testfile)',
'add file=',
quote('c:\temp\' || trim(filename)),
';'
)
);
run;
ods package(testfile) publish archive
properties(archive_name='testfile.zip'
archive_path='c:\temp\' );
ods package(testfile) close;
1 ответ
Решение
Я думаю, что SAS жалуется на следующее в вашем коде:
data _null_;
infile dirlist pad lrecl=80;
Infile в этом контексте ожидает ссылку на FILENAME, такую как у вас filename _dir_ "%bquote(&location.)";
Он не понимает, что вы хотите использовать набор данных dirlist
,
Замените приведенный фрагмент кода следующим:
data _null_;
SET dirlist;