前回に続き、書類の4Sにも欠かせないコードの作成についてお話します。
今回は前回お話ししたコード機能の一つであるチェック機能に不可欠なチェックデジット作成方法についてお話しします。
チェックデジットとは
チェックデジットとは、検査数字のことで、入力間違いを防ぐために加える数字のことをいいます。
数字でコードを表現する際に、桁数が多いと数字の打ち間違いが発生することが少なくありません。対策を取らないと間違ったままの状態で情報がマスタからリンクされるためにさらなるデータ間違いを引き起こす要因となります。
これを防ぐのがチェックデジットという数字です。主に利用されている例として下記のようなものがあります。
・モジュラス10 ウェイト2・1:クレジットカード番号、IMEI(スマホの識別番号)
・モジュラス10 ウェイト3・1:ISBN-13(国際標準図書番号)、 JAN/EANなどのバーコード
・モジュラス11:マイナンバー、住民票コード、運転免許証番号
つまりこれらの番号は、識別番号と検査数字の組み合わせで構成されています。実際の桁数より1つ少ない桁数での分類しかできないようになる代わりに入力ミスを起きない工夫がされているということです。
クレジット番号を例にとると、左から6桁がカード会社やブランド、7桁から最後の桁の1個前までが個人番号、最後の一桁がチェックデジットです。もう少し細かい話をすると最初の1桁か2桁が国際ブランド(VISA,MASTER,JCB等)で、残りがカード会社です。
桁数はVISA/MASTER/JCBは16桁ですが、American Expressは15桁、Diners Clubは14桁とちょっと違います。個人番号分はそれぞれ、9桁、8桁、7桁というふうになるということです。
モジュラスとウェイト
ちょっと脱線しましたが、例に書かれているモジュラスとウェイトのことを説明します。モジュラスとは係数のことですが、チェックデジットにおいては、割り算のもとの数字を言います。例えば、モジュラス11だと対象となる数字を11で割るということでこの補数がチェックデジットになります。補数とは係数から余りを除いたものです。10で余りが1なら補数は9となります。
ウェイトは重みづけですが、各桁の数字に掛け算する数字のことをいいます。例えば、ウェイト3・1の場合は、下の桁から3倍、1倍と交互に掛け算していき、各桁の数字を合計してからモジュラスで割り算し、余りがチェックデジットとなります。
なんで、モジュラスで割り算するだけでなく、ウェイトを掛けるかというと単にモジュラスで割り算すると桁の入替に対応できないからです。(123でも321でも合計は6なので、余りは同じ)
ウェイトをかけることで、特定の桁の間違いや順序間違いを見つけることができます。万能ではないようで、特定の並びはチェックできない場合があるようですが、単純にモジュラスで割り算するよりミスのチェックはできそうです。
計算例を実際に示すと491009971074というコードをモジュラス10ウェイト1、3で計算するとします。
奇数桁(4+1+0+9+1+7)+偶数桁(9+0+9+7+0+4)×3=109
これを10で割った余りが9なので、補数は10-9=1
この1がチェックデジットとなり、最終的に4910099710741がこの商品のコードとなります。
一見、複雑そうな計算に見えますが、四則演算と余りの計算で、できるので、エクセル等で式を入れておけばすぐに計算できると思います。もし、お試ししたいのであれば、手元にある書籍や商品についているJANコードで計算するとよりイメージしやすいと思います。計算方法は上記のモジュラス10、ウェイト1、3です。
自社で検討するコードで桁数が多い数字の場合はチェックデジットを入れることをお勧めします。