本ページでは、ループ処理の強制終了を行うEXIT命令とCONTINUE命令について解説しています。
EXIT命令は、その名の通り「抜ける」という意味でループ処理の強制終了をイメージしやすい分使用頻度が高いです。
ただし、CONTINUE命令もEXIT命令と似たような動きをする命令でなので合わせて覚えておきましょう。
両者の使い分けと、実際の構文ルールを中心にサンプルコードを用いながら解説していきます。ABAPerであれば最低限知っておきたい基本知識ですので、是非最後までご覧ください。
前提:ループ処理(繰り返し処理)とは?
ループ処理(繰り返し処理)とは、その名の通り同じ処理を複数回繰り返す処理のことです。
例えば、「こんにちは!」という文字を100回表示させたい場合。
この場合、ループ処理を用いないと「こんにちは!」という処理を100個記述しなければなりませんが、ループ処理を用いることで、複数回必要とする処理も1回の記述で行うことができます。
ABAPでは、DO命令/WHILE命令で繰り返し処理を実装します。
このループ処理ですが、例えば処理の途中でエラーを検知した場合や、特定の条件に合致する場合のみ、処理を中断させたい場合などが存在します。
この、ループ処理中で処理を止めたい場合に用いるのが、本ページで解説するEXIT命令とCONTINUE命令です。
構文ルール: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文とセットで用いることが多いため、合わせて覚えておくとGood。
条件分岐を記述する命令です。
条件分岐とは、プログラム中である条件を満たしているかどうかを判定し、満たしている場合/満たしていない場合に応じて処理を変えることです。
基本的には、「もし○○ならば××せよ」というような書き方で処理の内容を分岐させていきます。
構文ルール:CONTINUE命令
CONTINUE.
構文ルールは、EXIT命令と同様簡素な形をとります。ただし、処理内容は微妙に異なります。
EXIT命令
⇒ループ全体を抜ける
CONTINUE命令
⇒処理中のレコードを抜ける(次のレコード処理に移る)
CONTINUE命令の処理内容
CONTINUE命令では、ループ処理を無条件に終了します。
CONTINUEは日本語で、"続ける" "続く" 等の意味を持つ通り、処理中のレコードの処理を抜けて「次のループ処理に進む」という意味になります。
EXIT命令が、ループ全体を抜ける命令であるのに対して、CONTINUE命令はループ中の当該レコードの処理を抜けるという意味になるのに注意しましょう。
EXIT命令と同様、サンプルコードを見てみましょう。先ほどのコードとの差異は、EXIT命令がCONTINUE命令に入れ替わっているだけです。
DO 20 TIMES.
IF SY-INDEX > 10.
CONTINUE.
ENDIF.
A =A+1.
ENDDO.
このように記述すれば、ループ処理は11個目以降の処理をスキップすることになります。
さらに詳しく:EXIT命令とCONTINUE命令の違い
EXIT命令とCONTINUE命令の違いをさらに詳しく、1点だけ説明します。
それは、ループ処理の外でも使えるかどうか?という点です。
EXIT命令は、ループの処理の外に記述することが可能です。
ループの処理の外に記載した場合は、処理ブロック(汎用モジュール・サブルーチン・イベント)を終了する処理になります。
一方で、CONTINUE命令はループの処理の外に置くことはできません。
ループ処理の「条件付き」終了
EXIT命令とCONTINUE命令は、ループ処理の「強制」終了を行う命令です。
その上で、IF文などを伴わずに「条件付き」終了の処理を行うCHECK命令についても理解しておくと良いでしょう。
CHECK命令については、こちらのページで解説しておりますので、合わせてご参照ください。
ループを抜ける処理を行いたい場合は、EXIT命令、CONTINUE命令、そしてCHECK命令のいずれかを適切に選択して利用することが大切です。
ABAPを1から勉強したい方は
ABAPを1から学習したい方のために、ABAPの基本知識・基礎概念を1つのページにまとめました。
現在、完全無料で公開しておりますので、是非ご覧ください!