quarta-feira, 17 de junho de 2009

Digito verificador cpf

Você deve multiplicar individualmente todos os algarismos de um número requerido por uma seqüência numérica (9,8,7,..,2,9,8...) partindo do fim e repetindo a sequência caso seja necessário. Soma os resultados da multiplicação e divida tudo por onze. O resto dessa divisão deverá ser o DV, mas se esse resto for maior do que nove você deve subtrair esse resultado de onze. Existem várias tabelas utilizadas hoje no mercado, a mais usual é a 2..9 e depois a 2..7, sem contar outros tipos de módulos.

Segue um exemplo simples com cinco algarimos:

Matrícula: 00113-9

=> (0*5) + (0*6) + (1*7) + (1*8) + (3*9) = 0 + 0 + 7 + 8 + 27 = 42

=> 42 mod 11 => DV é 9}

//Calcula o digito verificador cpf
function DV11(Matr : string): string;
{Calculo pelo módulo 11 - tabela 2..9}
var
X, Cont, Soma, DV, NMatr : integer;
begin
Cont := 5; Soma := 0;
For X := 1 to 5 do
begin
NMatr := StrToInt(Copy(Matr,Cont-4,1));
Soma := Soma + (NMatr * Cont);
Inc(Cont);
end;
DV := Soma mod 11;
if DV > 9 then DV := 11 - DV;
Result := IntToStr(DV);
end;

Nenhum comentário:

Postar um comentário