Case (CANTIDAD = 0 ; "Cero pesos." ;
CANTIDAD > 999999999; "Número fuera de rango." ;
Let ( [millones = Int (CANTIDAD/10^6 ) ; miles = Int (Mod (CANTIDAD ; 10^6 )/10^3) ; cientos = Int ( Mod (CANTIDAD ; 10^3 ) ) ];
/*...................................................................................................... MILLONES ..................................................................................................*/
/*.................................................. Analiza centenas de millón...................................................*/
Case ( 100000000 ≤ CANTIDAD and CANTIDAD < 1000000000 ; Choose ( Int ( millones/100 ); "";If ( millones = 100 ; "Cien " ; "Ciento " );"Doscientos ";"Trescientos ";"Cuatrocientos ";"Quinientos ";"Seiscientos ";"Setecientos ";"Ochocientos ";"Novecientos " );
CANTIDAD > 1000000000 ; Choose ( Int ( millones/100 ); "";If ( millones = 100 ; "cien " ; "ciento " );"doscientos ";"trescientos ";"cuatrocientos ";"quinientos ";"seiscientos ";"setecientos ";"ochocientos ";"novecientos " ) )
/*........................................... Analiza decenas y unidades de millón.............................................*/
&
Case ( 1000000 ≤ CANTIDAD and CANTIDAD < 100000000 ; Case ( Mod ( millones ; 100 ) < 30 ; Choose ( Mod ( millones ; 100 ) ; "";"Un ";"Dos ";"Tres ";"Cuatro ";"Cinco ";"Seis ";"Siete ";"Ocho ";"Nueve ";
"Diez ";"Once ";"Doce ";"Trece ";"Catorce ";"Quince ";"Dieciséis ";"Diecisiete ";"Dieciocho ";"Diecinueve ";"Veinte ";
"Veintiún ";"Veintidós ";"Veintitrés ";"Veinticuatro ";"Veinticinco ";"Veintiséis ";"Veintisiete ";"Veintiocho ";"Veintinueve " );
Choose ( Int ( Mod ( millones ; 100 ) / 10 ) ; "";"";"";"Treinta ";"Cuarenta ";"Cincuenta ";"Sesenta ";"Setenta ";"Ochenta ";"Noventa ")
&
Choose ( Mod ( millones ; 10 ) ;"";"y un ";"y dos ";"y tres ";"y cuatro ";"y cinco ";"y seis ";"y siete ";"y ocho ";"y nueve ") );
100000000 ≤ CANTIDAD; Case ( Mod ( millones ; 100 ) < 30 ; Choose ( Mod ( millones ; 100 ) ; "";"un ";"dos ";"tres ";"cuatro ";"cinco ";"seis ";"siete ";"ocho ";"nueve ";
"diez ";"once ";"doce ";"trece ";"catorce ";"quince ";"dieciséis ";"diecisiete ";"dieciocho ";"diecinueve ";"veinte ";
"veintiún ";"veintidós ";"veintitrés ";"veinticuatro ";"veinticinco ";"veintiseis ";"veintisiete ";"veintiocho ";"veintinueve " );
Choose ( Int ( Mod ( millones ; 100 ) / 10 ) ; "";"";"";"treinta ";"cuarenta ";"cincuenta ";"sesenta ";"setenta ";"ochenta ";"noventa ")
&
Choose ( Mod ( millones ; 10 ) ;"";"y un ";"y dos ";"y tres ";"y cuatro ";"y cinco ";"y seis ";"y siete ";"y ocho ";"y nueve ") ) )
&
Case ( millones = 0 ; "" ;
millones = 1 ; "millón ";
( CANTIDAD / 1000000 - Int ( CANTIDAD / 1000000 ) )= 0 ; "millones de ";
"millones " )
/*........................................................................................................ MILES ....................................................................................................*/
&
/*.................................................. Analiza centenas de mil......................................................*/
Case ( 100000 ≤ CANTIDAD and CANTIDAD < 1000000 ; Choose ( Int ( miles/100 ); "";If ( miles = 100 ; "Cien " ; "Ciento " );"Doscientos ";"Trescientos ";"Cuatrocientos ";"Quinientos ";"Seiscientos ";"Setecientos ";"Ochocientos ";"Novecientos " );
CANTIDAD ≥ 1000000 ; Choose ( Int ( miles/100 ); "";If ( miles = 100 ; "cien " ; "ciento " );"doscientos ";"trescientos ";"cuatrocientos ";"quinientos ";"seiscientos ";"setecientos ";"ochocientos ";"novecientos " ) )
/*............................................ Analiza decenas y unidades de mil...............................................*/
&
Case ( 1000 ≤ CANTIDAD and CANTIDAD < 100000 ; Case ( Mod ( miles ; 100 ) < 30 ; Choose ( Mod ( miles ; 100 ) ; "";"Un ";"Dos ";"Tres ";"Cuatro ";"Cinco ";"Seis ";"Siete ";"Ocho ";"Nueve ";
"Diez ";"Once ";"Doce ";"Trece ";"Catorce ";"Quince ";"Dieciséis ";"Diecisiete ";"Dieciocho ";"Diecinueve ";"Veinte ";
"Veintiún ";"Veintidós ";"Veintitrés ";"Veinticuatro ";"Veinticinco ";"Veintiséis ";"Veintisiete ";"Veintiocho ";"Veintinueve " );
Choose ( Int ( Mod ( miles ; 100 ) / 10 ) ; "";"";"";"Treinta ";"Cuarenta ";"Cincuenta ";"Sesenta ";"Setenta ";"Ochenta ";"Noventa ")
&
Choose ( Mod ( miles ; 10 ) ;"";"y un ";"y dos ";"y tres ";"y cuatro ";"y cinco ";"y seis ";"y siete ";"y ocho ";"y nueve ") );
1000 < CANTIDAD; Case ( Mod ( miles ; 100 ) < 30 ; Choose ( Mod ( miles ; 100 ) ; "";"un ";"dos ";"tres ";"cuatro ";"cinco ";"seis ";"siete ";"ocho ";"nueve ";
"diez ";"once ";"doce ";"trece ";"catorce ";"quince ";"dieciséis ";"diecisiete ";"dieciocho ";"diecinueve ";"veinte ";
"veintiún ";"veintidós ";"veintitrés ";"veinticuatro ";"veinticinco ";"veintiséis ";"veintisiete ";"veintiocho ";"veintinueve " );
Choose ( Int ( Mod ( miles ; 100 ) / 10 ) ; "";"";"";"treinta ";"cuarenta ";"cincuenta ";"sesenta ";"setenta ";"ochenta ";"noventa ")
&
Choose ( Mod ( miles ; 10 ) ;"";"y un ";"y dos ";"y tres ";"y cuatro ";"y cinco ";"y seis ";"y siete ";"y ocho ";"y nueve ") ) )
&
Case ( miles = 0 ; "" ; "mil " )
/*...................................................................................................... UNIDADES ...............................................................................................*/
/*..................................................... Analiza centenas de unidades........................................*/
&
Case ( 100 ≤ CANTIDAD and CANTIDAD < 1000 ; Choose ( Int ( cientos/100 ); "";If ( cientos = 100 ; "Cien " ; "Ciento " );"Doscientos ";"Trescientos ";"Cuatrocientos ";"Quinientos ";"Seiscientos ";"Setecientos ";"Ochocientos ";"Novecientos " );
CANTIDAD ≥ 1000 ; Choose ( Int ( cientos/100 ); "";If ( cientos = 100 ; "cien " ; "ciento " );"doscientos ";"trescientos ";"cuatrocientos ";"quinientos ";"seiscientos ";"setecientos ";"ochocientos ";"novecientos " ) )
/*..................................................... Analiza decenas y unidades ........................................*/
&
Case ( 1 ≤ CANTIDAD and CANTIDAD < 100 ; Case ( Mod ( cientos ; 100 ) < 30 ; Choose ( Mod ( cientos ; 100 ) ; "";"Un ";"Dos ";"Tres ";"Cuatro ";"Cinco ";"Seis ";"Siete ";"Ocho ";"Nueve ";
"Diez ";"Once ";"Doce ";"Trece ";"Catorce ";"Quince ";"Dieciséis ";"Diecisiete ";"Dieciocho ";"Diecinueve ";"Veinte ";
"Veintiún ";"Veintidós ";"Veintitrés ";"Veinticuatro ";"Veinticinco ";"Veintiseis ";"Veintisiete ";"Veintiocho ";"Veintinueve "
);
Choose ( Int ( Mod ( cientos ; 100 ) / 10 ) ; "";"";"";"Treinta ";"Cuarenta ";"Cincuenta ";"Sesenta ";"Setenta ";"Ochenta ";"Noventa ")
&
Choose ( Mod ( cientos ; 10 ) ;"";"y un ";"y dos ";"y tres ";"y cuatro ";"y cinco ";"y seis ";"y siete ";"y ocho ";"y nueve ") );
100 ≤ CANTIDAD; Case ( Mod ( cientos ; 100 ) < 30 ; Choose ( Mod ( cientos ; 100 ) ; "";"un ";"dos ";"tres ";"cuatro ";"cinco ";"seis ";"siete ";"ocho ";"nueve ";
"diez ";"once ";"doce ";"trece ";"catorce ";"quince ";"dieciseis ";"diecisiete ";"dieciocho ";"diecinueve ";"veinte ";
"veintiún ";"veintidós ";"veintitrés ";"veinticuatro ";"veinticinco ";"veintiséis ";"veintisiete ";"veintiocho ";"veintinueve "
);
Choose ( Int ( Mod ( cientos ; 100 ) / 10 ) ; "";"";"";"treinta ";"cuarenta ";"cincuenta ";"sesenta ";"setenta ";"ochenta ";"noventa ")
&
Choose ( Mod ( cientos ; 10 ) ;"";"y un ";"y dos ";"y tres ";"y cuatro ";"y cinco ";"y seis ";"y siete ";"y ocho ";"y nueve ") ) )
&
Case ( Int ( CANTIDAD ) = 1 ; "peso. ";
CANTIDAD - ( millones * 1000000 )= 1 ; "peso.";
"pesos. " )
)
)