The SAS Output Delivery System and reporting techniques

proc report conditional format question

Reply
N/A
Posts: 1

proc report conditional format question

I need highlight each other row and at same time color letter if a>4000, but my code below doesn't work....    can you guys see issue? Thanks!

compute ID;
         count+1;
         if
         a>4999.9999999 and mod(count,2)=1 then
         call define(_row_, "style", "style=[color=red background=white]");
   else if
        a>4999.9999999 and mod(count,2)=0 then
         call define(_row_, "style", "style=[color=red background=lightgrey]");
   else if
         mod(count,2)=1 and a=<4999.9999999  then
            call define(_row_, "style", "style=[background=white]");
         else if
         mod(count,2)=0 and a=<4999.9999999 then
         call define(_row_, "style", "style=[background=lightgrey]");

      endcomp;

Super User
Posts: 9,681

Re: proc report conditional format question

What is your columns statement ?

Try the following one :

compute A;




Xia Keshan

SAS Super FREQ
Posts: 8,743

Re: proc report conditional format question

HI;

  You really need to post more of your code. for example, if the COLUMN statement is:

COLUMN A ID xxx yyy zzz; Then it should be OK for you to test A in the COMPUTE block for ID. But if the COLUMN statement is:

COLUMN ID A xxx yyy zzz; then  going by the PROC REPORT "left-to-right" rule, at the point in time when PROC REPORT is handling the value for ID, it has not yet placed the value for A on the report row, so the value of A cannot be tested in the compute block for ID.

  Another possibility, which nobody can comment on because you did not include your DEFINE statement for A is whether A is a default usage of DISPLAY or (more likely) since A is numeric a DEFAULT usage of SUM. If A is a default usage of SUM, then you have to test on A.SUM as the compound name (variable_name.statistic - -which is how PROC REPORT wants to reference numeric variables with a usage of ANALYSIS, which is the default usage if you do NOT have a DEFINE statement or you do not list a usage on the DEFINE statement for a numeric variable).

  All of this is outlined well in the PROC REPORT documentation. And, here's an example to get you started http://support.sas.com/resources/papers/proceedings13/366-2013.pdf it uses SASHELP.CLASS, starting around page 12.

cynthia

Ask a Question
Discussion stats
  • 2 replies
  • 428 views
  • 0 likes
  • 3 in conversation