【ABAP】CHECK命令―ループパスの条件付き終了

ABAP

ABAPのCHECK命令について整理します。

CHECK命令は、一般的にはある条件を満たさない場合にループ処理を抜ける命令です。

ループの外でCHECK命令を行った場合には、現在の処理ブロックを終了します。(例えば、サブルーチンであれば、そのサブルーチンの処理を終了し、次のブロックに移ります。)

CHECK命令については、どういった場面で利用するのか?実際のコーディングはどのように行うのか?

この2点について、複数人から質問いただきましたので、超簡易的なサンプルコード付きで解説します。

このページでは、ループ処理についての知識が前提になります。参考に、ループ処理(DO/WHILE)についての記事を貼っておきます。

早速解説を始めます。

スポンサーリンク
スポンサーリンク

構文ルール:CHECK命令

CHECK (論理式).

(論理式)の部分は「SY-SUBRC = 0」のように比較演算子を用います。

構文ルールは簡単です。CHECKの後に、論理式を指定するだけです。

CHECK (論理式) AND (論理式).

のように、条件を複数指定することもできます。

構文自体は簡単ですので、CHECK命令の処理の内容をしっかり押さえましょう。

CHECK命令の処理

ループ処理の中に記載したCHECK命令では、

CHECK (論理式).

の中の(論理式)が「偽」の場合にループ処理を抜ける処理を行います。

つまり、CHECK命令は「~であること」をチェックし、「~でない」場合に処理をやめたい場合に用います。

早速ですが、以下のサンプルコードでイメージを深めましょう。

サンプルコード:CHECK命令

以下のコードは、システム項目「SY-SUBRC」が0以外の場合にループ処理を終了します。

DO 100 TlMES.
 A = A + 1.
 CHECK SY-SUBRC = 0.
 WRTE / SY-INDEX.
ENDOO.

CHECK命令が、ループ処理の中に書かれています。

したがって、SY-SUBRCが0以外となった場合には、ループ処理を抜けることになります。

注意点としては、CHECK命令は「~であること」をチェックする命令ですので「CHECK SY-SUBRC <> 0.」ではなく「CHECK SY-SUBRC =0.」と記述します。

※SY-SUBRCとは何か?気になった方はこちら。

ループ処理の「強制終了」

CHECK命令の他にも、ループ処理を終了する処理を行う命令があります。

ループ処理の「強制終了」を行うEXIT命令・CONTINUE命令もこちらのページで解説しておりますので、合わせて参照いただくことをお勧めします。

タイトルとURLをコピーしました