CABxx (比較および分岐)

自由形式構文 (許可されていない - LEAVEITER、 および RETURN などの他の命令コードを使用)
コード 演算項目 1 演算項目 2 結果フィールド 標識
CABxx 被比較値 被比較値 ラベル HI LO EQ

CABxx 命令は、演算項目 1 を演算項目 2 と比較します。 xx に よって指定された条件が真の場合には、プログラムは、結果フィールドに指 定されたラベルに対応する TAG または ENDSR 命令に分岐します。 そうでない場合には、プログラムは次の命令から順番に続行します。結果フィールドが指定されていない場合には、それに応じて結果の 標識 (71-76 桁目) が設定され、 プログラムは次の命令から順番に続行します。

条件付け標識を指定することができます。 演算項目 1 と演算項目 2 には、リテラル、名前のついた定数、形象定数、 テーブル名、配列要素、データ構造名、またはフィールド名を入れなければな りません。 演算項目 1 と 2 は同じタイプでなければなりません。 結果フィールドに指定されたラベルは固有の TAG 命令と関連付けられていなけ ればならず、また固有の記号名でなければなりません。

サイクル・メイン・プロシージャーの CABxx 命令では、次の分岐を指定することができます。
  • 前の仕様行または後続の仕様行への分岐
  • 明細演算行から別の明細演算行への分岐
  • 合計演算行から別の合計演算行への分岐
  • 明細演算行から合計演算行への分岐
  • サブルーチンから明細演算行または合計演算行への分岐
サブプロシージャーの CABxx 命令では次の分岐を指定することができます。
  • サブプロシージャーの本体の行からサブプロシージャーの本体の別の行へ の分岐
  • サブルーチンの行から同じサブルーチンの別の行への分岐
  • サブルーチンの行からサブプロシージャーの本体の行への分岐

CABxx 命令では、サブルーチンの外からそのサブルーチン内の TAG または ENDSR 命令への分岐を指定することはできません。

注意!

論理内の一部から別の部分へ分岐すると、無限ループに入ることがあります。 プログラムまたはプロシージャーの論理によって好ましくない結果が起こるこ とのないようにしてください。

結果の標識は任意指定です。 指定すると、比較操作の結果を反映するように設定されます。 例えば、F1>F2 の場合には HI 標識が設定され、F1<F2 の場合 には LO、F1=F2 の場合には EQ が設定されます。

演算項目 1 と演算項目 2 を比較する場合の規則については、比較命令を参照してください。

詳細については、分岐命令を参照してください。

図 1. CABxx 命令
*...1....+....2....+....3....+....4....+....5....+....6....+....7...+....
CL0N01Factor1+++++++Opcode(E)+Factor2+++++++Result++++++++Len++D+HiLoEq....
 *
 *         The field values are:
 *         FieldA = 100.00
 *         FieldB = 105.00
 *         FieldC = ABC
 *         FieldD = ABCDE
 *
 *          Branch to TAGX.
C     FieldA        CABLT     FieldB        TAGX
 *
 *          Branch to TAGX.
C     FieldA        CABLE     FieldB        TAGX
 *
 *          Branch to TAGX; indicator 16 is off.
C     FieldA        CABLE     FieldB        TAGX                     16
 *
 *          Branch to TAGX; indicator 17 is off, indicator 18 is on.
C     FieldA        CAB       FieldB        TAGX                 1718
 *
 *          Branch to TAGX; indicator 19 is on.
C     FieldA        CAB       FieldA        TAGX                      19
 *
 *          No branch occurs.
C     FieldA        CABEQ     FieldB        TAGX
 *
 *          No branch occurs; indicator 20 is on.
C     FieldA        CABEQ     FieldB        TAGX                   20
 *
 *          No branch occurs; indicator 21 is off.
C     FieldC        CABEQ     FieldD        TAGX                 21
C                   :
C     TAGX          TAG