It'd be nice if you didn't change your requirements as you go.
This does what you asked. Modify to suit if your needs change again.
proc format;
picture million (ROUND)
low -< 0 = '000,000,000,000,009)' (prefix="($ ")
0 = 'Zero'
0 - 1e6 = '1 Million'
1e6 <-< 10e6 = '000,000,009 M' (prefix=" $ " mult=0.000001)
10e6 - high = '000,000,009 Million' (prefix=" $ " mult=0.000001)
;
run;
data _null_;
A = 1.2; putlog A= million. ;
A = -629777257.2; putlog A= million. ;
A = 629777257.2; putlog A= million. ;
A = 3063114.2; putlog A= million. ;
run;
A=1 Million A=($ 629,777,257) A=$ 630 Million A=$ 3 M
... View more