マルチスレッド化のための 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内のデータに 複数のスレッドから同時にアクセスしないようにアプリケーションを構成します。- データに別々のスレッドから同時にアクセスする場合には、適切な直列化コードを書き込みます。