STOPステートメントとSTOP EXECUTEステートメントとの違いは? PRINTステートメントを実行しているのにレポートが出力されない。(STOP EXECUTE使用)

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

文書番号: JTEC000995

製品名: CA-Easytrieve Plus

バージョン: ALL

OS: z/OS, MSP, VOS3

 

Question

STOPステートメントとSTOP EXECUTEステートメントとの違いは?

PRINTステートメントを実行しているのにレポートが出力されない。(STOP EXECUTE使用) 

 

Answer

STOPステートメントとSTOP EXECUTEステートメントとでは終了処理が異なります。

STOP ステートメントで終了の指示をすると、FINISHプロシジャーを実行してからそのJOBの処理を終了し、複数JOBの場合は次のJOBの実行を開始します。 STOP EXECUTEで終了の指示をすると、その場ですべての処理を終了するのでFINISHプロシジャーも、後続のJOBも実行されません。また、VFMを経由するレポートも出力されません。(VFMを経由するレポートとは、SEQUENCE処理のあるレポート、または複数レポート機能を使用した2番目以降のレポ-トです。)

 

● 終了処理の流れ  (以下の例では、JOB1、JOB2は、複数JOBにおける、それぞれのJOB名とします。)

<STOPステートメントの場合>                                          <STOP EXECUTEステートメントの場合>

JOB1                                                  JOB1 

  JOBアクティビティ処理                                           JOBアクティビティ処理         

  ~                                                     

  STOPステートメント実行  →→ FINISH処理前へ                    STOP EXECUTEステートメント実行  →→ 即時、全処理終了(JOB1、JOB2全て終了)へ

  ~                                                     ~ 

  ↓                                                     

FINISH処理                                                           FINISH処理

  ↓                                                     ↓   

REPORT処理                                                REPORT処理 

  ↓                                                     ↓

JOB1の全処理終了                                            JOB1の全処理終了

  ↓                                                     

JOB2                                                                JOB2

  ↓                                                     

  終 了                                                                終 了

 

                                           

記述例

(例)  自動入力をしない場合STOPとSTOP EXECUTEを使い分ける

FILE   FILEA  VS

         ~

  JOB  INPUT  NULL  FINISH  FINAL-RTN

       GET FILEA STATUS

       DO WHILE  NOT EOF FILEA

             IF FILE-STATUS  NOT  ZERO

                DISPLAY  ‘入力エラー FILE-STATUS ='   FILE-STATUS

                STOP EXECUTE

             END-IF

             IF FIELDA  SPACE

                PRINT

                CNT  =  CNT  +  1

             END-IF

      END-DO

      STOP

   FINAL-RTN.  PROC

      DISPLAY  ‘正常終了  '   CNT   '件出力'

   END-PROC

   REPORT

      SEQUENCE  CODE

      TITLE  '***  チェック・リスト ***'

      LINE    CODE  NAME  SURYO  DATE

                                        

※このような処理の場合、STOP EXECUTEで終了するとFINISHプロシジャーは実行されず、レポートは出力されません。(SEQUENCE処理があり、VFMを経由しているため。)STOPで終了した場合にはFINISHプロシジャーは実行されレポートも出力されます。

STOP/STOP EXECUTEの使い分けとして、自動入力しない場合やファイルの件数は多いが処理するデータが限られているというような場合の途中で打ち切っても正常処理としたい時はSTOP処理を、また、継続しても意味を持たない処理を無効にするような時は、STOP EXECUTEを使用するのが適当です。

Attachments

    Outcomes