REENTRANT

マルチスレッド プログラムの再入性を制御します。マルチスレッド アプリケーションで再入性のあるプログラムはいずれも、この指令とともにコンパイルする必要があります。REENTRANT が指定されている場合は、多くのプログラム領域が動的に割り当てられ、同じプログラムを複数、同時に問題なく実行することができます。

構文:

>>-.---.-.-----REENTRANT---"n"--.-------><
   +-/-+ +-NO--REENTRANT--------+

パラメーター:

n
次のいずれかになります。
1
コンパイラにより生成される一時的な作業領域はすべて、スレッドごとに割り当てられます。環境部およびデータ部に割り当てられるユーザー データおよび FD ファイル領域はすべて、全スレッドにより共有されます。プログラマは、CBL_ 同期呼び出しを使用して、プログラムのデータを確実にシリアル化する必要があります。
2
環境部およびデータ部に割り当てられるユーザー データおよび FD ファイル領域はすべて、スレッドごとに割り当てられます。EXTERNAL データおよびファイルはつねに、すべてのスレッドにより共有されます。

プロパティ:

デフォルト: NOREENTRANT
段階: 構文チェック
$SET: 初期

コメント:

再入性を持たせるプログラムにはいずれも、可能な限り、REENTRANT"1" を使用してください。REENTRANT"2" は、既存のプログラムに再入性に持たせる最初の手順としてのみ、使用してください。

注:
  • 以下を使用するプログラムで使用する場合、REENTRANT 指令はコンパイラによって拒否されます。
    • ALTER 文
    • デバック機能 (SOURCE-COMPUTER...WITH DEBUGGING)
    • ON 文
    • セグメント化
    • 次の指令のいずれか
      • PROTECT-LINKAGE
      • STICKY-LINKAGE
      • STICKY-PERFORM
  • PROGRAM-ID.… IS INITIAL 文を使用している場合に、プログラムに入れ子のプログラムがないときは、REENTRANT"1" は使用できず、REENTRANT"2" しか使用できません。
  • ASP.NET で使用されるような ThreadPool 環境で REENTRANT 指令を使用しないでください。代わりに複数の実行単位モデルを使用する必要があります。