%PARMNUM (パラメーター番号を戻す)
%PARMNUM は、パラメーター・リストにおけるパラメーターの番号を戻します。 %PARMNUM のオペランドは、プロシージャー・インターフェースの中で定義されたパラメーターの名前です。
注:
- *ENTRY PLIST を使用して定義されたパラメーターは、%PARMNUM のオペランドとして指定できません。
- パラメーターは、プロシージャー・インターフェース・パラメーター・リスト内と同じように指定してください。 パラメーターが配列の場合、指標は指定できません。 パラメーターがデータ構造の場合、サブフィールドは指定できません。 パラメーターがファイルの場合、レコード様式は指定できません。
- プロシージャーに対して RTNPARM キーワードがコーディングされた場合、戻り値は、追加の最初のパラメーターとして処理されます。 それ以外のパラメーターの番号は、見かけ上の番号より 1 つ大きくなります。 例えば、RTNPARM を指定して定義されたプロシージャーに P1 と P2 という 2 つのパラメーターがある場合、%PARMNUM(P1) は 2 を戻し、%PARMNUM(P2) は 3 を戻します。
詳細については、組み込み関数を参照してください。
図 1. %PARMNUM の例
D myProc pi 10A RTNPARM OPDESC
D companyName 25A OPTIONS(*VARSIZE)
D errorCode 1A OPTIONS(*OMIT)
D cityName 25A OPTIONS(*NOPASS)
/free
// test the length of companyName
callp CEEDOD(%parmnum(companyName) : more parameters ...
: parmlen : *omit);
if parmlen < 25;
// the full parameter was not passed
endif;
// test the presence of the omissible errorCode parameter
callp CEETSTA(isPresent : %parmnum(errorCode) : *omit);
if isPresent = 1;
// errorCode was not omitted
endif;
// test the presence of the optional city parameter
if %parms >= %parmnum(cityName);
// cityName was passed
endif;