Matching ML.EXE, we expand tokens in macro parameters only if the parameter starts with a % character.
Also matching ML.EXE's behavior: If a macro parameter does start with a % character, unless the parameter consists of a single non-numeric macro, we also try to evaluate the resulting expanded parameter as an absolute expression if possible. If this succeeds, the parameter is replaced by its numeric value expressed in decimal. The exceptional case mentioned allows for parameters such as %@Date (where @Date renders in MM/DD/YY format) without accidental evaluation as a numeric expression.