16.4.5 バーコード
(1) バーコードの定義
バーコードをドローで定義することで生成されます。
-
出力バーコード項目のデータ名:
-
出力バーコードの場合:マップ名-BARCODEnnnn-O
データ名は,出力バーコードダイアログの「データ名」で変更できます。
-
連結出力バーコードの場合:マップ名-BARCODEnnnn-nnn-O
データ名は,連結出力バーコードダイアログの分類の「データ名(部分)」で変更できます。
-
-
長さ:
-
JAN13の場合:13
-
JAN8の場合:8
-
CODE39の場合:3〜76
-
NW-7の場合:3〜99
-
ITF(6)の場合:6
-
ITF(14)の場合:14
-
ITF(16)の場合:16
-
カスタマの場合:22
-
GS1-128の場合:4〜240
-
(2) バーコードの論理マップ生成規則
バーコードの論理マップ生成規則について説明します。
- COBOL
-
- ・出力バーコードの場合
{02|03} マップ名-BARCODEnnnn-O PIC X(長さ)〔OCCURS 回数〕.
- ・連結出力バーコードの場合
{02|03} マップ名-BARCODEnnnn-O〔OCCURS 回数〕. {03|04} マップ名-BARCODEnnnn-nnn-O PIC X(長さ).
- C言語
-
- ・出力バーコードの場合
unsigned char マップ名_BARCODEnnnn_O 〔[回数]〕[長さ];
- ・連結出力バーコードの場合
struct{ unsigned char マップ名_BARCODEnnnn_nnn_O[長さ]; }unsigned char マップ名_BARCODEnnnn_O〔[回数]〕;
(3) バーコードのマッピング規則
バーコードのマッピング規則について説明します。
- 《APが出力項目データ名の領域に代入した内容と結果》
-
-
JAN,CODE39,NW-7,ITFの場合
APが出力項目データ名の領域に代入した内容
結果
すべてデータの場合
代入されたデータに対応するバーコードを印字します。
先頭1文字がデータ有無コード
データ有無コード(1F)16を仮定した場合
例として,X'1F414234'またはX'1F1F1F'のようなデータが該当します。このときは,何も印字しません。
データの後半にデータ有無コード
データ有無コード(1F)16を仮定した場合
例として,X'4142431F1F'のようなデータが該当します。この場合,データ有無コード以前のデータに対応するバーコードを印字します。
バーコードの種類によって,何も印字されない場合があります。
-
カスタマバーコードの場合
APが出力項目データ名の領域に代入した内容
結果
すべてデータの場合(22文字)※
すべて正しいデータ
代入されたデータに対するバーコードを印字します。
すべて空白((20)16),NULL((00)16)
すべて制御コード(CC4)※で印字します。
データの途中が空白((20)16)またはNULL((00)16)
空白((20)16)またはNULL((00)16)の部分は,制御コード(CC4)※で印字します。
データの途中およびすべて不当データ
何も印字しません。
先頭1文字がデータ有無コード
データ有無コード(1F)16を仮定した場合
例として,X'1F414243'またはX'1F1F1F'のようなデータが該当します。この場合,何も印字しません。
データの後半にデータ有無コード
データ有無コード(1F)16を仮定した場合
例として,X'4142431F1F'のようなデータが該当します。この場合,何も印字しません。
-
GS1-128の場合
一つのバーコードデータが複数の項目から成る場合,項目単位にマッピングし,その結果を連結して一つのバーコードを印字します。次の表では,項目単位のマッピング規則について説明します。
APが出力項目データ名の領域に代入した内容
結果
すべてデータの場合
すべて正しいデータ
コードセットの指定がBまたはCの場合
代入されたデータの先頭にコードセットの制御コード(CodeBまたはCodeC)※1を付けて,対応するバーコードを印字します。
コードセットの指定が継続の場合
代入されたデータに対応するバーコードを印字します。
すべて空白((20)16)またはNULL((00)16)
コードセットの指定がBまたはCの場合
コードセットの制御コード(CodeBまたはCodeC)※1に対応するバーコードを印字します※2。
コードセットの指定が継続の場合
何も印字しません※3。
データの途中およびすべて不当データ
何も印字しません※4。
先頭1文字がデータ有無コード
データ有無コード(1F)16を仮定した場合
例として,X'1F414243'のようなデータが該当します。
コードセットの指定がBまたはCの場合
コードセットの制御コード(CodeBまたはCodeC)※1に対応するバーコードを印刷します※2。
コードセットの指定が継続の場合
何も印字しません※3。
データの後半にデータ有無コード
データ有無コード(1F)16を仮定した場合
例として,X'4142431F1F'のようなデータが該当します。
コードセットの指定がBまたはCの場合
代入されたデータの先頭にコードセットの制御コード(CodeBまたはCodeC)※1を,データ有無コード以前のデータ末尾に制御コード(FNC1)※1を付けて,対応するバーコードを印字します。
コードセットの指定が継続の場合
データ有無コード以前のデータ末尾に制御コード(FNC1)※1を付けて,対応するバーコードを印字します。
-
なお,GS1-128バーコードとして印字するバーコードは,APから指定されたバーコードの桁数の総和が2以上の場合だけ印字されます。ここで,バーコードの桁数とは,APから指定されたデータのうち,バーコードパターンとならないデータ※1を除いた次のデータの総和です。
-
コードセットCのデータ桁数の半分※2
-
コードセットBのデータ桁数
-
項目のコードセットの属性がCからB,またはBからCに切り替わった回数
-
データ後半にデータ有無コードがある項目の数
- 注※1
-
コードセットCの項目に指定された(,),-,空白。
- 注※2
-
各項目で連続するコードセットCの項目のデータ桁数総和が偶数でない(2で割り切れない)場合,データ不正となり,バーコードは破棄されます。
APからの指定データによって印字されないで,破棄されるケースの例を次に示します。
-
ケース1:有効なバーコード桁数の不足
- 定義項目リストボックスの定義内容
-
データ名(部分)
桁
コードセット
データ文字
BARCODE0001-001-
4
C(継続)
改行無し
- APからの指定
-
BARCODE0001-001に「(91)」を設定
- 破棄理由
-
BARCODE0001-001に設定された値は「(91)」であるため,有効なバーコードデータは「91」となり,バーコードの桁数が1となるため。
-
ケース2:データ桁の総数が偶数でない
- 定義項目リストボックスの定義内容
-
データ名(部分)
桁
コードセット
データ文字
BARCODE0001-001-
1
C(継続)
改行無し
BARCODE0001-002-
5
C(継続)
改行無し
- APからの指定
-
BARCODE0001-001 に「-」を設定
BARCODE0001-002 に「12345」を設定
- 破棄理由
-
BARCODE0001-001に設定された「-」はバーコードパターンの対象外であるため,有効なバーコードデータは「12345」(奇数)となり,コードセットCでは表現できないため。