パソコン担当の女の子が、腰を痛めて、入院した。そして、その子の担当の仕事で、商品のバーコードで、日本で設定すべきバーコードを、設定せねばならなくなった。入院期間中、仕事を担当している子から聞かれた。「ねえ、バーコードの最後の数字って、どうやって決まるの?」「知らない」「モジュラス10って聞いたけど」「じゃあ、AS/400のマニュアルに出ているよ」「マニュアルにがてなんだよなー」「あ、そう」「前はどうしてたの?」「なんか機械みたいなので、実際にバーコード出してたけど、それ見つからないのよ」
で、ほっとけなくなり、昼休みに調べてみた。
AS/400のモジュラス10の解説
AS/400 データ記述仕様書 バージョン 3 3.3.21.1
妥当性検査
ベース・ナンバーの各桁について、モジュラス 10
加重係数およびモジュラス 11加重係数があります。桁は、(チェック・ディジットを除き)右端の桁から数えます。
モジュラス 10 の加重係数は、1、3、5、. . .、31
桁目については 2 で、2、4、 6、. . .、30 桁目については 1 です。
モジュラス 10
の自己チェック・ディジットは、次のようにして算出します。
1. ベース・ナンバーの 1
の位(右端の桁)の数字、およびそこから 1
桁おきの数字を取り出して、各数字に 2 を掛けます。
2. ステップ 1 の積の各桁の数字と、ステップ 1
で乗算に使用しなかったベース・ナンバーの数字とを加算します。
3. ステップ 2
の和を、その和より大きくゼロで終わる最小の数から引きます。
この差が自己チェック・ディジットになります。
例:
ベース・ナンバー |
6 |
1 |
2 |
4 |
8 |
|
1 の位およびそこから 1 桁おきの数字 |
6 |
|
2 |
|
8 |
|
加重係数 2 を掛ける |
x 2 |
|
x 2 |
|
x 2 |
|
積 |
12 |
|
4 |
|
16 |
|
乗算に使用しなかった数字 |
|
1 |
|
4 |
|
|
積の各桁の数字
および乗算に使用しなかった数字を加算する |
1 + 2 |
+1 |
+ 4 |
+ 4 |
+ 1 + 6 |
= 19 |
1 の位が 0 になるよう切り上げ |
20 |
減算 |
-19 |
自己チェック・ディジット |
1 |
JAN13の最終桁の計算
ところが、これでは、JAN13の最終桁にはならなかった。インターネットで、検索したら、最終桁の計算式が出てきた。そして、上記の計算方法とは違うことが分かった。同じくモジュラス10と言っているが、違った。
とても簡単です。
各桁に順番に、1と3を交互に掛け合わせ、その合計を求める(C14)。
その合計を10で割った余りを、10から引く(C15)。
もしこれが、10以上ならば、0とする(C16)。
これで求まった。なにもRPGで作成する事もないので、エクセルで作りました。A2からA13はA1を、分解しただけです。
このとき参照した、ウエッブは、
ずぱ001
www.barcode.co.jp
などでした。
1998/9/26 |