Если вы хотите сделать это с макросами:
data _null_;
set work.users;
call symput('filename', cats('/home/me/', user_id, '.jpg'));
run;
data _null_;
set work.users;
file "&filename." noprint;
put imagedata;
run;
Однако, это предполагает, что в work.users
есть только одно наблюдение, которое, я думаю, не соответствует действительности. Если вы хотите вывести файл для каждого наблюдения, сверните его в макрос:
%macro writefile(n);
%do i = 1 %to &n;
data _null_;
i = &i;
set users point=i;
call symput('filename', cats('c:\temp\', user_id, '.txt'));
stop;
run;
data _null_;
i = &i;
set users point=i;
file "&filename." noprint;
put imagedata;
stop;
run;
%end;
%mend;
Здесь аргумент & n - это количество наблюдений в вашем наборе данных. Вы можете получить его программно, но для текущих целей проще просто передать его в макрос.