以前のリビジョンの文書です
compiler | gfortran | ifort | frt |
---|---|---|---|
エラーの検出![]() | -Wall | -check all | -Eg? |
配列外参照 | -fbounds-check | -CB | |
暗黙の型宣言 | -fimplicit-none | -warn declarations | |
浮動小数点演算例外の検出 | -ffpe-trap=zero | -fpe0 | |
標準外機能の警告 | -std=f95 | -std |
ファイル名をcharacter変数に代入して使う。ファイル名の変更にはwrite文を使う。 逐次計算に使える。
character(len=12) filename ... do i=1,100 ... write(filename,'(a,i4.4,a)') 'hoge',i,'.dat' open(10,file=filename) ... write(10,*) ... ... close(10) end do
このファイルをperlに食わせて処理すると便利かも.
ifortでは出力時に勝手に改行する仕様になっている。改行を抑制するためには、Format文を使用すればよい。
integer n real(8),allocatable::a(:) n=9 allocate(a(9)) do i=1,n a(i)=i end do write(*,'(<n>f)') a end program
複数のファイル(サブルーチンetc.)で構成されるプログラムを動かすのに便利. 以下の文を「makefile」という名前で作り,コンパイルしたいファイルと同じディレクトリに置く.
TARGET = a.out OBJECTS = modules.o main.o sub1.o sub2.o F90 = ifort FLAGS = -check all -warn declarations -CB -fpe0 -traceback COMMON_MOD = modules.f90 .SUFFIXES : .SUFFIXES : .o .f90 .f90.o: ${F90} -c $< ${FFLAGS} ${TARGET} : ${OBJECTS} ${F90} -o $@ ${OBJECTS} clean : rm -f *.o *~ a.out *.mod ${OBJECTS} : ${COMMON_MOD}
あとは,makeコマンドを打てばコンパイル完了.そして実行(上の例では./a.outを打てば良い).
$ make $./a.out
また,以下の様にmake cleanで実行ファイル(a.out)及びオブジェクトファイル(*.o)を消去できる. (強制消去でなく質問型消去にする場合はmakefileのrmの後の[-r]を[-i]に変える.)
make clean