open-insight/LSL2/STPROC/TEXT_AMOUNT.txt
Infineon\StieberD 7762b129af pre cutover push
2024-09-04 20:33:41 -07:00

227 lines
5.3 KiB
Plaintext

Function TEXT_AMOUNT(AMOUNT)
/*------------------------------------------------------------------------------------------------------------------
This program is proprietary and is not to be used by or disclosed to others, nor is it to
be copied without written permission from SRP Computer Solutions.
History (Date, Initials, Notes)
05/21/07 ft Copied from AREV 2.1 BP to OI during initial conversion
-------------------------------------------------------------------------------------------------------------------*/
EQUATE FALSE TO 0
EQUATE TRUE TO 1
FRTS=INT(AMOUNT/100) ; * Federal Reserve Tokens
CENTS=MOD(AMOUNT,100)
DDIGITS=LEN(FRTS) ; * "Dollar" digits
TEXT=' '
*IF DDIGITS = 4 THEN GOSUB TEEN.HUNDREDS
TEENS = FALSE
LOOP
WHILE DDIGITS DO
TENS=FALSE
ZEROS=FALSE
BEGIN CASE
CASE DDIGITS>7
RETURN "NUMBER TOO LARGE FOR CONVERSION!"
CASE DDIGITS=7
GOSUB MILLIONS
CASE DDIGITS=6
GOSUB HUNDRED.THOUSANDS
CASE DDIGITS=5
GOSUB TEN.THOUSANDS
CASE DDIGITS=4
GOSUB THOUSANDS
CASE DDIGITS=3
GOSUB HUNDREDS
CASE DDIGITS=2
GOSUB TENS
CASE DDIGITS=1
GOSUB DOLLARS
END CASE
REPEAT
* IF CENTS = 0 THEN CENTS = 'ZERO'
* TEXT:=CENTS:' CENTS'
TEXT = Oconv(TRIM(TEXT), "[FIRST_CAPS]")
RETURN TEXT
DOLLARS:
IF TEENS THEN
TEENS=FALSE
DDIGITS-=1
FRTS=FRTS[2,DDIGITS]
END ELSE
GOSUB NUM.TO.TEXT
END
* TEXT:=' DOLLARS AND '
return
TENS:
TENS=TRUE
GOSUB NUM.TO.TEXT
TENS=FALSE
RETURN
HUNDREDS:
GOSUB NUM.TO.TEXT
IF ZEROS=FALSE THEN
TEXT:=' HUNDRED '
END
RETURN
THOUSANDS:
IF TEENS THEN
TEENS=FALSE
DDIGITS-=1
FRTS=FRTS[2,DDIGITS]
END ELSE
GOSUB NUM.TO.TEXT
END
TEXT:=' THOUSAND '
RETURN
TEN.THOUSANDS:
TENS=TRUE
GOSUB NUM.TO.TEXT
RETURN
HUNDRED.THOUSANDS:
GOSUB NUM.TO.TEXT
TEXT:=' HUNDRED '
RETURN
MILLIONS:
GOSUB NUM.TO.TEXT
TEXT:=' MILLION '
RETURN
NUM.TO.TEXT:
BEGIN CASE
CASE FRTS[1,1] = '0'
ZEROS=TRUE
CASE FRTS[1,1] = '1'
IF TENS=FALSE THEN
TEXT:='ONE'
END ELSE
TEENS=TRUE
BEGIN CASE
CASE FRTS[2,1] = '0'
TEXT:='TEN'
CASE FRTS[2,1] = '1'
TEXT:='ELEVEN'
CASE FRTS[2,1] = '2'
TEXT:='TWELVE'
CASE FRTS[2,1] = '3'
TEXT:='THIRTEEN'
CASE FRTS[2,1] = '4'
TEXT:='FOURTEEN'
CASE FRTS[2,1] = '5'
TEXT:='FIFTEEN'
CASE FRTS[2,1] = '6'
TEXT:='SIXTEEN'
CASE FRTS[2,1] = '7'
TEXT:='SEVENTEEN'
CASE FRTS[2,1] = '8'
TEXT:='EIGHTEEN'
CASE FRTS[2,1] = '9'
TEXT:='NINETEEN'
END CASE
END
CASE FRTS[1,1] = '2'
IF TENS=FALSE THEN
TEXT:='TWO'
END ELSE
IF FRTS[2,1]='0' THEN
TEXT:='TWENTY'
END ELSE
TEXT:='TWENTY-'
END
END
CASE FRTS[1,1] = '3'
IF TENS=FALSE THEN
TEXT:='THREE'
END ELSE
IF FRTS[2,1]='0' THEN
TEXT:='THIRTY'
END ELSE
TEXT:='THIRTY-'
END
END
CASE FRTS[1,1] = '4'
IF TENS=FALSE THEN
TEXT:='FOUR'
END ELSE
IF FRTS[2,1]='0' THEN
TEXT:='FORTY'
END ELSE
TEXT:='FORTY-'
END
END
CASE FRTS[1,1] = '5'
IF TENS=FALSE THEN
TEXT:='FIVE'
END ELSE
IF FRTS[2,1]='0' THEN
TEXT:='FIFTY'
END ELSE
TEXT:='FIFTY-'
END
END
CASE FRTS[1,1] = '6'
IF TENS=FALSE THEN
TEXT:='SIX'
END ELSE
IF FRTS[2,1]='0' THEN
TEXT:='SIXTY'
END ELSE
TEXT:='SIXTY-'
END
END
CASE FRTS[1,1] = '7'
IF TENS=FALSE THEN
TEXT:='SEVEN'
END ELSE
IF FRTS[2,1]='0' THEN
TEXT:='SEVENTY'
END ELSE
TEXT:='SEVENTY-'
END
END
CASE FRTS[1,1] = '8'
IF TENS=FALSE THEN
TEXT:='EIGHT'
END ELSE
IF FRTS[2,1]='0' THEN
TEXT:='EIGHTY'
END ELSE
TEXT:='EIGHTY-'
END
END
CASE FRTS[1,1] = '9'
IF TENS=FALSE THEN
TEXT:='NINE'
END ELSE
IF FRTS[2,1]='0' THEN
TEXT:='NINETY'
END ELSE
TEXT:='NINETY-'
END
END
END CASE
DDIGITS-=1
FRTS=FRTS[2,DDIGITS]
RETURN
* END OF TEXT.AMOUNT