目次
>>【まとめ記事】CODE39とは?特徴や規格をわかりやすく解説
まず最も重要な点として、JANコードやITFコードとは異なり、CODE39のチェックデジットは必須ではなく、任意(オプション)です。
チェックデジットは、バーコードに汚れやかすれがある場合に起こりうる「誤読」を防ぎ、データの信頼性を格段に向上させるための仕組みです。そのため、以下のような高い精度が求められるシーンでの利用が強く推奨されています。
これらの現場では、万が一の誤読が大きな問題につながる可能性があるため、チェックデジットを付加して信頼性を高めています。
CODE39のチェックデジットは、「モジュラス43(Modulo 43)」という計算方式で算出されます。 計算プロセスは以下の4つのステップで行われます。
[CODE39のチェックデジット例]
ステップ1で必要になる、各文字と数値の対応表は以下の通りです。
ここではデータが「123ABC」の場合を例に計算します。
1 + 2 + 3 + 10 + 11 + 12 = 39
39 ÷ 43 = 0 余り 39
上記のようにチェックデジットを計算する方法はPCなどでは簡単ですが人間の手で計算するには少し手間がかかり、間違ってしまう可能性があります。
そこでおすすめなのがオンラインバーコードジェネレーターのQR TOOLです。
チェックデジット計算ツールの利用手順は以下の通りです。
バーコードジェネレーターの利用手順は以下の通りです。
[CODE39作成ページ]
[CODE39の各種オプション設定]
[データを入力しCODE39画像をダウンロード]
続いてエクセルやスプレッドシートでCODE39のチェックデジットを計算する方法を解説します。
A2
セルにバーコードのデータを入力します。(例: 123ABC)B2
セルに下記の関数を貼り付けるとチェックデジットの計算結果が表示されます。=IFERROR(LET(char_set,"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%",data,A2,sum_vals,SUM(FIND(MID(data,SEQUENCE(LEN(data)),1),char_set)-1),check_val,MOD(sum_vals,43),MID(char_set,check_val+1,1)),"無効な文字")
上記の関数はExcelのみで有効です。スプレッドシートをご利用の方は下記の関数を使用してください。
=IFERROR(ArrayFormula(LET(char_set,"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%",data,A2,chars,MID(data,SEQUENCE(LEN(data)),1),sum_vals,SUM(FIND(chars,char_set)-1),check_val,MOD(sum_vals,43),MID(char_set,check_val+1,1))),"無効な文字")
チェックデジットを利用する際に、最も注意すべき点が一つあります。
それは、バーコードを生成する側(ソフトウェアやツール)と、読み取る側(バーコードリーダー)の設定を必ず合わせることです。
チェックデジットは任意付加のため、リーダー側で「チェックデジット有り/無し」の設定ができます。この設定が、作成したバーコードと食い違っていると、以下のような問題が発生します。
システムを導入する際は、この設定を統一するよう十分にご注意ください。
CODE39のチェックデジットについて、重要なポイントを以下にまとめます。
チェックデジットを正しく理解し活用することで、CODE39をより安全で信頼性の高いものにできます。業務の正確性が求められる場面では、ぜひ導入を検討してみてください。
CODE39のキャラクタ構成やスタート/ストップキャラクタといった、より基本的な仕様については、以下の記事で詳しく解説しています。
QR WORLD(QRワールド) 編集部