CABxx (比較および分岐)
コード | 演算項目 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