would this be satisfactory?[pre] data _null_ ;
* to print the value of macro variable named in &var;
file print ;
put "&var=" "&&&var" ;
run;[/pre]Or, to print the values of all, with their current scope[pre] proc sort data= sashelp.vmacro out= _data_ ;
by scope name offset ;
proc print ;
by scope ;
id name ;
var offset value ;
Rather than examine macro variable values in the output window, I just press a function key programmed to show my version of SASHELP.VMACRO in a viewtable window (or whenever the client's licence permits, in an FSview window because customising that is simpler) . The command is just [pre] vt sashelp.vmacro colheading=name[/pre]
I prefer the list to be ordered, so keep a view in my sasuser folder that is similar to the SASHELP.VMACRO view[pre] proc sql ;
create view sasuser.vmacro as
select scope as s format=$2.
, name format=$15.
, offset/200 as off format= 3.
, value format= $40.
order by scope descending, name, offset
quit ;[/pre] The differences I introduced are as follows:
To most quickly locate any macro variable, I prefer the view to list names in order. Sorting first by "scope descending" places my macro variables before those which are automatic. If I should use this view within a macro, SCOPE names the macro in which each macro var was created. As sashelp.VMACRO predates SAS7 the 200 width limit is respected and a wide value is broken in 200 byte chunks and OFFSET is the real offset. Providing a narrower space for that value in my window, my view divides offfset by 200.
Then rather than submit code to review macro variable values, I just press a function key that issues command [pre] vt sasuser.vmacro colheading=name[/pre] or [pre] fsview sasuser.vmacro ; formula [/pre] ("formula" command in an FSView window retrieves customisation I prepared earlier, controlling window contents - column sizes, colors and order, and window size & position.
Some users like a mouse alternative to function keys, and prepare the command behind a new icon they create in the toolbar. Then they can easily view the current state of all macro variables at the touch of a button.
I guess (hope) there is something similar with E.G.