第3章 開発と運用
3.2 開発
2. 下端情報設定処理
フレームの末尾にフッタを出力する必要がある場合、プリンタ装置の制御の下端情報設定を使って、明細のパーティションを配 置可能な下端の位置を指定します。この指定を行わない場合、フッタの開始位置を超えて明細パーティションが配置または拡 張されるため、フッタが明細と重なって印刷される場合があります。
注意
この指定は定義体を切り替える、クローズ処理を行う、改ページ処理を行う、改ブロック処理を行う、または再度下端情報設定処 理を行うまで有効です。下端のデフォルトはフレームの縦幅です。
3. ヘッダ出力処理
ページの先頭に必ず出力するヘッダをパーティション出力を使って印刷します。
4. 明細出力処理
明細をパーティション出力を使って印刷します。
5. 判定処理
明細出力処理でMEFP_RC_ENDFRAMELINK(6B)エラーが発生したかどうかを判定します。MEFP_RC_ENDFRAMELINK(6B) エラーが発生した場合はフッタ出力処理、改ページ処理を行います。
また、後続するリンクフレームが存在するフレームの処理の場合にはMEFP_RC_ENDFRAME(6C)で判定します。その場合、改 ページ処理ではなく改ブロック処理を行います。
6. フッタ出力処理
ページの末尾に必ず出力するフッタをパーティション出力を使って印刷します。
7. 改ページ/改ブロック処理
プリンタ装置の制御の改ページ機能または改ブロック機能を使って改ページを行います。
出力対象のデータが残っている場合には下端情報設定処理(※)を行い、出力対象のデータがない場合にはクローズ処理を行 います。
※フリーフレーム形式の帳票定義体の場合、改ページ処理や改ブロック処理により下端情報がデフォルトになるため、再度設定 が必要になります。
8. クローズ処理
クローズ処理を行い、プリンタをクローズします。
3.2.1 利用者プログラムの開発
C言語での利用者プログラムの開発について説明します。
■利用者プログラムの記述
利用者プログラムは、C言語アプリケーションとして記述し翻訳します。アプリケーションの作成については使用するコンパイラのマ ニュアルなどを参照してください。
■環境変数LD_LIBRARY_PATH
環境変数LD_LIBRARY_PATHには、MeFtおよび利用者プログラムが必要とするライブラリの格納ディレクトリを指定します。
例
- bashをシェルとしている場合の環境変数の設定例を示します。
export LD_LIBRARY_PATH=/opt/FJSVXmeft/lib
■翻訳とリンク
利用者プログラムのリンク時には、-IオプションでMeFtのインクルードの格納ディレクトリを指定します。
さらに、利用者プログラムのリンク時には、-LオプションでMeFtのインストールディレクトリ、Cライブラリおよび利用者プログラムが必 要とするライブラリの格納ディレクトリ、-lオプションでCライブラリおよび利用者プログラムが必要とするライブラリ、ライブラリ名および mimtfを指定します。
例
- MeFtを使用するプログラムsample.c、オブジェクト名sampleの翻訳~リンク例を示します。
gcc -o sample sample.c -I/opt/FJSVXmeft/include -L/opt/FJSVXmeft/lib -lmimtf -ldl
- MeFtを使用するプログラムのオブジェクトsample.oのリンクの例を示します。
ld -o sample sample.o -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 /usr/lib64/crt1.o /usr/lib64/crti.o /usr/lib64/crtn.o -L/opt/FJSVXmeft/lib -lmimtf -ldl -lc
COBOL言語での利用者プログラムの開発について説明します。詳細については、COBOLの使用手引書を参照してください。
■利用者プログラムの記述
利用者プログラムは、MeFtの印刷機能を利用する場合、FORMAT句付き印刷ファイル、もしくは表示ファイルを使用した出力とし て記述します。
■環境変数LD_LIBRARY_PATH
環境変数LD_LIBRARY_PATHには、MeFtのインストールディレクトリ、Cライブラリ、COBOLライブラリおよび利用者プログラムが 必要とするライブラリの格納ディレクトリを指定します。
■翻訳とリンク
翻訳オプション-mを指定し、出力を行う画面帳票定義体を格納したディレクトリのパス名を記述します。
スレッド上での動作
スレッド上で動作する場合の注意事項について説明します。
注意
スレッド上で動作する場合の注意事項
各種サービスアプリケーションはサービス配下でアプリケーションを動作させるときに、スレッド配下で動作させる場合があります。MeFt のC言語インタフェースはマルチスレッド対応されておりませんので、生成されたスレッド上でアプリケーションを動作させることはできま せん。ただし、以下に示すライブラリをldコマンドでリンクすることにより、サービス配下のマルチスレッド配下で動作させることが可能と なります。
リンクするライブラリ 用途および対応する通常のライブラリ
libpthread.so 必須
librcobol.so COBOLアプリケーションの場合(libcobol.so)
なお、上記のスレッド用のライブラリをリンクしたプログラムと、通常のライブラリをリンクしたプログラムを同じプロセス上で混在して実行 させることはできません。
・ マルチスレッド配下で動作させるプログラムsample.c、オブジェクト名sampleの翻訳~リンク例を示します。
gcc -o sample sample.c -I/opt/FJSVXmeft/include -L/opt/FJSVXmeft/lib -lrmimtf -lpthread -ldl -D_REENTRANT
・ COBOL言語でのマルチスレッド配下で動作させるプログラムsample.cob、共用オブジェクト名libsample.soの翻訳~リンク例を示し
ます。
cobol -G -o libsample.so -Tm sample.cob
3.2.2 プリンタ情報ファイルの確認
プリンタ情報ファイルの有効値を確認する手段として、確認機能があります。プリンタ情報ファイル確認機能とは、MeFtが動作する上 で必要なプリンタ情報ファイルに関する情報、プリンタ一覧、および環境変数等のシステムに関する情報をファイルとして作成する機 能です。
プリンタ情報ファイル確認機能により採取した情報は、ファイルとして格納されます。このファイルをプリンタ情報確認ファイルと呼びま す。プリンタ情報確認ファイルはテキスト形式のファイルです。
プリンタ情報ファイル確認機能で採取可能な情報を以下に示します。
・ 環境変数の指定値(MEFTDIRなど)
・ 採用したプリンタ情報ファイル名
・ プリンタ情報ファイル指定(オープンで指定したプリンタ情報ファイル)
・ 指定したプリンタ情報ファイルの指定
・ 採用したプリンタ情報ファイルの値(デフォルト値を含む)
これらの情報を参照することにより、運用環境、プリンタ情報ファイルの指定値を確認することができます。
プリンタ情報ファイル確認機能を利用するには、アプリケーションを起動する前に環境変数[MEFTPTCHK]を指定します。
[環境変数] MEFTPTCHK
[設定値] Y : プリンタ情報確認ファイルを作成します。
Y以外: プリンタ情報確認ファイルは作成されません。
[出力情報] プリンタ情報確認ファイルの出力先、およびファイル名は以下のとおりです。
・ プリンタ情報ファイルが指定されている場合
- 環境変数[MEFTTMP]が指定されていれば、指定されたディレクトリにMEFTPRTディレ クトリが作成され、プリンタ情報ファイル名に".TXT"を付加した名前でプリンタ情報確認 ファイルが作成されます。ただし、プリンタ振り分け機能(DISTRIBUTE)の指定がある場 合は、"プリンタ振り分け情報ファイル名"にnnnnn.TXT(nnnnnはDISTRIBUTE指定数の 連番)を付加した名前でプリンタ情報確認ファイルが作成されます。
- 環境変数[MEFTTMP]が省略されていた場合、システム作業域(環境変数[TMPDIR])の 配下に上記の規約どおり、作成されます。
[省略値] プリンタ情報確認ファイルは作成されません。
[補足] ・ 振り分け情報ファイルが指定されている場合、DISTRIBUTEで指定されているプリンタ情報 ファイルごとにプリンタ情報確認ファイルが作成されます。振り分け情報ファイルの確認ファ イルは作成されません。
・ プリンタ情報確認ファイル作成中にエラーが発生した場合、採取可能な情報をすべて採取 し、最初に発生したエラーが通知されます。確認ファイル作成中に発生するエラーを以下に 示します。
通知コード : エラー内容
MEFD_RC_OPEN(10) : プリンタ装置のアクセスに失敗
MEFD_RC_ACCESS(18) : ファイルのアクセスエラー 指定ディレクトリが存在しない
(環境変数MEFTTMPの指定誤り) MEFD_RC_WRK(21) : メモリ不足
プリンタ情報確認ファイルの構造について説明します。
例
プリンタ情報ファイルの形式例
作成されるプリンタ情報確認ファイルの形式例を以下に示します。
[PROFILE]
MEFTDIR=/MeFt/Env [PRINTERINFO]
GETFILENAME="/MeFt/Env/Prtfile.env"
SETFILENAME="Prtfile.env"
[DATAFILE]
PRTDRV PS2 * プリンタ機種 PRTNAME PSprinter * 出力プリンタ名 SUPLY H1 * 給紙方法
MEDDIR /MeFt/MED * 定義体格納ディレクトリ [DESCRIPTION]
PRTDEV PS2 PRTNAME PSprinter SUPLY H1
MEDDIR /MeFt/MED FORMSIZE A4 SUPLY H1 PRTFORM PO :
1. 環境変数の指定値
指定されているすべての環境変数を[PROFILE]セクションに通知します。なお、セクション内の記述形式は、システムから通知 されるフォーマットに準拠します。
2. 採用したプリンタ情報ファイル名
採用したプリンタ情報ファイルのフルパスファイル名を[PRINTERINFO]セクションのGETFILENAMEキーにダブルクォーテーション
(")で括って通知します。
3. プリンタ情報ファイル指定
指定したプリンタ情報ファイルを[PRINTERINFO]セクションのSETFILENAMEキーにダブルクォーテーション(")で括って通知 します。
4. 採用したプリンタ情報ファイルの指定
読み込んだプリンタ情報ファイルの内容を[DATAFILE]セクションに通知します。[DATAFILE]セクションには、採用したプリン タ情報ファイルの内容とINCLUDE指定したファイルの内容を設定します。
セクション内の記述形式は、プリンタ情報ファイルの指定形式に準拠します。
INCLUDE指定を行った場合の出力イメージを記述します。なお、INCLUDE指定のファイルを展開する場合は、オープン時に
指定したプリンタ情報ファイルの内容と混在しないようにオープン時のプリンタ情報ファイルの内容を設定した後方に、INCLUDE 指定のプリンタ情報ファイルの内容を設定します。また、INCLUDE指定のファイルが見つからなかった場合は、指定したプリン タ情報ファイルが見つからなかったことをコメントとして書き出します。
[DATAFILE]
PRTDEV PS2 PRTNAME PSprinter
INCLUDE "/MeFt/INC/FILE1.ENV"
MEDDIR "/MeFt/MED"
INCLUDE "/MeFt/INC/FILE2.ENV"
* INCLUDE "/MeFt/INC/FILE1.ENV" ←MeFtが生成するコメント INCLUDE "/MeFt/INC/FILE1.ENV"で指定した情報を転記
* INCLUDE "/MeFt/INC/FILE2.ENV" [not found] ←MeFtが生成するコメント
5. 採用したプリンタ情報ファイルの値(デフォルト値を含む)
採用したプリンタ情報ファイルの値を[DESCRIPTION]セクションに通知します。
採用したプリンタ情報ファイルとは、指定された設定値と指定が省略されたキーワードのデフォルト値の情報を含んだもので す。また、キーワードの設定値で文字列を通知するものについては、設定値全体をダブルクォーテーション(")で括って通知し ます。置換フォント指定は、置換前フォント名/置換後フォント名をそれぞれダブルクォーテーション(")で括ります。
プリンタ情報ファイル内のコメントは、通知しません。
なお、セクション内の記述形式は、プリンタ情報ファイルの指定形式に準拠します。キーワードと設定値の間は、タブで区切っ て出力します。