パフォーマンスを向上させるために、XL Fortran 実行時ライブラリーには専用の
バッファーとそのバッファーの専用の処理方法があります。
つまり、混合言語プログラムは、
異なる言語から同一ファイル上で I/O 操作を自由に混合することはできないということです。
そのような場合にデータ保全性を保つためには、以下のようにします。
- ファイルの位置が重要ではない場合は、
プログラムの Fortran 内部でファイルをオープンして明示的にクローズしてから、
別の言語で作成されているサブプログラムから、そのファイルに対して I/O 操作を行ってください。
- Fortran でファイルをオープンし、
そのオープンしたファイルを別の言語から操作するには、flush_ プロシージャーを呼び出してそのファイル用の
バッファーを保管してから、getfd プロシージャーを使用して
対応するファイル記述子を見つけて、それを Fortran 以外の言語のサブプログラムに渡してください。
flush_ プロシージャーを呼び出す代わりに、
buffering 実行時オプションを使用して、
I/O 操作でのバッファリングを使用不能にすることができます。
buffering=disable_preconn を指定すると、
XL Fortran は事前接続された装置のバッファリングを使用不能にします。
buffering=disable_all を指定すると、
XL Fortran はすべての論理装置のバッファリングを使用不能にします。
- 注:
- flush_ を呼び出してファイルのバッファーをフラッシュした後、Fortran 以外の処理の完了時にファイルをクローズする以外は、
プログラムの Fortran 部分からそのファイルに何も行わないでください。
- WRITE ステートメントを含んでいる XL Fortran サブプログラムが Fortran 以外のメインプログラムから呼び出された場合は、データ・ファイルを
明示的に CLOSE するか、または XL Fortran サブプログラムの flush_ サブルーチンを使用して、必ずバッファーが
フラッシュされるようにしてください。
あるいは、buffering 実行時オプションを使用して、
I/O 操作でのバッファリングを使用不能にすることができます。
- 関連情報:
- FLUSH_ および GETFD
プロシージャーの詳細は、「XL Fortran ランゲージ・リファレンス」の
『サービス・プロシージャーおよび
ユーティリティー・プロシージャー』の節を参照してください。
buffering 実行時オプションの詳細については、実行時オプションの設定を参照してください。
