Easytrieve Plus : TERMINATIONプロシジャーとFINISHプロシジャーとではどちらが後に実行されるか?
book
Article ID: 185568
calendar_today
Updated On:
Products
EASYPROCLIB
Easytrieve Report Generator
Easytrieve Report Generator for Common Services
Issue/Introduction
Question
TERMINATIONプロシジャーとFINISHプロシジャーとではどちらが後に実行されるか?
Environment
z/OS, MSP, VOS3, IBM, FUJITSU, HITACHI
Resolution
Answer
Easytrieve Plusのレポート出力の処理の流れには以下の2パターンがあります。
1. JOBとREPORTを1つの処理単位とするパターン(VFMを使用しないパターン)
2. JOBとREPORTを切り離した処理とするパターン(VFMを使用するパターン -> 並び換え複数レポート処理など。)
2の場合には、ファイルの入力処理が全件終了してからレポート処理が実行されます。従って。。
ファイルの後処理 → FINISHプロシジャー
レポートの後処理 → TERMINATIONプロシジャー
で処理するように区別します。
記述例
(例1) FINISHプロシジャーの実行
JOB FINISH END-MSG
PRINT
*
END-MSG. PROC
DISPLAY '***チェック・リストはこれで終了***'
END-PROC
*
REPORT
SEQUENCE CODE
TITLE '***チェック・リスト***'
LINE CODE FLD-1 FLD-2 FLD-3
※この場合、FINISHプロシジャー「END-MSG」のDISPLAYは、レポートの出力直前に実行されます。(SEQUENCE処理がありレコードは一端VFMに出力され、最後のレコードが VFMに出力されたあとレポート処理に入る直前にFINISHプロシジャーが実行されるため。)レポートの最後に出力させる場合には、TERMINATIONプロシジャーを使用します。
(例2) FINISHプロシジャー、TERMINATIONプロシジャーの実行
JOB FINISH END-MSG
PRINT
*
END-MSG. PROC
DISPLAY '***チェック・リストはこれで終了***'
END-PROC
*
REPORT
TITLE '***チェック・リスト***'
LINE CODE FLD-1 FLD-2 FLD-3
*
TERMINATION. PROC
DISPLAY 'レポート作成日’ SYSDATE
END-PROC
※この場合、レポートの一番最後に「レポート作成日」が出力され、その直前に「***チェック・リストはこれで終了」が出力されます。(SEQUENCE処理がないため、レコードは順次レポートに出力され、最後のレコードの処理終了後にFINISHプロシジャー「END-MSG」が実行されるため) この場合にも、FINISHプロシジャーで指定した処理はレポートの処理であり、TERMINATIONプロシジャーを使用するのが適当です。
[例2と同処理で、最も適切なコーディング例]
JOB FINISH END-MSG
PRINT
*
REPORT
TITLE '***チェック・リスト***'
LINE CODE FLD-1 FLD-2 FLD-3
*
TERMINATION. PROC
DISPLAY '***チェック・リストはこれで終了***'
DISPLAY 'レポート作成日’SYSDATE
END-PROC
Additional Information
Old Japanese Knowledge document ID: JTEC000991
Feedback
thumb_up
Yes
thumb_down
No