From: A. S. on
Hi,

I wrote a macro to iterate over words in a string:

%MACRO forallStr(str,command,sep=' ');
%LET _i=1;
%DO %WHILE (%QSCAN(&str,&_i,&sep) NE);
%LET _x=%QSCAN(&str,&_i,&sep);
DATA _NULL_;
CALL EXECUTE("&command");
RUN;
%LET _i=%EVAL(&_i+1);
%END;
%MEND;

The only problem now is that I cannot nest this in another datastep
(due to the DATA step in the macro). Just writing
&command;
instead of the DATA step here didn't work. I assume the macro
processor doesn't look twice.

Is there a way to make it work so that I can write for example
DATA d;
%forallStr('a b c',%NRSTR(var="&_x"; OUTPUT));
RUN;
??