GOTO (演算命令のスキップ)

自由形式構文 (許可されていない - LEAVELEAVESRITER、 および RETURN などの他の命令コードを使用)
コード 演算項目 1 演算項目 2 結果フィールド 標識
GOTO ラベル

GOTO 命令では、プログラムがそのプログラム内の別の演算命令に進む (ま たは分岐する) ように指示して、演算命令をスキップすることができます。TAG (タグ)命令は、GOTO 命令の宛先を指定します。TAG は、GOTO の前または後に指定することができます。 GOTO 命令は次の分岐を指定するために使用します。

メイン・プロシージャーのサブルーチン内の GOTO は、同じサブルーチン、明細演算、 または合計演算の中の TAG に出すことができます。 サブプロシージャーのサブ ルーチン内の GOTO は、同じサブルーチン内またはサブプロシージャーの本体 内の TAG に出すことができます。

RPG IV 論理サイクルの一部から別の部分に分岐すると、無限ループに入ることがあります。 ユーザーの責任で、ユーザー・プログラムの論理から好ま しくない結果が生じることのないようにしてください。

演算項目 2 には、プログラムの分岐先のラベルを入れなければなりません。 このラベルは、TAG または ENDSR 命令の演算項目 1 に入れます。 ラベルは固有 の記号名でなければなりません。

詳細については、分岐命令を参照してください。

図 297. 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