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