Здесь вам не хватает нескольких вещей:
%IF %SYSFUNC(FILEEXIST(&ATTACH4)) %THEN &ZALACZNIKI = &ZALACZNIKI || &ATTACH4 || ' ';
Вам необходимо использовать% LET для переназначения макропеременной, если это ваше намерение, и операторы конкатенации не требуются, но вам может понадобитьсядвойные кавычки вокруг имени файла:
%IF %SYSFUNC(FILEEXIST(&ATTACH4)) %THEN %LET ZALACZNIKI = &ZALACZNIKI. "&ATTACH4.";
Когда вы используете макрос-переменную, вам, вероятно, не понадобятся кавычки, в противном случае вы получите:
""file1" "file2" "file3" "
Просто сделайте это:
ATTACH = (&ZALACZNIKI.);
Поэкспериментируйте с этим кодом, чтобы узнать, как он работает:
%let file1 = C:\temp;
%let file2 = C:\temp2;
%let z = ;
%let z = &z. "&file1.";
%let z = &z. "&file2.";
%put &z;