I have a Proc Report that goes like this
Proc Report Data=Table1;
Column A B C;
compute A;
if B eq 0 then call define(_col_,"style","style={font_weight=bold}");
endcomp;
Run;
However, it doesn't work.
The log says that B is uninitialized. Is there a way to solve it? Thanks before.
compute A; ----> compute B; or compute C;
proc reports reads the variable from left to right, when computing A, B has no value. You have to clone B:
Proc Report Data=Table1;
columns B=_B A B C;
define _b / noprint;
compute A;
if _b eq 0 then call define(_col_,"style","style={font_weight=bold}");
endcomp;
run;
compute block is calculated from left to right. So when you compute it at A , SAS can't know the value of B, because B is after A. Change : compute A; ----> compute B; or compute C;
I try to do like below (re-arranging the column)
Proc Report Data=Table1;
Column B A C;
compute A:
if B eq 0 then call define(_col_,"style","style={font_weight=bold}");
endcomp;
Run;
And still unsuccesful, can you let me know what did I miss out? Thanks.
You are defining _COL_ ,so you can only highlight A not B. Change it as compute B:
Hi: for a concrete example of how PROC REPORT works, review this related posting:
It has some pseudo-code examples of PROC REPORT's left-to-right processing and how a COMPOUND name has to be used for numeric variables.
cynthia
CFC_SAS_Communities_400x225.jpg
It's your turn to help shape SAS Innovate 2027. Share your expertise and inspire the SAS community.
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.