Função 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, ,)
Verificador = Dividir (1,9,8,7,6,5,4,3,2,1,1, ,)
Se Len(e) <15 Ou Len(e) = 16 Ou Len(e) = 17 Ou Len(e) > 18 Então
CheckCardId= Existem 15 dígitos ou 18 dígitos no número de identificação.
CheckCardId = Falso
Função de saída
Terminar se
Dim A
Se Len(e) = 18 Então
Ai = Médio (e, 1, 17)
ElseIf Len(e) = 15 Então
Ai = e
Ai = Esquerda (Ai, 6) e 19 e Meio (Ai, 7, 9)
Terminar se
Se não for numérico (Ai), então
CheckCardId= O cartão de identificação deve conter números, exceto o último dígito!
Função de saída
Terminar se
Dim strYear, strMonth, strDay
strAno = CInt(Médio(Ai, 7, 4))
strMês = CInt(Médio(Ai, 11, 2))
strDia = CInt(Médio(Ai, 13, 2))
DiaNascimento = Trim(strAno) + - + Trim(strMês) + - + Trim(strDia)
Se forData(Aniversário) então
Se DateDiff(yyyy,Now,BirthDay) <-140 ou cdate(BirthDay)> date() Então
CheckCardId= Entrada incorreta do cartão de identificação!
Função de saída
Terminar se
Se strMonth > 12 Ou strDay > 31 Então
CheckCardId= Entrada incorreta do cartão de identificação!
Função de saída
Terminar se
Outro
CheckCardId= Entrada incorreta do cartão de identificação!
Função de saída
Terminar se
Dim i,TotalmulAiWi
Para i = 0 a 16
TotalmulAiWi = TotalmulAiWi + CInt(Mid(Ai, i + 1, 1)) * Wi(i)
Próximo
Dim modValue
modValue = TotalmulAiWi Mod 11
Dim strVerifyCode
strVerifyCode = arrVerifyCode(modValue)
Ai = Ai & strVerifyCode
CheckCardId = Ai
Se Len(e) = 18 E e <> Ai Então
CheckCardId= Número de identificação incorreto inserido!
Função de saída
Terminar se
Função final
resposta.write CheckCardId (528337194801020025) ' ' ' ' ' ' '