Fortran では、文字列を次のように宣言できます。
character*80 mystring
そしてそれを次のように送信します:
call MPI_Send(mystring,len(mystring),MPI_CHARACTER,...,ierr)
または、文字列を文字の配列として宣言することもできます (C で伝統的に行われている方法に沿ったものです)。
character mystring(80)
そしてそれを次のように送信します:
call MPI_Send(mystring,80,MPI_CHARACTER,...,ierr)
私の理解では、これら 2 つの呼び出しは、C 関数を呼び出すときに異なるインターフェイスを持つことになります。(前者は、多くの場合、文字列の長さを保持する追加のパラメーターを値で渡すことによってコンパイラーによって実装されますが、後者はそのパラメーターを渡しません)。では、MPI 実装 (通常は C で記述) はどのように違いを認識しているのでしょうか?