Arturo PC.
*
** Devuelve dígito verificador de contenedor
FUNCTION xxDigVerContainer
LPARAMETERS lcCont
LOCAL lnDigito, lnSuma1, lnDigVer
IF LEN(lcCont)#10 && no debe haber espacio entre las letras y los números
RETURN -1 && si devuelve -1 es porque falló
ENDIF
*
lnSuma1 = 0
FOR i=1 TO 10
IF i>4
lnDigito = VAL(SUBSTR(lcCont,i,1))
ELSE
lnDigito = ASC(SUBSTR(lcCont,i,1)) - 55
lnDigito = lnDigito + INT((lnDigito-1)/10)
ENDIF
lnSuma1 = lnSuma1 + lnDigito * 2^(i-1)
ENDFOR
*
lnDigVer = lnSuma1 - INT(lnSuma1/11)*11
RETURN lnDigVer && ojo, lo devuelve como número, no como carácter
ENDFUN