トップ :: G 物理学 :: G06 計算;計数




【発明の名称】 ラベル印刷方法及び装置並びに記録媒体
【発明者】 【氏名】和田 寛

【要約】 【課題】印刷フォーマットが変更になってもそのプログラムを容易に変更可能にする。

【解決手段】ラベル記述言語LDLは、初期値を設定可能な変数定義ステートメントと、データベース上のデータを切り出して変数にセットするデータセット命令と、プリンタ制御命令と、書式指定命令と、印刷位置指定命令と、印刷データセット命令と、印刷命令とを有する。LDLで記述された印刷情報と印刷プログラムとを含むソースファイル31をコンパイルして中間コード列341を作成し且つデータ切り出し情報をテーブル342に格納するコンパイラ33と、中間コードを解釈し実行するインタプリタ37と、テーブル342に格納されたデータ切り出し情報に基づきデータの取得をデータマネージャ36に対し要求し、得られたデータを、対応する変数にセットするラベルマネージ35とが、記憶部20に格納されている。
【特許請求の範囲】
【請求項1】 ラベル記述言語で記述された印刷情報と印刷プログラムとを含むソースファイルが格納されるソースファイル記憶部と、該ソースファイルをコンパイルして該印刷プログラムに対応した中間コード列を作成し且つ該印刷情報に対応したデータ領域を確保するコンパイラがインストールされたコンパイラ記憶部と、該中間コード列の中間コードを解釈し実行するインタプリタがインストールされたインタプリタ記憶部と、該コンパイラ及び該インタプリタを実行するCPUとを有し、該印刷プログラムを記述する該ラベル記述言語は、プリンタ制御命令と、書式指定命令と、印刷位置指定命令と、印刷データセット命令と、印刷命令とを有し、該印刷情報を記述する該ラベル記述言語は、初期値を設定可能な変数定義ステートメントを有する、ことを特徴とするラベル印刷装置。
【請求項2】 上記印刷情報を記述する上記ラベル記述言語はさらに、データベース上のデータを切り出して変数にセットするデータセット命令を有し、上記コンパイラはさらに、該データセット命令で指定されたデータ切り出し情報を上記データ領域に格納し、要求に応じてデータベースをアクセスするデータマネージャが格納されたデータマネージャ記憶部と、該データ領域に格納された該データ切り出し情報に基づきデータの取得を該データマネージャに対し要求し、得られたデータを、対応する該変数にセットするラベルマネージが格納されたラベルマネージャ記憶部と、をさらに有することを特徴とする請求項1記載のラベル印刷装置。
【請求項3】 プリンタ制御命令と、書式指定命令と、印刷位置指定命令と、印刷データセット命令と、印刷命令とを有するラベル記述言語で印刷プログラムを記述し、初期値を設定可能な変数定義ステートメントを有する該ラベル記述言語で印刷情報を記述して、ソースファイルを作成し、該ソースファイルをコンパイルして該印刷プログラムに対応した中間コード列を作成し且つ該印刷情報に対応したデータ領域を確保し、該中間コード列の中間コードを解釈し実行することによりラベルを印刷する、ことを特徴とするラベル印刷方法。
【請求項4】 上記ソースファイルの作成においてさらに、データベース上のデータを切り出して変数にセットするデータセット命令を有する上記ラベル記述言語で印刷情報を記述し、上記コンパイルにおいてさらに、該データセット命令で指定されたデータ切り出し情報を上記データ領域に格納し、上記中間コードを解釈する前に、該データ切り出し情報に基づきデータベースからデータを取得して、対応する該変数にセットする、ことを特徴とする請求項3記載のラベル印刷方法。
【請求項5】 ラベル記述言語で記述された印刷情報と印刷プログラムとを含むソースファイルをコンパイルして該印刷プログラムに対応した中間コード列を作成し且つ該印刷情報に対応したデータ領域を確保するコンパイラと、該中間コード列の中間コードを解釈し実行するインタプリタと、が記録され、ここに、該印刷プログラムを記述する該ラベル記述言語は、プリンタ制御命令と、書式指定命令と、印刷位置指定命令と、印刷データセット命令と、印刷命令とを有し、該印刷情報を記述する該ラベル記述言語は、初期値を設定可能な変数定義ステートメントを有する、ことを特徴とするコンピュータ読み取り可能な記録媒体。
【請求項6】 上記印刷情報を記述する上記ラベル記述言語はさらに、データベース上のデータを切り出して変数にセットするデータセット命令を有し、上記コンパイラはさらに、該データセット命令で指定されたデータ切り出し情報を上記データ領域に格納し、該データ切り出し情報に基づきデータの取得をデータマネージャに対し要求し、得られたデータを、対応する該変数にセットするラベルマネージがさらに記録されている、ことを特徴とする請求項5記載の記録媒体。
【発明の詳細な説明】【0001】
【発明の属する技術分野】本発明は、各種物品に貼着されるラベルに文字、記号又はバーコードなどを印刷するラベル印刷方法及び装置並びにこの方法を実施するプログラムが記録されたコンピュータ読み取り可能な記録媒体に関する。
【0002】
【従来の技術】従来のラベル印刷装置では、C言語などの汎用言語でラベル印刷アプリケーションプログラムを作成していたのでプログラムが複雑になり、印刷フォーマットが変更になった場合、これに対応してアプリケーションプログラムを変更するのに長時間を要するという問題があった。特に、データベース内のデータを用いる場合には複雑な手続きが必要であった。
【0003】
【発明が解決しようとする課題】本発明の目的は、このような問題点に鑑み、ラベル記述言語を新設しこれを用いることにより印刷フォーマットが変更になってもそのプログラムを容易に変更することが可能なラベル印刷方法及び装置並びにこの方法を実施するプログラムが記録されたコンピュータ読み取り可能な記録媒体を提供することにある。
【0004】
【課題を解決するための手段及びその作用効果】本発明によるラベル印刷装置では、ラベル記述言語で記述された印刷情報と印刷プログラムとを含むソースファイルが格納されるソースファイル記憶部と、該ソースファイルをコンパイルして該印刷プログラムに対応した中間コード列を作成し且つ該印刷情報に対応したデータ領域を確保するコンパイラがインストールされたコンパイラ記憶部と、該中間コード列の中間コードを解釈し実行するインタプリタがインストールされたインタプリタ記憶部と、該コンパイラ及び該インタプリタを実行するCPUとを有し、該印刷プログラムを記述する該ラベル記述言語は、プリンタ制御命令と、書式指定命令と、印刷位置指定命令と、印刷データセット命令と、印刷命令とを有し、該印刷情報を記述する該ラベル記述言語は、初期値を設定可能な変数定義ステートメントを有する。
【0005】このラベル印刷装置によれば、上記ラベル記述言語を用いてソースファイルが作成されるので、印刷フォーマットが変更になっても、比較的容易にソースファイルを変更してこれに対応することができる。
【0006】より好ましくは、上記ラベル印刷装置において、上記印刷情報を記述する上記ラベル記述言語はさらに、データベース上のデータを切り出して変数にセットするデータセット命令を有し、上記コンパイラはさらに、該データセット命令で指定されたデータ切り出し情報を上記データ領域に格納し、要求に応じてデータベースをアクセスするデータマネージャが格納されたデータマネージャ記憶部と、該データ領域に格納された該データ切り出し情報に基づきデータの取得を該データマネージャに対し要求し、得られたデータを、対応する該変数にセットするラベルマネージが格納されたラベルマネージャ記憶部とをさらに有する。
【0007】このラベル印刷装置によれば、データベース上のデータを切り出して変数にセットするデータセット命令のデータ切り出し情報をコンパイラがデータ領域に格納し、ラベルマネージャがこのデータ切り出し情報に基づきデータの取得をデータマネージャに対し要求し、得られたデータを、対応する該変数にセットするので、データベースのデータをラベル印刷用として容易に利用することができる。
【0008】本発明の他の目的、構成及び効果は以下の説明から明らかになる。
【0009】
【発明の実施の形態】以下、図面を参照して本発明の実施形態を説明する。
【0010】[第1実施形態]図1は、本発明の一実施形態のラベル印刷装置を示す概略ブロック図である。
【0011】コンピュータ本体10には、入力装置11と、表示装置12と、ラベル印刷に用いるデータベースDBが格納された外部記憶装置13と、ラベル14印刷用のプリンタ15とが接続されている。コンピュータ本体10では、記憶装置20と、記憶装置20に格納されたプログラムを実行するCPU21と、RS232Cインタフェース22とが、バス23を介して接続されている。RS232Cインタフェース22には、プリンタ15、例えばドットプリンタ又はバーコードプリンタが接続されている。
【0012】図1では、記憶装置20に格納された、ラベル印刷に関係したプログラムOS30〜37と、その相互関係とがブロック図で示されている。
【0013】OS30は、例えばMS−DOS(登録商標)である。このOSプラットホーム上で、ラベル記述言語(Label Description Language, LDL)で記述されたプログラムが動作して、ラベル印刷のための各種処理が行なわれる。
【0014】LDLソースファイル31は、エディタ32が動作しているときに、表示装置12の表示を見ながら入力装置11を操作することにより作成される。LDLソースファイル31は、印刷プログラムとそのデータとを有する。
【0015】LDLコンパイラ33は、LDLソースファイル31を入力データとしてクラスファイル34を作成する。クラスファイル34は、仮想マシンコード列であるLDL中間コード列341と、これを実行する際に使用される印刷データが格納されたテーブル342とからなる。テーブル342には、印刷用のデータとして、外部記憶装置13に格納されたデータベースDB内のファイル名FN、このファイル名FNのファイル内のデータの読み取り開始位置(オフセット値)pos、データ読み取り長さ(=データが代入される変数のバイト長)Lが、LDLソースファイル31内のデータセット命令及びデータ定義文に基づいてLDLコンパイラ33により、後述のようにして書き込まれている。
【0016】ラベルマネージャ35は、LDLコンパイラ33がテーブル342を作成した後に動作し、ファイル名FN、オフセット値pos及びデータ長Lをデータ切り出し情報としてデータマネージャ36に供給してアクセスを要求する。データマネージャ36はこれに応答して、データベースDB内からこのファイル名FNのファイル内のデータの該当部分を読み取り、ラベルマネージャ35に渡す。ラベルマネージャ35はこのデータをテーブル342内の、上記データセット命令で指定された変数にセットする。
【0017】クラスファイル34の作成が完了した後に、仮想マシンであるLDLインタプリタ37により、LDL中間コード列341からLDL中間コードが順次読み出されて、解釈され実行される。この実行において、テーブル342が使用される。LDL中間コードは仮想マシン語であり、テーブル342内のデータは、この命令のオペランドの内容に相当している。ネイティブマシン、すなわちCPU21から見れば、LDL中間コードはサブルーチン又は関数の呼び出し命令であり、その引き数はテーブル342に含まれている。
【0018】LDLインタプリタ37は、印刷命令を実行する場合、OS30内の基本入出力ルーチンを介しRS232Cインタフェース22を制御する。これにより、プリンタ15に制御データや印刷データが供給されて、ラベル14が印刷される。
【0019】図2は、図1のLDLソースファイル31の構成を示しており、LDLソースファイル31は、データ定義部40と、データセット部41と、印刷処理部42とからなる。
【0020】1).データ定義部40データ定義部40では、制御データ及び印刷データのデータ名、データ長及び初期値を定義する。制御データ及び印刷データは、PRINT_DATA_STARTタグに続いて定義される。
【0021】データ定義の書式は、データ名(データ長,日本語データ名称,英語データ名称,初期値)
であり、ここに日本語データ名称及び英語データ名称は、人がデータの意味を容易に把握できるようにするための単なるコメントである。
【0022】以下にデータ定義部40の具体例を挙げる。
PRINT_DATA_STARTmodel (10, モデル,model,TESTDATA90)
de_Id ( 9, 識別ID,DE_ID,00TEST123)
上記の例では、以下のデータが定義されている。
【0023】データmodel:データ長10バイト、初期値TESTDATA90データde_Id:データ長9バイト、初期直00TEST1232).データセット部41データセット部41では、データ定義部40で定義されたデータに対して値をセットするデータセット命令を記述する。この命令は、LDLコンパイラ33及びラベルマネージャ35に対するものである。データセット部41で変数に値がセットされない場合、この変数の値はデータ定義部40で定義された初期値となる。
【0024】データセット部は、DATA_SET_STARTタグに続いで記述される。
【0025】データセット部では、次の書式のデータセット命令が使用される。
【0026】SET FN(pos) TO 変数これは、ファイル名FN内のデータのposバイト目からを、データ定義部で定義された変数にセット(代入)するデータセット命令である。セットするバイト数は、データ定義部でこの変数について定められたデータ長に等しい。
【0027】例えば、SET MILCL200(26) TO SHIPMENT_ID;
は、ファイルMILCL200内のデータの先頭より26バイト目から、変数SHIPMENT_IDの定義で定められたデータ長だけ、変数SHIPMENT_IDにセットすることを意味する。
【0028】3).印刷処理部42印刷処理部42では、ラベルフォーマット及び印刷条件を定める命令並びに印刷命令を記述する。
【0029】印刷処理部42は、PRINT_STARTタグに続いで記述される。
【0030】印刷処理部42では、次の書式が使用される。
【0031】FUNC (引数)
FUNCは、ネイティブマシンに対する関数名であるとともに、仮想マシンに対する印刷処理命令である。
【0032】図3及び図4は、図2の印刷処理部42で用いられるドットプリンタ用関数(命令)を示す。
【0033】例えば項1〜4はプリンタ制御命令であり、項5〜10は書式命令であり、項11及び12は印字位置指定命令であり、項13〜16は印刷データセット命令であり、項19〜25は印刷命令である。
【0034】次に、ドットプリンタ用関数を説明する。
【0035】(1)DOT_SET_PRINTER_TYPE(引数)
引数:利用可能なプリンタの機種を指定する整数内容:ドットプリンタ機種を指定。(本関数は、DOT_PRINTER_OPEN前に呼ぶこと。)
(2)DOT_PRINTER_OPEN()
引数:なし内容:プリンタをテキストモードでオープン。
【0036】レフトマージンを0/180インチに設定。
【0037】プリンタをリセット。
【0038】(3)DOT_PRINTER_CLOSE()
引数:なし内容:プリンタをリセット。
【0039】プリンタをクローズ。
【0040】(4)DOT_SET_LMGN(引数)
引数:整数内容:レフトマージンを1/180インチ単位で指定。
【0041】引数にマイナス値が指定された時は、0がセットされる。
【0042】例:DOT_SET_LMGN(10)
レフトマージンが、10/180インチに設定される。
【0043】(5)DOT_PITCH_REDUCTION(引数)
引数:整数内容:半角文字印字ピッチを引数で次のように指定。
【0044】
13:ピッチ13/180インチ・・・12CPI17:ピッチ17/180インチ・・・10CPI上記以外の値:ピッチ18/180インチ・・・10CPI(6)DOT_HIGH_QUALITY(引数)
引数:SWITCH(2値であり、ON又はOFF、以下同様)
内容:文字品位を引数SWITCHで次のように指定。
【0045】ON:高品位印刷OFF:ドラフト印刷(7)DOT_KANJI_MODE(引数)
引数:SWITCH内容:漢字モードを引数で次のように指定ON:漢字モードOFF:ANKモード(8)DOT_KANJI_PITCH_CHANGE(引数)
引数:SWITCH内容:漢字ピッチを引数で次のように指定ON:ピッチ30/180インチOFF:ピッチ27/180インチ(9)DOT_TANHOUKOU(引数)
引数:SWITCH内容:印刷方法を引数で次のように指定ON:片方向印刷を行う。
【0046】OFF:両方向印刷を行う。
【0047】例:DOT_TANHOUKOU(ON)
片方向印刷を行う。
【0048】(10)DOT_ANK_DOUBLEWIDE(引数)
引数:SWITCH内容:ANK文字拡大を引数で次のように指定ON:ANK倍幅拡大印刷を行う。
【0049】OFF:ノーマル印刷を行う。
【0050】(11)DOT_POS_X(引数)
引数:整数内容:X方向印刷位置の絶対指定。
【0051】単位は1/180インチ。
【0052】例:DOT_POS_X(20)
X方向印刷位置は20/180インチになる。
【0053】(12)DOT_POS_X_RELATIVE(引数)
引数:整数内容:X方向印刷位置の相対指定。
【0054】単位は1/180インチ。
【0055】例:DOT_POS_X_RELATIVE(30)
X方向印刷位置が現在位置から30/180インチ移動。
【0056】(13)DOT_C39_INIT()
引数:なし内容:バーコードデータ関連の初期化(バーコードデータを印字する前に、必ず呼ぶこと。)
チェックディジットなしに設定。
【0057】バーコード用左マージンを0/180に設定。
【0058】(14)DOT_SET_BARCODE_DATA(引数)
引数:変数内容:引数の内容をバーコード印刷データとして設定する。
【0059】チェックモードが、0又は1のとき、引数の内容の末尾にCRを付加する。
【0060】2又は3のとき、引数の内容の末尾にCRを付加しない。
【0061】(15)DOT_SET_BARCODE_DATA_WITH_BLANK(引数)
引数:変数内容:引数の内容をバーコード印刷データに設定する。
【0062】チェックモードが、0又は1のとき、引数の内容の末尾にCRを付加して、バーコード印刷する。
【0063】2又は3のとき、引数の内容をそのままバーコード印刷する。
【0064】(16)DOT_SET_BARCODE_DATA_CUT(引数)
引数:変数内容:引数の内容をバーコード印刷データに設定する。
【0065】途中にブランクがある場合は、ブランク以後が印刷データから除去される。
【0066】チェックモードが、0又は1のとき、引数の内容の末尾にCRを付加して、バーコード印刷する。
【0067】2又は3のとき、引数の内容をそのままバーコード印刷する。
【0068】(17)DOT_SET_BARCODE_LMGN(引数)
引数:整数内容:バーコード用左マージンを1/180インチで設定(18)DOT_SET_BARCODE_CHK(引数)
引数:整数内容:バーコード用チェックモードを引数で次のように設定。
【0069】0:チェックディジット無しで、フルアスキー変換を行う。
【0070】1:チェックデイジット有りで、フルアスキー変換を行う。
【0071】2:チェックデイジットなし。
【0072】3:チェックデイジットあり。
【0073】(19)DOT_C39_PRINT()
引数:なし内容:バーコードの印刷を実行する。
【0074】(20)DOT_PRINT_OUT(引数)
引数:変数内容:引数の内容をテキスト印刷する。
【0075】頭部又は末尾にブランクがある場合は、ブランクが印刷データから除去される。
【0076】(21)DOT_SET_DCMARK(引数)
引数:SWITCH内容:直後のDOT_PRINT_OUT_16で"0"を直流記号に変換するかどうかを指定する。
【0077】ON:直流記号に変換。
【0078】OFF:ブランクに変換。
【0079】(22)DOT_PRINT_OUT_16(引数)
引数:変数内容:引数の内容を16ドットイメージでテキスト印刷する。
【0080】頭部又は末尾にブランクがある場合は、ブランクが印刷データから除去される。
【0081】(23)DOT_PRINT_OUT_CAT_DATE1(引数)
引数:変数内容:引数の内容がYYYY_MMの形式になっていることを前提に、月度を英語に変換し、16ドットイメージでテキスト印刷する。
【0082】月度と年度の間に1個のブランクがある。
【0083】例:DOT_POS_X(157);
DOT_PRINT_OUT_CAT_DATE1(date);
dateの内容が"1998_09"の時、"SEPTEMBER.1998"が印刷される。
【0084】(24)DOT_PRINT_OUT_CAT_DATE2(引数)
引数:変数内容:引数の内容がYYYY_MMの形式になっていることを前提に、月度を英語に変換し、16ドットイメージでテキスト印刷する。
【0085】月度と年度の問にブランクがない。
【0086】例:DOT_POS_X(527);
DOT_PRINT_OUT_CAT_DATE2(date);
dateの内容が"1998_09"の時、"SEPTEMBER.1998"が印刷される。
【0087】(25)DOT_PRINT_OUT_CAT_REV(引数)
引数:変数内容:引数の内容を、16ドットイメージでテキスト印刷する。但し、DOT_PRINT_OUT_16より文字間隔が5/180インチ広い。
【0088】(26)DOT_FEED(引数)
引数:整数内容:1/180インチの単位で改行する。
【0089】例:DOT_FEED(23);
23/180インチ改行する。
【0090】(27)DOT_LINE_FEED(引数)
引数:整数内容:24/180インチ(1行)単位で改行する。
【0091】例:DOT_LINE_FEED(3);
72/180インチ(3行)改行する。
【0092】(28)DOT_SUPERSCRIPT(引数)
引数:SWITCH内容:上添え字で印刷するかどうか引数で次のように指定する。
【0093】ON:上添え字で印刷。
【0094】OFF:上添え字印刷を解除。
【0095】(29)DOT_PRINT_OUT_REV(引数)
引数:変数内容:引数の文字内容を左右リバースして印刷する。
【0096】例:DOT_PRINT_OUT_REV(date)
dateの内容が"19980916"のとき、"61908991"が印刷される。
【0097】(30)DOT_PRINT_OUT_CUT(引数)
引数:変数内容:引数の内容を印刷する。
【0098】途中にブランクがある場合は、ブランク以後が印刷データから除去される。
【0099】(31)DOT_CAT_INITIAL()
引数:なし内容:CAT用初期化。DOT_PRINT_OUT_16を使用するとき、DOT_PRINTER_OPENの直後に本関数を呼ぶこと。
【0100】図5及び図6は、図2の印刷処理部42で用いられるバーコードプリンタ用関数(命令)を示す。
【0101】次に、バーコードプリンタ用関数を説明する。
【0102】(1)BC_INIT()
引数:なし内容:ラベル印刷情報の初期化(本関数は、最初に必ず呼ぶこと。)。
【0103】初期化内容は、以下の通りである。
【0104】RS232Cポート:ポート1印刷枚数 :1枚レフトマージン :0mmトップマージン :0mmX方向印刷領域:100mmY方向印刷領域:50mmバーコード高さ :5mm全ての印刷項目に対して、以下のように初期化X方向印刷位置 :0mmY方向印刷位置 :0mm印刷タイプ :文字印刷文字サイズ :48ドット×48ドット文字ピッチ :0mm単位 :mm(2)BC_SET_PORT(引数)
引数:整数内容:使用するRS232Cポートナンバーを引数で指定。
【0105】(3)BC_SET_SUU(引数)
引数:整数内容:BC_EXEC_PRINTを一度実行した時の印刷枚数を指定。
【0106】(4)BC_SET_LHIGHT(引数)
引数:整数内容:Y方向印刷領域を指定。(単位はmm)
(5)BC_SET_LWIDTH(引数)
引数:整数内容:X方向印刷領域を指定。(単位はmm)
(6)BC_SET_BHIGGT引数:整数内容:バーコード高さを指定。(単位はmm)
(7)BC_SET_LMGN(引数)
引数:整数内容:レフトマージンを指定。(単位はmm)
(8)BC_SET_TMGN(引数)
引数:整数内容:トップマージンを指定。(単位はmm)
(9)BC_SET_BCTYPE(引数)
引数:整数内容:バーコードプリンタ機種を引数で指定(10)BC_SET_XPOS_ALL(引数)
引数:整数内容:全ての印刷項目に対するX方向印刷位置の一括指定。
【0107】(11)BC_SET_YPOS_ALL(引数)
引数:整数内容:全ての印刷項目に対するY方向印刷位置の一括指定。
【0108】(12)BC_SET_FLAG_ALL(引数)
引数:整数内容:全ての印刷項目に対する印刷タイプを引数で一括指定。
【0109】1:文字印刷2:バーコード印刷3:文字重ね印刷4:バーコード重ね印刷(13)BC_SET_MSIZE_ALL(引数)
引数:整数内容:全ての印刷項目に対する文字サイズを引数で次のように一括指定。
【0110】0:16×24ドット1:32×48ドット2:48×48ドット3:112×216ドット4:16×16ドット5:16×32ドット6:32×16ドット7:32×32ドット8:32×64ドット9:48×64ドット10:32×40ドット11:64×80ドット12:24×24ドット13:24×72ドット14:24×48ドット15:48×48ドット16:40×72ドット17:16×16ドット例:BC_SET_MSIZE_ALL(1)
各印刷内容について、この後に個別に文字サイズを指定しない場合、全て32×48ドットで印刷される。
【0111】(14)BC_SET_PITCH_ALL(引数)
引数:整数内容:全ての印刷項目に対するピッチの一括指定。(単位はドット)
(15)BC_SET_DOT_ALL(引数)
引数:整数内容:全ての印刷項目に対する印刷位置(X,Y方向)の単位を引数で次のように一括指定。
【0112】0:mm0以外:ドット(16)BC_SET_XPOS(引数)
引数:整数内容:各印刷項目に対するX方向印刷位置を指定。
【0113】(17)BC_SET_POS(引数)
引数:整数内容:各印刷項目に対するY方向印刷位置を指定。
【0114】(18)BC_SET_FLAG(引数)
引数:整数内容:各印刷項目に対する印刷タイプを引数で次のように指定。
【0115】1:文字印刷2:バーコード印刷3:文字重ね印刷4:バーコード重ね印刷(19)BC_SET_MSIZE(引数)
引数:整数内容:各印刷項目に対する文字サイズを引数で上記(13)と同様に指定(20)BC_SET_PITCH(引数)
引数:整数内容:各印刷項目に対するピッチを指定。(単位はドット)
(21)BC_SET_DOT(引数)
引数:整数内容:各印刷項目に対する印刷位置(X,Y方向)の単位を指定。
【0116】0:mm0以外:ドット(22)BC_MARK_CHK(引数)
引数:整数内容:直前の印刷項目に0が含まれている時、0を直流記号に変換する。
【0117】引数には、直前の印刷項目が左端から何文字離れているか指定する。
【0118】(23)BC_MARK_YPOS(引数)
引数:整数内容:BC_MARK_CHKで生成された直流記号の"・・"と"‥"のY方向印刷位置を指定。(単位はドット)
必ず、BC_MARK_CHKの直後に記述すること。
【0119】(24)BC_DRAW_RECT()
引数:なし内容:を印刷する。
【0120】(25)BC_SET_DATA(引数)
引数:変数内容:引数の内容を印刷する。
【0121】頭部又は末尾にブランクがある場合は、ブランクが印刷データから除去される。
【0122】(26)BC_SET_DATA_WITH_BLANK(引数)
引数:変数内容:引数の内容を印刷する。
【0123】頭部又は末尾にブランクがある場合は、ブランクが印刷データに含まれる。
【0124】(27)BC_SET_DATA_CUT(引数)
引数:変数内容:引数の内容を印刷する。
【0125】途中にブランクがある場合は、ブランク以後が印刷データから除去される。
【0126】(28)BC_SET_DATA_REV(引数)
引数:変数内容:引数の内容を左右リバースして印刷する。
【0127】(29)BC_SET_DATA_ASC(引数)
引数:変数内容:頭部又は末尾にブランクがある場合はブランクが除去され、末尾にCRが追加された後、フルアスキー変換され、印刷される。
【0128】(30)BC_SET_DATA_ASC_CUT(引数)
引数:変数内容:途中にブランクがある場合はブランク以後が除去され、末尾にCRが追加された後、フルアスキー変換され、印刷される。
【0129】(31)BC_SET_DATA_CAT_DATE(引数)
引数:変数内容:引数の内容がYYYY_MMの形式になっていることを前提に、月度が英語に変換され、印刷される。
【0130】(32)BC_EXEC_PRINT(引数)
引数:整数内容:印刷を開始する。
【0131】引数でバーコード比率を次のように設定する。
【0132】0: 2:50以外: 3:7以上の命令のソースコードは、図1のLDLコンパイラ33により、LDL中間コードに変換される。
【0133】図7は、図1のLDLコンパイラ33の処理を示すジェネラルフローチャートである。
【0134】(S10)LDLソースファイル31から1行のソースコードを読み取る。
【0135】(S11)ステップS10において、ファイルの最後に到達しているため読み取るべき行がなければ、処理を終了し、そうでなければステップS12へ進む。
【0136】(S12)ソースコードから、記号「;」以降のコメント文を削除する。
【0137】(S13)削除したためにソースコードが空文になった場合には、ステップS10へ戻る。
【0138】(S14)ソースコードがPRINT_DATA_STARTであればステップS15へ進み、そうでなければステップS16へ進む。
【0139】(S15)処理モードPMに値1をセットし、ステップS10へ戻る。
【0140】(S16)ソースコードがPRINT_SET_STARTであればステップS17へ進み、そうでなければステップS18へ進む。
【0141】(S17)処理モードPMに値2をセットし、ステップS10へ戻る。
【0142】(S18)ソースコードがPRINT_STARTであればステップS19へ進み、そうでなければステップS20へ進む。
【0143】(S19)処理モードPMに値3をセットし、ステップS10へ戻る。
【0144】(S20)PM=1であればステップS21へ進み、そうでなければステップS22へ進む。
【0145】(S21)後述のように変数又は定数のデータ定義処理を行い、ステップS10へ戻る。
【0146】(S22)PM=2であればステップS23へ進み、そうでなければステップS24へ進む。
【0147】(S23)後述のデータセット処理を行い、ステップS10へ戻る。
【0148】(S24)PM=3であればステップS25へ進み、そうでなければステップS10へ戻る。
【0149】(S25)後述のように命令をコンパイル(ソースコードを中間コードに変換)し、ステップS10へ戻る。
【0150】図8(A)は、図7のステップS21のより詳細な処理を示すフローチャートである。
【0151】(S211)ソースコードが、定められた文法を満たしていればステップS212へ進み、そうでなければステップS213へ進む。
【0152】(S212)ソースコードに含まれている変数名、データ長及び初期値を抽出して変数テーブルVTにセットする。図8(B)、はこの変数テーブルVTの具体例を示す。変数テーブルVTは、図1のテーブル342に含まれている。次に、図7のステップS10へ戻る。
【0153】(S213)文法エラーの内容を表示装置12に表示し、エディタ32を起動してエディットモードに移行し、LDLコンパイラ33の動作を中止する。操作者は、この表示を見て文法エラーを訂正し、再度LDLコンパイラ33を起動させる。
【0154】図9(A)は、図7のステップS23のより詳細な処理を示すフローチャートである。
【0155】(S231)ソースコードが、定められた文法を満たしているかどうかを判断する。満たしていればステップS233へ進み、そうでなければステップS236へ進む。
【0156】(S232)ソースコードからオペランドOP1、オフセット値pos及びオペランドOP2を抽出する。
【0157】(S233)オペランドOP2が図8(B)の変数テーブルVTに登録済であればステップS234へ進み、そうでなければステップS235へ進む。
【0158】(S234)オペランドOP1、オフセット値pos及びオペランドOP2を、図9(B)に示すようなデータセットテーブルDSTにセットする。このデータセットテーブルDSTは、図1のテーブル342に含まれている。次に、図7のステップS10へ戻る。
【0159】(S235)図8のステップS213と同様の処理が行なわれる。
【0160】図10は、図7のステップS25のより詳細な処理を示すフローチャートである。
【0161】(S251)ソースコードが、定められた文法を満たしていればステップS252へ進み、そうでなければステップS256へ進む。
【0162】(S252)ソースコードから関数名FNC及びその引き数を抽出する。
【0163】(S253)ソースコードに記述された関数名FNCが予め登録されたものであるかどうかを、図11(A)に示すような関数テーブルFT内の関数名と比較して調べる。この関数テーブルFTのレコードは、関数名FNCと、引き数のデータ型と、この関数を実行する処理ルーチンへのポインタとを含んでいる。登録された関数であればステップS254へ進み、そうでなければステップS256へ進む。
【0164】(S254)関数テーブルFTを参照して、この関数の引き数が変数であるかどうかを調べ、変数であれば図8(B)の変数テーブルVTに登録されたものであるかどうかを調べる。登録されたものであればステップS255へ進み、そうでなければステップS256へ進む。
【0165】(S255)関数名FNCと引数とを含むソースコードを、中間コードに変換する。この中間コードは、関数テーブルFT内の該関数名に対応する項の値と、変数テーブルVT内の、該引数の変数名に対応する項の値とで表される。図11(B)は、LDL中間コード列341を示す。例えば、第3項(行)の(4,3)は、命令が関数テーブルFT内の項3のBC_SET_DATAで、その引数が変数テーブルVT内の項3の変数WORDであることを示している。
【0166】引き数が有るか無いか、引き数が変数あるか値であるかについては、関数毎に予め定められており、呼び出された関数側でこれらが判断される。
【0167】図12は、図1のラベルマネージャ35及びデータマネージャ36の処理を示すフローチャートである。
【0168】(S351)図9(B)に示すようなデータセットテーブルDSTから、1レコード読み取る。
【0169】(S352)読み取るべきレコードが無ければ処理を終了し、有った場合にはステップS353へ進む。
【0170】(S353)オペランドOP2のデータ長Lを、図8(B)の変数テーブルVTから取得する。例えばオペランドOP2がWORDである場合、L=5である。
【0171】(S354)ラベルマネージャ35は、データベースDBに対する最初のアクセス前に、データマネージャ36に対しこのデータベースをオープンさせる。ラベルマネージャ35はまた、ファイル名OP1が出現したのが初回であるかどうかを判定し、初回であればデータマネージャ36に対しこのファイルをオープンさせる。これにより、データベースDB内のデータに対するアクセス手続きをLDLソースファイル31に記述する必要が無くなるので、データアクセスが簡単になる。
【0172】ラベルマネージャ35は、データマネージャ36に対し、ファイル名OP1(=FN)、例えばファイル名APL_DATAのファイル内の、先頭よりposバイトの位置からLバイト(以下、これを(OP1,pos,L)で表す。)のデータを要求する。
【0173】(S361)データマネージャ36は、データベースDBに対し、ファイル名OP1を検索し、OP1が見つかればさらに(OP1,pos,L)を取得しようとする。取得できればその内容をラベルマネージャ35へ渡し、取得できなければそのことを示すエラー情報をラベルマネージャ35へ渡す。
【0174】(S355〜S357)ラベルマネージャ35はこれに応答して、エラーがなければ図8(B)の変数テーブルVTのオペランドOP2に(OP1,pos,L)の内容をセットし、エラーがあれば図8のステップS213と同様の処理を行なう。
【0175】図13は、図1のLDLインタプリタ37の処理を示すフローチャートである。
【0176】(S371)LDL中間コード列341から次の中間コードを読み取る。
【0177】(S372)読み取るべき中間コードが無ければ処理を終了し、有ったならばステップS373へ進む。
【0178】(S373)図11(A)の関数テーブルFT及び図8(B)の変数テーブルVTを参照して、中間コードに対応した関数を実行する。次に、ステップS371へ戻る。
【0179】このような処理により、ラベル14に所望の文字、記号又はバーコードが印刷される。
【0180】図14は、LDLを用いた以下のソースコード列のLDLソースファイルを上述のように処理し実行して得られたラベル14を示す。
PRINT_DATA_START de_id (13, 識別ID, ID, 00TEST1234567) de_type ( 6, de_type, de_type, 00TEST) id_dat (15, 出荷ID, SHIPMENT_ID, CATEST12345678%) model_C ( 5, モデル, MODEL, MODEL) model (15, モデル, MODEL, TESTDATA9012345) f_id_C ( 3, 工場ID, FACTORY_ID, ID) f_id ( 2, 工場ID, FACTORY_ID, FJ) rating (21, レイティンク゛, RATING, 12V{}0.28A 5V{}0.35A) zuban_C ( 8, 図番, PART_NO, PARTNO.) zuban (12, 図番, PART_NO, XXXX_YYYY#ZZ) date_C (12, 日付, DAY, MANUFACTURED) date ( 7, 日付, DAY, 2000-09) serial_C (10, 工場ID号機, SERIAL_NO, SER.NO) Serial ( 9, 工場ID号機, SERIAL_NO, A12345678) rev_no_C ( 7, 版数1, REVISION1, REV.NO) rev_no1 ( 1, 版数1, REVISION1, A) rev_no2 (10, 版数1, REVISION1, 0123456789) rev_dt (11, 版数2, REVISION2, ===========) made_in (20, made_in, made_in, MADE IN JAPAN) aster ( 1, aster, aster, *) model_CJ ( 1, aster, aster, 機種名:) serial_CJ ( 1, aster, aster, 号 機:) m_new (11, aster, aster, 修理名:新作) m_modify (11, aster, aster, 修理名:修理);DATA_SET_START SET MILCLO21 (43) TO model SET MILCL021 (19) TO zuban SET MILCL101 (50) TO rev_no1 SET MILCL101 (51) TO rev_dt SET MILCL101 (83) TO rating SET MILCL200 ( 1) TO de_id SET MILCL200 ( 1) TO de_type SET MILCL200 (26) TO id_dat SET SYSDEF (47) TO f_id SET SERIAL ( 1) TO serial SET DATE ( 1) TO date;PRINT START DOT_SET_PRINTER_TYPE (0); DOT_PRINTER_OPEN (); DOT_CAT_INITIAL (); DOT_SET_LMGN (145); DOT_FEED (4); DOT_POS_X (0); DOT_PRINT_OUT_16 (model_C); DOT_POS_X (107); DOT_PRINT_OUT_16 (model) DOT_POS_X (520); DOT_PRINT_OUT_16 (de_id); DOT_FEED (26); DOT_POS_X (0); DOT_PRINT_OUT_16 (zuban_C);. DOT_POS_X (107); DOT_PRINT_OUT_16 (zuban); DOT_POS_X (520); DOT_PRINT_OUT_16 (id_dat); DOT_FEED (26); DOT_POS_X (0); DOT_PRINT_OUT_16 (serial_C); DOT_POS_X (107); DOT_PRINT_OUT_16 (serial); DOT_FEED (26); DOT_POS_X (0); DOT_PRINT_OUT_16 (date_C); DOT_POS_X (157); DOT_PRINT_OUT_CAT_DATEL (date); DOT_FEED (26); DOT_POS_X (0); DOT_PRINT_OUT_16 (rev_no_C); DOT_POS_X (107); DOT_PRINT_OUT_16 (rev_no1); DOT_POS_X (126); DOT_PRINT_OUT_CAT_REV (rev_no2);。
【0181】
DOT_POS_X (126); DOT_PRINT_OUT_CAT_REV (rev_dt); DOT_POS_X (324); DOT_SET_DCMARK (ON); DOT_PRINT_OUT_16 (rating); DOT_FEED (77); DOT_POS_X (180); DOT_PRINT_OUT_16 (made_in); DOT_FEED (25); DOT_PITCH_REDUCTION (0); DOT_POS_X (0); DOT_PRINT_OUT (aster); DOT_PRINT_OUT (de_type); DOT_PRINT_OUT (aster); DOT_POS_X (520); DOT_PRINT_OUT (mode1_CJ); DOT_PRINT_OUT (model); DOT_FEED (26); DOT_C39_INIT (); DOT_SET_BARCODE_DATA (de_id); DOT_C39_PRINT (); DOT_FEED (23); DOT_C39_PRINT (); DOT_POS_X (520); DOT_PRINT_OUT (serial_CJ); DOT_PRINT_OUT (scrial); DOT_FEED (23); DOT_C39_PRINT (); DOT_FEED (26); DOT_PITCH_REDUCTION (13); DOT_HIGH_QUALITY (ON); DOT_POS_X (520); DOT_PRINT_OUT (m_new); DOT_HIGH_QUALITY (OFF); DOT_PITCH_REDUCTION (18); DOT_FEED (142); DOT_PRINTER_CLOSE ();従来法で図14のラベルを得るには、上記ソースコード列よりも遙かに複雑なソースファイルを作成する必要があり、ラベルの印刷フォーマットがさらに複雑になると、ソースファイルが極めて複雑になった。
【0182】これに対し、本実施形態によれば、上述のようなラベル記述言語を用いてLDLソースファイル31が作成されるので、印刷フォーマットが変更になっても、比較的容易にLDLソースファイル31を変更してこれに対応することができる。
【0183】また、LDLソースファイル31がデータセット部を有し、LDLコンパイラ33がこれに基づいてデータセットテーブルDSTを作成し、ラベルマネージャ35がこのデータセットテーブルDSTに基づいてデータマネージャ36を介しデータを取得し、これを変数にセットするので、データベースDBのデータをラベル印刷用として容易に利用することができる。
【0184】なお、本発明には外にも種々の変形例が含まれ、以下にこれを説明する。
【0185】(1)データ定義部40において、制御データと印刷データの定義領域を分割してもよい。例えば、制御データは、CONTROL_DATA_STARTタグに続いで定義される。
【0186】(2)データセット部41において、次のような書式のデータセット命令を追加してもよい。
【0187】SET "テキスト" TO 変数これは、具体的な"テキスト"データを、データ定義部で定義された変数にセット(代入)するデータセット命令である。
【0188】SET 変数l+変数2 TO 変数3これは、文字列の変数1と変数2とを結合したものを、変数3にセットするデータセット命令である。
【0189】(2)データセット命令のオペランドOP1でデータベース名とその中のファイル名FNとを指定するようにしてもよい。また、データベース内のテーブル名、テーブル内の主キー及びフィールドをデータセット命令のオペランドOP1で指定するようにしてもよい。これらの場合、図9(B)のデータセットテーブルDSTにこれら追加されたデータベース名等のフィールドを追加する。
【0190】(3)データ定義部40、データセット部41又は印刷処理部42においてIF文を用い、条件式が成立する場合のみそれぞれIF文内のデータ定義文、データセット命令又は印刷処理命令を実行するようにしてもよい。
【0191】例えば、データセット部41に次のような書式のIF文を追加する。
【0192】IF OPl 関係演算子 OP2データセット命令ENDIFこの場合、条件式が成立するときのみ、データセット命令が実行される。IF文は入れ子になっていてもよい。ここに、OPl:制御データ又は印刷データOP2:制御データ又は印刷データ関係演算子==:OP1の内容とオペランドOP2の内容が等しい!=:OP1の内容とオペランドOP2の内容が異なる<=:OP1の内容がオペランドOP2の内容以下>=:OP1の内容がオペランドOP2の内容以上<<:OP1の内容がオペランドOP2の内容より小さい>>:OP1の内容がオペランドOP2の内容より大きいである。
【0193】例えば、IF YEAR >= Y_1996;
SET "1996" TO YEAR;
ENDIFと記述する。これは、変数YEARの内容が変数Y1996の内容以上の場合、データ値"1996"を変数YEARにセットすることを意味する。
【0194】(3)印刷処理部42にデバッグ用のFINISH文を挿入するようにしてもよい。LDLインタプリタ37はこのFINISH文を読み出すと、処理を終了し、その時のテーブル342の内容の一部又は全部を表示装置12に表示させる。
【0195】(4)上記実施形態では、印刷処理部42には予め定義された関数しか用いることができないが、ユーザが自由に関数を定義してこれを用いることができるようにしてもよい。
【0196】(5)データ定義文で、データベースDB内のファイル又はテーブルにデータを登録できるようにしてもよい。
【出願人】 【識別番号】000005223
【氏名又は名称】富士通株式会社
【出願日】 平成12年9月29日(2000.9.29)
【代理人】 【識別番号】100092587
【弁理士】
【氏名又は名称】松本 眞吉
【公開番号】 特開2002−108627(P2002−108627A)
【公開日】 平成14年4月12日(2002.4.12)
【出願番号】 特願2000−301023(P2000−301023)