data crackman;
input x $ @@;
datalines;
3 4 5 6
;
run;
data output1(drop=i);
do i=1 to 2;
set crackman;
y='a';output;
y='b'; output;
end;
run;
proc sort data=output1;
by x y;
run;
data output3(drop=i y);
do i=1 to 2;
set output1;
by x;
array s(2) $ s1-s2;
s(i)=y;
end;
output;
run;
data output2;
set output3(keep=s2 rename=(s2=x)) output3(keep=s1 rename=(s1=x)) output3(keep=x);
run;