Dear All, I am learning PROC REPORT and am having trouble with arrays when I run my array programming in a compute block. What I am trying to do is color code/traffic light cells of ‘one’ variable given the value of ‘another’ variable. In total I will have around 200 variables representing the ‘one’ variable and 200 variables representing the ‘another’ variable. Below is code that I was able to get to work not using arrays: PROC REPORT data=xxx ; column role Indvars N x1 x1cc x2 x2cc x3 x3cc x4 x4cc x5 x5cc x6 x6cc x7 x7cc x8 x8cc x9 x9cc x10 x10cc; define Indvars / display left width=25 ; define N / display format=3. width=3; define x1 / display format=4.2 width=4; define x1cc / noprint display ; define x2 / display format=4.2 width=4; Define x2cc / noprint display ; define x3 / display format=4.2 width=4; Define x3cc / noprint display ; define x4 / display format=4.2 width=4; Define x4cc / noprint display ; define x5 / display format=4.2 width=4; Define x5cc / noprint display ; define x6 / display format=4.2 width=4; Define x6cc / noprint display ; define x7 / display format=4.2 width=4; Define x7cc / noprint display ; define x8 / display format=4.2 width=4; Define x8cc / noprint display ; define x9 display format=4.2 width=4; Define x9cc / noprint display ; define x10 / display format=4.2 width=4; Define x10cc / noprint display ; define role / group order=internal 'Role' width=15; break after role / skip ; compute x1cc ; if x1cc = 1 then do; call define('x1' , 'style', 'style={background=red'); end; if x1cc = 2 then do; call define('x1' , 'style', 'style={background=green'); end; if x1cc = 3 then do; call define('x1' , 'style', 'style={background=pink'); end; if x1cc = 4 then do; call define('x1' , 'style', 'style={background=lightgreen'); end; if x1cc = 5 then do; call define('x1' , 'style', 'style={background=yellow'); end; endcomp; run; Next is my code when using array programming inside PROC REPORT: Define dummy / computed noprint ; /*This is also specified on the column statement*/ compute dummy; array xx (10) x1 x2 x3 x4 x5 x6 x7 x8 x9 x10; array cc (10) x1cc x2cc x3cc x4cc x5cc x6cc x7cc x8cc x9cc x10cc; do i=1 to 10; compute cc ; if cc(i) = 1 then do; call define('xx(i) , 'style', 'style={background=red'); end; compute cc ; if cc(i) = 2 then do; call define(xx(i) , 'style', 'style={background=green'); end; compute cc ; if cc(i) = 3 then do; call define(xx(i) , 'style', 'style={background=pink'); end; compute cc ; if cc(i) = 4 then do; call define(xx(i) , 'style', 'style={background=lightgreen'); end; compute cc ; if cc(i) = 5 then do; call define(xx(i) , 'style', 'style={background=yellow'); end; EndComp; RUN; When I run the program with arrays I get the following error message: “NOTE 49-169: The meaning of an identifier after a quoted string might change in a future SAS release. Inserting white space between a quoted string and the succeeding identifier is recommended. I have googled this note and have found a lot of questions regarding it, but still do not understand what is going on. After I get this note it also will not allow other PROCs to be run unless I exit SAS. Also, notice below I created a dummy variable. I did this because I seen that other code online had this, but I am not sure why this was done, i.e., what is the purpose of the dummy variable? Any insight that someone is willing to share is greatly appreciated. Sincerely, Craig
... View more