Several posters have mentioned the correct "solution" (which in your case isn't a solution); you can't create the name of a positional or keyword parameter, nor the name of a HLASM system variable symbol.,
The reason is that HLASM "compiles" those names into a special pre-defined dictionary during macro encoding, so that the macro can be expanded more rapidly. (You can see the approximate format of that dictionary when you specify an appropriate MHELP directive inside a macro.) An alternative (and much slower) implementation could parse the macro definition anew for each call. However, this could allow setting new values for parameters that differ from the argument values passed by the caller, or to system variable symbols whose values are (supposed to be) owned by HLASM.