ELSE (ELSE)

ELSE(ELSE)コマンドは,条件付きで処理される別のコマンドを指定するためにIFコマンドと一緒に使用されます。ELSEコマンドは,前のIFコマンドで論理式評価の結果が偽の場合にだけ処理されます。結果が真の場合には,ELSEコマンドおよび関連したコマンドは処理されません。

ELSEコマンドは,偽条件の場合に処理するために,CLコマンドまたはDOグループを指定することができます。

各IFコマンドの後にELSEコマンドは必要ありませんが,コーディングされる各ELSEコマンドでは,対応するIFコマンドがその前になければなりません。IFコマンドでネストされたレベルを使用した場合には,指定されたELSEは,他のELSEコマンドとまだ一致していない,最も内側のIFコマンドと常に一致しています。ELSEコマンドは任意指定ですが,一致するすべてのELSEコマンドをコーディングすることによって,すべてのネスト・レベルの開始と終了の位置が分かりやすくなります。

制約事項: ELSEコマンドはCLプログラムまたはILE CLプロシージャー内でのみ有効です。対応するIFコマンドがその前になければなりません。

パラメーター

キーワード 記述 選択項目 ノーツ
CMD コマンド コマンド・ストリング オプショナル, 定位置 1

コマンド (CMD)

対応するIFコマンドの式の評価の結果が偽の場合に処理される1つ以上のコマンド(DOグループ内で)を指定します。

このパラメーターで指定したコマンドがDOコマンドである場合には,DOグループ内に指定したすべてのコマンドが,パラメーターによって指定したコマンドの一部と見なされます。コマンドが指定されていない場合には,偽条件では処置は取られません。

CMDキーワードによって指定されたコマンドがそのキーワードと同じ行にコーディングされない場合には,同じ行のCMDの後に左括弧をコーディングし,その次に+または-を続けて継続を示す必要があります。次に,そのコマンドと右括弧を次の行にコーディングすることができます。例えば,次のとおりです。

ELSE  CMD(  +
    GOTO C)

コマンドの任意の部分を次の行に続ける場合には,継続文字(+または-)を指定しなければなりません。

DOコマンドが指定された場合には,DOコマンドだけ(DOグループの一部として指定したコマンドではない)が括弧に入れられます。例えば,次のとおりです。

ELSE  CMD(DO)
    CMD1
    CMD2
      .
      .
      .
    ENDDO

次のコマンドは,CLプログラムまたはILE CLプロシージャー内では有効ですが,ELSEコマンドには指定できません。

さらに,MONMSGコマンドは,ELSEコマンドの後の次のコマンドとして指定することはできません。

1: ELSEおよびIFコマンドの使用

IF   (&A *GT &B)  THEN(CHGVAR  VAR(&A)  VALUE(&B))
ELSE   (CHGVAR &B &A)

&Aの値が&Bの値より大きいと,&Aは&Bに等しく設定されます。&Aが&B以下であると,テスト結果は偽になります。ELSEコマンドにあるCHGVARコマンドが処理され,&Bの値は&Aと同じ値に設定されます。(CHGVARコマンドとそのパラメーターについては,CHGVAR(変数変更)コマンドを参照してください。)

2:コマンドのネスト・レベル

IF   COND(&A *EQ &B)  +
THEN(IF   (&C *EQ &D)  +
THEN(IF   (&C *EQ &F)   THEN(DO)))
CMD1
CMD2
 :
ENDDO
ELSE   CMDX
ELSE   CMDY
ELSE DO

この例は,ELSEコマンドが各IFコマンドと関連付けられている場合の,IFコマンドのネスト・レベルの使用を示しています。ELSEコマンドを使用すると,IFコマンドのネスト・レベルが識別しやすくなります。

エラー・メッセージ

なし