verifyChkDigitMod10()

系统函数 SysLib.verifyChkDigitMod10 验证以一系列整数开始的字符项中的模 10 校验数位。

  SysLib.verifyChkDigitMod10(
    text anyChar in,
    checkLength SMALLINT in,
    result SMALLINT inOut)
text
以一系列整数开头的字符项。该项包含用于存放校验数位的附加位置,该位置紧跟在其它整数的右边。
checkLength
一个项,它包含 text 项中要使用的字符数,包括用于校验数位的位置。此项有 4 位,具有 SMALLINT 类型或 BIN 类型,并且不带小数位。
result
一个项,它接收下列两个值的其中一个:
  • 0,如果计算得到的校验数位与 text 中的值相匹配的话
  • 1,如果计算得到的校验数位与该值不匹配的话

此项有 4 位,具有 SMALLINT 类型或 BIN 类型,并且不带小数位。

可以在函数调用语句中使用 SysLib.verifyChkDigitMod10;也可将其用作文本表单中的项验证器。

示例

在以下示例中,myInput 是类型为 CHAR 的项并包含值 1734284;myLength 是类型为 SMALLINT 的项并包含值 7;myResult 是类型为 SMALLINT 的项:
  SysLib.verifyChkDigitMod10 (myInput, myLength, myResult);

用来派生模 10 校验数位的算法,在所有情况下,不考虑校验数位位置上的数;但当算法完成后, 计算的值与校验数位位置上的数进行比较。

就示例值对算法描述如下:
  1. 将输入数字的个位数位置乘以 2 并将每个备用位置从右到左乘以 2:
      8 x 2 = 16
      4 x 2 = 8
      7 x 2 = 14
  2. 将乘积(16814)的各个位与未乘以 2 的输入数字位(132)相加:
      1 + 6 + 8 + 1 + 4 + 1 + 3 + 2 = 26   
  3. 要得到校验数位,用以 0 结尾的下一个最大数字减去和数:
      30 - 26 = 4

    如果减运算得到 10,则校验数位是 0。

在此示例中,计算得到的校验数位与校验数位位置中的值相匹配,并且 myResult 的值是 0。

使用条款 | 反馈
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.