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

Document created by Masaaki_Iyama Employee on Jun 19, 2015
Version 1Show Document
  • View in full screen mode

文書番号: JTEC000991

製品名: CA-Easytrieve Plus

バージョン: ALL

OS: z/OS, MSP, VOS3

 

Question

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

 

Answer

EASYPLUSのレポート出力の処理の流れには以下の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

Attachments

    Outcomes