GOTO (演算命令のスキップ)
| コード | 演算項目 1 | 演算項目 2 | 結果フィールド | 標識 | ||
|---|---|---|---|---|---|---|
| GOTO | ラベル | |||||
GOTO 命令では、プログラムがそのプログラム内の別の演算命令に進む (ま
たは分岐する) ように指示して、演算命令をスキップすることができます。TAG (タグ)命令は、GOTO 命令の宛先を指定します。TAG は、GOTO の前または後に指定することができます。 GOTO 命令は次の分岐を指定するために使用します。
- 明細演算行から別の明細演算行への分岐
- 合計演算行から別の合計演算行への分岐
- 明細演算行から合計演算行への分岐
- サブルーチンから同じサブルーチン内の TAG または ENDSR への分岐
- サブルーチンから明細演算行または合計演算行への分岐
サイクル・メイン・プロシージャーのサブルーチン内の GOTO は、同じサブルーチン、明細演算、または合計演算の中の TAG に出すことができます。 サブプロシージャーのサブ ルーチン内の GOTO は、同じサブルーチン内またはサブプロシージャーの本体 内の TAG に出すことができます。
RPG IV 論理サイクルの一部から別の部分に分岐すると、無限ループに入ることがあります。 ユーザーの責任で、ユーザー・プログラムの論理から好ま しくない結果が生じることのないようにしてください。
演算項目 2 には、プログラムの分岐先のラベルを入れなければなりません。 このラベルは、TAG または ENDSR 命令の演算項目 1 に入れます。 ラベルは固有 の記号名でなければなりません。
詳細については、分岐命令を参照してください。
図 1. GOTO および TAG 命令
*...1....+....2....+....3....+....4....+....5....+....6....+....7...+....
CL0N01Factor1+++++++Opcode(E)+Factor2+++++++Result++++++++Len++D+HiLoEq....
*
* If indicator 10, 15, or 20 is on, the program branches to
* the TAG label specified in the GOTO operations.
* A branch within detail calculations.
C 10 GOTO RTN1
*
* A branch from detail to total calculations.
C 15 GOTO RTN2
*
C RTN1 TAG
*
C :
C :
C:
C 20 GOTO END
*
C :
C :
C :
C END TAG
* A branch within total calculations.
CL1 GOTO RTN2
CL1 :
CL1 RTN2 TAG