This is not how @macros work -- you are only supposed to set them once per script -- the LAST definition is taken BEFORE any other (non-macro) statements are processed.