The %g1 %s1, etc are not variables in the true sense. That is why you can’t make substitutions as you want.
With that said, I do things llike you are trying to do all the time. That is one of the main purposes of the CALL statement. It allows for that kind of control. Just use a CALL and do the xpmstore command within it.
The *ONlY* difference bewteen a COPY and a CALL is that with a COPY, there is *ALWAYS* something stored to xlateOutVals. With a CALL, *NOTHING* is stored unless you explicitly store it.