所属: 情報棟 一覧
文字列の扱いに関する一般的な事柄
戻る
ここでは、FORTRAN による文字列の扱いに関して、一般的な事項を簡単に書きます。
文字型変数に格納する文字列のバイト数 * の制限値(サイズ)を指定します。大き目のバイト数を確保しておくと
よいです。
* シフトJIS文字コードならば、英数・半角記号・半角カタカナ以外は、1文字で2バイト。
例:
character*100 a
または、
character a*100
a という文字型変数には、最大100バイトの文字データを記憶できます。
サブルーチンなどで、引数変数のサイズが CALL する側で明示されている場合には、
character*(*) a
でもよいです。(環境によっては、だめな場合もある)
例:
character*100 a
... (中略の意味、以下同じ)
CALL XYZ(a)
...
stop
end
subroutine XYZ(a)
character*(*) a
...
return
end
文字型変数 a の iバイト目からjバイト目のみを指定する場合は、
a(i:j)
とします。iバイト目から最後までならば、
a(i:)
とします。なお、a = 'abcdefg' である場合、a(1:1) は 'a'、a(2:3) は 'bc' です。
「//」で文字型変数の連結が行われます。
例
character*5 a,b
character*10 c
a = 'abcde'
b = 'vwxyz'
c = a//b
とすると、c には 'abcdevwxyz' が代入されます。
! 注意 !
例
character*5 a,b
character*10 c
a = 'abc'
b = 'vwx'
c = a//b
とすると、c は 'abcvwz' ではなく、'abc vwz' になります。これは、a が実際には 'abc '
(文字列 abc に続いて半角スペースが2個) だからです。
「検索」といっても、「検索エンジン」をイメージするようなたいそうなものではありません。
文字型変数 a に 'xyz' という文字列があるかどうか、あるならぱ何バイト目からあるのかを調べるためには
例:
index(a, 'xyz')
とします。a に 'xyz' がないならば、index(a, 'xyz') は (整数型) 0 、a の iバイト目が 'x' で、
iバイト目から i+2 バイト目にかけて'xyz'と続くならば、index(a, 'xyz') は i になります。
! 注意 !
例:
character*10 a,b
integer idx
a = 'abcdefghij'
b = 'abc'
idx = index(a, b)
とすると、idx は 1 ではなく、 0 になります。これは、b が実際には 'abc '(文字列 abc に続いて
半角スペースが7個) だからです。
文字型変数 a に何も文字を入れないならば
例:
a = ' '
とします。
これは、文字型変数の初期化(データクリア)にも使えます。
なお、文字型変数 a が空白であるか調べるには、以下のようにすればよいです:
例:
if (a.eq.' ') then
write(*,*) 'a is empty.'
else
write(*,*) 'a is not empty.'
end if
シングルクォーテーション( ' )は、「''」で表します。
例: (シングルクォーテーションを一つ画面に表示させる)
write(*,*) ''''
例の説明:
1つ目の ' は、文字列の始まりをあらわす。
2つ目と3つ目の ' は、合わせて「''」として、表示するシングルクォーテーション一つをあらわす。
4つ目の ' は、文字列の終わりをあらわす。
戻る
▲ 簡易html化ドキュメント
Copyright(C) TAKAGI-1 All rights reserved.