subroutineFile | 呼び出したいサブルーチンが格納されているファイル名。 The name of the file in which the subroutine to call is defined. | |||||||||||||||||||||||
subroutineName | 呼び出したいサブルーチンの名前。 The name of the subroutine to call. | |||||||||||||||||||||||
compilerName | Fortranプログラムのコンパイルに用いるコマンド名(gfortran等)。 Name of the command used to compile a Fortran program (e.g., gfortran). | |||||||||||||||||||||||
format | Fortranサブルーチンに渡す引数のフォーマットを表す文字列。
「...」の部分に入る個々の引数のフォーマットを2-3文字ずつで表し、
それらの文字列を「...」における対応する引数の登場順で
半角空白1文字で区切って並べる。 A string that represents the formats of arguments used for the Fortran subroutine. The format of each argument in “...” is represented by 2-3 characters. These characters are separated by single spaces and are deployed in the order of the arguments in “...”. 個々の引数のフォーマットを表す2-3文字のうちの 最初の1文字は引数の型を表し、以下のいずれかとする。 The first character in each of the 2-3 characters to represent the format of each argument indicates the type of the argument, which can be one of the followings.
個々の引数のフォーマットを表す2-3文字のうちの残りの部分(2-3文字目)は 引数が入力用か出力用かを表す。以下のいずれかとする。 The rest part (2-3th characters) in each of the 2-3 characters to represent the format of each argument indicates whether the argument is for input or output, which can be one of the followings.
これらの文字を半角空白で区切って並べる。例えば 「ii Fo di fio iio do」 のような文字列になる。 These characters are deployed and separated by spaces; for example, “ii Fo di fio iio do”. | |||||||||||||||||||||||
... | Fortranサブルーチンに渡す引数。
サブルーチンと同じ順番で与える。
Fortranサブルーチンでの引数型に応じて以下の型の変数として与える。 The arguments required by the Fortran subroutine, given in the same order as that of the Fortran subroutine. The variable type of each argument is determined from that of the corresponding argument of the Fortran subroutine as follows.
|
#include <inc.h> int main(void) { double a=1.2; int b=3; double c; callFortranSubroutine ("sub.f90","addint","gfortran", "Fi ii Fo",&a,&b,&c); printf("%.1f\n",c); return 0; } |
subroutine addint(d,e,f) implicit none real d integer e real f f=d+real(e) end subroutine addint |
include ”sub.f90” program main implicit none real :: r1=1.2 integer :: i2=3 real r3 call addint(r1,i2,r3) write(6,∗) r3 end program main |