ты был близко. ниже вещь должна работать для вас. call symput является частью datastep, который используется для создания макропеременных из dvariables и, следовательно, проблемы.
%macro build_sets(var_list);
;
%do i=1 %to %sysfunc(countw(&var_list));
%let variable= %scan(&var_list, &i));
data train_&variable(keep=Name &variable);
set sashelp.class;
run;
%end;
%mend;
* Run it;
%let var_list = Sex Age Height Weight;
%build_sets(&var_list);