calculateChkDigitMod10()

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

  SysLib.calculateChkDigitMod10(
    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.calculateChkDigitMod10 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 1734289; myLength es un elemento de tipo SMALLINT y contiene el valor 7; y myResult es un elemento de tipo SMALLINT:
  SysLib.verifyChkDigitMod10 (myInput, myLength, myResult);
Se utiliza un algoritmo para derivar el dígito de comprobación Modulus-10 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 la posición de unidades del número de entrada por 2 y multiplique todas las posiciones alternativas, de derecha a izquierda, por 2:
      8 x 2 = 16
      4 x 2 = 8
      7 x 2 = 14
  2. Añada los dígitos de los productos (16814) a los dígitos del número de entrada (132) que no se hayan multiplicado por 2:
      1 + 6 + 8 + 1 + 4 + 1 + 3 + 2 = 26   
  3. Para obtener el dígito de comprobación, sustraiga la suma del siguiente número más alto que termine en 0:
      30 - 26 = 4

    Si la sustracción produce 10, el dígito de comprobación será 0.

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

Consulta relacionada
Biblioteca SysLib de EGL

Comentarios
(C) Copyright IBM Corporation 2000, 2005. Reservados todos los derechos.