PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV Mobile 2024 → Valida CPF
Valida CPF
Débuté par adrianoboller, 18 nov. 2014 14:16 - Aucune réponse
Membre enregistré
3 651 messages
Popularité : +175 (223 votes)
Posté le 18 novembre 2014 - 14:16
Procedure ValidaCPF(cpf)

//Limpa Campo
cpf = LimpaCampo(cpf)

// Caso coloque todos os numeros iguais
SWITCH cpf
CASE "00000000000"
cpf = ""
RESULT(False)
CASE "11111111111"
cpf = ""
RESULT(False)
CASE "2222222222"
cpf = ""
RESULT(False)
CASE "33333333333"
cpf = ""
RESULT(False)
CASE "44444444444"
cpf = ""
RESULT(False)
CASE "55555555555"
cpf = ""
RESULT(False)
CASE "66666666666"
cpf = ""
RESULT(False)
CASE "77777777777"
cpf = ""
RESULT(False)
CASE "88888888888"
cpf = ""
RESULT(False)
CASE "99999999999"
cpf = ""
RESULT(False)
END

// calcula o primeiro digito
Soma is int
Resto is int
Digito_1, Digito_2 is int

Soma = (Val(Middle(cpf,1,1)) * 10) + ...
(Val(Middle(cpf,2,1)) * 09) + ...
(Val(Middle(cpf,3,1)) * 08) + ...
(Val(Middle(cpf,4,1)) * 07) + ...
(Val(Middle(cpf,5,1)) * 06) + ...
(Val(Middle(cpf,6,1)) * 05) + ...
(Val(Middle(cpf,7,1)) * 04) + ...
(Val(Middle(cpf,8,1)) * 03) + ...
(Val(Middle(cpf,9,1)) * 02)

Resto = Modulo(Soma, 11)

IF Resto = 0 OR Resto = 1 THEN
Digito_1 = 0
ELSE
Digito_1 = 11 - Resto
END

// calculoa o segundo dígito
Soma = (Val(Middle(cpf,01,1)) * 11) + ...
(Val(Middle(cpf,02,1)) * 10) + ...
(Val(Middle(cpf,03,1)) * 09) + ...
(Val(Middle(cpf,04,1)) * 08) + ...
(Val(Middle(cpf,05,1)) * 07) + ...
(Val(Middle(cpf,06,1)) * 06) + ...
(Val(Middle(cpf,07,1)) * 05) + ...
(Val(Middle(cpf,08,1)) * 04) + ...
(Val(Middle(cpf,09,1)) * 03) + ...
(Val(Middle(cpf,10,1)) * 02)

Resto = Modulo(Soma, 11)

IF Resto = 0 OR Resto = 1 THEN
Digito_2 = 0
ELSE
Digito_2 = 11 - Resto
END

Resultado is string

Resultado = NumToString(Digito_1) + NumToString(Digito_2)

//info(Val(Middle(cpf,10,2)) , Resultado)
//999.999.999-99

IF Val(Middle(cpf,10,2)) = Resultado THEN
RESULT(True)
ELSE
RESULT(False)
END