? CheckDni("011637057") */-- Verificador y Generador de DNI peruano: Antiguos y Nuevos Function CheckDNI LParameters tcDni, tlGenera, tlNumero Local luResult, lnTotal, lnIndex, lnFactor, lnDigito, lnPosicion, lnNumero, lcNumeros, lcLetra, lcLetras tlGenera = Iif(Vartype(tlGenera) == "L", tlGenera, .F.) tlNumero = Iif(Vartype(tlNumero) == "L", tlNumero, .F.) If !tlGenera And Len(tcDni) != 9 Return .T. EndIf lcLetras = "KABCIEFGHI" && Antiguo DNI lcNumeros = "6789011234" && Nuevo DNI lnTotal = 0 For lnIndex = 1 To 8 lnFactor = Int(Val(Substr("32765432", lnIndex, 1))) lnDigito = Int(Val(Substr(tcDni, lnIndex, 1))) lnTotal = lnTotal + (lnFactor * lnDigito) EndFor lnPosicion = 11 - Mod(lnTotal, 11) If lnPosicion = 11 lnPosicion = 0 Else If lnPosicion = 10 lnPosicion = 1 EndIf EndIf lnNumero = Int(Val(Substr(lcNumeros, lnPosicion + 1, 1))) lcLetra = Substr(lcLetras, lnPosicion + 1, 1) If tlGenera If tlNumero luResult = lnNumero Else luResult = lcLetra EndIf Else luCheck = Right(tcDni, 1) If IsAlpha(luCheck) luResult = luCheck == lcLetra Else luCheck = Int(Val(luCheck)) luResult = luCheck == lnNumero EndIf EndIf Return (luResult)Saludos.
Roberto Reategui Kanashiro