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 チェック・ディジットはあるアルゴリズムを使用して派生され、すべての場合に、チェック・ディジットの位置に格納されている数値は考慮されません。
アルゴリズムについて、例の値を使用して説明します。
- 入力数の最小桁に 2 を乗算し、右から左の順で 1 桁おきに 2 を乗算します。
8 x 2 = 16 4 x 2 = 8 7 x 2 = 14 - 2 を乗算していない入力数字 (1,3,2) に、生成された数字 (1,6,8,1,4) を加算します。
1 + 6 + 8 + 1 + 4 + 1 + 3 + 2 = 26 - チェック・ディジットを算出するには、0 で終わる次に大きい数値から合計を減算します。
30 - 26 = 4減算の結果が 10 ならば、チェック・ディジットは 0 です。
この例では、関数により acctNo の元の文字は次の文字に変更されます。
1734284
互換性に関する考慮事項
| プラットフォーム | 問題 |
|---|---|
| JavaScript 生成 | 関数 sysLib.calculateChkDigitMod10() はサポートされていません。 |