プロシージャー参照内の引数の個数と %PROCEDURE ステートメント内の パラメーターの個数とが同じである必要はありません。 引数は、パラメーター・リストとの突き合わせが行われる前に計算されます。 定位置引数の個数がパラメーターの個数よりも多い場合には、右側にある余分の引数が無視されます。 (引数が関数参照であるときは、その引数が最終的には無視される ものであっても、その関数が呼び出されて実行されます。) 関数参照によってセットされなかったパラメーターには、ゼロの値 (FIXED パラメーターの場合) または ヌル・ストリング (CHARACTER パラメーターの場合) が指定されます。
パラメーターを、関数参照によって複数回設定しないでください。 ただし、あるパラメーターの値を複数回指定した (例えば、定位置と キーワードの両方で) ときは、エラーと診断されますが、左端に設定した値が呼び出しで使われます。
関数参照がプリプロセッサー・ステートメント内にあるときは、通常の 方法で引数がパラメーターに関係付けられます。 プロシージャーへの引数の引き渡しの項で説明したのと同じ方法で、仮引数が作られる ことがありますし、引数は対応するパラメーターの属性に変換されます。
関数参照が入力テキスト内に存在すると、仮引数が常に作成されます。 引数は、ストリングとして解釈されます。コンマまたは右括弧を区切り文字として使用してください。 ただし、対になっている括弧、対になっている単一引用符、または対に なっているコメント区切り文字の間にあるコンマや右括弧は、区切り文字の働きをしません。 例えば、定位置引数リスト (A(B,C),D) の引数は、ストリング A(B,C) とストリング D の 2 つです。引数内のブランク (先行ブランクや末尾ブランクも) は意味がありますが、 そのようなブランクが行の終わりまで続いており、しかも引用符や コメント区切り文字で囲まれていない場合は、1 つのブランクで置き換えられます。
入力テキスト内で関数参照が検出されると、各引数が走査され、置き換えが 可能かどうか調べられます。 この置換アクティビティーは、その関数に渡された引数の個数に影響しません。 置き換え処理によって引数内にコンマや括弧が入れられても、それらは 区切り文字とは見なされず、単に引数内の文字と見なされます。 キーワード呼び出しが使われている場合、そのキーワード自体は置換アクティビティーに適しません。 置き換えがすべて終わると、その結果の各引数が、その関数入り口名を持つ プリプロセッサー・プロシージャー・ステートメント内の対応する パラメーターの属性で指定されるタイプに変換されます。