渡されるパラメーターの数の検査

呼び出しで渡されるパラメーター数の検査を必要とする場合があります。 プロシージャーの作成方法により、この数によって、渡されないパラメーター を参照せずに済むことがあります。例えば、3 つのパラメーターを渡される時もあれば、4 つのパラメーターを渡 される時もあるプロシージャーを作成するとします。 このことは、新しいパラメーターが必要となった時に 起こります。 呼び出されるプロシージャーを書いて、組み込み関数 %PARMS によって戻される値に従ってどちらの数も処理することができます。 新しい呼び出しでは、このパラメーターが渡されます。 元からの呼び出しは変更されないままです。

%PARMS はパラメーターを使用しません。 %PARMS が戻す値には *OMIT が渡されたパラメーターも含まれ、さらに、RTNPARM キーワードが指定されているプロシージャーの戻り値を最初に処理する追加のパラメーターも含まれます。 サイクル・メイン・プロシージャーの場合、%PARMS は PSDS の *PARMS フィールドに含まれている値と同じものを戻します。ただし、*PARMS フィールドを使用するためには、PSDS のコーディングも行う必要があります。

特定のパラメーターがプロシージャーに渡されたかどうかを調べたい場合は、%PARMNUM 組み込み関数を使用して、そのパラメーターの番号を確認することができます。 %PARMNUM が戻す値は、そのプロシージャーに RTNPARM キーワードが指定されていれば、正確なパラメーター番号を反映します。

*PARMS と %PARMS の両方で、渡されたパラメーターの数が分からない場合には、値 -1 が 戻されます (渡されたパラメーターの数を判別するには、少なくとも操作記述子を渡さなけ ればなりません。ILE RPG は常に呼び出しでこれを渡しますが、他の ILE 言語では渡さない場合があります)。 メイン・プロシージャーが活動状態になっていない場合には、 *PARMS は信頼できません。 サブプロシージャーから *PARMS を参照することは望ましくありません。