20 桁のバーコードのチェック ディジットを計算する必要があります。いくつかの疑似コードを含む仕様がありますが、見栄えが悪いです。特に除算と商のある部分。精度の低下や丸めなどでこれが失敗する可能性は十分にあります。これが認識されたチェックサムであるかどうかを知りたいので、理想的には c# または Java でテスト済みの実装を使用できます。
情報とコード:
オリグノ; タイプ = 文字列。説明: 最後の位置のチェック ディジットを除く任意の長さのバーコード文字列。例: 21 文字の Toll Connect バーコード文字列の最後の (21 番目) の位置にチェック ディジットがあります。したがって、ORIGNO は 21 文字の Toll Connect バーコード文字列の最初の 20 文字になります。
PRODUCTNO = 0; type=integer
LENGTHNO = Length (ORIGNO)
MULTIPLIER=3
For LP = LENGTHNO to 1 step -1
CHARTOCHECK=MID (ORIGNO,LP,1)
IF isnumeric (CHARTOCHECK) then
DIGIT = asc (CHARTOCHECK) - asc ('0')
else
DIGIT = rem ((asc (CHARTOCHECK)-asc ('A')) / 10)
endif
PRODUCTNO = PRODUCTNO + DIGIT*MULTIPLIER
If MULTIPLIER=3 then MULTIPLIER=1 else MULTIPLIER=3 endif
end for
CHECK DIGITSTR=str (PRODUCTNO)
CHECK DIGIT=10-int (asc (right (CHECK DIGITSTR,1))-asc ('0'))
注: このアルゴリズムでは、チェック ディジットが 10 として計算される場合があります。この場合、バーコードで使用するチェック ディジットとして、右端の数字 0 を使用します。