Función CheckCardId(e)
arrVerifyCode = Dividir(1,0,x,9,8,7,6,5,4,3,2, ,)
Wi = Dividir(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2, ,)
Corrector = Dividir(1,9,8,7,6,5,4,3,2,1,1, ,)
Si Len(e) < 15 O Len(e) = 16 O Len(e) = 17 O Len(e) > 18 Entonces
CheckCardId= Hay 15 dígitos o 18 dígitos en el número de identificación.
CheckCardId = Falso
Función de salida
Terminar si
tenue A
Si Len(e) = 18 Entonces
Ai = Medio(e, 1, 17)
De lo contrario, si Len(e) = 15, entonces
ai=e
Ai = Izquierda(Ai, 6) y 19 y Medio(Ai, 7, 9)
Terminar si
Si no es numérico (Ai) entonces
CheckCardId= ¡La tarjeta de identificación debe contener números excepto el último dígito!
Función de salida
Terminar si
Dim strAño, strMes, strDía
strAño = CInt(Medio(Ai, 7, 4))
strMes = CInt(Medio(Ai, 11, 2))
strDay = CInt(Medio(Ai, 13, 2))
Día de nacimiento = Trim(strAño) + - + Trim(strMes) + - + Trim(strDía)
Si es fecha (cumpleaños) entonces
Si DateDiff(yyyy,Now,BirthDay) <-140 o cdate(BirthDay)> date() Entonces
CheckCardId= ¡Ingreso de tarjeta de identificación incorrecto!
Función de salida
Terminar si
Si strMonth > 12 o strDay > 31 entonces
CheckCardId= ¡Ingreso de tarjeta de identificación incorrecto!
Función de salida
Terminar si
Demás
CheckCardId= ¡Ingreso de tarjeta de identificación incorrecto!
Función de salida
Terminar si
Dim i,TotalmulAiWi
Para i = 0 a 16
TotalmulAiWi = TotalmulAiWi + CInt(Medio(Ai, i + 1, 1)) * Wi(i)
Próximo
Valor mod tenue
modValue = TotalmulAiWi Mod 11
Dim strVerifyCode
strVerifyCode = arrVerifyCode(modValue)
Ai = Ai y strVerifyCode
CheckCardId = Ai
Si Len(e) = 18 y e <> Ai entonces
CheckCardId= ¡Se ingresó un número de identificación incorrecto!
Función de salida
Terminar si
Función final
respuesta.escribir CheckCardId(528337194801020025) ' ' ' ' ' ' ' '