前述のとおり、パラメーターは、3 つのモード、IN、OUT、または IN OUT のいずれかになります。 仮パラメーターの以下の特性は、そのモードに依存します。

  • プロシージャまたは関数が呼び出されたときの初期値。
  • 呼び出されたプロシージャまたは関数が仮パラメーターを変更できるかどうか。
  • 実パラメーター値が呼び出し側プログラムから呼び出し先プログラムに渡される方法。
  • 呼び出されたプログラムで未処理の例外が発生した場合の仮パラメーターの値。

下表は、モードに基づいたパラメーターの動作をまとめたものです。

モードプロパティ IN IN OUT OUT
初期化後の仮パラメーター 実パラメーター値 実パラメーター値 実パラメーター値
呼び出されたプログラムによる仮パラメーターの変更可否 不可
実パラメーターの値 (呼び出されたプログラムの正常終了後) 呼び出し前の元の実パラメーター値 仮パラメーターの最後の値 仮パラメーターの最後の値
実パラメーターの値 (呼び出されたプログラムでの処理済みの例外の後) 呼び出し前の元の実パラメーター値 仮パラメーターの最後の値 仮パラメーターの最後の値
実パラメーターの値 (呼び出されたプログラムでの未処理の例外の後) 呼び出し前の元の実パラメーター値 呼び出し前の元の実パラメーター値 呼び出し前の元の実パラメーター値

上表に示すように、IN 仮パラメーターは、デフォルト値で明示的に初期化されていない限り、呼び出される実パラメーターに初期化されます。 IN パラメーターは、呼び出されたプログラム内で参照できます。 ただし、呼び出されたプログラムは、IN パラメーターに新しい値を割り当てない場合があります。 制御が呼び出し側プログラムに戻った後、実パラメーターには常に、呼び出し前に設定されていたものと同じ値が設定されます。

OUT 仮パラメーターは、呼び出される実パラメーターに初期化されます。 呼び出されたプログラムは、新しい値を参照して仮パラメーターに割り当てることができます。 呼び出されたプログラムが例外なく終了した場合、実パラメーターは、仮パラメーターの最後に設定された値を受け取ります。 処理済みの例外が発生した場合、実パラメーターの値は、仮パラメーターに割り当てられた最後の値を受け取ります。 未処理の例外が発生した場合、実パラメーターの値は、呼び出し前の値のままになります。

IN パラメーターと同様に、IN OUT 仮パラメーターは、呼び出される実パラメーターに初期化されます。 OUT パラメーターと同様に、IN OUT 仮パラメーターは呼び出されたプログラムによって変更可能であり、呼び出されたプログラムが例外なく終了した場合、仮パラメーターの最後の値が呼び出しプログラムの実パラメーターに渡されます。 処理済みの例外が発生した場合、実パラメーターの値は、仮パラメーターに割り当てられた最後の値を受け取ります。 未処理の例外が発生した場合、実パラメーターの値は、呼び出し前の値のままになります。