verifyChkDigitMod11()

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

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

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

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

示例

在以下示例中,myInput 是类型为 CHAR 的项并包含值 56621869;myLength 是类型为 SMALLINT 的项并包含值 8;myResult 是类型为 SMALLINT 的项:
  sysLib.verifyChkDigitMod11 (myInput, myLength, myResult);
使用了一种算法来派生模 11 校验数位,在所有情况下,都不考虑校验数位位置中的数字;但是,当算法完成时,将计算得到的值与校验数位位置中的数字作比较。就示例值对算法描述如下:
  1. 将输入数字的个位数位置中的数字乘以 2,在十位上乘以 3,在百位上乘以 4,依此类推,但将 myLength " 1 用作最大乘数;如果输入数字包含更多的位,则再次开始此序列并以 2 作为乘数:
      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. 将第一个步骤得到的乘积累加并将和除以 11:
      (12 + 24 + 4 + 10 + 36 + 42 + 10) / 11
      = 138 / 11
      = 12 余 6 
  3. 要得到校验数位,从 11 中减去余数以获得自检位:
      11 - 6 = 5

    如果余数是 0 或 1,则校验数位是 0。

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

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