You have one work-around in hand, but I would propose another ...
Rather than hard-coding the all the ranges in a user-defined-format, I would recommend just over-riding the bad range for the first (missing) value in the legend statement. The t=1 specifies the first item in the legend, and the '.' is the value you want to show there instead of the default.
legend1 origin=(2,10) pct mode=share across=1 label=none value=(j=r t=1 '.') shape=bar(3,4) pct;
proc gmap map= GreatChina data= userdata.p2pdata1; id id; title' Platform Collapse Rate'; choro ratio / legend=legend1 coutline=gray44 anno=anno_label midpoints= .1 TO .9 BY .2 range missing; run;
... View more