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;