Ok, Aqui tye va el código:
Esta rutina la uso para imprimir cheques, por eso sale Bs. (Venezuela).
PARAMETER XNUM
DECLARE U(10),D(10),C(10),E(10)
U(1) = ""
U(2) = "UNO"
U(3) = "DOS"
U(4) = "TRES"
U(5) = "CUATRO"
U(6) = "CINCO"
U(7) = "SEIS"
U(8) = "SIETE"
U(9) = "OCHO"
U(10) = "NUEVE"
***----
D(1) = ""
D(2) = "DIEZ"
D(3) = "VEINTE"
D(4) = "TREINTA"
D(5) = "CUARENTA"
D(6) = "CINCUENTA"
D(7) = "SESENTA"
D(8) = "SETENTA"
D(9) = "OCHENTA"
D(10) = "NOVENTA"
***-----
C(1) = ""
C(2) = "CIENTO"
C(3) = "DOSCIENTOS"
C(4) = "TRESCIENTOS"
C(5) = "CUATROCIENTOS"
C(6) = "QUINIENTOS"
C(7) = "SEISCIENTOS"
C(8) = "SETECIENTOS"
C(9) = "OCHOCIENTOS"
C(10) = "NOVECIENTOS"
***-------
E(1) = "DIEZ"
E(2) = "ONCE"
E(3) = "DOCE"
E(4) = "TRECE"
E(5) = "CATORCE"
E(6) = "QUINCE"
E(7) = "DIECISEIS"
E(8) = "DIECISIETE"
E(9) = "DIECIOCHO"
E(10) = "DIECINUEVE"
***-------
M4 = INT(XNUM / 1000000000)
M3 = INT(XNUM / 1000000) - (M4 * 1000)
M2 = INT(XNUM / 1000) - (M3 * 1000) - (M4 * 1000000)
M1 = INT(XNUM) - (M2 * 1000) - (M3 * 1000000) - (M4 * 1000000000)
XCS = INT((XNUM - INT(XNUM))*100)
XR2 = ""
IF !EMPTY(M4)
XR2 = XR2 + TRIO(M4,.F.) + " MIL "
ENDIF
IF !EMPTY(M3)
XR2 = XR2 + TRIO(M3,.F.) + IIF(M3=1," MILLON "," MILLLONES ")
ENDIF
IF !EMPTY(M2)
XR2 = XR2 + TRIO(M2,.F.) + " MIL "
ENDIF
IF !EMPTY(M1)
XR2 = XR2 + TRIO(M1,.T.)
ENDIF
* ANEXAR LOS CENTIMOS
XR2 = XR2 + " BOLIVARES CON " + STRTRAN(STR(XCS,2,0)," ","0") + "/100 CENTIMOS"
DO WHILE AT(" ",XR2) > 0
XR2 = STRTRAN(XR2," "," ")
ENDDO
RETURN XR2
FUNCTION TRIO
PARAMETER NUMERO,XUNO
U(2) = IIF(XUNO,"UNO","UN")
X3 = INT(NUMERO / 100)
X2 = INT(NUMERO / 10) - X3*10
X1 = NUMERO - X3*100 - X2*10
XR = ""
*****
DO CASE
CASE NUMERO = 100
XR = "CIEN"
OTHER
XR = C(X3+1) + " "
IF X2 = 1
XR = XR + E(X1+1)
ELSE
XR = XR + D(X2+1) + IIF(X1>0 AND X2>0," Y ","") + U(X1+1)
ENDIF
ENDCASE
RETURN XR