Funcion calcularDigitoVerificadorCURP(curp)
// se obtienen los primeros 17 caracteres del string recibido
string segmentoRaiz := cortar_string($curp,17)
// se el correspondiente valor en utf8 para cada letra del abecedario
arreglo chrCaracter := decodificar_utf8("0123456789ABCDEFGHIJKLMNÑOPQRSTUVWXYZ")
array intFactor := []
float lngSuma := 0.0
float lngDigito := 0.0
// se recorren los strings de segmentoRaiz y chrCaracter
Para i = 0 Hasta i = 16 Hacer
string letraRaiz := cortar_string(segmentoRaiz, i, 1)
Para j = 0 Hasta j = 36 Hacer
string letraChr := cortar_string(chrCaracter, j, 1)
// cuando la letra de ambos strings coincide, se guarda la posición en la que coincidieron
Si letraRaiz = letraChr Entonces
intFactor[i] := j
Fin Si
Fin Para
Fin Para
Para k = 0 Hasta k = 16 Hacer
// se realiza calculo para sumar los valores de las posiciones donde coincidieron las letras
lngSuma := lngSuma + (intFactor[k] * (18 - k))
Fin Para
// se obtiene el modulo 10 de lngSuma y se le resta a 10
lngDigito := 10 - (lngSuma modulo 10)
Si lngDigito = 10 Entonces
lngDigito := 0
Fin Si
regresa lngDigito
Fin Funcion |