Number to Text Routine?

Ben Weinberg ben at pca.com
Fri Jul 22 20:25:52 UTC 2022


Das:

Funny you should ask…
I just wrote this a few weeks ago after looking around and not finding any examples.  It’s most likely done the hard way but gets the job done.

Ben Weinberg


No.	Instance Variable	Type	Subtype	Init.Val/Calc	Description
1	iAccountsCombined	Character	60
2	iAmountSpeak	Character	90
3	iAmountString	Character	10
4	iCents	32 bit integer
5	icoOnes	Character	10
6	icoTens	Character	10
7	iDollars	Number	floating dp
8	iHundreds	Number	floating dp
9	iHundredsTotal	Number	floating dp
10	iSplitsList	List
11	iTens	Number	floating dp
12	iTensTotal	Number	floating dp
13	iTenThousands	Number	floating dp
14	iThousands	Number	floating dp
15	iThousandsTotal	Number	floating dp



# Convert numeric amount into words

Clear range of fields iAmountSpeak to iThousandsTotal
Calculate iAmountString as FTRANSACTIONS.trAmount

Calculate iCents as (FTRANSACTIONS.trAmount-int(FTRANSACTIONS.trAmount))*100

If len(iAmountString)>3
Calculate iDollars as mid(iAmountString,len(iAmountString)-3,1)
End If
If len(iAmountString)>4
Calculate iTens as mid(iAmountString,len(iAmountString)-4,1)
End If
If len(iAmountString)>5
Calculate iHundreds as mid(iAmountString,len(iAmountString)-5,1)
End If
If len(iAmountString)>6
Calculate iThousands as mid(iAmountString,len(iAmountString)-6,1)
End If
If len(iAmountString)>7
Calculate iTenThousands as mid(iAmountString,len(iAmountString)-7,1)
End If

# Calculate totals to determine which list to use (Ones or Tens)
Calculate iTensTotal as (iTens*10+iDollars)
Calculate iHundredsTotal as (iHundreds*100)+(iTens*10)+iDollars
Calculate iThousandsTotal as (iTenThousands*10)+iThousands

# If thousands is between 1 and 19, use the Ones list
If iThousandsTotal>0&iThousandsTotal<20
Do FCOMPANY.coOnesList.$line.$assign(iThousandsTotal)
Do FCOMPANY.coOnesList.$loadcols(icoOnes)
Calculate iAmountSpeak as con(icoOnes,' Thousand ')


Else
# Thousands is 20 or more, use the Tens list
Do FCOMPANY.coTensList.$line.$assign(iTenThousands)
Do FCOMPANY.coTensList.$loadcols(icoTens)
Calculate iAmountSpeak as con(icoTens,' ')


# One-thousands use the Ones list
If iThousands>0
Do FCOMPANY.coOnesList.$line.$assign(iThousands)
Do FCOMPANY.coOnesList.$loadcols(icoOnes)
Calculate iAmountSpeak as con(iAmountSpeak,' ',icoOnes,' Thousand ')
End If
End If

# Hundreds use the Ones lisst
If iHundreds>0
Do FCOMPANY.coOnesList.$line.$assign(iHundreds)
Do FCOMPANY.coOnesList.$loadcols(icoOnes)
Calculate iAmountSpeak as con(iAmountSpeak,' ',icoOnes,' Hundred ')
End If

# If tens between 1 and 19, use the Ones list
If iTensTotal<20
Do FCOMPANY.coOnesList.$line.$assign(iTensTotal)
Do FCOMPANY.coOnesList.$loadcols(icoOnes)
Calculate iAmountSpeak as con(iAmountSpeak,' ',icoOnes,' Dollars')


Else
# Tens 20 or more, use the Tens list
Do FCOMPANY.coTensList.$line.$assign(iTens)
Do FCOMPANY.coTensList.$loadcols(icoTens)
Calculate iAmountSpeak as con(iAmountSpeak,' ',icoTens,' ')


# Ones
If iDollars>0
Do FCOMPANY.coOnesList.$line.$assign(iDollars)
Do FCOMPANY.coOnesList.$loadcols(icoOnes)
Calculate iAmountSpeak as con(iAmountSpeak,' ',icoOnes,' Dollars')
Else
Calculate iAmountSpeak as con(iAmountSpeak,' Dollars')
End If
End If

# Cents
Calculate iAmountSpeak as con(iAmountSpeak,' and ',iCents,'/100 ')

Do default

--------------
Requires two lists:
icoOnes:
One
Two
...
Nineteen

icoTens:
Ten
Twenty
...
Ninety


> On Jul 22, 2022, at 12:50 PM, Das Goravani <goravanis at gmail.com> wrote:
> 
> 
> Hello All,
> 
> One thing I’m working on is the printing of checks.
> 
> It’s one thing to have the amount as a number, that’s normal, but to print the check I need the amount in text like:
> 
> One Thousand Seven Hundred Thirty Four and 68 cents
> 
> Does anyone have a routine that does this conversion ?
> 
> I think I could write one, but it would be a bit long, someone might do it smarter than I could do it.
> 
> Thanks
> 
> Das Goravani
> _____________________________________________________________
> Manage your list subscriptions at https://lists.omnis-dev.com
> Start a new message -> mailto:omnisdev-en at lists.omnis-dev.com 




More information about the omnisdev-en mailing list