メソッドの呼び出し

メソッドを呼び出すには、INVOKE 文を使用するか、文内呼び出し構文を使用します。

INVOKE 文

たとえば、次の INVOKE 文は、入力文字列 obj-string に対して replace メソッドを呼び出し、結果を obj-string に戻します。メソッド名の大文字と小文字は .NET と JVM で異なるため注意してください。.NET では replace、JVM では Replace になります。

       invoke obj-string::replace("Some" "New")   *> .NET
       invoke obj-string::Replace("Some" "New")   *> JVM 
       display obj-string

文内呼び出し

同様に、次の SET 文は、暗黙的なプロパティ設定メソッドを用いる文内呼び出し構文を使用します。この例の文は、入力文字列 obj-string に対して Replace() メソッドを呼び出し、結果を aString 変数に設定します。

       set aString to obj-string::replace("Some" "New")   *> .NET
       set aString to obj-string::Replace("Some" "New")   *> JVM
       display aString 

また、文内呼び出し構文を使用してプロパティにアクセスできます。次の例では、文字列 myString の Length プロパティにアクセスし、このプロパティが表示されます。

       display "Total characters is " myString::Length

呼び出しコードと同じコンパイルのメソッド (静的メソッドまたはインスタンス メソッドのいずれか) を次のように呼び出すことができます。

静的メソッドの呼び出し

静的メソッドを呼び出すには、クラス名の後に :: を続けてメソッド名を指定します。たとえば、次の INVOKE 文の SimpleClass::StaticMethod がこれに当たります。

       invoke type SimpleClass::StaticMethod
       ...
       class-id SimpleClass.
       method-id StaticMethod  static.
          display "In static method"
       end method.
       end class.

インスタンス メソッドの呼び出し

同じコンパイル単位内のインスタンス メソッドを呼び出すには、最初にオブジェクトをインスタンス化します。次に、インスタンス オブジェクトの後に :: を続けてメソッド名を指定します。たとえば、次の INVOKE 文の mySimpleObj::InstanceMethod がこれに当たります。

       01 mySimpleObj type SimpleClass.
       set mySimpleObj to new SimpleClass("Hello")
       invoke mySimpleObj::InstanceMethod
       ...
       class-id SimpleClass.
       01 thisString string.

       method-id New.
       procedure division using by value aString as string.
           set thisString to aString
       end method.

       method-id InstanceMethod.
       procedure division.
           display "In instance method"
           display "Instance data is " thisString
       end method.

コアのサンプルも参照してください。このサンプルは、 Start > All Programs > Micro Focus Visual COBOL > Samples , under COBOL for JVM (Windows) or $COBDIR/demo (UNIX). に用意されています。