Hi,
This isn't really an ODS related question. However, if you try putting this before your code:
options symbolgen mprint mlogic;
when you run your code, you will see the following message:
SYMBOLGEN: Macro variable TESTFMT2 resolves to comma8.2
SYMBOLGEN: Some characters in the above value which were subject to macro quoting have been unquoted for printing.
Although the use of %str to form &TESTFMT2 seems like it's harmless, it can cause unprintable hex characters to be placed in the value, as described here:
http://support.sas.com/faq/005/FAQ00531.html
Since &testfmt1 works (without using %STR), then either use that method or the %UNQUOTE method described in the note.
For more help with macro quoting functions, you could read the SAS Macro documentation or contact Tech Support. There are also a number of good books available through SAS Press that cover the SAS Macro facility.
cynthia