Rational Developer for System z
Enterprise PL/I for z/OS, Version 3.8, 言語解説書

OPTIONAL 属性

OPTIONAL は、パラメーター記述子リストの一部として、またはパラメーター宣言の属性として指定することができます。

構文図を読む構文図をスキップする>>-OPTIONAL----------------------------------------------------><
 

引数にアスタリスクを指定することによって、 OPTIONAL 引数を呼び出しおよび関数参照で省略することができます。 引数リストのどの位置にある項目でも (最後の項目でも構わない) 省くことができます。 ただし、省略される項目は引数として数えられます。 入り口にその項目が含まれていても、 引数の数は入り口で許可されている最大数を超えてはなりません。

項目が LIMITED ENTRY ではない限りは、同じ項目に OPTIONAL と BYVALUE は使用できません。

受け取りプロシージャーは、OMITTED 組み込み関数を使用して、 OPTIONAL パラメーター/引数が入り口の呼び出しで省略されたかどうかを 判別することができます。 (OMITTED 組み込み関数についての詳細は、OMITTEDを参照してください。)

ENTRY 宣言の最終パラメーターが OPTIONAL として宣言された場合、その ENTRY はそれらのパラメーターを完全に省略して呼び出すことができます。該当する数のアスタリスクを指定することも不要です。 そのため、例えば、ある ENTRY が 5 つのパラメーターを持っていて、そのうち最後の 2 つは OPTIONAL 属性を持っていると宣言された場合、3 つ、4 つ、または 5 つの引数を指定して呼び出すことができます。

呼び出された ENTRY が明示的に宣言されている場合、および呼び出された ENTRY がネストされたサブプロシージャーである場合には、そのような末尾の OPTIONAL パラメーターを省略できます。 なお、ENTRY に OPTIONS(ASSEMBLER) 属性が指定されていない限り、生成されたコードでは、省略したパラメーターに NULL ポインターが入ります。

図 5 では、プロシージャー Vrtn に対して 有効な CALL ステートメントと無効な CALL ステートメントの両方を示します。

図 5. 有効な呼び出しステートメントおよび無効な呼び出しステートメント
  Caller: proc;
    dcl Vrtn entry (
             fixed bin,
             ptr optional,
             float,
             * optional);

/*  The following calls are valid:  */

    call Vrtn(10, *, 15.5, 'abcd');
    call Vrtn(10, *, 15.5, *);
    call Vrtn(10, addr(x), 15.5, *);
    call Vrtn(10, *, 15.5);
    call Vrtn(10, addr(x), 15.5);
 
/*  The following calls are invalid:  */
 
    call Vrtn(*, addr(x));
    call Vrtn(10,addr(x));
    call Vrtn(10);
    call Vrtn;
  end Caller;
 
  Vrtn: proc (Fb, P, Fl, C1);
    dcl Fb fixed bin,
        P ptr optional,
        Fl float,
        C1 char(8) optional;
 
    if ¬omitted(C1) then display (C1);
    if ¬omitted(P) then P=P+10;
end;

Vrtn は、OPTIONAL パラメーターが省略されたかどうかを判別して、適切な処置をとります。


Terms of use | Feedback

This information center is powered by Eclipse technology. (http://www.eclipse.org)