Did you know that you can now make your Global and Local macro variables READONLY? New options on the %GLOBAL and %LOCAL statements allow you to not only make variables so that they cannot be inadvertently changed, but you can also assign them initial values.
%global/readonly dsn=clinics;
%macro tryit;
%local dsn;
%* does other stuff;
%mend tryit;
%* The macro %TRYIT will fail;
%tryit
The use of these options can help you avoid macro variable collisions, but there are dangers. Once specified as readonly, you can no longer create local versions of this macro variable. This can be a big problem if a called macro also attempts to create another instance of the macro variable - even using the %LOCAL statement.
Thanks to Art Carpenter for sharing this tip on sasCommunity.org.