verifyChkDigitMod11()

システム関数 SysLib.verifyChkDigitMod11 は、一連の整数で始まる文字項目のモジュラス 11 チェック・ディジットを検証します。

  SysLib.verifyChkDigitMod11(
    text anyChar in,
    checkLength SMALLINT in,
    result SMALLINT inOut)
text
一連の整数で始まる文字項目。この項目には、 チェック・ディジット用に追加の 1 桁があり、位置は他の整数の右隣になります。
checkLength
text 項目から使用する文字数を含む項目。 チェック・ディジットに使用される桁も含みます。この項目は、4 桁の SMALLINT 型または BIN 型で、小数点以下の桁はありません。
result
次の 2 つの値のいずれかを受け取る項目です。
  • 計算されたチェック・ディジットが text の値と一致する場合は、0
  • 計算されたチェック・ディジットがその値と一致しない場合は、1

この項目は、4 桁の SMALLINT 型または BIN 型で、小数点以下の桁はありません。

SysLib.verifyChkDigitMod11 は、関数呼び出しの文で使用できます。 つまり、テキスト書式で項目バリデーターとして使用できます。

次の例では、myInput は CHAR 型の項目であり、値 56621869 を含みます。myLength は SMALLINT 型の項目であり、値 8 を含みます。myResult は SMALLINT 型の項目です。
  sysLib.verifyChkDigitMod11 (myInput, myLength, myResult);
モジュラス 11 チェック・ディジットはアルゴリズムを使用して派生され、すべての場合に、チェック・ディジットの位置に格納されている数値は考慮されません。ただし、アルゴリズムが完了した時点で、計算された値がチェック・ディジット位置の数値と比較されます。 アルゴリズムについて、例の値を使用して説明します。
  1. 入力数の最小桁に 2 を乗算し、10 の位に 3 を、100 の位に 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.