配列の添字付けと順番については Fortran と C とでは異なります。
C の配列は常にゼロから始まりますが、Fortran の配列はデフォルトでは 1 から始まります。この問題には、次のような 2 つの解決策があります。
前述の例のように、Fortran のデフォルトを使用します。このときは、Fortran の B(2) 要素は C の b[1] 要素と同義になります。
Fortran の配列 B を B(0) で始まるように指定します。
INTEGER B(0:2) |
このときは、Fortran の要素 B(1) が C の b[1] 要素と同義になります。
Fortran の配列は列主導の順番で、A(3,2) のように格納されます。
A(1,1) A(2,1) A(3,1) A(1,2) A(2,2) A(3,2) |
C の配列は行主導の順番で、A[3][2] のように格納されます。
A[0][0] A[0][1] A[1][0] A[1][1] A[2][0] A[2][1] |
1 次元の配列では、これによって問題は生じません。しかし、多次元の配列では、すべての参照と宣言における添字の順番と使用法に気をつけてください。 なんらかの調整が必要になります。
たとえば、行列操作の一部を C で行い、残りを Fortran で行うのは混乱が生じる可能性があります。一方の言語で全体の配列をルーチンに渡し、そのルーチン内ですべての行列操作を実行すれば、混乱を避けることができます。