It looks like can not do it.
Because SAS does not have proc's interface with macro facility.
But you can make a macro to generate the macro code.
Yes, it's possible to have a macro within a compute block. Remember that macros are expanded before your program runs. Therefore the statements in your macro are executed before PROC REPORT starts running.
"The text substitution produced by the macro processor is completed before the program text is compiled and executed. The macro facility uses statements and functions that resemble the statements and functions that you use in the DATA step. An important difference, however, is that macro language elements can enable only text substitution and are not present during program or command execution." -- http://support.sas.com/documentation/cdl/en/mcrolref/61885/HTML/default/viewer.htm#getstart.htm
The program below has several examples of using the SAS Macro facility inside PROC REPORT. The phrase "calling a macro" generally implies that you are calling a macro program. The %GENCD macro program is being called or invoked several times within the PROC REPORT program. At compile, each of these invocations will be turned into a CALL DEFINE statement. Then, at execution time, the CALL DEFINE statement may or may not be executed, depending on the values being processed by each COMPUTE block.
The SAS Macro facility will only generate code. When the macro trigger of '%' is encountered, the macro facility word scanner will take over to resolve any macro triggers. So, by the time the word scanner is done, a syntactically correct CALL DEFINE statement will be generated inside the PROC REPORT code. When the PROC REPORT code is sent forward to the compiler, there will be NO macro triggers left in the code. In this way, the Macro facility is acting as a typewriter to type code for me. It would not be appropriate to have a macro program, inside PROC REPORT, generate a PROC MEANS, PROC SQL, etc step or a DATA step -- or try to perform any kind of processing that is not normally possible inside a COMPUTE block
Another form of macro trigger is the '&', which you can see in the macro variable reference &SPHD. As with the % trigger, the &SPHD will be resolved at compile time and the string 'Average' will be substituted for the macro variable &SPHD in the column statement.