プロパティ

プロパティは、タイプが関連付けられているメンバーです。プロパティはフィールドと似ていますが、値の読み取りと書き込みの手段を提供するアクセス機構があります。

property-specification

property-header procedure-division-header access-modifier statement-block access-modifier statement-block

property-header

type-specifier access-modifier attribute-clause

class-id Things.

01 _size        binary-long private.
01 ReadOnly     binary-long property with no set value 3. 
01 ReadWrite    binary-long property. 

property-id Size binary-long.
 *> Use property-value inside properties to
 *> pass the value in or out
getter.
    set property-value to _size
setter.
    if property-value < 0
        set _size to 0
    else
        set _size to property-value
    end-if
end property.

method-id main static.
    declare foo = new Things()
    add 1 to foo::Size
    display foo::Size
    display foo::ReadOnly
    set foo::ReadWrite to 22
end method.

end class.
property-id PropertyReadOnly string.
  getter.
    set property-value to field-5     
end property.

プロパティのサンプルも参照してください。このサンプルは、Start > All Programs > Micro Focus Enterprise Developer > Samples > Visual COBOL SamplesCOBOL for .NET の場合の場合 に用意されています。

その他の情報

PROPERTY-ID で指定されたプロパティには、GETTER キーワードと SETTER キーワードをそれぞれ使用して、取得アクセス機構と設定アクセス機構のいずれか (あるいは両方) を含める必要があります。コンパイラは、get_ メソッドと set_ メソッドを適宜生成します。

COBOL プログラム内でフィールドをプロパティとして公開するには、次の 2 つの方法があります。

  • プログラム内のデータ宣言でキーワード PROPERTY を指定する方法が最も簡単です。これにより、データ項目の値を取得および設定する 2 つのアクセス用メソッドが自動的にセットアップされます。PROPERTY キーワードの後に続けるオプションの指定があります。これらの指定を使用して、取得アクセス機構または設定アクセス機構のいずれかを抑制できます。AS 句を使用して、外部名を変更することもできます。
  • また、プロパティにアクセスすると必ず実行されるように、PROPERTY-ID と GETTER または SETTER を指定する方法もあります。このメカニズムは、PROPERTY キーワードよりも少し複雑ですが、プロパティにアクセスすると実行される文を完全に制御できます。詳細については、以下を参照してください。 PROPERTY キーワード

FOR 句

FOR 句は明示的なインターフェイスの実装として使用します。これは、包含クラスが 2 つの異なるインターフェイスを実装しており、これら 2 つのインターフェイスに同じ名前と型を持つ PROPERTY-ID がある場合に特に役立ちます。この場合、FOR 句を使用すると、2 つの異なるインターフェイス用に PROPERTY-ID の 2 つの異なる実装を提供できます。

property-id PropertyReadOnly string FOR MyInterface1.
  getter.
    set property-value to field-1     
end property.
property-id PropertyReadOnly string FOR MyInterface2.
  getter.
    set property-value to field-2     
end property.