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


12.3.1 行データの帳票印刷(C言語)

〈この項の構成〉

(1) jstqlopn関数

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

形式
 #include "jstqlcom.h"
 long APIENTRY jstqlopn(com)
 JSTQL_COM        *com;                   …… 1.

(a) 形式の説明

  1. JSTQL_COMアドレス

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

    表12‒11 ユーザインタフェース領域の形式

    属性および名称

    位置

    長さ

    内容

    備考

    (バイト)

    unsigned char lcomid

    0

    4

    テーブル

    ID:'XMP3'

    jstqlopn関数を呼び出す前に設定します

    unsigned char *lcomsvnm

    4

    4

    印刷サービス名のアドレス

    unsigned char lcomdevnm

    8

    6

    予備

    jstqlopn関数を呼び出す前に必ず,NULL(0x00)でクリアします※1

    unsigned char lcomrsv1

    14

    2

    予備

    unsigned char lcompgcnm

    16

    8

    予備

    unsigned char lcomrsv2

    24

    4

    予備

    unsigned char *lcompgedr

    28

    4

    予備

    long lcomrc

    32

    4

    リターンコード

    関数呼び出し後に参照します※3

    long lcomerr

    36

    4

    エラー詳細コード※2

    unsigned char lcomsync

    40

    1

    予備

    jstqlopn関数を呼び出す前に必ずNULL(0x00)でクリアします※1

    unsigned char lcomrsv3

    41

    1

    予備

    unsigned char lcomrsv4

    42

    1

    予備

    unsigned char lcomrsv5

    43

    1

    予備

    unsigned char lcomrsv6

    44

    12

    予備

    unsigned char *lcomxppdr

    56

    4

    予備

    unsigned char lcomperr

    60

    4

    ページ制御エラー情報

    ページ制御のエラー発生時に参照します※3

    unsigned char *lcomxperr

    64

    4

    予備

    jstqlopn関数を呼び出す前に必ずNULL(0x00)でクリアします※1

    unsigned char lcomwrk

    68

    188

    XMAP3の作業領域

    jstqlopn関数を呼び出す前に必ずNULL(0x00)でクリアします※1

    注※1

    NULL(0x00)でクリアしたあとは,使用しないでください。

    注※2

    エラー詳細コードについては,「付録F リターンコードと詳細コード」を参照してください。

    注※3

    各関数を呼び出す前に,必ずNULL(0x00)でクリアしてください。

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

  • lcomid(テーブルID)

    テーブルIDとして文字列'XMP3'を設定します。

  • lcomsvnm(印刷サービス名アドレス)

    印刷サービス名は,14バイト以内の文字列で,NULLを終端とします。印刷サービス名は,スタンドアロン環境では,必ず,表示・印刷セットアップの[プリンタ]タブの印刷モードに,ページプリンタ用として定義したサービス名を指定します。C/Sシステム環境の場合は,C/Sセットアップの印刷サービス名と同じ名称を指定します。

    印刷サービス名アドレスの指定がNULLポインタのとき,文字列がNULLまたはスペースだけのときは,環境変数「XMAP3_PSNAME」で指定した名称が仮定されます。環境変数の指定がない場合は,印刷サービス名として「#PRT」が仮定されます。

(b) リターン情報

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

  • 0:正常終了

  • 8:異常終了(ユーザインタフェース領域内のエラー詳細コードを参照してください)

  • 12:パラメタ不正(ユーザインタフェース領域のアドレスまたはIDが不正です)

(2) jstqlpag関数

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

形式
 #include "jstqlcom.h"
 long APIENTRY jstqlpag(com,pgcnm,rsv,ovlname)
 JSTQL_COM          *com;                    …… 1.
 unsigned char      *pgcnm;                  …… 2.
 unsigned char      *rsv;                    …… 3.
 unsigned char      *ovlname;                …… 4.

(a) 形式の説明

  1. JSTQL_COMアドレス

    jstqlopn関数で指定したユーザインタフェース領域の先頭アドレスを指定します。

  2. 予備

    必ず,NULLを指定します。

  3. 予備

    必ず,NULLを指定します。

  4. 書式名格納領域のアドレス

    書式名(マップ名にIDを付けた名称(IDはマップ名が6文字のときは6G,7文字のときはF))が格納されている領域のアドレスを必ず指定します。書式名は,8バイト以内の文字列で,NULLを終端とします。書式名を9バイト以上で指定した場合は,先頭から8バイト分を書式名と見なします。

    書式名の指定がNULLポインタのとき,文字列がNULLまたは空白だけのときは,環境変数「XMAP3_FMP」で指定した名称が仮定されます。

(b) リターン情報

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

  • 0:正常終了

  • 8:異常終了(ユーザインタフェース領域内のエラー詳細コードを参照してください)

  • 12:パラメタ不正(ユーザインタフェース領域のアドレスまたはIDが不正です)

(c) 注意事項

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

(3) jstqlctp関数

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

形式
 #include "jstqlcom.h"
 long APIENTRY jstqlctp(com,argpt,cnt)
 JSTQL_COM        *com;                    …… 1.
 JSTQL_CTL        *argpt;                  …… 2.
 long             cnt;                    …… 3.

(a) 形式の説明

  1. JSTQL_COMアドレス

    jstqlopn関数で指定したユーザインタフェース領域の先頭アドレスを指定します。

  2. JSTQL_CTLアドレス

    行データの制御情報を設定する制御情報テーブルの先頭アドレスを指定します。制御情報テーブルの形式と,制御情報テーブルに指定できる定数と値を次の図に示します。

    図12‒3 行データの制御情報テーブル(JSTQL_CTL)の形式
     typedef struct{
          long ctl_type;
          long ctl_val;
     }JSTQL_CTL;
     #define JSTQ_TYPE_PNT  1
     #define JSTQ_TYPE_INT  2
     #define JSTQ_TYPE_FMT  3
     #define JSTQ_TYPE_WID  4
    表12‒12 行データの制御情報テーブル(JSTQL_CTL)に指定できる定数と値

    制御情報の

    種類

    定数(ctl_type)

    指定値

    (ctl_val)

    意味

    文字サイズ

    JSTQ_TYPE_PNT

    50

    文字サイズに5ポイントを指定します

    70

    文字サイズに7ポイントを指定します

    90

    文字サイズに9ポイントを指定します

    120

    文字サイズに12ポイントを指定します

    文字の間隔

    JSTQ_TYPE_INT

    0

    文字の間隔を指定しません

    1〜7

    文字の間隔に1〜7ポイントを指定します

    書体

    JSTQ_TYPE_FMT

    0

    書体を元に(標準値に)戻します

    1

    書体に明朝体を指定します

    2

    書体にゴシック体を指定します

    9

    書体にOCR体を指定します

    拡大(平体)

    JSTQ_TYPE_WID

    0

    拡大を指定しません

    1

    拡大を指定します

    注※

    OCR体は,文字サイズに9ポイントを指定したときだけ有効です。

  3. 項目数

    制御情報テーブル中に設定した制御情報の項目数(1以上の値)を指定します。

 JSTQL_CTL arg[4];
 long     cnt;
 
 cnt = 0;
 argpt[cnt].ctl_type = JSTQ_TYPE_PNT;       ……文字サイズの設定
 argpt[cnt].ctl_val = 90;                   ……9ポイントを指定
 cnt++;
 argpt[cnt].ctl_type = JSTQ_TYPE_FMT;       ……書体の設定
 argpt[cnt].ctl_val = 1;                    ……明朝体を指定
 cnt++;
 jstqlctp(com,argpt,cnt);                   ……文字サイズと書体の制御情報編集

(b) リターン情報

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

  • 0:正常終了

  • 8:異常終了(ユーザインタフェース領域内のエラー詳細コードを参照してください)

  • 12:パラメタ不正(ユーザインタフェース領域のアドレスまたはIDが不正です)

(c) 注意事項

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

(4) jstqldat関数

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

形式
 #include "jstqlcom.h"
 long APIENTRY jstqldat(com,datp,datl)
 JSTQL_COM          *com;                   …… 1.
 unsigned char      *datp;                  …… 2.
 long                datl;                  …… 3.

(a) 形式の説明

  1. JSTQL_COMアドレス

    jstqlopn関数で指定したユーザインタフェース領域の先頭アドレスを指定します。

  2. 文字データのアドレス

    出力する文字データ(行データ)のアドレスを指定します。

  3. 文字データの長さ

    出力する文字データ(行データ)の長さを,バイト数で指定します。

(b) リターン情報

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

  • 0:正常終了

  • 8:異常終了(ユーザインタフェース領域内のエラー詳細コードを参照してください)

  • 12:パラメタ不正(ユーザインタフェース領域のアドレスまたはIDが不正です)

(c) 注意事項

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

(5) jstqllpt関数

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

形式
 #include "jstqlcom.h"
 long APIENTRY jstqllpt(com,argpt,tim)
 JSTQL_COM        *com;                    …… 1.
 JSTQL_CTL        *argpt;                  …… 2.
 long              tim;                    …… 3.

(a) 形式の説明

  1. JSTQL_COMアドレス

    jstqlopn関数で指定したユーザインタフェース領域の先頭アドレスを指定します。

  2. JSTQL_CTLアドレス

    行送り情報を設定する制御情報テーブルの先頭アドレスを指定します。制御情報テーブルの形式と,制御情報テーブルに指定できる定数と値を次に示します。

    図12‒4 行送りの制御情報テーブル(JSTQL_CTL)の形式
     typedef struct{
          long ctl_type;
          long ctl_val;
     }JSTQL_CTL;
     #define JSTQ_TYPE_NLN  2
     #define JSTQ_TYPE_CNL  3
    表12‒13 行送りの制御情報テーブル(JSTQL_CTL)に指定できる定数と値

    制御情報の

    種類

    定数(ctl_type)

    指定値

    (ctl_val)

    意味

    改行

    JSTQ_TYPE_NLN

    1〜99

    1〜99行分改行します

    チャネル

    スキップ

    JSTQ_TYPE_CNL

    0

    行送りをしません

    1

    紙送りチャネル番号C01(改ページ)を指定します

  3. 行出力と行送りのタイミング

    行データを行送り後に出力するか,または行送り前に出力するかを指定します。

    行送り後に行データを出力する場合は「0」を,行送り前に出力する場合は「1」を指定します。0または1以外の値を指定した場合は「0」を仮定します。

(b) リターン情報

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

  • 0:正常終了

  • 8:異常終了(ユーザインタフェース領域内のエラー詳細コードを参照してください)

  • 12:パラメタ不正(ユーザインタフェース領域のアドレスまたはIDが不正です)

(c) 注意事項

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

(6) jstqlcls関数

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

形式
 #include "jstqlcom.h"
 long APIENTRY jstqlcls(com)
 JSTQL_COM        *com;                   …… 1.

(a) 形式の説明

  1. JSTQL_COMアドレス

    jstqlopn関数で指定したユーザインタフェース領域の先頭アドレスを指定します。

(b) リターン情報

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

  • 0:正常終了

  • 8:異常終了(ユーザインタフェース領域内のエラー詳細コードを参照してください)

  • 12:パラメタ不正(ユーザインタフェース領域のアドレスまたはIDが不正です)

(c) 注意事項

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