Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Changing numeric values to word equivalent.
Message
De
01/08/2000 03:34:54
 
 
À
31/07/2000 11:44:41
Information générale
Forum:
Visual FoxPro
Catégorie:
Codage, syntaxe et commandes
Divers
Thread ID:
00398834
Message ID:
00399148
Vues:
29
Hi Milt.

>> Is there any function which would change a number to a word. Say I have an integer 4 but I don't want to say 4 but rather four. Any idea how I could do this. <<
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
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform