FILENAME語句不是可執行的,所以當數據跳躍正在編譯他們會發生。所以,當你的IF語句運行時,兩個FILENAME語句都已經執行完畢。
您可以改用FILENAME()函數。
運行此示例以查看使用FILENAME()函數使賦值有條件。
%let name=name_a;
%let path=%sysfunc(pathname(work));
data _null_;
if "&name" = "name_a" then do;
filename cd_file "&path/aa.js";
end;
else if "&name" = "name_b" then do;
filename cd_file "&path/bb.js";
end;
run;
%put CD_FILE -> %scan(%sysfunc(pathname(cd_file)),-1,\/);
data _null_;
if "&name" = "name_a" then do;
rc=filename('cd_file',"&path/aa.js");
end;
else if "&name" = "name_b" then do;
rc=filename('cd_file',"&path/bb.js");
end;
run;
%put CD_FILE -> %scan(%sysfunc(pathname(cd_file)),-1,\/);
來源
2017-07-27 12:43:53
Tom
謝謝,這個作品很有意義! – ByronSchuurman