JANコード作成プログラム[.net]

JANコード

JANコードとは、ご存じのとおり、日本で最も普及している、

商品識別コードおよびバーコードの規格のひとつです。

商品のパッケージや梱包された箱に印刷されたり、シールが貼付けられ、

商品を識別するための情報として、POSシステムや、販売管理・在庫管理等、

様々なシステムで利用されています。

構成

JANのコード体系(構成)は以下のようになっている。

標準の13桁のコードまたは、8桁の短縮のコードが存在する。

13桁

国コード(2桁) + メーカコード(5桁) + 商品コード(5桁) + チェックデジット(1桁)

国コード(2桁) + メーカコード(7桁) + 商品コード(3桁) + チェックデジット(1桁)

8桁

国コード(2桁) + メーカコード(4桁) + 商品コード(1桁) + チェックデジット(1桁)

日本の国コードは、”49″または”45″となっている。

チェックデジット

チェックデジットは、コードの入力誤りや、バーコードの読み取りミスを防止するために、

12桁のコードから算出した、誤り検出用の付加コードです。

コードを読みとった際に、再度チェックデジットを計算し、読み取ったチェックデジットと

相違がないかで確認をすることができる。

JANコードの作成

上記のように、JANコードは決められたルールを基に作成されていることがわかる。

特に、チェックデジットについては、作成した12桁のコードからさらに計算をおこない

13桁目のコードを算出することになる。

※チェックデジットの算出についてはここを参照。

そこで、簡単ではあるが、JANコード作成用のプログラムを作成してみた。

国コードは、”49″または”45″より選択し、メーカコード(5桁)、商品コード(5桁)の

タイプで入力し、”作成”ボタンを押すと、チェックデジットを計算し、13桁のJAN

コードを表示するという単純なものです。

※とりあえず最低限の対応をしてみました。

[JANコード作成]

C#.net 2008
.net framework2.0以上

コード

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace JanCodeMaker
{
public partial class frmJan : Form
{
public frmJan()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
cmbCountry.SelectedIndex = 1;
txtMaker.Text = "";
txtSyohin.Text = "";
txtJan13.Text = "";
}

private void frmJan_Shown(object sender, EventArgs e)
{
txtMaker.Focus();

}

private void frmJan_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter) {
bool forward = e.Modifiers != Keys.Shift;
this.SelectNextControl(this.ActiveControl, forward, true, true, true);
e.Handled = true;
}

}

//チェックディジットを計算する
private void btnMake_Click(object sender, EventArgs e)
{
string source = cmbCountry.Text + txtMaker.Text + txtSyohin.Text;
if (source.Length != 12) {
MessageBox.Show("12桁で入力してください。");
}

int chk1 = 3 * (Int16.Parse(source.Substring( 1, 1)) +
Int16.Parse(source.Substring( 3, 1)) +
Int16.Parse(source.Substring( 5, 1)) +
Int16.Parse(source.Substring( 7, 1)) +
Int16.Parse(source.Substring( 9, 1)) +
Int16.Parse(source.Substring(11, 1)));
int chk2 = 1 * (Int16.Parse(source.Substring( 0, 1)) +
Int16.Parse(source.Substring( 2, 1)) +
Int16.Parse(source.Substring( 4, 1)) +
Int16.Parse(source.Substring( 6, 1)) +
Int16.Parse(source.Substring( 8, 1)) +
Int16.Parse(source.Substring(10, 1)));
int chk3 = 10 - ((chk1 + chk2) - (((chk1 + chk2) / 10) * 10));

if (chk3 == 10) { chk3 = 0; }
txtJan13.Text = source + chk3.ToString();
//MessageBox.Show(chk1.ToString() + "/" + chk2.ToString() + "/" + chk3.ToString());
}

}
}

Struts2 最初のアプリケーション

ADODB.Recordeset をXMLデータから生成する

関連記事

  1. Struts2 最初のアプリケーション

    Zero Configurationそれでは、Struts2での最初…

  2. twitterアプリケーション

    twitterと連携するアプリケーション作成のためのAPI群です。O…

  3. Struts2 RequestDispatche…

    getRequestDispatcher fowardStrutsを…

  4. Struts2 Conventionプラグイン

    Struts2の大きな特徴である、Zero Configuratio…

  5. ADODB.Recordeset をXMLデータ…

    シリアライズタイトルの処理は非常に簡単です。ADODB.Re…

  6. Struts2 をインストールする

    最初にまずStruts2をインストールする前提条件ですが、J…

  7. Microsft .NET C#

    System.IO.Path.GetTempFi…

    C#のプロジェクトで、一時的なファイル(Tempファイル)を作成するため…

  8. Struts2 の脆弱性を悪用した攻撃の急増

    Webアプリケーションフレームワークで有名になったなStrutsの後継、…

最近の記事

  1. Microsft .NET C#
  2. れいといちかとまほうのトンネル
PAGE TOP