Well its not a proc freq output but if you want the results in a dataset to tweek as you choose, you can do it this way:
%let total=0;
data counts;
input var1 var2;
call symput('total',_N_);
datalines;
1 2
3 4
5 1
2 3
4 5
1 5
2 3
4 1
5 2
1 3
1 5
4 2
3 1
;
run;
proc sort data=counts;
by var1;
run;
data count1 (keep=var count1 pct1);
set counts;
by var1;
if first.var1 then count1=0;
count1+1;
rename var1=var;
if last.var1 then do;
pct1=100*count1/&total;
output;
end;
run;
proc sort data=counts;
by var2;
run;
data count2 (keep=var count2 pct2);
set counts;
by var2;
if first.var2 then count2=0;
count2+1;
rename var2=var;
if last.var2 then do;
pct2=100*count2/&total;
output;
end;
run;
data count;
merge count1 count2;
by var;
cntpct1=put(count1,best.)||" ("||put(pct1,4.1)||")";
cntpct2=put(count2,best.)||" ("||put(pct2,4.1)||")";
run;
proc print data=count noobs;
var var cntpct1 cntpct2;
run;