実行時関数:Fortran 実行時ライブラリー (RTL) が示す再入保護の形式を制御します。このルーチンは,C または Fortran プログラムから呼び出すことができます。
モジュール:USE DFLIB
形式
result = FOR_SET_REENTRANCY ( mode )
mode
型 INTEGER(4) でなければなりません。以下のオプションの 1 つを含んでいなければなりません。
Fortran RTL に RTL コードのクリティカル・セクションの周りで単純なロッキングを行うように指示します。再入のこの形式は,Fortran RTL が非同期システム・トラップ (AST) またはアプリケーション内のスレッドのために再入できない時に使うべきものです。
Fortran RTL に RTL コードのクリティカル・セクションの周りを単純なロッキングと AST の無効を行うように指示します。再入のこの形式は,Fortran RTL を呼ぶ AST ハンドラをアプリケーションが含んでいる時に使うべきものです。
Fortran RTL にスレッド・ロッキングを行うように指示します。再入のこの形式は,マルチスレッド・アプリケーションで使われるべきものです。
Fortran RTL に現在の再入モードを返すように指示します。
結果
結果の型は INTEGER(4) です。返し値は,引数 が FOR_K_REENTRANCY_INFO でなければ,Fortran 実行時ライブラリーの再入モードの以前の設定を表します。引数が FOR_K_REENTRANCY_INFO である場合,返し値は現在の設定を表します。
自分が望む再入のレベルをサポートする RTL を使わなければなりません。たとえば,プログラムをスレッド・セーフ RTL でビルドしていなければ,FOR_SET_REENTRANCY はスレッド保護 (FOR_K_REENTRANCY_THREADED) の要求を無視します。
例
以下の例を考えます。
PROGRAM SETREENT USE DFLIB INTEGER*4 MODE CHARACTER*10 REENT_TXT(3) /'NONE ','ASYNCH ','THREADED'/ PRINT*,'Setting Reentrancy mode to ',REENT_TXT(MODE+1) MODE = FOR_SET_REENTRANCY(FOR_K_REENTRANCY_NONE) PRINT*,'Previous Reentrancy mode was ',REENT_TXT(MODE+1) MODE = FOR_SET_REENTRANCY(FOR_K_REENTRANCY_INFO) PRINT*,'Current Reentrancy mode is ',REENT_TXT(MODE+1) END