data test;
input city : $10. area :$8. sector : $20. rail $20.;
cards;
Shanghai Baoshan Dahua 7,737,738,11,58,78
Shanghai Jiading Jiadingxincheng 3,2,11
;
proc sql noprint;
select max(count(rail,',')+1) into: num
from test;
quit;
data test1;
set test;
array var[*] $ rail1 - rail%sysfunc(left(&num));
do i=1 to #
var[i]=scan(rail,i,',');
end;
n_rail=count(rail,',')+1;
drop i;
run;