calculateChkDigitMod10()

sysLib.calculateChkDigitMod10() システム関数は、一連の数字で始まる NUM 変数または文字変数にモジュラス 10 チェック・ディジットを配置します。

構文

  sysLib.calculateChkDigitMod10(
    text CHAR | NUM inOut,
    checkLength INT in,
    result SMALLINT inOut)
text
一連の数字で始まる NUM 変数または CHAR 変数。 変数には、他の文字のすぐ右にチェック・ディジット用の追加の位置が組み込まれています。 先頭文字 (checkLength - 1 まで) は数字である必要があります。 数字以外の場合は、EGL によって RuntimeException がスローされます。
checkLength
text パラメーター内の検証する文字数が格納された INT 変数。チェック・ディジットに使用される桁位置も含みます。 NUM 変数が text パラメーターとして渡される場合は、先行ゼロの数です。したがって、ほとんどの場合、checkLength は NUM 変数の長さと等しくなります。
result
次の 2 つの値のいずれかを受け取る SMALLINT 変数です。
  • チェック・ディジットが作成された場合は 0
  • チェック・ディジットが作成されなかった場合は 1

program CheckDigit10 type BasicProgram
	acctNo CHAR(10) = "1734289";   
	len SMALLINT = 7;
	result SMALLINT = 0;   
  
	function main()
		sysLib.calculateChkDigitMod10 (acctNo, len, result);
		if (result != 0)
			sysLib.writeStdout("Check digit not created");
		end
		sysLib.writeStdout(acctNo);
    // acctNo is now 1734284
	end // main
		
end // program
モジュラス 10 チェック・ディジットはあるアルゴリズムを使用して派生され、すべての場合に、チェック・ディジットの位置に格納されている数値は考慮されません。 アルゴリズムについて、例の値を使用して説明します。
  1. 入力数の最小桁に 2 を乗算し、右から左の順で 1 桁おきに 2 を乗算します。
      8 x 2 = 16
      4 x 2 = 8
      7 x 2 = 14
  2. 2 を乗算していない入力数字 (1,3,2) に、生成された数字 (1,6,8,1,4) を加算します。
      1 + 6 + 8 + 1 + 4 + 1 + 3 + 2 = 26   
  3. チェック・ディジットを算出するには、0 で終わる次に大きい数値から合計を減算します。
      30 - 26 = 4

    減算の結果が 10 ならば、チェック・ディジットは 0 です。

この例では、関数により acctNo の元の文字は次の文字に変更されます。
  1734284

互換性に関する考慮事項

表 1. 互換性に関する考慮事項
プラットフォーム 問題
JavaScript 生成 関数 sysLib.calculateChkDigitMod10() はサポートされていません。

フィードバック