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;

person user2941280    schedule 11.02.2014    source источник


Ответы (1)


Я думаю, что SAS жалуется на следующее в вашем коде:

data _null_;
    infile dirlist pad lrecl=80;

Infile в этом контекст ожидает ссылку на FILENAME, которая есть у вас в filename _dir_ "%bquote(&location.)"; . Он не понимает, что вы хотите использовать набор данных dirlist.

Замените приведенный выше фрагмент кода следующим:

data _null_;
    SET dirlist;
person Community    schedule 11.02.2014
comment
Ах, в этом есть смысл. Я попробую, но вроде должно работать. Тем временем я также исправил проблему, записав набор данных dirlist в текстовый файл, а затем используя этот текстовый файл в инструкции infile. - person user2941280; 11.02.2014