Bom dia pessoal, estou precisando criar o calculo do modulo 11 no progress para fazer o calculo do digitor verificador de um boleto no banco do brasil, estou com duvidas de como fazer este codigo, alguem poderia me ajudar ? vejam um exemplo de calculo. Precisava de isto para hoje a tarde e nao sei o que fazer se alguem poder me ajudar agradeço. Forte abraço MÉTODOLOGIA a) O módulo 11 é utilizado para montagem dos campos nosso-número, código do cedente e prefixo da agência, que serão impressos nos respectivos campos do bloqueto de cobrança; b) Cada algarismo que compõe o nosso-número é multiplicado pelo respectivo multiplicador (peso). I - os multiplicadores (pesos) variam de 9 a 2, da direita para a esquerda; II - o primeiro dígito da direita para a esquerda deverá ser multiplicado por 9, o segundo por 8 e assim sucessivamente; c) Os resultados das multiplicacoes são somados; d) O total da soma é dívido por onze; I - se o resto for menor que 10 (dez) o DV será igual ao resto; II - se o resto for igual a 10 /dez/ o DV sera igual a X; III - se o resto for igual a 0 /zero/ o DV sera igual a 0; IV - no exemplo acima o digito verificador sera igual a 3; e) Exemplo: Nosso-Número: 05009401448-? 0 5 0 0 9 4 0 1 4 4 8 X X X X X X X X X X X 7 8 9 2 3 4 5 6 7 8 9 . . . . . . . . . . ........72 . . . . . . . . . . .............32 . . . . . . . . ..................28 . . . . . . . .......................06 . . . . . . ............................00 . . . . . .................................16 . . . . ......................................27 . . . ...........................................00 . . ................................................00 . .....................................................40 ..........................................................00 Total. ..................................................221 a) Soma do resultado das multiplicações: 72 + 22 + .... + 40 + 0 = 221 b) Divisão do resultado da soma das multiplicações por 11: 221/11 c) Resto da divisão igual a 1: d) Dígito Verificador = 1 (um) Nosso-Número: 05009401448-1
Boa Tarde Amigo! Se a logica segue conforme você mencionou acima e você já tem o "nosso número" a lógica abaixo poderá lhe ajudar : Código: DEFINE VARIABLE iCont AS INTEGER NO-UNDO. DEFINE VARIABLE nnumero AS CHARACTER NO-UNDO. DEFINE VARIABLE iBase AS INTEGER NO-UNDO. DEFINE VARIABLE nConvertido AS INTEGER NO-UNDO. DEFINE VARIABLE cDIgVer AS CHARACTER NO-UNDO. DEFINE VARIABLE iDigVer AS INTEGER NO-UNDO. ASSIGN nnumero = "05009401448". ASSIGN nConvertido = 0 iBase = 9. DO iCont = LENGTH(nnumero) TO 1 BY -1: ASSIGN nConvertido = nConvertido + (iBase * INT(SUBSTRING(nnumero, iCont, 1))) iBase = iBase - 1. IF iBase = 1 THEN ASSIGN iBase = 9. END. ASSIGN iDigVer = nConvertido MOD 11. IF iDigVer = 10 THEN ASSIGN cDigVer = "X". ELSE IF iDigVer = 0 THEN ASSIGN cDigVer = "0". ELSE ASSIGN cDigVer = STRING(iDigVer). MESSAGE nConvertido SKIP "Digito Verificador " cDigVer VIEW-AS ALERT-BOX INFO BUTTONS OK. Creio que se pensar um pouco mais, é possível melhorar a lógica, mas como você precisa pra hoje, pode ajudar