Did you show what you are currently getting or what you want to get? If it's the latter, go with @Reeza'a suggested code (other than, of course, load the old array with pa0-pa23).
However, if it's the former, and the number of array elements changes, I'd go with something like:
data have;
input ID TIME PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7 PA8 PA9 PA10 PA11 PA12 PA13 PA14 PA15 PA16 PA17 PA18 PA19 PA20 PA21 PA22 PA23;
cards;
1 12 1 1 1 1 0 0 1 1 0 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2
2 6 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
3 23 1 0 1 0 1 2 1 1 0 1 1 1 1 2 2 2 0 1 1 0 0 0 0 0
;
data _null_;
set have (obs=1);
length forexec $255;
array havepa(*) pa:;
call execute('data want(drop=i);set have;array havepa(*) pa:;');
forexec=catx(' ','array wantpa(',dim(havepa),');do i=1 to',dim(havepa),';');
call execute(forexec);
call execute('wantpa(i)=havepa(i);end;run;');
run;
I wish there was a way to use the dim function, directly, to create new arrays of a given size but, if there is, I'm not aware of it.
Art, CEO, AnalystFinder.com
... View more