文字列の扱いについて

characterでの宣言

宣言部では

 character :: str*10
 !または
 character*10 :: str

で10カラム分の文字列となる.

文字列の配列

nパターンの文字列を一つの変数の中に格納したいときは

 character*50 :: filename(n)

文字列の結合

スラッシュ2つ分.文字列aとbを結合するなら

 a//b

サブルーチンでの文字列変数の引き渡し

サブルーチンで文字列を引き渡すときは,可変長でもいける. character(*)とすることで, 文字列foobarがどんな長さでも大丈夫.
character(n)のnに定数を入れてしまうと少し面倒くさい.下記の通り.

!-- 例1
 subroutine HOGESUB(foobar)
 implicit none
 character*10, intent(in) :: foobar
!-- 例2
 subroutine HOGESUB(foobar)
 implicit none
 character(*), intent(in) :: foobar

例1のようにcharacter*10とサブルーチン内で宣言した場合に,

 call HOGESUB('12345678  ')
  ... (メイン文)
 end program
 subroutine HOGESUB(foobar) 
  ...
 open(11,file=trim(foobar)//'.dat')
  ...
 end subroutine

のように10文字分空白で埋めると,開かれたファイルは

12345678  .dat

と,trim(foobar)をしても空白が含まれてしまう.


Front page   Edit Diff Attach Copy Rename Reload   New List of pages Search Recent changes   Help   RSS of recent changes
Last-modified: 2018-04-20 (Fri) 14:58:38 (719d)