by Cabiles Raymond » 22 Jul 2014, 09:00
something wrong with my decimal. it wont display in words.. it displays in numbers. ex: 772.20 it display " SEVEN HUNDREDSEVENTY TWO PESOS AND 20 CENTS" not " SEVEN HUNDREDSEVENTY TWO PESOS AND TWENTY CENTS
String ls_Single[], ls_Ten[], ls_Teen[], ls_Mega[]
String ls_Hundred, ls_Word, ls_Char, ls_Temp,ls_Cents, ls_Amount
Integer li_Point
Long ll_Position
ls_Single = { ' ONE',' TWO',' THREE',' FOUR',' FIVE','SIX',' SEVEN','EIGHT',' NINE' }
ls_Ten = { ' TEN',' TWENTY',' THIRTY',' FORTY',' FIFTY','SIXTY','SEVENTY',' EIGHTY',' NINETY' }
ls_Teen = { ' TEN', ' ELEVEN',' TWELVE',' THIRTEEN','FOURTEEN','FIFTEEN',' SIXTEEN',' SEVENTEEN',' EIGHTEEN',' NINETEEN' }
ls_Mega = { '','THOUSAND','MILLION','BILLION'}
ls_Hundred = 'HUNDRED'
li_Point = 1
ls_Amount = Trim(String(sle_1.text))
ll_Position = Pos(ls_Amount,'.')
If ll_Position > 0 THEN
ls_Cents = Mid(ls_Amount,ll_Position + 1,2)
ls_Amount = Mid(ls_Amount,1,ll_Position - 1)
END IF
Do while Len(ls_Amount) > 0
ls_Word = ''
ls_Temp = Right(ls_Amount,3)
Do While Len(ls_Temp) > 0
CHOOSE CASE Len(ls_Temp)
CASE 3
ls_Char = Mid(ls_Temp,1,1)
If ls_Char <> '0' THEN
ls_Word += ls_Single[Integer(ls_Char)] + ' ' +ls_Hundred
END IF
ls_Temp = Mid(ls_Temp,2)
CASE 2
ls_Char = Mid(ls_Temp,1,1)
If ls_Char = '0' THEN
ls_Temp = Mid(ls_Temp,2,1)
Else
If ls_Char = '1' THEN
ls_Word += ls_Teen[Integer(Mid(ls_Temp,2,1))+1]
ls_Temp = ''
Else
ls_Word += ls_Ten[Integer(ls_Char)]
ls_Temp = Mid(ls_Temp,2,1)
END IF
END IF
CASE 1
ls_Char = Mid(ls_Temp,1,1)
If ls_Char <> '0' THEN
ls_Word += ls_Single[Integer(ls_Char)]
END IF
ls_Temp = ''
END CHOOSE
LOOP
//
ls_Amount = Mid(ls_Amount,1,Len(ls_Amount)-3)
If Len(ls_Word) > 0 THEN
mle_1.text = RightTrim(ls_Word) + ' ' + ls_Mega[li_Point] +RightTrim(mle_1.text)
END IF
li_Point++
LOOP
// //
mle_1.text = RightTrim(mle_1.text)
IF Integer(ls_Amount) = 1 THEN
mle_1.text += ' PESOS and '
END IF
mle_1.text += ' PESOS AND '
mle_1.text += ls_Cents + ' CENTS'
Return