サブルーチンのコーディング

RPG IV サブルーチンは、演算命令のどこからでも処理することができます。すべての RPG IV 命令は 1 つのサブルーチン内で処理することができ、 これらの命令は 9 から 11 桁目の有効な標識で条件付けることができます。 7 から 8 桁目には SR またはブランクを指定することが できます。これらの桁に制御レベル標識 (L1 から L9) を使用することはできません。 しかし、 サブルーチン内の AND/OR 行は 7 から 8 桁目に指定することができます。

サブルーチンで使用するフィールドは、そのサブルーチン または残りのプロシージャーの中で定義することができます。 いずれの場合にも、フィールドはプロシージャーの本体とサブルーチンの両方 で使用することができます。

サブルーチンに別のサブルーチンを入れることはできません。 サブルーチンは別のサブルーチンを呼び出すことができます。 すなわち、サブルーチンには EXSR または CASxx を入れることができます。 しかし、サブルーチン内の EXSR または CASxx の指定で直接それ 自体を呼び出すことはできません。別のサブルーチンを介してそれ自体を間接的に呼び出すことも、 予測できない結果になる場合があるので、行ってはなりません。 同じサブルーチン内の別の場所に分岐したい場合には、 GOTO および TAG 命令コードを使用してください。

サブルーチンを、使用する順序に指定する必要はありません。 それぞれのサブルーチンは固有の記号名を持っていて、BEGSR および ENDSR ス テートメントを含んでいなければなりません。

サブルーチンの中では GOTO (分岐) 命令を使用することができます。GOTO で はそのサブルーチンに対応する ENDSR 命令のラベルは指定できますが、BEGSR 命令の名前を指定することはできません。 GOTO が TAG または ENDSR と同じサブルーチン内にある場合を除き、サブルー チン内の TAG または ENDSR に GOTO を出すことはできません。 LEAVESR 命令を使用すると、サブルーチン内の任意のポイントからそのサブルーチンを終了できます。制御は、そのサブルーチンの ENDSR 命令に渡されます。 LEAVESR はサブルーチン内からのみ使用できます。

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

サブルーチンのコーディングの例については、図 1 を 参照してください。