画面・帳票サポートシステム XMAP3 プログラミングガイド


16.4.5 バーコード

〈この項の構成〉

(1) バーコードの定義

バーコードをドローで定義することで生成されます。

(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'のようなデータが該当します。この場合,何も印字しません。

    注※

    カスタマバーコードのデータについては,マニュアル「XMAP3 開発ガイド」を参照してください。

  • 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を付けて,対応するバーコードを印字します。

    注※1

    制御コードは一つだけ付けます。データ文字には出力されません。

    注※2

    すべての項目に対して,すべて空白,すべてNULLまたは先頭1文字にデータ有無コードが指定されている場合,何も印字しません。

    注※3

    ほかの項目データのマッピング結果でバーコードを印字します。

    注※4

    不当データが含まれている場合,ほかの項目データの内容に関係なくバーコードを印字しません。

なお,GS1-128バーコードとして印字するバーコードは,APから指定されたバーコードの桁数の総和が2以上の場合だけ印字されます。ここで,バーコードの桁数とは,APから指定されたデータのうち,バーコードパターンとならないデータ※1を除いた次のデータの総和です。

注※1

コードセットCの項目に指定された(,),-,空白。

注※2

各項目で連続するコードセットCの項目のデータ桁数総和が偶数でない(2で割り切れない)場合,データ不正となり,バーコードは破棄されます。

APからの指定データによって印字されないで,破棄されるケースの例を次に示します。