IFxx (満たされた条件の処理)

自由形式構文 (許可されていない - IF 命令コードを使用)
コード 演算項目 1 演算項目 2 結果フィールド 標識
IFxx 被比較値 被比較値        

IFxx 命令では、演算項目 1 と演算項目 2 の間に xx で指定された特定の関係が存在 する場合に演算のグループを処理することができます。ANDxx (かつ)およ び ORxx (または)命令を IFxx と一緒に使用した場合には、演算のグループ は、命令を組み合わせて指定した条件が存在すれば実行されます (xx の意味については、構造化プログラミング命令を 参照してください)。

条件付け標識を使用することができます。 演算項目 1 と演算項目 2 には、リテラル、名前のついた定数、形象定数、 テーブル名、配列要素、データ構造名、またはフィールド名を入れなければな りません。 演算項目 1 と演算項目 2 は、同じデータ・タイプでなければなりません。

IFxx および対応する ANDxx または ORxx 命令によって指定された関係が存在しない 場合には、対応する ENDIF 命令の直後の演算命令に制御 が渡されます。ELSE (他の場合)命令も指定されている場合 には、ELSE 命令の後で処理可能な最初の演算命令に 制御が渡されます。

IFxx に対応する ENDIF 命令の条件付け標識の指定はブランクでなければな りません。

IFxx グループをクローズするためには、ENDIF ステートメントを使用しな ければなりません。 IFxx ステートメントの後に ELSE ステートメントが続く場 合には、IFxx ステートメントの後でなく、ELSE ステートメントの後に ENDIF ステートメントが必要です。

読みやすくするために、コンパイル・リストの DO ステートメント、 IF-ELSE 文節、および SELECT-WHENxx-OTHER 文節は字下げすることができます。 ソース・リストのステートメントの字下げの方法について は、「Rational Development Studio for i ILE RPG プログラマーの手引き」のコンパイル・リストの項を参照してください。

詳細については、比較命令または 構造化プログラミング命令を参照してください。

図 1. IFxx/ENDIF および IFxx/ELSE/ENDIF 命令
*...1....+....2....+....3....+....4....+....5....+....6....+....7....+....
CL0N01Factor1+++++++Opcode(E)+Factor2+++++++Result++++++++Len++D+HiLoEq....
 *
 *  If FLDA equals FLDB, the calculation after the IFEQ operation
 *  is processed.  If FLDA does not equal FLDB, the program
 *  branches to the operation immediately following the ENDIF.
C
C     FLDA          IFEQ      FLDB
C                       :
C                       :
C                       :
C                   ENDIF
C
 *  If FLDA equals FLDB, the calculation after the IFEQ operation
 *  is processed and control passes to the operation immediately
 *  following the ENDIF statement.  If FLDA does not equal FLDB,
 *  control passes to the ELSE statement and the calculation
 *  immediately following is processed.
C
C     FLDA          IFEQ      FLDB
C                       :
C                       :
C                       :
C                   ELSE
C                       :
C                       :
C                       :
C                   ENDIF
*...1....+....2....+....3....+....4....+....5....+....6....+....7....+....
CL0N01Factor1+++++++Opcode(E)+Factor2+++++++Result++++++++Len++D+HiLoEq....
 *
 *  If FLDA is equal to FLDB and greater than FLDC, or if FLDD
 *  is equal to FLDE and greater than FLDF, the calculation
 *  after the ANDGT operation is processed.  If neither of the
 *  specified conditions exists, the program branches to the
 *  operation immediately following the ENDIF statement.
C
C     FLDA          IFEQ      FLDB
C     FLDA          ANDGT     FLDC
C     FLDD          OREQ      FLDE
C     FLDD          ANDGT     FLDF
C                       :
C                       :
C                       :
C                   ENDIF