引数の説明
INVOKE文またはメソッドの行内呼び出し. |
メソッド名. |
例
000001 IDENTIFICATION DIVISION. 000002 CLASS-ID. C5706. 000003 STATIC. 000004 PROCEDURE DIVISION. 000005 METHOD-ID. MAIN. 000006 DATA DIVISION. 000007 WORKING-STORAGE SECTION. 000008 01 WOBR USAGE OBJECT REFERENCE C5706. 000009 01 P1 PIC S9(4) COMP-5. 000010 PROCEDURE DIVISION. 000011 INVOKE WOBR "M5706" USING BY REFERENCE P1. 000012 END METHOD MAIN. 000013 END STATIC. 000014 IDENTIFICATION DIVISION. 000015 OBJECT. 000016 PROCEDURE DIVISION. 000017 IDENTIFICATION DIVISION. 000018 METHOD-ID. M5706. 000019 DATA DIVISION. 000020 LINKAGE SECTION. 000021 01 LK1 PIC 9(4) COMP-5. 000022 PROCEDURE DIVISION USING LK1. 000023 DISPLAY "Hello, COBOL object world!". 000024 END METHOD M5706. 000025 END OBJECT. 000026 END CLASS C5706.
C5706.cob (11) : JMN5706I-S INVOKE文で指定したメソッド名'M5706'のインタフェースに適合するメソッドがありません.INVOKE文を無効とします.
詳細な説明
NetCOBOL for .NETでは,コンパイラは指定されたオブジェクトやクラスのメソッドの中から,INVOKE文のUSING指定やメソッドの行内呼出しのパラメタとして指定された実パラメタに適合するメソッドを探します.
メソッド名が一致するか.
指定された実パラメタと同じ個数の仮パラメタをもっているか.
個々のパラメタの受け渡し方法が実パラメタの指定と仮パラメタの定義で矛盾しないか.
個々の実パラメタが仮パラメタに適合しているか.
名前が一致するメソッドは見つかったが,それ以外のいずれかの評価で実パラメタの指定が適切でないと見なされた場合,この診断メッセージが出力されます.
次の点に注意して,メソッド呼び出しに指定した仮パラメタの属性を見直してください.
上記の評価規則の順に実パラメタの指定と呼び出そうとするメソッドの仮パラメタの定義を比較して誤りを修正してください.
パラメタの受け渡し方法を明示的に指定しない場合のデフォルトはCOBOLでは参照渡しですが,C#などの言語で値渡しです.INVOKE文の場合,実パラメタに対して明示的にBY指定で受け渡し方法を指定することができますので,BY指定を指定していない場合は呼出されるメソッドの定義に合わせて,適切なBY指定を指定してみてください.
配列オブジェクトとして定義した仮パラメタ(例えばString型の配列)に配列の要素に格納可能な項目(String型のデータ項目等)を実パラメタとして指定しても,受け渡すことはできません.配列オブジェクトの要素への格納するためには通常はメソッド呼出しを使用する必要があります.
引数を持つメソッドの行内呼出しである場合は,引数の書き方が正しいかどうかも確認してください.定数(メソッド名)と左括弧の間に"USING"などの語が書かれていると,引数は認識されません.
型パラメタ付きメソッドの呼出しである場合は,以下も確認してください.
メソッド指定子を使用する必要はないか.
すべての型引数が型パラメタの制約条件を満たしているか.
次の場合,型パラメタ付きメソッドの呼び出しにはメソッド指定子を使う必要があります.
メソッドが仮引数を持たない.
型パラメタを型引数に持つ構成型が仮引数である.
メソッドの型パラメタのうち,仮引数として現れないものが1個以上ある.
型パラメタ型の仮引数に対応する実引数が,COBOL独自型である.