Validação de CMC7

Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.

Moderador: Moderadores

Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Validação de CMC7

Mensagem por Maligno »

Código: Selecionar todos

//****************************************************************
static function Modulo10(cTst)
local nTot := 0
local nAux
local i
if Len(ctST)%2 != 0
   cTst := "0"+cTst
end
for i := 1 to Len(cTst)
    nAux := Val(SubStr(cTst,i,1)) * if(i%2==0,2,1)
    if nAux >= 10
       nAux := Val(Left(Str(nAux,2),1)) + Val(Right(Str(nAux,2),1))
    end
    nTot += nAux
next
nTot := 10-(nTot%10)
return if(nTot=10, "0", Str(nTot,1))


//****************************************************************
function ValidCMC7(cCMC7)
return Modulo10(SubStr(cCMC7, 1, 7)) == SubStr(cCMC7,19,1) .and. ;
       Modulo10(SubStr(cCMC7, 9,10)) == SubStr(cCMC7, 8,1) .and. ;
       Modulo10(SubStr(cCMC7,20,10)) == SubStr(cCMC7,30,1)



/*
Dígitos   Descrição
-------   ---------------------------------------
1/3       Número do banco
4/7       Número da agência
8         Módulo 10 dos dígitos 9 a 18
9/11      Código de compensação
12/17     Número do cheque
18        Número fixo (5)
19        Módulo 10 dos dígitos 1 a 7
20/29     Número da conta corrente (incluindo DV)
30        Módulo 10 dos dígitos 20 a 29
*/
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Responder