If the macro variable is not initialized, then it would probably not have any value if the join hasn't been done.
Macro variable just holds values that can be assigned globally in SAS session (that is, independent from data steps, SQL etc). They don't get executed. If you talk about macro execution, you probably mean %macro definitions, which probably contain macro statements maybe mixed with other SAS statements/programs.
You could review the on-line documentation for SAS macro programming.
/Linus
Data never sleeps