| 自由形式構文 | (許可されていない - 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 命令にどのような影響を与えるかについて は、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