更新掘り下げた後、これは、スタブ for を使用して C++ から Fortran にファイルハンドルを渡すいくつかの回避策の一部であることがわかりましたOPENPIPE
。OPENPIPE
外部で宣言されたファイルハンドルを返すだけで、パイプでは何もしません。OPENHOLDFILENAME
実際にファイルを作成しますが、これと関係があるのか まだ混乱してDFWIN
います。の関数宣言を提供する必要がありましたOPENPIPE
か? もしそうなら、彼らはなぜそれがEXTERNAL
Fortran コードのように宣言されたのですか?
私は、GCC ツールチェーンでレガシー Fortran をコンパイルするタスクを与えられました。私はすでにいくつかのソース ファイルを正常にコンパイルしましたが、DFWIN
いくつかの Win32 API 関数にリンクするモジュールに関して問題が発生しました。どうやらいくつかの Win32 パイプ関数を使用しており、これを gfortran で動作する最新の同等のものに置き換える必要があります (古いコンパイラは Compaq Visual Fortran でした)。
まず、DFWIN
モジュールといくつかの外部関数が含まれていることがわかります。
USE DFWIN
EXTERNAL OPENPIPE
EXTERNAL OPENHOLDFILENAME
OPENPIPE
の使用例を次に示します。
OPEN(UNIT=INN,FILE=
1 '\\.\pipe\input.txt',
1 FORM='FORMATTED',STATUS='old',readonly,
1 USEROPEN=OPENPIPE)
gcc/gfortran を使用する最新の Windows/Linux システムでこれらの呼び出しを置き換えるために使用できるモジュールは何ですか?
編集: 私たちの優先事項は、これを Windows で実行することですが、将来的には Linux にもデプロイしたいと考えています。