fmemo
Fortran
最終更新:
fmemo
-
view
ifortのコンパイルオプション
倍精度オプション
$ ifort -r8 test.f90
デバッグオプション。これをつけないと配列の領域外参照をしていてもエラーにならないことがある。最適化オプションと併用するとエラーが起きるかもしれない?
$ ifort -CB -traceback -g -check test.f90
書式無しファイル入出力でreclの単位を1byteにするとき。
$ ifort -assume byterecl test.f90
g95のコンパイルオプション
デバッグしたいとき。
$ g95 -g -Wall -fbounds-check -ftrace=full test.f90
エンディアンを指定したいとき
ifort
環境変数FORT_CONVERTn(nは数字)をBIG_ENDIANまたはLITTLE_ENDIANにすると、その装置番号で開いているファイルのエンディアンの扱いを変更できる。
$ FORT_CONVERT10=BIG_ENDIAN # 装置番号10番をBIG_ENDIANにしたいとき $ FORT_CONVERT15=LITTLE_ENDIAN # 装置番号15番をLITTLE_ENDAINにしたいとき
すべてのエンディアンを一括して指定したいときは以下のオプションをつける
- -convert big_endian
- -convert little_endian
g95
環境変数G95_ENDIAN=BIG, G95_ENDIAN=LITTLEを使う。
Fortranデバッグ用オプション
実行時に引き数を渡したいとき
iargc, getargを使えばよい。これは非標準だが多くのコンパイラで使える。
program main implicit none integer :: i integer :: iargc, num character(128) :: var ! iargcは引数の数を返す関数 num = iargc() write(*,*) num ! getargは引数を返すサブルーチン do i=1,num call getarg(i,var) write(*,*) trim(var) enddo stop end program
$ ./iargc_getarg.exe Anne Beth Chris 3 Anne Beth Chris
ちなみに、0番目には"./iargc_getarg.exe"が入る。
参考サイトfortran備忘録
整数のサイズ
integer(1)=1バイト整数 -128〜127
doループの仕様
do i=1,10 .... enddo
のdoループが終わった直後のiの値は11
内部入出力文
character(64) :: char char='100 200' read(char,*) num1, num2 write(*,*) "num1= ", num1
program main implicit none integer :: i,num character(100) :: fmt,cnum real(8) :: var i=4 num = 4 var = 1.23456 write(cnum,'(i2)') num write(*,*) trim(cnum) fmt = '('//trim(cnum)//'f10.4)' write(*,*) trim(fmt) write(*,fmt) var,var,var,var stop end program main