OPTIONAL

目的

OPTIONAL 属性は、プロシージャーの参照時に、 仮引き数を実引き数に関連付ける必要はないことを指定します。

構文



>>-OPTIONAL--+----+--dummy_arg_name_list-----------------------><
             '-::-'
 
 

規則

オプションの仮引き数を持つプロシージャーは、プロシージャーが参照されるどの有効範囲でも明示的インターフェースを持つ必要があります。

実引き数がオプションの仮引き数と関連付けられているかどうかを 確認するには、PRESENT 組み込み関数を使用します。 仮引き数が存在していることを確認せずにオプションの仮引き数を参照しないでください。

仮引き数が、実引き数と関連付けられている場合、サブプログラム内に 存在しているものと見なされます。この実引き数は、それ自体が存在する仮引き数の場合もあります (伝搬の例)。 仮引き数のうちオプションでないものは、必ず指定しなければなりません。 つまり、オプションではない仮引き数は実引き数と関連付けなければなりません。

オプションの仮引き数のうち指定されていないものは、 オプションの仮引き数に対応する実引き数として使用することができます。 そのとき当然、このオプションの仮引き数は実引き数と関連付けられていないものと考えられます。 オプションの仮引き数のうち指定されていないものには、以下の制約事項が適用されます。

定義演算子または定義割り当て用の明示インターフェースを指定する インターフェース本体内の仮引き数に OPTIONAL 属性を指定することはできません。

OPTIONAL 属性と互換性のある属性





      SUBROUTINE SUB (X,Y)
        INTERFACE
          SUBROUTINE SUB2 (A,B)
            OPTIONAL :: B
          END SUBROUTINE
        END INTERFACE
        OPTIONAL :: Y
        IF (PRESENT(Y)) THEN          ! Reference to Y conditional
          X = X + Y                   ! on its presence
        ENDIF
        CALL SUB2(X,Y)
      END SUBROUTINE
 
      SUBROUTINE SUB2 (A,B)
        OPTIONAL :: B                 ! B and Y are argument associated,
        IF (PRESENT(B)) THEN          ! even if Y is not present, in
          B = B * A                   ! which case, B is also not present
          PRINT*, B
        ELSE
          A = A**2
          PRINT*, A
        ENDIF
      END SUBROUTINE

関連情報

IBM Copyright 2003