HOWTO: Convert Numeric Dollar Amount to Character FormLast reviewed: May 23, 1997Article ID: Q168895 |
The information in this article applies to:
SUMMARYThis article illustrates how you can convert a numeric dollar amount to character form.
MORE INFORMATIONThe following function spells out the numeric dollar amount. NOTE: The function below only converts numeric values from .01 to 999,999,999.99 to character form.
******************* * NumToWord Function ******************* PARAMETER numAmt PRIVATE numAmt, chrAmt, cDNums, wordAmt, cDvar *numAmt = Value to spell out *chrAmt = numAmt converted to char *wordAmt = spelled out version of numAmt *Covert amount to string, add leading zeros chrAmt=RIGHT('000000000'+LTRIM(STR(numAmt,12,2)),12) *Initialize literal string Dol1 = 'ONE' Dol2 = 'TWO' Dol3 = 'THREE' Dol4 = 'FOUR' Dol5 = 'FIVE' Dol6 = 'SIX' Dol7 = 'SEVEN' Dol8 = 'EIGHT' Dol9 = 'NINE' Dol10 = 'TEN' Dol11 = 'ELEVEN' Dol12 = 'TWELVE' Dol13 = 'THIRTEEN' Dol14 = 'FOURTEEN' Dol15 = 'FIFTEEN' Dol16 = 'SIXTEEN' Dol17 = 'SEVENTEEN' Dol18 = 'EIGHTEEN' Dol19 = 'NINETEEN' Dol20 = 'TWENTY' Dol30 = 'THIRTY' Dol40 = 'FORTY' Dol50 = 'FIFTY' Dol60 = 'SIXTY' Dol70 = 'SEVENTY' Dol80 = 'EIGHTY' Dol90 = 'NINETY' wordAmt='' IsHundred = .F. checkMillion =.T. FOR Counter = 1 TO 3 * First time through the For loop to check for millions * Second time through the FOR loop to check for thousands * Third time through the FOR loop to check for hundreds, tens and ones DO CASE CASE Counter = 1 cDNums = SUBSTR(chrAmt,1,3) CASE Counter = 2 cDNums = SUBSTR(chrAmt,4,3) CASE Counter = 3 cDnums = SUBSTR(chrAmt,7,3) ENDCASE * Check hundreds IF LEFT(cDNums, 1) > '0' cDvar = 'Dol'+LEFT(cDNums,1) wordAmt = wordAmt + EVAL(cDvar)+SPACE(1)+'HUNDRED'+SPACE(1) IsHundred = .T. IF Counter = 2 CheckMillion = .T. ENDIF ENDIF * Check tens and ones Dtens = VAL(SUBSTR(cDNums,2,2)) IF Dtens > 0 IF Dtens > 20 cDvar = 'Dol'+SUBSTR(cDNums,2,1)+'0' wordAmt = wordAmt + EVAL(cDvar) IF SUBSTR(cDNums,3,1) > '0' cDvar = 'Dol'+SUBSTR(cDNums,3,1) wordAmt = wordAmt + '-'+ EVAL(cDvar) + SPACE(1) ELSE wordAmt = wordAmt + SPACE(1) ENDIF ELSE cDvar = 'Dol'+LTRIM(STR(Dtens)) wordAmt = wordAmt + EVAL(cDvar) + SPACE(1) ENDIF IsHundred = .F. IF Counter = 2 CheckMillion = .T. ENDIF ENDIF * Add in Million, if needed IF numAmt > 999999.99 .AND. Counter = 1 wordAmt = wordAmt + SPACE(1)+'MILLION'+SPACE(1) CheckMillion = .F. ENDIF * Add in Thousand, if needed IF CheckMillion IF numAmt > 999.99 .AND. Counter = 2 IF Dtens > 0 wordAmt = wordAmt + SPACE(1)+'THOUSAND'+SPACE(1) ENDIF IF IsHundred wordAmt = wordAmt + SPACE(1)+'THOUSAND'+SPACE(1) ENDIF ENDIF ENDIF ENDFOR * Construct the complete dollar amount in words wordAmt = IIF(numAmt<1, 'ONLY'+SPACE(1), wordAmt + 'AND'+SPACE(1)) + ; RIGHT(chrAmt,2)+'/100 ' + 'DOLLAR' + IIF(numAmt>1,'S','') RETURN wordAmt SAMPLEHere is a small sample that uses the above function.
|
Keywords : FxprgGeneral kbcode vfoxwin
© 1998 Microsoft Corporation. All rights reserved. Terms of Use. |