更新掘り下げた後、これは、スタブ for を使用して C++ から Fortran にファイルハンドルを渡すいくつかの回避策の一部であることがわかりましたOPENPIPE。OPENPIPE外部で宣言されたファイルハンドルを返すだけで、パイプでは何もしません。OPENHOLDFILENAME実際にファイルを作成しますが、これと関係があるのか まだ混乱してDFWINいます。の関数宣言を提供する必要がありましたOPENPIPEか? もしそうなら、彼らはなぜそれがEXTERNALFortran コードのように宣言されたのですか?
私は、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 にもデプロイしたいと考えています。