%DECH Examples Figure 1. Using Numeric and Character Parameters *..1....+....2....+....3....+....4....+....5....+....6....+....7...+.... D*Name++++++++++ETDsFrom+++To/L+++IDc.Keywords+++++++++++++++++++++++++ D p7 s 7p 3 inz (1234.567) D s9 s 9s 5 inz (73.73442) D f8 s 8f inz (123.456789) D c15a s 15a inz (' 123.456789 -') D c15b s 15a inz (' + 9 , 8 7 6 ') D result1 s 15p 5 D result2 s 15p 5 D result3 s 15p 5 /FREE // using numeric parameters result1 = %dec (p7) + 0.011; // "result1" is now 1234.57800 result2 = %dec (s9 : 5: 0); // "result2" is now 73.00000 result3 = %dech (f8: 5: 2); // "result3" is now 123.46000 // using character parameters result1 = %dec (c15a: 5: 2); // "result1" is now -123.45 result2 = %dech(c15b: 5: 2); // "result2" is now 9.88000 /END-FREE Figure 2. Handling Currency Symbols and Thousands Separators *----------------------------------------------------------------- * If the character data is known to contain non-numeric characters * such as thousands separators (like 1,234,567) or leading * asterisks and currency symbols (like $***1,234,567.89), some * preprocessing is necessary to remove these characters from the * data. *----------------------------------------------------------------- D data s 20a inz('$1,234,567.89') D num s 21p 9 /free // Use the %XLATE built-in function to replace any currency // symbol, asterisks or thousands separators with blanks num = %dech(%xlate('$*,' : ' ' : data) : 21 : 9); // If the currency symbol or thousands separator might // vary at runtime, use variables to hold these values. num = %dech(%xlate(cursym + '*' + thousandsSep : ' ' : data) : 21 : 9);