DO (命令グループの開始)
自由形式構文 | (許可されていない - FOR 命令コードを使用) |
コード | 演算項目 1 | 演算項目 2 | 結果フィールド | 標識 | ||
---|---|---|---|---|---|---|
DO | 開始値 | 限界値 | 指標値 |
DO 命令は、命令のグループを開始してそのグループを処理する回数を指示 します。 命令グループを処理する回数を指示するためには、指標フィールド、開始値、 および限界値を指定します。 対応する ENDDO ステートメントは、このグループの終わりを示します。DO グループの詳細については、構造化プログラミング命令を参照してください。
演算項目 1 には、数値リテラル、名前のついた定数、またはフィールド 名を使用して、小数点以下の桁数がゼロの開始値を指定します。 演算項目 1 を 指定しないと、開始値は 1 になります。
演算項目 2 には、数値フィールド名、リテラル、または名前のついた固定情 報を使用して、小数点以下の桁数がゼロの限界値を指定します。 演算項目 2 を指定しないと、限界値は 1 になります。
結果フィールドには、現在の指標値が入る数値フィールド名を指定します。 結果フィールドには、限界値に増分値を加えた値が入る十分な大きさが必要で す。 指標フィールドを指定しないと、内部使用のために指標フィールドが生成され ます。 指標フィールドの値は、DO 命令が開始されると演算項目 1 と置き換えられます。
対応する ENDDO 命令の演算項目 2 には、指標フィールドに加算する値を指 定します。 この値は、数値リテラルまたは小数点以下の桁数がゼロの数値フィールドとす ることができます。 これをブランクにすると、指標フィールドに加算される値は 1 になります。
DO グループは、DO 命令自体のほかに、DO および ENDDO ステートメントの 条件付け標識によっても制御されます。 DO ステートメントの条件付け標識は、 DO 命令を開始するかどうかを制御します。 これらの標識は DO ループの始めに 1 回だけ検査されます。 対応する ENDDO ステートメントの条件付け標識は、DO グループをもう一度繰 り返すかどうかを制御します。 これらの標識はそれぞれのループの終わりに検査されます。
- DO 命令は、DO ステートメント行の条件付け標識が満たされた場合に処理 されます (ステップ 2)。 この標識が満たされない場合には、対応する ENDDO ステートメントの後で処理される次の命令に制御が渡されます (ステップ 7)。
- DO 命令が開始されると、開始値 (演算項目 1) が指標フィールド (結果フ ィールド) に転送されます。
- 指標値が限界値より大きい場合には、対応する ENDDO ステートメントの後 の演算命令に制御が渡されます (ステップ 7)。 そうでない場合には、DO ステ ートメントの後の最初の命令に制御が渡されます (ステップ 4)。
- DO グループのそれぞれの命令が処理されます。
- ENDDO ステートメントの条件付け標識が満たされない場合には、対応する ENDDO ステートメントの後の演算命令に制御が渡されます (ステップ 7)。 そうでない場合には ENDDO 命令が処理されます (ステップ 6)。
- ENDDO 命令は指標フィールドに増分値を加算して処理されます。 制御はステップ 3 に 渡されます (制御がステップ 3 に渡された時に DO ステートメントの条件付け標識は 再びテスト (ステップ 1) されないことに注意してください)。
- DO ステートメントまたは ENDDO ステートメントの条件付け標識が満たさ れない時 (ステップ 1 または 5)、または指標値が限界値より大きい時 (ステ ップ 3) には、ENDDO ステートメントの後のステートメントが処理されます。
- 指標値、増分値、限界値、および標識は、DO グループの終わりに影響を与え るためにループ内で変更することができます。
- DO グループが明細演算と合計演算の両方にまたがることはできません。
これらの命令が DO 命令にどのような影響を与えるかについて は、LEAVE (Do/For グループからの抜け出し)および ITER (繰り返し)を参照してください。
初期値、増分値、および限界値の自由形式の式での、反復ループ の実行については、FOR (For)を参照してください。
詳細については、構造化プログラミング命令を参照してください。
*...1....+....2....+....3....+....4....+....5....+....6....+....7...+....
CL0N01Factor1+++++++Opcode(E)+Factor2+++++++Result++++++++Len++D+HiLoEq....
*
* The DO group is processed 10 times when indicator 17 is on;
* it stops running when the index value in field X, the result
* field, is greater than the limit value (10) in factor 2. 真の場合に選択
* the DO group stops running, control passes to the operation
* immediately following the ENDDO operation. Because factor 1
* in the DO operation is not specified, the starting value is 1.
* Because factor 2 of the ENDDO operation is not specified, the
* incrementing value is 1.
C
C 17 DO 10 X 3 0
C :
C ENDDO
*
* The DO group can be processed 10 times. The DO group stops
* running when the index value in field X is greater than
* the limit value (20) in factor 2, or if indicator 50 is not on
* when the ENDDO operation is encountered. When indicator 50
* is not on, the ENDDO operation is not processed; therefore,
* control passes to the operation following the ENDDO operation.
* The starting value of 2 is specified in factor 1 of the DO
* operation, and the incrementing value of 2 is specified in
* factor 2 of the ENDDO operation.
*
C 2 DO 20 X 3 0
C :
C :
C :
C 50 ENDDO 2