If you read the documentation for the COMMAw.d format it has an important section regarding W:
w
specifies the width of the output field.
Which means that if you do not specify a W value that the format will attempt to display the value in only 6 characters, ie COMMA6.
When you use Comma10. then it allows for more characters in display.
You need to always consider what you want to display for output. If you want decimals and the value is large enough if your width, or W, is not large enough to include the digits before the decimal, the commas (or parantheses, % sign or what have you ) and the decimal itself then the result will get truncated.
Consider this code (look in the log for the result):
data _null_;
x=123456789.45678;
put x=comma6. x=comma10. x=f13.5 x=f15.5 x=comma15.5 x=comma19.5;
run;
The result shows the same value displayed with a number of formats. You might find the 1st and 5th very interesting as SAS takes alternate approaches to "best fitting" the displayed value to your request. Also see the note about format too small.
Remember also then when you have a list of variables that the first defined format is applied to all of the preceding variables.
Every format has a default length and sometimes you may find funny results such as 2E3 instead of an expected 2019 because the format has been set to BEST3. Which reduces the number of spaces allowed so SAS goes to scientific notation.