マルチスレッド化のための COBOL プログラムの準備

バッチ、TSO、IMS、またはz/OS®UNIXで、プロセス内の複数のスレッドでCOBOLプログラムを実行できる。

このタスクについて

マルチスレッド化による実行のための明示的な COBOL 言語は存在しません。正しくは、THREAD コンパイラー・オプションを使用してコンパイルを行います。

COBOL は プログラム・スレッドの管理を直接サポートしません。 ただし、マルチスレッド・アプリケーション・サーバー、C/C++ ドライバー・プログラムを使用してスレッドを作成するアプリケーション、Java™ と相互運用して Java スレッドを使用するプログラム、および PL/I タスク処理を使用するアプリケーションでは、 THREAD コンパイラー・オプションを使用してコンパイルした COBOL プログラムを実行することができます。 つまり、他のプログラムは、プロセス内の複数のスレッドで、または単一のスレッド内の複数のプログラム呼び出しインスタンスとして COBOL プログラムを実行するといった方法で、COBOL プログラムを呼び出すことができます。 スレッド化されたアプリケーションは、単一のLanguage Environment®エンクレーブ内で実行する必要があります。

LOCAL-STORAGE または WORKING-STORAGE の 選択: マルチスレッド化プログラムは再帰的プログラムとしてコーディングしなければならないので、データの永続性は、 再帰的プログラムの永続性となります。

  • LOCAL-STORAGE SECTION 内のデータ項目は、プログラム起動のインスタンスごとに自動的に割り振られます。 あるプログラムが複数のスレッドにおいて同時に 実行されると、起動ごとに個別の LOCAL-STORAGE データのコピーを使用します。
  • WORKING-STORAGE SECTION のデータ項目は、プログラムごとに一度割り振られるので、同じプログラムの呼び出しでは常に、最後に使用されたときの状態で提供されます。

個々のプログラム呼び出しインスタンスに分離するデータについては、 LOCAL-STORAGE SECTIONでデータを定義します。 一般的に、この選択はスレッド化プログラム内の作業データに適しています。 WORKING-STORAGE でデータを 定義 し、プログラムがデータの内容を変更する場合は、以下のいずれかのアクションを実行する必要があります。

  • WORKING-STORAGE 内のデータに 複数のスレッドから同時にアクセスしないようにアプリケーションを構成します。
  • データに別々のスレッドから同時にアクセスする場合には、適切な直列化コードを書き込みます。

関連概念
マルチスレッド

関連参照
スレッド
PROGRAM-ID パラグラフ( Enterprise COBOL for z/OS 言語参照 )