目次
まず結論から言うと、CODE39などのチェックデジットが任意(オプション)であるのに対し、CODE128のチェックデジットは仕様上「必須」の要素です。
CODE128は、高密度で多くの情報を表現できる反面、読み取りエラーが発生すると大きな問題につながる可能性があるため、作成されるすべてのバーコードに、データの正しさを検証するためのチェックデジットが必ず含まれています。
【重要なポイント】 チェックデジットは必須ですが、利用者が手計算したり、データに追加したりする必要はほとんどありません。後述しますが、通常はバーコードを作成するソフトウェアやツールが、すべての計算を自動的に行ってくれます。
CODE128のチェックデジットは、「モジュラス103(Modulo 103)」という、少し複雑な計算方式で算出されます。
これは、単純に各文字の値を合計するのではなく、文字の「位置」に応じて「重み」を付けて計算するのが特徴です。以下にその仕組みの概要をステップで解説します。
(1文字目の値 × 1) + (2文字目の値 × 2) + (3文字目の値 × 3) ...
付加される数値に対応する文字は下記をご参照ください。
少し複雑なので、簡単なデータ「P1」を例に計算の流れを見てみましょう。(※コードセットBを使用)
48 × 1 = 48
2文字目「1」(値=17)→ 17 × 2 = 34
この結果、バーコード内部のデータ構成は「スタートB」「P」「1」「s(チェックデジット)」「ストップ」となります。
[画像: CODE128のバーコード(P1)]
次にエクセルやスプレッドシートでCODE128のチェックデジットを計算する方法をご紹介します。
以下の手順で計算することができます。
以下の関数をC2に入力してください。
=MOD(IFS(B2="A",103,B2="B",104,B2="C",105)+IFS(B2="A",SUM((IF(CODE(MID(A2,SEQUENCE(LEN(A2)),1))<=31,CODE(MID(A2,SEQUENCE(LEN(A2)),1))+64,CODE(MID(A2,SEQUENCE(LEN(A2)),1))-32))*SEQUENCE(LEN(A2))),B2="B",SUM((CODE(MID(A2,SEQUENCE(LEN(A2)),1))-32)*SEQUENCE(LEN(A2))),B2="C",SUM(VALUE(MID(A2,(SEQUENCE(LEN(A2)/2)*2)-1,2))*SEQUENCE(LEN(A2)/2))),103)
以下の関数をC2に入力してください。
=ARRAYFORMULA(MOD(IFS(B2="A",103,B2="B",104,B2="C",105)+IFS(B2="A",SUM((IF(CODE(MID(A2,SEQUENCE(LEN(A2)),1))<=31,CODE(MID(A2,SEQUENCE(LEN(A2)),1))+64,CODE(MID(A2,SEQUENCE(LEN(A2)),1))-32))*SEQUENCE(LEN(A2))),B2="B",SUM((CODE(MID(A2,SEQUENCE(LEN(A2)),1))-32)*SEQUENCE(LEN(A2))),B2="C",SUM(VALUE(MID(A2,(SEQUENCE(LEN(A2)/2)*2)-1,2))*SEQUENCE(LEN(A2)/2))),103))
出力された数値を前述の対応表から文字に変換すれば完了です。
ここまで計算方法を解説しましたが、実務で最も重要なことは、「チェックデジットを自分で計算したり、データに付け加えたりしない」ということです。
例えば、「P1s」というデータでバーコードを作成しようとすると、ソフトウェアは「P」「1」「s」という3文字のデータに対して、さらに別のチェックデジットを計算して付加してしまいます。その結果、バーコードは完全に無効なものになってしまいます。
バーコード作成ソフトやツールを利用する際は、チェックデジットを含まない純粋なデータ(例:「P1」)を入力してください。スタートコード、コードセットの切り替え、チェックデジット、ストップコードの付加は、すべてソフトウェアが規格に沿って自動的に行ってくれます。
例えばこちらの無料オンラインバーコード作成ツールでもチェックデジットの入力は不要です。
CODE128のチェックデジットについて、重要なポイントを以下にまとめます。
この仕組みと注意点を理解することで、より安心して、正確なCODE128バーコードを作成・活用することができます。
>> 【基本記事】CODE128とは?規格や特徴、3つのコードセットを解説
CODE128を作成する際にはこちらの無料オンラインツールがおすすめです。
[CODE128が作成できる無料オンラインツールの画面]
QR WORLD(QRワールド) 編集部