THREAD は、COBOL プログラムで、複数の POSIX スレッドまたは PL/I タスクを持つ 言語環境プログラム・エンクレーブでの実行が有効化されることを示します。
THREAD オプションの構文 .-NOTHREAD-. >>-+----------+------------------------------------------------>< '-THREAD---'
デフォルト: NOTHREAD
省略形: なし
THREAD オプションを指定してコンパイルされたプログラムは、スレッド化されていないアプリケーションでも使用することができます。ただし、 スレッド化されたアプリケーションで COBOL プログラムを 実行する場合は、言語環境プログラム・のエンクレーブ内のすべての COBOL プログラムが THREAD オプションを 指定してコンパイルされている必要があります。
NOTHREAD を指定した場合、その COBOL プログラムは、複数の POSIX スレッド または PL/I タスクを含むエンクレーブで実行することができません。
Enterprise COBOL より前のコンパイラーでコンパイルされたプログラムは、NOTHREAD を 指定してコンパイルされたものとして処理されます。
THREAD オプションが有効化されている場合には、次の項目はサポートされません。 これらの言語エレメントが検出された場合は、エラーとして診断されます。
また、スレッド化されている場合とスレッド化されていない場合では、一部の言語構成要素のセマンティクスが異なります。
スレッド化されたアプリケーションの場合、プログラミングおよび環境に関するさまざまな制約が適用されますが、スレッド化されていないアプリケーションでのプログラムの使用についてはあまり制約がありません。例えば、THREAD オプションを指定してコンパイルされたプログラムは、実行時に複数の POSIX スレッドまたは PL/I タスクがアプリケーションに含まれていない場合は、 CICS 環境および IMS 環境で実行することができ、AMODE 24 で実行することも、マルチスレッド化をサポートしない他のプログラムとの間で呼び出しを行うこともできます。
THREAD オプションを指定してコンパイルされたプログラムは、 言語環境プログラムの事前初期設定ルーチン CEEPIPI を呼び出すことにより作成された再使用可能環境でサポートされます。しかし、IGZERRE または ILBOSTP0 を呼び出すことにより作成された再使用可能環境や、RTEREUS ランタイム・オプションを使用して作成された再使用可能環境は、THREAD オプションを指定してコンパイルされたプログラムをサポートしません。
パフォーマンスの考慮: THREAD オプションを使用する場合は、自動的に生成される逐次化ロジックのオーバーヘッドが 原因で、実行時のパフォーマンスが多少低下することがあります。
関連参照
矛盾するコンパイラー・オプション