Here is a fairly simple example of how to re-assign a value to the global variable defined outside the macro. As you can see VAR3 has been changed to the new value. So VAR3 can be viewed as the "return" value. WRT documenting macro variables, my experience has been that they are not documented very well or simply not at all. I am guilty of that as well. That's why I usually run code with: OPTIONS SYMBOLGEN MACROGEN; The example you provide later is probably some code that was written for one purpose and then modified later on and as such suffers from code bloat. Extraneous code is left in because it doesn't hurt anything. It all comes down to style too. Some people like to indent their code with a few spaces and other use a tab. As you can see my style is "flatearther". %let var1 = 13; %let var2 = 6; %let var3 = 0; %MACRO callmacro(x1, x2, x3); %let &x1 = %eval(&&&x1 - &&&x2); %MEND; %put &var3; %callmacro(var1, var2, var3); %put &var3;
... View more