プロシージャ ブロックは、呼び出すたびに異なる値で動作できると、有用性が大幅に向上します。引数およびパラメーターはそのような動作を可能にします。
引数は、呼び出し時にプロシージャ ブロックに渡される値です。パラメーターは、呼び出し先のプロシージャ ブロックでこれらの引き数を参照するために使用される名前です。
Open PL/I は、通常、記憶域アドレスを参照することによって、呼び出し先のプロシージャに引数を渡します。
次に例を示します。
CALL P(A,B); . . . CALL P(D,E); . . . P: PROCEDURE(X,Y); . . . PUT FILE (F) LIST(X,Y); . . . END P;
この例では、A および B はプロシージャ P の 1 番目の呼び出しの引数です。1 番目の呼び出しの結果として P が実行されている間は、引数 A はパラメーター X に対応し、引数 B はパラメーター Y に対応することになります。2 番目の呼び出しの結果として P が実行されている間は、D が X に対応し、E が Y に対応することになります。
引数が変数である場合は、変数の実際のアドレスが呼び出し先のプロシージャに渡されます。このアドレスを使用して、呼び出し先のプロシージャで引数の値を変更できます。
引数が定数または式である場合は、一時的な場所を使用して引数の現在の値が格納され、その一時的な場所のアドレスが呼び出し先のプロシージャに渡されます。