Easytrieve Plus : TERMINATIONプロシジャーとFINISHプロシジャーとではどちらが後に実行されるか?
search cancel

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