Fortranでオブジェクト指向(4)
本日のポイント
Fortranの文字列関数1(index, len_trim)
「オブジェクト指向」という点ではわき道にそれますが、
Fortranの文字列関数を紹介します。
FORTRAN77の時代から比べると随分便利な関数が準備されています。
index([文字列], [検索文字列], {back=.true./.false.})
index関数は第一引数の文字列の中で第二引数の文字列が
何番目に出てくるかを調べ整数値を返します。例えば次のプログラムの場合
hoge = "hogehoge"
write(6,*) index(hoge, "eh")
とすると4が表示されます。検索文字列が第一引数に含まれない場合は
0または負の値が表示されます。
またback指定子はオプションですが場合によって非常に有用です。
例えばフルパスを含むファイル名
C:Program Files(x86)hogehoge.txt
からファイル名を取り出す場合は後述のlen_trim関数と併用して
hoge = "C:Program Files(x86)hogehoge.txt"
hogefile = hoge(index(hoge, "", back=.true.)+1:len_trim(hoge))
とするとhogefileに「hoge.txt」を取得できます。
len_trim([文字列])
len_trim関数は文字列のスペースを除く最後の文字がどの位置にあるか
を整数値で返す関数です。len関数が文字列型変数の変数型長を
返すのと対照的です。
例えば
character(5) ho, ge
ho = "ho"
ge = "ge"
write(6,*) ho//ge
を実行すると
「ho ge 」
と表示されます。write文の部分をwrite(6,*) ho(1:len(ho))//ge(1:len(ge))
としても同様です。ここでlen_trim関数を使用し
write(6,*) ho(1:len_trim(ho))//ge(1:len_trim(ge))
とすると
「hoge」
が表示されます。
この関数はFORTRAN77時代にはなかったような気がします。
次回もオブジェクト指向から脱線して文字列の取り扱いを紹介します。