*------------------------------------------------------------------------- * Função : Retorna um valor por exnteso * Parâmetros : Número * Retorna : Caracter * Notas : Nenhuma *------------------------------------------------------------------------- procedure Extenso Parameters nVal ** c = contador ** x = algarismo corrente ** p = proximo algarismo ** t = posicao do algarismo (dezena,centena,milhar) ** y = variavel p/ buscar descricao do algarismo ** z = macro que cria "y" ** d = descricao do algarismo ** k = variavel p/ controlar o primeiro caso de "l" ** l = ligador (e) ** f = verificacao da dezena, centena, milhar, ... ** u = verificacao da posicao da palavra "cem e" ** m = moeda N="n000" n000="" n001="Um " n002="Dois " n003="Tres " n004="Quatro " n005="Cinco " n006="Seis " n007="Sete " n008="Oito " n009="Nove " n010="Dez " n011="Onze " n012="Doze " n013="Treze " n014="Quatorze " n015="Quinze " n016="Dezesseis " n017="Dezessete " n018="Dezoito " n019="Dezenove " n020="Vinte " n030="Trinta " n040="Quarenta " n050="Cinquenta " n060="Sessenta " n070="Setenta " n080="Oitenta " n090="Noventa " n100="Cem " n200="Duzentos " n300="Trezentos " n400="Quatrocentos " n500="Quinhentos " n600="Seiscentos " n700="Setecentos " n800="Oitocentos " n900="Novecentos " xvalor=Str(nVal,12,2) Store "0" To v0,c0 v1=Subs(xvalor,1,1) v2=Subs(xvalor,2,1) v3=Subs(xvalor,3,1) v4=Subs(xvalor,4,1) v5=Subs(xvalor,5,1) v6=Subs(xvalor,6,1) v7=Subs(xvalor,7,1) v8=Subs(xvalor,8,1) v9=Subs(xvalor,9,1) c1=Subs(xvalor,11,1) c2=Subs(xvalor,12,1) f1=Val(v1+v2+v3) f2=Val(v4+v5+v6) f3=Val(v7+v8+v9) f4=Val(c1+c2) Store "" To m1,m2,m4,m5,m7,m8,m9 m3=Iif(f1>=1,Iif(f1>1,"Milhoes ","Milhao "),"") m6=Iif(f2=0,"","Mil ") exten1="" Store 0 To c,T,k Do While c<9 c=c+1 x="v"+Str(c,1) p=Iif(c<9,"v"+Str(c+1,1),"v0") k=k+Val(&x) T=Iif(T=3,1,T+1) &x=Iif(&x=" ","0",&x) Y=Iif(T=2 .And. &x="1","n0"+&x+&p,Stuff(N,T+1,1,&x)) c=Iif(T=2 .And. &x="1",c+1,c) T=Iif(T=2 .And. &x="1",T+1,T) p=Iif(c<9,"v"+Str(c+1,1),"v0") d=Iif(Val(&x)#0,&Y,"") l=Iif(Val(&p)#0 .And. k#0,"e ","") m="m"+Str(c,1) exten1=exten1+d+&m+l u=At("Cem e",exten1) exten1=Iif(u#0,Subs(exten1,1,u)+"ento"+Subs(exten1,u+3,Len(exten1)),exten1) Enddo o1=Iif(nVal>=1,Iif(nVal>1,Iif(f2+f3#0,"Reais ","de Reais "),"Real " ),"") exten1=Iif(exten1=" ","",Iif(f4=0,exten1+o1,exten1+o1+"e ")) exten1=Iif(exten1="e ","",exten1) y1="n00"+c2 y2="n0"+c1+"0" y3="n0"+c1+c2 exten2=Iif(f4<10,&y1,Iif(f4<20,&y3,Iif(c2="0",&y2,&y2+"e "+&y1))) exten2=Iif(f4=0,"",Iif(f4=1,exten2+"Centavo",exten2+"Centavos")) Exten=exten1+exten2 Return ExtenNo Report eu faço o seguinte...