Hmm ... it's a little tricky to try to add this to code without some data, so I've retro-fitted your code to use sashelp.revhub2 (sample data) - should be simple for you to switch back to your own data, since I kept all the names the same!
My code/changes are in lower-case, so they should be easy to find. Basically, I create a temporary data set in which I sum up the data so I can calculate the % (right now I'm calculating each bar segment as the % of that bar ... to calculate as the % of all the bars instead, just remove the "group by f1"). I make this temporary data set into an annotate data set, and then specify it in the anno= in the gchart ...
-------------------------------------------------------------------------------------------------
PROC SQL;
CREATE VIEW WORK.SORTTempTableSorted AS
SELECT unique T.hub as F1, T.source as F3, sum(T.revenue) as F2
FROM sashelp.revhub2 as T
group by hub, source
;
create table my_anno as
select unique *, sum(f2) as sum
from WORK.SORTTempTableSorted
group by f1; /* remove the 'group by f1' to calculate % of whole chart */
QUIT;
data my_anno; set my_anno;
when='a'; xsys='2'; ysys='2'; hsys='3';
function='label'; style='"arial/bold"'; size=2; position='5';
xc=f1; subgroup=f3;
text=trim(left(put(f2/sum,percent7.0)));
run;
PATTERN1 COLOR=MAROON;
PATTERN2 COLOR=CXFF6600;
PATTERN3 COLOR=OLIVE;
PATTERN4 COLOR=CXFFFFCC;
PATTERN5 COLOR=BLUE;
PATTERN6 COLOR=GRAY;
PATTERN7 COLOR=RED;
PATTERN8 COLOR = _STYLE_;
PATTERN9 COLOR = _STYLE_;
PATTERN10 COLOR = _STYLE_;
PATTERN11 COLOR = _STYLE_;
PATTERN12 COLOR = _STYLE_;
Legend1
FRAME
LABEL=(FONT='Microsoft Sans Serif' HEIGHT=8pt JUSTIFY=LEFT )
;
Axis1
STYLE=1
WIDTH=1
MINOR=NONE
;
Axis2
STYLE=1
WIDTH=1
;
TITLE;
TITLE1 "Support and Revenue";
FOOTNOTE;
PROC GCHART DATA=WORK.SORTTempTableSorted anno=my_anno;
VBAR3D
F1
/
SUMVAR=F2
SUBGROUP=F3
SHAPE=HEXAGON
FRAME TYPE=SUM
NOZERO
LEGEND=LEGEND1
COUTLINE=BLACK
RAXIS=AXIS1
MAXIS=AXIS2
;
LABEL F1="Year"
F3="Name"
F2="Dollar";
run;