More importantly, why are you creating 20 datasets for the same data? This uses more disk space, is slower, and is far harder to maintain. I am pretty certain after seeing this type of code a lot, you will then either be merging those datasets, or looping over them using further messy macro code. Don't. You can simply do one step:
data code1 (drop=i);
set code;
array y{20} 8.;
array x{8}; /* assumes it already exists in code */
do i=1 to 20;
y{i}=x{i}/2;
end;
run;
Or you could create a normalised version of the above with each item in a row rather than columns which is a better structure.