Obsidian | Level 7

## Dynamic Variables

 NO AAA AAA_L1 AAA_L2 AAA_L3 BBB BBB_L1 BBB_L2 BBB_L3 AAA_I BBB_I 1 0.1 -0.1 1 1 2 -0.1 0.1 0 0 3 -1 -0.1 0 1

```data want;

set test;

if AAA > 0 OR AAA_L1>0 OR AAA_L2>0 OR AAA_L3>0 THEN AAA_I = 1;ELSE AAA_I = 0;

If BBB < 0 OR BBB_L1<0 OR BBB_L2<0 OR BBB_L3<0 THEN BBB_I = 0;ELSE BBB_I = 1;

run;```

Is there any way that could cut short the code as i have more than 50 similar variables as shown above.

3 REPLIES 3
Tourmaline | Level 20

## Re: Dynamic Variables

Try this

``````data have;
infile datalines dlm=',' dsd;
input NO AAA AAA_L1 AAA_L2 AAA_L3 BBB BBB_L1 BBB_L2 BBB_L3;
datalines;
1,0.1,,,,,-0.1,,
2,,-0.1,,,,,0.1,
3,,,-1,,-0.1,,,
;

data want;
set have;
array a {*} a:;
array b {*} b:;
AAA_I = max(of a[*]) gt 0;
BBB_I = min(of b[*]) lt 0;
run;``````
Obsidian | Level 7

## Re: Dynamic Variables

Is it possible to use OR instead of Max for the array?

Super User

## Re: Dynamic Variables

First shorten the statement to

``aaa_i = (sum(AAA,AAA_L1,AAA_L2,AAA_L3) > 0);``

then you can use arrays to run it in a loop.

Discussion stats
• 3 replies
• 730 views
• 2 likes
• 3 in conversation