LPARAMETERS tnvalue LOCAL lnHund, lnThou, lnHTho, lnMill, lnInt, lnDec LOCAL llDecFlag, llHFlag, llTFlag, llMFlag, llNegFlag LOCAL lcRetVal *** Evaluate Parameters DO CASE CASE TYPE('tnValue') # 'N' RETURN('') CASE tnvalue = 0 RETURN 'Zero' CASE tnvalue < 0 llNegFlag = .T. tnvalue = ABS(tnvalue) OTHERWISE llNegFlag = .F. ENDCASE *** Initialise Variables STORE .F. TO llHFlag,llTFlag,llMFlag STORE 0 TO lnHund, lnThou, lnMill STORE "" TO lcRetVal lnInt = INT(tnvalue) && Integer Portion *** Check for Decimals IF MOD( tnValue, 1) # 0 && We Have Decimals lnDec = ROUND(MOD(tnvalue,1),2) && Decimals Portion llDecFlag = .T. ELSE llDecFlag = .F. ENDIF *** Do the Integer Portion DO WHILE .T. DO CASE CASE lnInt < 100 && TENS IF EMPTY(lcRetVal) lcRetVal = lcRetVal + ALLTRIM(This.Con_Tens(lnInt)) ELSE IF RIGHT(lcRetVal,5)#" and " lcRetVal = lcRetVal+' and ' ENDIF lcRetVal = lcRetVal + ALLTRIM(This.Con_Tens(lnInt)) ENDIF CASE lnInt < 1000 && HUNDREDS lnHund = INT(lnInt/100) lnInt = lnInt - (lnHund*100) lcRetVal = lcRetVal + ALLTRIM(This.Con_Tens(lnHund)) + " Hundred" IF lnInt # 0 lcRetVal = lcRetVal+" and " LOOP ENDIF CASE lnInt < 100000 && THOUSANDS lnThou = INT(lnInt/1000) lnInt = lnInt - (lnThou*1000) lcRetVal = lcRetVal + ALLTRIM(This.Con_Tens(lnThou)) + " Thousand" IF lnInt # 0 lcRetVal = lcRetVal + " " LOOP ENDIF CASE lnInt < 1000000 && Hundred Thousands lnHTho = INT(lnInt/100000) lnInt = lnInt - (lnHTho * 100000) lcRetVal = lcRetVal + ALLTRIM(This.con_tens(lnHTho)) + " Hundred" IF lnInt # 0 lcRetVal = lcRetVal + " and " LOOP ELSE lcRetVal = lcRetVal + " Thousand" ENDIF CASE lnInt < 100000000 && Millions lnMill = INT(lnInt/1000000) lnInt = lnInt - (lnMill * 1000000) lcRetVal = lcRetVal + ALLTRIM(This.con_tens(lnMill)) + " Million" IF lnInt # 0 lcRetVal = lcRetVal + ", " LOOP ENDIF ENDCASE EXIT ENDDO *** Handle Decimals IF llDecFlag lnDec = lnDec * 100 lcRetVal = lcRetVal + " and " + ALLTRIM(This.con_tens(lnDec)) + ' Hundredths' ENDIF *** Handle Negative Numbers IF llNegFlag lcRetVal = "[MINUS " + ALLTRIM(lcRetVal) + "]" ENDIF RETURN lcRetVal <b>Con_teens:</> LPARAMETERS tntvalue DO CASE CASE tntvalue = 0 RETURN('') CASE tntvalue = 1 RETURN('One ') CASE tntvalue = 2 RETURN('Two ') CASE tntvalue = 3 RETURN('Three ') CASE tntvalue = 4 RETURN('Four ') CASE tntvalue = 5 RETURN('Five ') CASE tntvalue = 6 RETURN('Six ') CASE tntvalue = 7 RETURN('Seven ') CASE tntvalue = 8 RETURN('Eight ') CASE tntvalue = 9 RETURN('Nine ') CASE tntvalue = 10 RETURN('Ten ') CASE tntvalue = 11 RETURN('Eleven ') CASE tntvalue = 12 RETURN('Twelve ') CASE tntvalue = 13 RETURN('Thirteen ') CASE tntvalue = 14 RETURN('Fourteen ') CASE tntvalue = 15 RETURN('Fifteen ') CASE tntvalue = 16 RETURN('Sixteen ') CASE tntvalue = 17 RETURN('Seventeen ') CASE tntvalue = 18 RETURN('Eighteen ') CASE tntvalue = 19 RETURN('Nineteen ') ENDCASE <b>Con_Tens:</b> LPARAMETERS tndvalue LOCAL lcStrVal, lcStrTeen STORE '' TO lcStrVal,lcStrTeen DO CASE CASE tnDValue < 20 RETURN(This.Con_Teens(tnDValue)) CASE tnDValue < 30 lcStrVal = 'Twenty' tnDValue = tnDValue - 20 CASE tnDValue < 40 lcStrVal = 'Thirty' tnDValue = tnDValue - 30 CASE tnDValue < 50 lcStrVal = 'Forty' tnDValue = tnDValue - 40 CASE tnDValue < 60 lcStrVal = 'Fifty' tnDValue = tnDValue - 50 CASE tnDValue < 70 lcStrVal = 'Sixty' tnDValue = tnDValue - 60 CASE tnDValue < 80 lcStrVal = 'Seventy' tnDValue = tnDValue - 70 CASE tnDValue < 90 lcStrVal = 'Eighty' tnDValue = tnDValue - 80 CASE tnDValue < 100 lcStrVal = 'Ninety' tnDValue = tnDValue - 90 ENDCASE lcStrTeen = This.Con_Teens(tnDValue) IF LEN(lcStrTeen) # 0 && there was something there lcStrVal = lcStrVal + '-' + lcStrTeen ENDIF RETURN TRIM(lcStrVal)Marcia