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