Mike,
You are trying to write a macro within a macro variable. The problem is, macro has to be compiled first before execution. You chosed right function %nrstr(). It masks % during the compilation. At the execution, &x becomes
%let y = 12; That is a macro statement and is not compiled. Therefore you get an error message.
It seems to me this can not be accomplished.
But, could you let us know what are you up to? There maybe other ways to get what you want.
Wei