yes - using Proc Gproject is an absolute must, to get lat/long data to line up in the correct location on a map.
The following code should get you started:
data foo;
input lat long expenditure;
datalines;
-31.5 149.8 5000
-30.5 148.2 3000
-29.6 147.3 7000
;
run;
data foo; set foo;
/* convert degrees to radians, and longitude to 'eastlong' */
x=atan(1)/45 * long * -1;
y=atan(1)/45 * lat;
anno_flag=2;
run;
/* combine and project the lat/long radian values */
data combined; set maps.austral (drop = x y rename=(lat=y long=x)) foo;
run;
proc gproject data=combined out=combined dupok;
id id;
run;
/* separate the map and point data again */
data austral foo; set combined;
if anno_flag eq 2 then output foo;
else output austral;
run;
/* convert projected point data into annotated text */
data foo; set foo;
length color $8 text $50;
xsys='2'; ysys='2'; hsys='3'; when='a';
function='label'; size=2;
color='red';
text=put(expenditure,dollar10.0);
run;
pattern1 v=solid color=cornsilk;
title "Australia Expenditures";
proc gmap map=austral data=austral anno=foo;
id id;
choro id / levels=1 nolegend coutline=grayaa;
run;