#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)をしても空白が含まれてしまう.~

Front page   Edit Diff Attach Copy Rename Reload   New List of pages Search Recent changes   Help   RSS of recent changes