Jan

2015-04-09, jan

JANコードからメーカーを割り出す

明快に説明してくれている資料がどうしても見つからないのですが、、EANコード体系のうち、45と49で始まるのが日本の国コードを持った番号で俗にいう(正式名称?)JANコードとなります。短縮(8桁)コードの場合、その下の4桁、通常(13桁)の場合、5桁及び7桁が事業者毎に割り当てられる領域(メーカーコード)です。

JANコードからメーカーコードを求める関数の実装例です。13桁の場合、国コードとメーカーコードの合計長が7か9か判断できないため、それぞれ指定して動作するようになっています(引数:n)。実際の運用では適宜データベースに問い合わせて、存在判定をした上で決定するような実装になるでしょう。

#! /usr/local/bin/ruby

def to_makercode(code,n=9)
  return nil unless code.start_with?("45") || code.start_with?("49")
  if code.length == 8
    code[0,6]+"XC"
  elsif code.length == 13
    if n == 9
      code[0,9]+"XXXC"
    elsif n == 7
      code[0,7]+"XXXXXC"
    else
      raise "Number must be 7 or 9: #{n}"
    end
  else
    return nil
  end
end

以下は使用例です。

puts to_makercode("45345678") #=> 453456XC
puts to_makercode("4534567890123",7) #=> 4534567XXXXXC
puts to_makercode("4534567890123",9) #=> 453456789XXXC

参考URL

この記事は役に立ちましたか?