orlong 发表于 2010-5-31 18:14 
问题程序如下:
data string;
input string $40.;
array myvars{27} _temporary_ ;
array my{27};
if _n_ =1 then do i=1 to 27;
myvars{i}=i;
end;
do i=1 to 27;
if findw(string,myvars{i},",") then my{y}=1;
end;
drop i;
datalines;
1,4
3,13
1,2,3,4,7,8,9
19
2,5
1,2,3,10,17
1,2,3,4,5,6,7,8
2,3,4,7,9
1,2,3,19,20,23
1,2,3
1,2,3,15
8,10,13
;
run;
想得到如下结果:
但程序老是出错,恳请高手指点问题出在哪里
非常感谢
I re-write it. It seems a little clear in logic.
1) take an element from the string as an array index until NO element left.
2) Set the correspond variable value to 1 with that index.
data string;
input string $40.;
array my{27};
do i=1 by 1 while(1);
k=scan( string,i);
if k then k1=input(k,8.);
else leave;
my[k1]=1;
end;
keep string my:;
datalines;
1,4
3,13
1,2,3,4,7,8,9
19
2,5
1,2,3,10,17
1,2,3,4,5,6,7,8
2,3,4,7,9
1,2,3,19,20,23
1,2,3
1,2,3,15
8,10,13
;
run;
proc print;run;