Yep! Macros are not programs they are templates.
The first macro is templated before any of the calls to the second macro ever run. If you were thinking of it like a program: non of the sub routines are called before the main routine exits.
Make a third macro that prints the number and call it.
You can look at what I recently did in here. It’s capturing data in a loop and then calculating a result.