ヘッダ、フッタ、ボディに定義された項目を出力する場合、パーティション項目群名としてヘッダの場合は'HEAD'、フッタの場合は'FOOT'、ボディの場合は'BODY'を指定してパーティション出力を行います。なお、これらのパーティションを出力してもフレームに定義されたパーティションは出力されません。
ps_write_partition(psfile, “HEAD”, PS_WP_POSISION, 1, pRecord); /* ヘッダの出力 */ ps_write_partition(psfile, “BODY”, PS_WP_AFTERFEED, 1, pRecord); /* ボディの出力 */ ps_write_partition(psfile, “FOOT”, PS_WP_AFTERFEED, 1, pRecord); /* フッタの出力 */
* ヘッダの出力 MOVE "HEAD" TO PRT-GROUP. MOVE "PW" TO PRT-MODE. MOVE "P001" TO PRT-CONTROL. WRITE SAMP.
* ボディの出力 MOVE "BODY" TO PRT-GROUP. MOVE "PW" TO PRT-MODE. MOVE "A001" TO PRT-CONTROL. WRITE SAMP.
* フッタの出力 MOVE "FOOT" TO PRT-GROUP. MOVE "PW" TO PRT-MODE. MOVE "A001" TO PRT-CONTROL. WRITE SAMP.
フレームに定義されたフレームパーティションを出力する場合、パーティション項目群名を指定して出力を行います。
例
支給項目のフレームを例にすると以下のようになります。
ps_write_partition(psfile, “CH1”, PS_WP_POSISION, 1, pRecord); /* CH1の出力 */ ~ レコード域の支給項目名に"基本給"を設定し、支給金額に金額を設定 ~ ps_write_partition(psfile, “DE”, PS_WP_AFTERFEED, 1, pRecord); /* DEの出力 */ ~ レコード域の支給項目名に"時間外手当"を設定し、支給金額に金額を設定 ~ ps_write_partition(psfile, “DE”, PS_WP_AFTERFEED, 1, pRecord); /* DEの出力 */ ~ レコード域の支給項目名に"その他"を設定し、支給金額に金額を設定 ~ ps_write_partition(psfile, “DE”, PS_WP_AFTERFEED, 1, pRecord); /* DEの出力 */ ~ レコード域の支給合計に合計金額を設定 ~ ps_write_partition(psfile, “CF1”, PS_WP_AFTERFEED, 1, pRecord); /* CF1の出力 */
* 制御頭書きの出力 MOVE "CH1" TO PRT-GROUP. MOVE "PW" TO PRT-MODE. MOVE "P001" TO PRT-CONTROL. WRITE SAMP.
* 明細の出力 ~ レコード域の支給項目名に"基本給"を設定し、支給金額に金額を設定 ~ MOVE "DE" TO PRT-GROUP. MOVE "PW" TO PRT-MODE. MOVE "A001" TO PRT-CONTROL. WRITE SAMP. ~ レコード域の支給項目名に"時間外手当"を設定し、支給金額に金額を設定 ~ MOVE "DE" TO PRT-GROUP. MOVE "PW" TO PRT-MODE. MOVE "A001" TO PRT-CONTROL. WRITE SAMP. ~ レコード域の支給項目名に"その他"を設定し、支給金額に金額を設定 ~ MOVE "DE" TO PRT-GROUP. MOVE "PW" TO PRT-MODE. MOVE "A001" TO PRT-CONTROL. WRITE SAMP.
* 制御脚書きの出力 MOVE "CF1" TO PRT-GROUP. MOVE "PW" TO PRT-MODE. MOVE "A001" TO PRT-CONTROL. WRITE SAMP.
指定されたパーティション項目群名により自動的にフレームが選択され、フレームの位置に出力されます。
浮動パーティションの場合、当該フレームの最初のパーティション出力の場合はフレーム先頭に、また2回目以降の出力の場合は、前回まで出力していた位置から継続して出力されます。固定パーティションはフレーム内の定義された位置に出力されます。
上記の出力例では"CH1"(浮動パーティション)を指定すると、支給項目のフレームの先頭にCH1が出力され、"DE"(浮動パーティション)はCH1に続けて出力されます。
例における「控除項目」「就業項目」のフレームも同様の出力となります。
フレームパーティションの出力は、フレーム単位で出力してください。複数のフレームのパーティションを交互に出力した場合、当該フレームの最初の出力とみなされ、必ずフレームの先頭に出力されてしまいます。
たとえば、支給項目のフレームの"CH1"を出力後, 控除項目のフレームの"CH2"を出力し、次に支給項目のフレームの“DE”を出力した場合、"DE"は支給項目のフレームの先頭にCH1と重なって出力されます。
従って正しい出力結果を得るためには1個のフレーム内の対象となる処理をすべて完了した後、他のフレームに対する処理を行う必要があります。
ヘッダ、フッタ、ボディの出力とフレームパーティションの出力はどちらを先に行っても構いません。
フリーフレーム形式の場合、現在のプリンタヘッドの位置より上に固定パーティションを出力した場合でも改ページは行われません。重ね書きされます。改ページが必要な場合は利用者プログラムで明に改ページ制御を行う必要があります。
フレームサイズを超えて項目群を出力するとMEFP_RC_ENDFRAMELINK(6B)のエラーになります。
多目的プリンタ機能を使用した印刷でフレーム形式の印刷が指定された場合は、MEFP_RC_BLOCK(7B)のエラーになります。
COBOLのFORMAT句付き印刷ファイルで行レコード出力を行うとMEFP_RC_BLOCKLW(6A)のエラーになります。行レコード出力は行わないでください。
COBOLのFORMAT句付き印刷ファイルで改ページや改フレームを行った場合、MEFP_RC_BLOCKLW(6A)のエラーになります。COBOLの表示ファイルで出力するか、フリーフレーム形式以外の定義体に変更してください。