8.3.2 行データの帳票印刷

APからPCに対して書式印刷をする場合,行データを出力するために,次の図に示す関数を発行します。関数の機能と発行順序を示します。

図8-7 関数の機能と発行順序

[図データ]

<この項の構成>
(1) jstqlopn関数
(2) jstqlpag関数
(3) jstqlctp関数
(4) jstqldat関数
(5) jstqllpt関数
(6) jstqlcls関数
(7) リンケージ時の注意事項

(1) jstqlopn関数

環境変数を取り込んで,行データの編集を開始します。なお,環境変数については,マニュアル「XMAP3 開発・実行ガイド」を参照してください。

[図データ]

(a) 形式の説明
  1. JSTQL_COMアドレス
    APで確保したユーザインタフェース領域の先頭アドレスを指定します。ユーザインタフェース領域の形式を次の表に示します。

    表8-5 ユーザインタフェース領域の形式

    属性および名称位置長さ内容備考
    (バイト)
    unsigned char lcomid04テーブル
    ID:'XMP3'
    jstqlopn関数を呼び出す前に設
    定します
    unsigned char *lcomsvnm44印刷サービス名称のアドレス
    unsigned char lcomdevnm86予備jstqlopn関数を呼び出す前に必
    ず,NULL(0x00)でクリア
    します1
    unsigned char lcomrsv1142予備
    unsigned char lcompgcnm168予備
    unsigned char lcomrsv2244予備
    unsigned char *lcompgedr284予備
    long lcomrc324リターンコード関数呼び出し後に参照します
    3
    long lcomerr364エラー詳細コード2
    unsigned char lcomsync401予備jstqlopn関数を呼び出す前に
    必ずNULL(0x00)でクリア
    します1
    unsigned char lcomrsv3411予備
    unsigned char lcomrsv4421予備
    unsigned char lcomrsv5431予備
    unsigned char lcomrsv64412予備
    unsigned char *lcomxppdr564予備
    unsigned char lcomperr604ページ制御エラー情報ページ制御のエラー発生時に参照します3
    unsigned char *lcomxperr644予備jstqlopn関数を呼び出す前に必ずNULL(0x00)でクリアします1
    unsigned char lcomwrk68188XMAP3の作業領域jstqlopn関数を呼び出す前に必ずNULL(0x00)でクリアします1
    注※1
    NULL(0x00)でクリアしたあとは,使用しないでください。
    注※2
    エラー詳細コードについては,「付録E リターンコードの詳細」を参照してください。
    注※3
    各関数を呼び出す前に,必ずNULL(0x00)でクリアしてください。

ユーザインタフェース領域には,次に示す項目に情報を設定し,そのほかの項目はNULL(0x00)でクリアします。

(b) リターン情報

関数のリターン値を次に示します。

(2) jstqlpag関数

ページ制御情報を作成して,ページバッファに格納します。

[図データ]

(a) 形式の説明
  1. JSTQL_COMアドレス
    jstqlopn関数で指定したユーザインタフェース領域の先頭アドレスを指定します。
  2. 予備
    必ず,NULLを指定します。
  3. 予備
    必ず,NULLを指定します。
  4. 書式名格納領域のアドレス
    書式名(マップ名にIDを付けた名称(IDはマップ名が6文字のときは6G,7文字のときはF))が格納されている領域のアドレスを必ず指定します。書式名は,8バイト以内の文字列で,NULLを終端とします。書式名を9バイト以上で指定した場合は,先頭から8バイト分を書式名とみなします。
    ただし,Windows NT 4.0,Windows 2000,Windows XP,Windows Server 2003,またはWindows Server 2003 x64の場合,書式名の指定がNULLポインタのとき,文字列がNULLまたは空白だけのときは,環境変数「XMAP3_FMP」で指定した名称が仮定されます。
(b) リターン情報

関数のリターン値を次に示します。

(c) 注意事項

jstqldat関数での行データをjstqllpt関数で出力していない場合,この関数によって出力されます。また,この関数を発行するjstqlcls関数を発行するまでは,前に発行した関数の情報(書式マップ名など)が引き継がれます。

(3) jstqlctp関数

書式印刷時にずれを生じさせないように,行データの制御情報を作成して,行バッファに格納します。ここで指定した制御情報は,jstqllpt関数の発行,または改ページまで有効です。

[図データ]

(a) 形式の説明
  1. JSTQL_COMアドレス
    jstqlopn関数で指定したユーザインタフェース領域の先頭アドレスを指定します。
  2. JSTQL_CTLアドレス
    行データの制御情報を設定する制御情報テーブルの先頭アドレスを指定します。制御情報テーブルの形式と,制御情報テーブルに指定できる定数と値を次の図に示します。

    図8-8 行データの制御情報テーブル(JSTQL_CTL)の形式

    [図データ]

    表8-6 行データの制御情報テーブル(JSTQL_CTL)に指定できる定数と値

    制御情報の
    種類
    定数(ctl_type)指定値
    (ctl_val)
    意味
    文字サイズJSTQ_TYPE_PNT50文字サイズに5ポイントを指定します
    70文字サイズに7ポイントを指定します
    90文字サイズに9ポイントを指定します
    120文字サイズに12ポイントを指定します
    文字の間隔JSTQ_TYPE_INT0文字の間隔を指定しません
    1~7文字の間隔に1~7ポイントを指定します
    書体JSTQ_TYPE_FMT0書体を元に(標準値に)戻します
    1書体に明朝体を指定します
    2書体にゴシック体を指定します
    9書体にOCR体を指定します
    拡大(平体)JSTQ_TYPE_WID0拡大を指定しません
    1拡大を指定します
    注※
    OCR体は,文字サイズに9ポイントを指定したときだけ有効です。

  3. 項目数
    制御情報テーブル中に設定した制御情報の項目数(1以上の値)を指定します。
(例)
[図データ]
(b) リターン情報

関数のリターン値を次に示します。

(c) 注意事項

行の先頭での制御情報の初期値は,文字サイズ,文字の間隔,および書体はドローで定義した値,平体は指定なしです。ただし,環境定数(XMAP3_FORMAT)で書体を指定している場合,環境変数で指定した書体が有効となります。ここで指定した制御情報は,jstqllpt関数の発行,または改ページまで有効です。制御情報の指定がない場合には,この関数を発行しないでください。

(4) jstqldat関数

文字データを編集して,行バッファに格納します。

[図データ]

(a) 形式の説明
  1. JSTQL_COMアドレス
    jstqlopn関数で指定したユーザインタフェース領域の先頭アドレスを指定します。
  2. 文字データのアドレス
    出力する文字データ(行データ)のアドレスを指定します。
  3. 文字データの長さ
    出力する文字データ(行データ)の長さを,バイト数で指定します。
(b) リターン情報

関数のリターン値を次に示します。

(c) 注意事項

この関数では,印刷する文字データ(行データ)だけを指定し,行送りなどはjstqllpt関数で指定します。

(5) jstqllpt関数

行バッファに格納されている行データに行送り情報を付けて,1行分のデータをページバッファに出力します。ただし,改ページを指定したときや,改ページが発生したときは,ページバッファに格納されている1ページ分のデータをプリンタに出力します。

[図データ]

(a) 形式の説明
  1. JSTQL_COMアドレス
    jstqlopn関数で指定したユーザインタフェース領域の先頭アドレスを指定します。
  2. JSTQL_CTLアドレス
    行送り情報を設定する制御情報テーブルの先頭アドレスを指定します。制御情報テーブルの形式と,制御情報テーブルに指定できる定数と値を次に示します。

    図8-9 行送りの制御情報テーブル(JSTQL_CTL)の形式

    [図データ]

    表8-7 行送りの制御情報テーブル(JSTQL_CTL)に指定できる定数と値

    制御情報の
    種類
    定数(ctl_type)指定値
    (ctl_val)
    意味
    改行JSTQ_TYPE_NLN1~991~99行分改行します
    チャネル
    スキップ
    JSTQ_TYPE_CNL0行送りをしません
    1紙送りチャネル番号C01(改ページ)を指定します
  3. 行出力と行送りのタイミング
    行データを行送り後に出力するか,または行送り前に出力するかを指定します。
    行送り後に行データを出力する場合は「0」を,行送り前に出力する場合は「1」を指定します。0または1以外の値を指定した場合は「0」を仮定します。
(b) リターン情報

関数のリターン値を次に示します。

(c) 注意事項

この関数を発行しない場合でも,ページバッファに格納された行データの数が1ページに印刷できる行数を超えるとき,またはページバッファに格納できるデータ長の制限を超えるときは,自動的に改ページされます。

(6) jstqlcls関数

行データの編集を終了します。

[図データ]

(a) 形式の説明
  1. JSTQL_COMアドレス
    jstqlopn関数で指定したユーザインタフェース領域の先頭アドレスを指定します。
(b) リターン情報

関数のリターン値を次に示します。

(c) 注意事項

この関数を発行したとき,バッファ中に残っている行データは,すべて出力されます。なお,行バッファの文字データは,ページバッファに格納され,ページバッファから出力されます。

(7) リンケージ時の注意事項

ライブラリには,次に示すファイルを指定する必要があります。

Visual C++ .NET,Visual C++ 6.0の場合
XMAP3インストール先¥Lib¥X3klib32.lib
Visual C++ 5.0の場合
XMAP3インストール先¥Lib¥V3Compatible¥X3klib32.lib