## List variables with common prefix in array

Solved
Super Contributor
Posts: 358

# List variables with common prefix in array

Listing variables with common prefix supposed to work with "P0701--P0703"  I thought. But it doesn't run when put it in the below context.

Any suggestions?

``````data want; set have;
array m Code_1-Code_24;
do over m;
if m in ("P0701","P0702","P0703","P0714","P0715","P0716", "P0717","P0718") then b=1; else
if m in ("P0721","P0722","P0723","P0724","P0725","P0726", "P0731","P0732","P0733","P0734","P0735","P0736","P0737","P0738","P0739") then b=2; else
if m in ("P07","P070","P071","P0710","P072","P073","P0730") then b=3; else
if m in ("P0700","P0720") then b=4;
end;
run;``````

Thank you.

Accepted Solutions
Solution
4 weeks ago
PROC Star
Posts: 8,163

## Re: List variables with common prefix in array

Not sure what you're asking. Both of the following will satisfy your example:

```data want;
set have;
array m \$ Code_1-Code_24;
do over m;
if m in ("P0701","P0702","P0703","P0714","P0715","P0716", "P0717","P0718") then b=1;
else if m in ("P0721","P0722","P0723","P0724","P0725","P0726", "P0731","P0732","P0733","P0734","P0735","P0736","P0737","P0738","P0739") then b=2;
else if m in ("P07","P070","P071","P0710","P072","P073","P0730") then b=3;
else if m in ("P0700","P0720") then b=4;
end;
run;

data want;
set have;
array m \$ Code_1-Code_24;
do over m;
if "P0701" le m le "P0718" then b=1;
else if "P0721" le m le "P0739" then b=2;
else if m in ("P07","P070","P071","P0710","P072","P073","P0730") then b=3;
else if m in ("P0700","P0720") then b=4;
end;
run;
```

Art, CEO, AnalystFinder.com

All Replies
SAS Super FREQ
Posts: 502

## Re: List variables with common prefix in array

[ Edited ]

Those are character strings not variables. This will work for one of your statements.

if m in (%macro m; %do i = 701 %to 703; "P0&i" %end; %do i = 714 %to 718; "P0&i" %end; %mend;%m) then b=1;

Solution
4 weeks ago
PROC Star
Posts: 8,163

## Re: List variables with common prefix in array

Not sure what you're asking. Both of the following will satisfy your example:

```data want;
set have;
array m \$ Code_1-Code_24;
do over m;
if m in ("P0701","P0702","P0703","P0714","P0715","P0716", "P0717","P0718") then b=1;
else if m in ("P0721","P0722","P0723","P0724","P0725","P0726", "P0731","P0732","P0733","P0734","P0735","P0736","P0737","P0738","P0739") then b=2;
else if m in ("P07","P070","P071","P0710","P072","P073","P0730") then b=3;
else if m in ("P0700","P0720") then b=4;
end;
run;

data want;
set have;
array m \$ Code_1-Code_24;
do over m;
if "P0701" le m le "P0718" then b=1;
else if "P0721" le m le "P0739" then b=2;
else if m in ("P07","P070","P071","P0710","P072","P073","P0730") then b=3;
else if m in ("P0700","P0720") then b=4;
end;
run;
```

Art, CEO, AnalystFinder.com

☑ This topic is solved.