Página 1 de 1

Validação de CMC7

Enviado: 10 Ago 2007 01:33
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
*/