Fortranの文法

namelistについて

namelist の読み込み方

namelist /parameters/ file1, var1, var2, flag1, ....

open (lun,file=trim("namelist.lst"),status="old",form="formatted")
read (lun,nml=parameters)
close(lun)

namelist の書き方

&parameters
file1 = "dat/some_file.dat"
var1  = 0.2
flag1 = True
etc.
/

namelist の注意点

  • namelist 名 ( /xxx/ と &xxx の部分 :: parameters(上) ) )は任意、わかりやすさでグルーピングすべし.

  • read(nml=parameters)

  • character型は""で囲う方が無難. じゃないと、ドット(.)やスラッシュ(/)で終わってしまう.

  • 記法(エラー出力)は残念ながらコンパイラ依存の部分あり.

  • 行末カンマが必須な処理系もあるらしい.

  • & と namelist名の間に空白を許さない系もあるらしい(gfortran?).

write 文のFormat中に文字を入れる場合について

  • 基本的には、ダブルクォーテーションとシングルクォーテーションを入れ子にして、文字列をFormat中に入れ込めば良い.

  • e.g.1

write( 6, "('value',4x,'string',4x,(e12.5))" ) variable1
  • e.g.2 次のコード中のwrite文は、どれも同じ出力を返す.

write_format_text.example.f90
program main
  implicit none
  double precision :: variable1 = 2.d-1
  character(100)   :: fmt = "('value',4x,'string',4x,(e12.5))"
  
  write(6,"(a,'')") "This is training of Fortran write format."
  write(6,*)
  write(6,"('value',4x,'string',4x,(e12.5))") variable1
  write(6,'("value",4x,"string",4x,(e12.5))') variable1
  write(6,fmt) variable1
  write(6,*)
  
end program main
  • 出力は以下.

kent@maxwell ~/fortran/test/write__format $ ./main
This is training of Fortran write format.

value    string     0.20000E+00
value    string     0.20000E+00
value    string     0.20000E+00