Код ниже должен дать вам то, что вам нужно. Хотя вы можете использовать %if
операторы в шаге данных, вам, как правило, это не нужно. Я предполагаю, что ошибка исходит от функции %sysfunc
вокруг функций fileexist
и rename
. %sysfunc
позволяет вызывать функции шага данных вне шага данных, поэтому здесь он не нужен.
%macro test;
data _null_;
if fileexist("C:\file.txt") then do;
rc = rename("C:\file.txt", "C:\file2.txt", 'file');
end;
run;
%mend;
В качестве альтернативы, вы можете использовать X Command , которая позволяет вам выполнять команды Windows. Вы можете заменить функцию rename
следующим оператором.
x move C:\file.txt C:\file2.txt;