%macro missinga(var1,var2,var3);
proc sql;
create table &var1 as
select &var1 from a where not missing(&var1.);
quit;
proc surveyselect data=&var1 method=srs n=1 out=&var2.;run;
proc sql;
select &var1 into:vard from &var2.;
quit;
data &var3.(keep=&var1.);
set a;
if missing(&var1.) then &var1=&vard.;
run;
%mend missinga;
%missinga(x1,x11,x111);
%missinga(x2,x22,x222);
%missinga(x3,x33,x333);
%missinga(x4,x44,x444);
%missinga(x5,x55,x555);
data t;
merge x111 x222 x333 x444 x555;
run;