Using the LEVELS= option in proc gmap makes it easy to split data into equally distributed segments. However, there are times when the results are not exactly what you desire.
This is where the use of proc univariate can help get you most of the way there. The trick is to get the value that is just before the maximum value to display an inclusive range. You can use the SEXCL and/or EEXCL options in proc format but I wanted the legend to show the distinct unambiguous ranges.
Once completed, you can just change the levels = to discrete and use a custom format. The below code shows how this can be achived.
data sampledata ; format value comma8.2 ; do _n_ = 1 to 1000 ; value = round( ranuni( 1 ) * 10000, .01 ) ; output ; end ; run ; proc sort data = sampledata ; by value ; run ; proc univariate data = sampledata noprint ; var value ; format _numeric_ comma8.2 ; output out = univariate pctlpts = 0 to 100 by 20 pctlpre = p_ ; run ;