ILE COBOL プログラムをマルチスレッド化するための準備
iSeries 環境では、プログラムは、プロセスのスレッド内で実行することができます。
ILE COBOL は、THREAD PROCESS ステートメント・オプション (THREAD オプションを参照) を使用して、マルチスレッド化の実行をサポートします。
マルチスレッド化のための ILE COBOL サポートについての本章の説明を理解するためには、以下の用語の理解が必要です。
- ジョブ
- iSeries システムでは、ジョブは 1 つのプロセスを表します。オペレーティング・システムおよびマルチスレッド化アプリケーションは、ジョブ内の実行の流れを取り扱うことができます。
複数のジョブを同時に実行することができ、ジョブ内で実行しているプログラムはリソースを共用することができます。
ジョブは、プログラムの記憶域およびリソースのコンテナーです。
- スレッド
- ジョブ内で、アプリケーションは、1 つまたはそれ以上のスレッドを開始することができます。
1 つのスレッド内では、制御が、実行プログラム間で転送されます。
- 実行単位
- iSeries システムでは、実行単位はプログラム活動化グループを表します。
1 つの実行単位には、複数のスレッドを入れることができます。
マルチスレッド環境で COBOL 実行単位が終了する場合、ジョブも終了します。
実行単位内で、ILE COBOL プログラムは、非 ILE COBOL プログラムを呼び出すことができます (また、その逆も可能です)。
- プログラム呼び出しインスタンス
- 1 つのスレッド内で、制御は、別個の ILE COBOL プログラムと非 ILE COBOL プログラム間で転送されます。
たとえば、ILE COBOL プログラムは、他の ILE COBOL プログラムまたは ILE C プログラムを CALL することができます。
それぞれ別々に呼び出された (つまり、CALL された) プログラムが、プログラム呼び出しインスタンスです。
特定プログラムのプログラム呼び出しインスタンスは、指定のジョブ内の複数のスレッドの中に存在します。
以下の図は、ジョブ、スレッド、実行単位、およびプログラム呼び出しインスタンスの間の関係を示しています。
ILE COBOL は、プログラム・スレッドの開始または管理をサポートする COBOL ステートメントを持っていませんが、COBOL プログラムは、これを実行する API を使用することができます。
ILE COBOL プログラムは、マルチスレッド化環境のスレッドの中で実行することができます。
つまり、ILE COBOL プログラムは、1 つのジョブの複数のスレッド内で実行している他のアプリケーションによって呼び出すか、
またはスレッド内の複数のプログラム呼び出しインスタンスとして呼び出すことができます。
本章の後の部分には、マルチスレッド化環境用の ILE COBOL プログラムを作成するのに役立つ情報が記載されています。
この章では次のことについて説明します。
- マルチスレッド化環境でどのように言語エレメントが解釈されるか
- マルチスレッド化サポートの THREAD をいつ選択するか
- マルチスレッド化環境内での制御転送
- マルチスレッド化環境での ILE COBOL の使用例
(C) Copyright IBM Corporation 1992, 2006. All Rights Reserved.