Fortran アプリケーションでネットワーク機能を呼び出せるようにしたいと考えています。私の上司は、C と Fortran を使用する代わりに、Fortran ですべてを行うように私に求めています。Windows で PGI の Fortran コンパイラを使用するバージョンのアプリケーションを既に作成しています。Linux に移行しており、おそらく Linux のコンパイラを使用する予定です。現在、gfortran を使用しています。
これらのネットワーク呼び出し用のインターフェイスを作成し、すべてをコンパイルしてリンクします。以下のコードは、インターフェイスと定数がモジュール内にあることを除いて、私がやっていることと似ています。
PROGRAM MAIN
INTEGER,PARAMETER ::AF_INET = 2
INTEGER,PARAMETER ::SOCK_STREAM = 1
INTEGER,PARAMETER ::IPPROTO_TCP = 6
INTERFACE
FUNCTION socket(domain,type,protocol)
INTEGER ::socket,domain,type,protocol
END FUNCTION
END INTERFACE
sock = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP)
WRTIE(*,*)"Socket returned: ",sock
END PROGRAM
プログラムを実行すると、ソケット関数が失敗して -1 が返されます。何が起こっているのかよくわかりません。コマンドラインにライブラリを追加していないので、デフォルトのライブラリと正しくリンクしていると思います。を使用してコンパイルします
gfortran -o MAIN_PROGRAM MAIN_PROGRAM.f90 -fno-underscoring