calculateChkDigitMod11()

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

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

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

SysLib.calculateChkDigitMod11 は、関数呼び出し文で使用できます。

次の例では、myInput は CHAR 型の項目であり、値 56621869 を含みます。myLength は SMALLINT 型の項目であり、値 8 を含みます。myResult は SMALLINT 型の項目です。
  SysLib.verifyChkDigitMod (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 です。

この例では、myInput の元の文字は次のようになります。
  56621865

関連する概念
EGL 関数の構文図

関連する参照項目
EGL ライブラリー SysLib

ご利用条件 | フィードバック
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.
(C) Copyright IBM Japan 2005.