ABAP

【ABAP】EXIT/CONTINUE命令―ループパスの強制終了

本ページでは、ループ処理の強制終了に関するEXIT命令とCONTINUE命令について解説しています。

EXIT命令は、その名の通り「抜ける」という意味でループ処理の強制終了をイメージしやすい分使用頻度が高いです。

ただし、CONTINUE命令もEXIT命令とほぼ同様の動きをする命令でなので合わせて知っておくと可読性の高いコーディングの一助となるでしょう。

両者の使い分けと、実際の構文ルールを中心にサンプルコードを用いながら解説していきます。

※ループ処理についてはこちらのページで解説しておりますので、合わせてご参照ください。

構文ルール:EXIT命令

EXIT.

構文は難しくありません。

EXIT.と記述するだけです。EXITを日本語に直すと “出る” “退出する” 等の意味になります。

EXIT命令の処理内容

EXIT命令を記述すると、無条件にループ処理を抜けます。

実際のサンプルコードを見てみましょう。システム項目「SY-INDEX」が10を超えた場合に「DO~ENDDO」のループ処理を抜けます。

※SY-INDEX は、ループ処理の回数を保持します。

DO.
 IF SY-INDEX > 10.
  
EXIT.
 ENDIF.
 A =A+1.
ENDDO.

EXIT命令は、基本的にはIF文とセットで用います。

構文ルール:CONTINUE命令

CONTINUE.

構文ルールは、EXIT命令と同様簡素な形をとります。

CONTINUEは日本語で、”続ける” “続く” 等の意味を持つため誤解しやすいですが、基本的にはEXIT命令と同じ処理になります。

CONTINUE命令の処理内容

CONTINUE命令を記述すると、ループ処理を無条件に終了します。

EXIT命令と同様、サンプルコードを見てみましょう。先ほどのコードとの差異は、EXIT命令がCONTINUE命令に入れ替わっているだけです。

DO.
 IF SY-INDEX > 10.
  CONTINUE.
 ENDIF.
 A =A+1.
ENDDO.

処理内容や用い方は、EXIT命令と全く同様なのです。

EXIT命令とCONTINUE命令の違い

EXIT命令とCONTINUE命令の違いは1点だけ。

それは、ループ処理の外でも使えるかどうか?です。

EXIT命令は、ループの処理の外に記述することが可能です。

ループの処理の外に記載した場合は、処理ブロック(汎用モジュール・サブルーチン・イベント)を終了する処理を行います。

CONTINUE命令は、ループの処理の外に置くことはできません。

したがって、CONTINUE命令を用いている場合は、必ずループ処理であることを明示できることになります。ルール処理がネストされている場合など、複雑なコードの中にあっては、CONTINUE命令を利用したほうが可読性が上がるでしょう。

ループ処理の「条件付き」終了

EXIT命令とCONTINUE命令は、ループ処理の「強制」終了を行う命令です。

その上で、IF文などを伴わずに「条件付き」終了の処理を行うCHECK命令についても理解しておくと良いでしょう。

CHECK命令については、こちらのページで解説しておりますので、合わせてご参照ください。

ループを抜ける処理を行いたい場合は、EXIT命令、CONTINUE命令、そしてCHECK命令のいずれかを適切に選択して利用することが大切です。