自由形式構文 | (許可されていない - DOU 命令コードを使用) |
コード | 演算項目 1 | 演算項目 2 | 結果フィールド | 標識 | ||
---|---|---|---|---|---|---|
DOUxx | 被比較値 | 被比較値 |
DOUxx 命令コードは、最低 1 回 (おそらくはそれ以上) 実行したい命令のグルー プの前に置かれます。 対応する ENDDO ステートメントが このグループの終わりを示します。DO グループの詳細と xx の意味については、構造化プログラミング命令を参照してください。
演算項目 1 と演算項目 2 には、リテラル、名前のついた定数、フィールド 名、テーブル名、配列要素、形象定数、またはデータ構造名を入れなければな りません。 演算項目 1 と演算項目 2 は同じデータ・タイプでなければなりませ ん。
DOUxx ステートメントでは、関係 xx を指示します。 より複雑な条件を指定するため には、DOUxx ステートメントの直後に ANDxx また は ORxx ステートメントを続けます。 DOUxx グループの命令は 1 回処理された後で、 次のいずれかに該当するまで繰り返されます。
このグループは、グループの開始時にこの条件が 真でない場合であっても、常に最低 1 回は処理されます。
DOUxx 命令自体のほかに、 DOUxx グループは、DOUxx および ENDDO ステートメントの条件付け標識に よっても制御されます。 DOUxx ステートメントの条件付け標識は、DOUxx 命令を開始するかどうかを 制御します。 対応する ENDDO ステートメントの条件付け標識では、DO ループを早期に終了 させることができます。
DOUxx 命令は次のステップに従って実行されます。
これらの命令が DOUxx 命令にどのような影響を与えるかについて は、LEAVE (Do/For グループからの抜け出し)および ITER (繰り返し)を参照してください。
詳細については、比較命令または 構造化プログラミング命令を参照してください。
*...1....+....2....+....3....+....4....+....5....+....6....+....7...+.... CL0N01Factor1+++++++Opcode(E)+Factor2+++++++Result++++++++Len++D+HiLoEq.... * * DOUEQ 操作により DO グループ内で、少なくとも 1 回の操作が実行されます。 C C FLDA DOUEQ FLDB C * * ENDDO 操作では FLDA が FLDB に等しいかどうか判断するための * テストが行われます。FLDA が FLDB に等しくない場合、先行の操作が * 再度処理されます。このループは FLDA が FLDB に等しくなるまで * 継続されます。FLDA が FLDB に等しくなると、プログラムは * ENDDO 操作のすぐ後の操作に分岐します。 C C SUB 1 FLDA C ENDDO C * * DOUEQ ANDEQ OREQ 結合操作は DO グループ内で * 少なくとも 1 回操作を処理します。 C C FLDA DOUEQ FLDB C FLDC ANDEQ FLDD C FLDE OREQ 100 C * * ENDDO 命令では、FLDA が FLDB に等しく FLDC が FLDD に * 等しいという、指定された条件が満たされているかどうかを * 判別するためのテストが行われます。その条件が満たされて * いる場合、プログラムは、ENDDO 命令の直後の命令に分岐 * します。DOUEQ 条件と ANDEQ 条件が満たされている場合に * は、FLDE が 100 に等しいという OREQ 条件をテストする * 必要はありません。指定された条件が満たされていない場合 * には、OREQ 条件がテストされます。OREQ 条件が満たされて * いる場合には、プログラムは、ENDDO の直後の命令に分岐 * します。それ以外の場合には、OREQ 命令の後に続く命令が * 処理されて、プログラムは、2 番目の DOUEQ 命令から後の * 条件テストを処理します。DOUEQ および ANDEQ 条件も、 * OREQ 条件も満たされない場合には、OREQ 命令の後に続く * 命令が再び処理されます。 C C SUB 1 FLDA C ADD 1 FLDC C ADD 5 FLDE C ENDDO
(C) Copyright IBM Corporation 1992, 2006. All Rights Reserved.