ISO2002MF 

メソッド名段落

メソッド名段落は、この見出し部でメソッド定義を行おうとしていることを示し、メソッドまたはメソッドプロトタイプを識別する名前を指定するとともに、メソッドにメソッド属性を割り当てる。

一般形式

構文規則

  1. 定数-1は英数字の定数であり、表意定数であってはならない。

  2. 親のオブジェクトまたはファクトリの定義の作業場所節にデータ名としてプロパティ名-1を指定した場合、そのデータ名のデータ記述項にPROPERTY指定を書いてはならない。

  3. GET指定を書いた場合、手続き部の見出し中にメソッドのUSING指定パラメータを書いてはならず、メソッドに単一のRETURNING指定を書かなければならない。

  4. SET指定を書いた場合、手続き部の見出し中にメソッドのUSING指定パラメータを書かなければならず、RETURNING指定を書いてはならない。

  5. OVERRIDE 指定は、メソッドプロトタイプで使用してはならない。

  6. OVERRIDE指定が使用されている場合は、上位クラスで定義されたメソッド定義により宣言されたメソッドと同じ名のメソッドが存在していなければならない。上位クラスにあるメソッドは、FINAL句で定義されていてはならない。

  7. OVERRIDE が使用されていない場合で、

    1. このメソッド定義がクラス定義に含まれる場合は、継承されたメソッドはどれも、このメソッド定義で宣言されたメソッドと同じ名であってはならない。

    2. このメソッド定義がインターフェイス定義に含まれる場合は、 継承されたメソッドプロトタイプはどれも、このメソッド定義で宣言されたメソッドプロトタイプと同じ名であってはならない。

  8. NETもしREDEFINE指定が指定されるのであれば、上位クラス(スーパークラス)内で定義されたこのメソッド定義によって宣言されたメソッドと同じ名前を冠したメソッドが存在しなければならない。
  9. FINAL句は、メソッドプロトタイプで指定されていてはならない。

  10. メソッド名-1または定数-1が、親の定義より継承されたメソッド名と同じである場合は、手続き部見出しの中のパラメータ宣言および返される項目が適合規則に従ったものでなければならない。これにより、このメソッド定義を含む定義が、手続き部の章のパラメータおよび戻り項目の適合節に従い、継承された定義すべてに適合することが保証される。

  11. NETもしABSTRACT指定が指定されるのであれば、 ABSTRACT指定もまたそれを含むクラスのCLASS-ID段落において指定されなければならない。
  12. NETもし ABSTRACT指定が指定されるのであれば、このメソッドの手続き部は空でなければならない。

  13. NET ABSTRACT指定は、スタティック・メソッドで指定してはいけない。

  14. NETもしPROTECTED指定が指定されるのであれば、ABSTRACT指定は指定してはいけない。 

  15. NETFOR句のみ、インスタンス・メソッドを得るために指定してもよい。 

  16. NETInterface-name-1は、インターフェイスの名前でなければならず、それはカレント・クラスによって実行される。

  17. NETこのインターフェイスは、カレント・メソッドと同じ署名を有するメソッドを含まなければならない。

一般規則

  1. このメソッド定義により宣言されるメソッドの名は、以下のように決定される。

    1. PROPERTY句を指定した場合、メソッド名は下記のように設定される。

             
      1. GET指定を書いた場合、文字"GET"にプロパティ名-1を大文字化したものが結合される。

      2. SET指定を書いた場合、文字"SET"にプロパティ名-1を大文字化したものが結合される。

    2. PROPERTY句を指定しなかった場合、メソッド名-1がメソッド名となる。ただし、定数-1を指定した場合、それは運用環境の外部にあるクラスの名前を指す。

  2. OVERRIDE 指定は、このメソッドが継承されたメソッドに優先することを示す。

  3. NETREDEFINE指定は、このメソッドが、親メソッドを隠している、同名の新しいメソッドを生成することを示している。隠すとは、オブジェクトが継承されたクラスのものであると記述された場合に、その継承されたメソッドを無効にすることと同じである。ただし、オブジェクトがある特定のクラスのものであると記述されたが、実際には派生クラスのインスタンスを含む場合は、そのオブジェクトの記述において参照されたクラスにおけるメソッドが実行される。

  4. FINAL 句は、どの下位クラスでも、このメソッドが他のメソッドに優先されないことを示す。

  5. メソッドの名前は、このメソッドが定義されているクラスのオブジェクトに関するメソッド呼出しの中で参照できる。

  6. 指定した利用者語がこのメソッド定義のデータ部および上位のファクトリ定義またはオブジェクト定義のデータ部の中に定義されている場合、このメソッドにおいて使用した利用者語はこのメソッド内の宣言を参照する。このメソッドから上位のファクトリ定義またはオブジェクト定義中の宣言を呼び出すことはできない。

  7. GET指定を指定した場合、このメソッドはプロパティ名-1のプロパティ読み出しメソッドとなる。

  8. SET指定を指定した場合、このメソッドはプロパティ名-1のプロパティ設定メソッドとなる。

  9. NETもしPUBLIC指定が指定もしくは暗示された場合は、いずれのランタイム要素からもこのメソッドを呼び出すことができる。

  10. NETPRIVATE指定が指定されたときは、それを含むクラス内においてのみこのメソッドを呼び出すことができる。 

  11. NETPROTECTED指定がそのINTERNAL指定を伴わずに指定された場合は、このメソッドは、その収納クラスもしくはその収納クラスから継承しているクラス内からのみ呼び出すことができる。

  12. NETPROTECTED指定がINTERNAL指定を伴って指定された場合は、このメソッドは、その収納クラスもしくはその収納クラスから継承しているクラス内、または現在のコンパイルユニット内からのみ呼び出すことができる。

  13. NETINTERNAL指定がPROTECTED指定を伴わずに指定された場合は、 このメソッドは、現在のコンパイルユニット内からのみ呼び出ことができる。 

  14. NETABSTRACT指定が指定された場合、このメソッドは、それ自体ABSTRACTではないすべての派生クラスにおいて無効化されなければならない。 

  15. NETカスタム属性指定は、その特定されたカスタム属性とこのメソッドとを関連づける。 

  16. NETFOR句が指定された場合、このメソッドは、明示的インターフェイス・メンバー実行(Explicit Interface Member Implementation)である。このメソッドは明示的には呼び出しができない場合もある。それは、対応するメソッドがインターフェイスタイプにキャストされた、このクラスのインスタンス上で呼び出されたときに、暗黙的に呼び出されるだろう。