I have two variables, X and Y, plus another variable S. X and Y are integers in the range 1-7. S is a character variable that takes the value '1' and some others. I want to create a series of flags, A1-A4, according to these rules. IF S='1', set the flag corresponding to the larger of X and Y, subject to the maximum of 4. For example, if X=1 and Y=2, then set A2 = 1, leaving the other flags equal to zero. If X=2 and Y=6, set A4=1, etc. IF S is anything else, set the flag corresponding to Y, with the same maximum (ignore X entirely). I first wrote this: DATA Test;
SET Source;
ARRAY A[4] A1-A4 (0 0 0 0);
IF S = '1' THEN
A[MIN(4,MAX(X,Y))] = 1;
ELSE
A[MIN(4,Y)] = 1;
RUN; As I read that, it should change only one of the A1-A4 flags for each record. But what I find is that ALL of the values of A1-A4 get set to 1. If I do this, DATA Test;
SET Source;
A1 = 0;
A2 = 0;
A3 = 0;
A4 = 0;
ARRAY A[4] A1-A4;
IF S = '1' THEN
A[MIN(4,MAX(X,Y))] = 1;
ELSE
A[MIN(4,Y)] = 1;
RUN; I get what I want. What is the difference?
... View more