#author("2018-07-26T00:20:28+09:00","default:Miyashita","Miyashita") #author("2019-07-12T14:08:49+09:00","default:Miyashita","Miyashita") *文字列の扱いについて [#bd459870] ***characterでの宣言 [#dee218b8] 宣言部では #codeprettify(lang-fortran){{ character :: str*10 !または character*10 :: str character :: str*10 !または character*10 :: str }} で10カラム分の文字列となる. ***文字列の配列 [#i48022f9] nパターンの文字列を一つの変数の中に格納したいときは #codeprettify(lang-fortran){{ character*50 :: filename(n) character*50 :: filename(n) }} ***文字列の結合 [#g119a4e3] スラッシュ2つ分.文字列aとbを結合するなら #codeprettify(lang-fortran){{ a//b a//b }} ***サブルーチンでの文字列変数の引き渡し [#k476b357] サブルーチンで文字列を引き渡すときは,可変長でもいける. character(*)とすることで, 文字列foobarがどんな長さでも大丈夫.~ character(n)のnに定数を入れてしまうと少し面倒くさい.下記の通り. #codeprettify(lang-fortran){{ !-- 例1 subroutine HOGESUB(foobar) implicit none character*10, intent(in) :: foobar subroutine HOGESUB(foobar) implicit none character*10, intent(in) :: foobar }} #codeprettify(lang-fortran){{ !-- 例2 subroutine HOGESUB(foobar) implicit none character(*), intent(in) :: foobar subroutine HOGESUB(foobar) implicit none character(*), intent(in) :: foobar }} 例1のようにcharacter*10とサブルーチン内で宣言した場合に, #codeprettify(lang-fortran){{ call HOGESUB('12345678 ') ... (メイン文) end program call HOGESUB('12345678 ') ... (メイン文) end program }} #codeprettify(lang-fortran){{ subroutine HOGESUB(foobar) subroutine HOGESUB(foobar) ... open(11,file=trim(foobar)//'.dat') open(11,file=trim(foobar)//'.dat') ... end subroutine end subroutine }} のように10文字分空白で埋めると,開かれたファイルは 12345678 .dat と,trim(foobar)をしても空白が含まれてしまう.~