It depends... If you run this in open code, then both macro variables will be in the global symbol table. If you run this inside another macro, the variable created by code1 will be local to the symbol table of that macro, whereas code2 will always put the variable in the global symbol table. If you would remove the global statement from code2, the variable would become local to %mmacro, like the variable created by code1 would be local to any macro it's ran from. Also keep in mind that you're assigning the same variable (lastDEC) twice, the second time specifically global, which apparently results in an error if this variable already exists in the local but not global symbol table. Moreover, since lastDEC would already exist in at least whatever symbol table code1 would run from, code2 will reassign this macro variable and not create a new one in the %mmacro local symbol table.
... View more