実数値を文字列に変換する関数
初回なのに、これまでのあらすじから。
…Fortran 2008 で編集記述子 G0
が導入されて普段使いの書式仕様は (*(G0,1X))
か (*(G0))
で済むことに。しかし実数値の満足な出力には有効桁数の指定が必要。ならば書式仕様の方はそのままで、実数値は文字列に変換して出力項目にすればいいのでは…
(詳しくは 最新 Fortran 書式仕様 参照。)
そこで今回はとりあえず書いてみましょう。
MODULE MODULE USE, INTRINSIC :: IEEE_ARITHMETIC INTEGER, PARAMETER :: & R_ = IEEE_SELECTED_REAL_KIND(13) INTEGER, PARAMETER :: L_ = 132 CONTAINS ! FUNCTION F_(A,N,FMT) RESULT(RESULT) INTEGER, INTENT(IN) :: N REAL(R_), INTENT(IN) :: A CHARACTER(*), INTENT(IN) :: FMT CHARACTER(N) :: RESULT CHARACTER(MAX(L_,N)) :: LINE WRITE(LINE,FMT) A RESULT = LINE END FUNCTION F_ END MODULE MODULE PROGRAM PROGRAM USE :: MODULE WRITE(*,"(*(G0))") & '"', F_(12.3_R_,6,"(F0.2)"), '"' END PROGRAM PROGRAM
出力結果は「12.30
」。
意図は実現できそうですが…
(つづく)