クライアントが必要とするデータを記述するには、DATA DIVISION の任意のセクションを使用できます。
Data Division. Local-storage section. 01 anAccount usage object reference Account. 01 aCheckingAccount usage object reference CheckingAccount. 01 aCheck usage object reference Check. 01 payee usage object reference Account. . . .
クライアントはクラスを参照するので、オブジェクト参照 (つまり、クラスのインスタンスへの参照) と呼ばれる 1 つ以上の特別なデータ項目をクライアントは必要とします。 インスタンス・メソッドへの すべての要求は、メソッドがサポートされる (すなわち、継承によって定義されているか、または使用可能である) クラスの インスタンスへのオブジェクト参照が必要です。オブジェクト参照をコーディングして COBOL クラスの インスタンスを参照する場合と同じ構文を使用して、Java クラスのインスタンスを 参照します。上記の例では、usage object reference という句は、オブジェクト参照データ項目を表します。
上記のコードの 4 つのオブジェクト参照はすべて、クラス名が OBJECT REFERENCE 句の後に現れるので、型式化 オブジェクト参照と呼ばれます。 型式化オブジェクト参照の参照先は、OBJECT REFERENCE 句で名前付けしたクラスのインスタンス、またはそのサブクラスのいずれか 1 つ に限られます。したがって、anAccount は、Account クラスのインスタンス、またはそのサブクラスのいずれかを参照できますが、ほかのクラスの インスタンスを参照することはできません。 同様に、aCheck の参照先は、Check クラスのインスタンス、またはそのサブクラスのインスタンスに限られます。
上記に示されていない、別のタイプのオブジェクト参照は、OBJECT REFERENCE 句の後にクラス名がありません。 そのような参照を汎用 オブジェクト参照と呼びます。すべてのクラスのインスタンスを参照できるという意味です。汎用オブジェクト参照は、非常に限られた環境 (INVOKE class-name NEW . . . ステートメントの RETURNING 句で使用するとき) でしか Java との相互運用が可能ではないので、汎用オブジェクト参照をコーディングするのは避けてください。
OBJECT REFERENCE 句で使用するクラス名は、CONFIGURATION SECTION の REPOSITORY 段落で定義しなければなりません。
関連タスク
LOCAL-STORAGE または WORKING-STORAGE の選択
COBOL および Java での相互運用可能なデータ型のコーディング
メソッドの呼び出し (INVOKE)
クライアント定義用の REPOSITORY 段落
関連参照
RETURNING 句
(「COBOL for Windows 言語解説書」)