calculateChkDigitMod11()

La función de sistema SysLib.calculateChkDigitMod11 coloca un dígito de comprobación Modulus-11 en un elemento de carácter que empieza por una serie de enteros.

  SysLib.calculateChkDigitMod11(
    texto anyChar inOut,
    longitudComprobación SMALLINT in,
    resultado SMALLINT inOut)
texto
Un elemento de carácter que empieza por una serie de enteros. El elemento debe incluir una posición adicional para el dígito de comprobación, situado inmediatamente a la derecha de los demás enteros.
longitudComprobación
Un elemento que contiene el número de caracteres que desea utilizar del elemento texto, incluida la posición utilizada para el dígito de comprobación. Este elemento tiene 4 dígitos y es de tipo SMALLINT o BIN, sin posiciones decimales.
resultado
Un elemento que recibe un de dos valores:
  • 0, si se ha creado el dígito de comprobación
  • 1, si no se ha creado el dígito de comprobación

Este elemento tiene 4 dígitos y es de tipo SMALLINT o BIN, sin posiciones decimales.

Puede utilizar SysLib.calculateChkDigitMod11 en una sentencia de invocación de función.

Ejemplo

En el ejemplo siguiente, myInput es un elemento de tipo CHAR y contiene el valor 56621869; myLength es un elemento de tipo SMALLINT y contiene el valor 8; y myResult es un elemento de tipo SMALLINT:
  SysLib.verifyChkDigitMod (myInput, myLength, myResult);
Se utiliza un algoritmo para derivar el dígito de comprobación Modulus-11 y en ningún caso se tiene en cuenta el número de la posición del dígito de comprobación. El algoritmo se describe en relación a los valores de ejemplo:
  1. Multiplique el dígito de la posición de unidades del número de entrada por 2, el de la posición de decenas por 3, el de la posición de centenas por 4, y así sucesivamente, pero deje que myLength " 1 sea el número mayor utilizado como multiplicador; y, si el número de entrada contiene más dígitos, inicie de nuevo la secuencia utilizando 2 como multiplicador:
      6 x 2 = 12
      8 x 3 = 24
      1 x 4 = 4
      2 x 5 = 10
      6 x 6 = 36
      6 x 7 = 42
      5 x 2 = 10  
  2. Sume los productos del primer paso y divida la suma por 11:
      (12 + 24 + 4 + 10 + 36 + 42 + 10) / 11
      = 138 / 11 
      = 12 resto 6 
  3. Para obtener el dígito de comprobación, sustraiga el resto de 11 para obtener el dígito de autocomprobación:
      11 - 6 = 5

    Si el resto es 0 o 1, el dígito de comprobación será 0.

En este ejemplo, los caracteres originales de myInput pasan a ser los siguientes:
  56621865

Consulta relacionada
Biblioteca SysLib de EGL

Condiciones de uso | Comentarios
(C) Copyright IBM Corporation 2000, 2005. Reservados todos los derechos.