ENDSR 命令での戻り点の指定

メイン・プロシージャーで INFSR または *PSSR エラー処理サブルーチンを 使用する時には、ENDSR ステートメントの演算項目 2 として次の 1 つを入力することによって、 プログラムが処理を再開する戻り点を示すことができます。 この項目は、値が次の戻り点の 1 つを指定する 6 桁の文字フィールド、 リテラル、名前付き固定情報、配列要素、またはテーブル名でなければなりません。

注:
戻り点をリテラルとして指定する場合には、 リテラルはアポストロフィで囲み、 大文字 (例えば *detl ではなく *DETL) で入力しなければなりません。 フィールドまたは配列要素に指定する場合には、 フィールドまたは配列要素の中でこの値は左寄せにしなければなりません。

*DETL
明細行の始めから続行
*GETIN
入力レコード取得ルーチンから続行
*TOTC
合計演算の始めから続行
*TOTL
合計行の始めから続行
*OFL
オーバーフロー行の始めから続行
*DETC
明細演算の始めから続行
*CANCL
プログラムの処理の取り消し
ブランク
ILE RPG のデフォルトの例外処理プログラムへ制御を戻します。演算項目 2 が ブランクの値である時および 演算項目 2 が指定され ていない時にこれが起こります。 サブルーチンが EXSR 命令によって呼び出され、演算項目 2 がブランクの場合 には、次の順番の命令に制御が渡されます。

INFSR または *PSSR サブルーチンの ENDSR 命令の実行後に ILE RPG コンパイラーは、演算項目 2 に指定されたフィールドまたは配列要素をブランクにリセットします。演算項目 2 がブランクに設定されているので、サブルーチン内で 起こった例外に最も適した戻り点を指定することができます。

サブルーチンの終わりでこのフィールドがブランクである場合には、INFSR または *PSSR サブルーチンが EXSR 命令で呼び出された場合を除いて、サブルーチンの実行に続いて、ILE RPG のデフォルトの例外処理プログラムが制御を受け取ります。 サブルーチンが EXSR 命令で呼び出され、ENDSR 命令の演算項目 2 がブランク である場合には、制御は EXSR 命令の次の順番の命令に戻ります。

注:
サブプロシージャーでは、ENDSR に演算項目 2 を指定することはできませ ん。 サブプロシージャーで処理を再開したい場合には、サブプロシージャーの本体 の TAG に GOTO 命令を使用します。かわりに、*PSSR では RETURN 命令をコーディングすることができます。 その後で、サブプロシージャーは呼び出し元に戻ります。