2016-05-17 8 views
1

Как я могу проверить, если каталог существует, и если нет, то это было бы тогда: SYSERR <> 0 ?, мне нужноSAS Проверьте каталог существует

%sysfunc(filename(fileref,&dir)) 

мне нужно значение SYSERR, если существует 0, если не < > 0. спасибо за помощь

+1

Если вы проверяете, существует ли в Google каталог SAS, существует ли у вас множество опций. – Longfish

+0

У меня всегда есть syserr = 0, даже я пытаюсь выполнить функцию dopen для существующего каталога. Затем у меня есть информация «Результаты операций были установлены в отсутствующих значений.» – aola

+1

Почему SYSERR, а не какая-либо другая макропеременная? – Tom

ответ

2

Возможно, есть более чистый способ получить сообщение SAS, но для меня это работало. Общая идея заключается в том, что если каталог существует, вы делаете то, что сохраняет syserr равным 0; если нет, вы делаете что-то, что вызывает ошибку.

%let your_path = "..."; 

%macro your_macro(dir); 

    %let rc = %sysfunc(filename(fileref, &dir.)); 

    %if %sysfunc(fexist(&fileref)) %then %do; 
     data _null_; 
      set _null_; 
     run; 
    %end; 
    %else %do; 
     data _null_; 
      set something_that_doesnt_exist; 
     run; 
    %end; 

    %put syserr = &syserr.; 

%mend your_macro; 

%your_macro(&your_path.); 
4

Очиститель способ, чтобы проверить, если папка существует

%let does_it_exist=%sysfunc(fileexist(&dir)); 

Это возвращает значение 0, если папка не существует, а значение 1, если папка существует.

+0

OP требует значения syserr 1, но не только макропеременной 1. – superfluous

Смежные вопросы