%PARMNUM (パラメーター番号を戻す)

%PARMNUM は、パラメーター・リストにおけるパラメーターの番号を戻します。 %PARMNUM のオペランドは、プロシージャー・インターフェースの中で定義されたパラメーターの名前です。

注:
  1. *ENTRY PLIST を使用して定義されたパラメーターは、%PARMNUM のオペランドとして指定できません。
  2. パラメーターは、プロシージャー・インターフェース・パラメーター・リスト内と同じように指定してください。 パラメーターが配列の場合、指標は指定できません。 パラメーターがデータ構造の場合、サブフィールドは指定できません。 パラメーターがファイルの場合、レコード様式は指定できません。
  3. プロシージャーに対して 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;