Msg, think of the macro language as a code generator.
The OP posted a question about parsing a macro variable into SAS dataset variables as I understand it.
[pre]
%macro split (name=);
data one;
%do i=1 %to %sysfunc(countw(&name));
word&i = "%scan(&name,&i)";
%end;
run;
%mend split;
%split (name=sas is an analytical language)
[/pre]
or even all the logic in the data step:
[pre]
%macro split (name=);
%let countw=%sysfunc(countw(&name));
data one(drop=i);
array word(&countw) $16;
do i=1 to &countw;
word[ i] = scan("&name",i);
end;
run;
%mend split;
%split (name=sas is an analytical language)