La Web del Programador: Comunidad de Programadores
 
    Pregunta:  30275 - DIGITO VERIFICADOR
Autor:  gustavo harreguy
Necesito el algoritmo para calcular el digito verificador llamado "modulo 11", que genera a partir de un numero un digito que se utiliza para validar el valor ingresado.

  Respuesta:  ricardos soldini
Function rutvali(rut)

Local di, l, j, suma , resto , rt
if type("rut") = "C"
rt = Alltrim(rut)
else
if type("rut") = "N"
rt = Alltrim(Str(rut,9))
else
messagebox("El rut pasado no es numeral ni caracter")
endif
endif
j = 2
l = LEN(rt)
suma = 0
DO WHILE L > 0
suma = suma + VAL(SUBSTR(rt,l,1)) * j
j= j+1
IF j > 7
j = 2
ENDIF
l = l-1
ENDDO
resto = (suma - (INT(suma/11)*11))
IF resto = 1
di = 'K'
ELSE
IF resto = 0
di = '0'
ELSE
di = STR((11-resto),1)
ENDIF
ENDIF
retu(di)

  Respuesta:  Jorge Fernández
Hola. Utiliza la función SYS(2007,<cadena>). Saludos!

  Respuesta:  NELSON ROMERO CORONEL
PROBA ESTE PROGRAMA, CREO QUE SE REFIERE A LO SOLICITAS:

***************
* ESTA FUNCION LO EMPLEO CON NUMEROS DE BOLETAS
* CON EXTENCION DE SEIS CREO QUE TE SERVIRA
* DIGITO( [VALOR] )
* El valor debe ser Caracter
* Retorna Un Digito De Tipo CARACTER
***************

function digito
parameters x
m = 0
for y=1 to len(x)
m = m + ( ( 9 - ( len(x) - y ) ) * val( substr(x,y,1) ) )
next
Return( right( str( m % 11 ,2 ) , 1) )