FUNCTION PorExtenso PARAMETERS pe_valor PRIVATE pe_texto, pe_valorform, pe_bilhao, pe_milhao, pe_milhar, pe_unidade, pe_cents m.pe_texto1s = "Real" m.pe_texto1p = "Reais" m.pe_texto2s = "Centavo" m.pe_texto2p = "Centavos" pe_valorform = STR(pe_valor*100,14) pe_bilhao = pe_escreve(SUBSTR(pe_valorform, 1, 3)) pe_milhao = pe_escreve(SUBSTR(pe_valorform, 4, 3)) pe_milhar = pe_escreve(SUBSTR(pe_valorform, 7, 3)) pe_unidade = pe_escreve(SUBSTR(pe_valorform, 10, 3)) pe_cents = pe_escreve("0"+SUBSTR(pe_valorform, 13, 2)) pe_texto = "" IF !EMPTY(pe_bilhao) pe_texto = pe_bilhao IF VAL(SUBSTR(pe_valorform, 1, 3)) <> 1 pe_texto = pe_texto + " bilhões" ELSE pe_texto = pe_texto + " bilhão" ENDIF ENDIF IF !EMPTY(pe_milhao) IF !EMPTY(pe_texto) pe_texto = pe_texto + ", " ENDIF pe_texto = pe_texto + pe_milhao IF VAL(SUBSTR(pe_valorform, 4, 3)) <> 1 pe_texto = pe_texto + " milhões" ELSE pe_texto = pe_texto + " milhão" ENDIF ENDIF IF !EMPTY(pe_milhar) IF !EMPTY(pe_texto) pe_texto = pe_texto + ", " ENDIF pe_texto = pe_texto + pe_milhar + " mil" ENDIF IF !EMPTY(pe_unidade) IF !EMPTY(pe_texto) pe_texto = pe_texto + ", " ENDIF pe_texto = pe_texto + pe_unidade ENDIF IF !EMPTY(pe_texto) IF INT(pe_valor) > 1 pe_texto = pe_texto + " " + pe_texto1p ELSE pe_texto = pe_texto + " " + pe_texto1s ENDIF ENDIF IF !EMPTY(pe_cents) IF !EMPTY(pe_texto) pe_texto = pe_texto + " e " ENDIF pe_texto = pe_texto + pe_cents IF VAL(SUBSTR(pe_valorform, 13, 2)) <> 1 pe_texto = pe_texto + " " + pe_texto2p ELSE pe_texto = pe_texto + " " + pe_texto2s ENDIF ENDIF pe_texto = UPPER(SUBSTR(pe_texto,1,1))+SUBSTR(pe_texto,2) RETURN pe_texto FUNCTION pe_escreve PARAMETERS pe_digitos PRIVATE pe_primeiro, pe_segundo, pe_terceiro, pe_texto pe_primeiro = VAL(SUBSTR(pe_digitos, 1, 1)) pe_segundo = VAL(SUBSTR(pe_digitos, 2, 1)) pe_terceiro = VAL(SUBSTR(pe_digitos, 3, 1)) DO CASE CASE pe_primeiro = 1 IF pe_segundo = 0 .AND. pe_terceiro = 0 pe_texto = "cem" ELSE pe_texto = "cento" ENDIF CASE pe_primeiro = 2 pe_texto = "duzentos" CASE pe_primeiro = 3 pe_texto = "trezentos" CASE pe_primeiro = 4 pe_texto = "qüatrocentos" CASE pe_primeiro = 5 pe_texto = "quinhentos" CASE pe_primeiro = 6 pe_texto = "seicentos" CASE pe_primeiro = 7 pe_texto = "setecentos" CASE pe_primeiro = 8 pe_texto = "oitocentos" CASE pe_primeiro = 9 pe_texto = "novecentos" CASE pe_primeiro = 0 pe_texto = "" ENDCASE IF pe_segundo <> 0 .OR. pe_terceiro <> 0 IF pe_primeiro <> 0 pe_texto = pe_texto + " e " ENDIF IF pe_segundo = 1 DO CASE CASE pe_terceiro = 0 pe_texto = pe_texto + "dez" CASE pe_terceiro = 1 pe_texto = pe_texto + "onze" CASE pe_terceiro = 2 pe_texto = pe_texto + "doze" CASE pe_terceiro = 3 pe_texto = pe_texto + "treze" CASE pe_terceiro = 4 pe_texto = pe_texto + "quatorze" CASE pe_terceiro = 5 pe_texto = pe_texto + "quinze" CASE pe_terceiro = 6 pe_texto = pe_texto + "dezesseis" CASE pe_terceiro = 7 pe_texto = pe_texto + "dezessete" CASE pe_terceiro = 8 pe_texto = pe_texto + "dezoito" CASE pe_terceiro = 9 pe_texto = pe_texto + "dezenove" ENDCASE ELSE DO CASE CASE pe_segundo = 2 pe_texto = pe_texto + "vinte" CASE pe_segundo = 3 pe_texto = pe_texto + "trinta" CASE pe_segundo = 4 pe_texto = pe_texto + "qüarenta" CASE pe_segundo = 5 pe_texto = pe_texto + "cinqüenta" CASE pe_segundo = 6 pe_texto = pe_texto + "sessenta" CASE pe_segundo = 7 pe_texto = pe_texto + "setenta" CASE pe_segundo = 8 pe_texto = pe_texto + "oitenta" CASE pe_segundo = 9 pe_texto = pe_texto + "noventa" ENDCASE IF pe_terceiro <> 0 IF pe_segundo <> 0 pe_texto = pe_texto + " e " ENDIF DO CASE CASE pe_terceiro = 1 pe_texto = pe_texto + "um" CASE pe_terceiro = 2 pe_texto = pe_texto + "dois" CASE pe_terceiro = 3 pe_texto = pe_texto + "três" CASE pe_terceiro = 4 pe_texto = pe_texto + "quatro" CASE pe_terceiro = 5 pe_texto = pe_texto + "cinco" CASE pe_terceiro = 6 pe_texto = pe_texto + "seis" CASE pe_terceiro = 7 pe_texto = pe_texto + "sete" CASE pe_terceiro = 8 pe_texto = pe_texto + "oito" CASE pe_terceiro = 9 pe_texto = pe_texto + "nove" ENDCASE ENDIF ENDIF ENDIF RETURN pe_texto