所属: 情報棟 一覧

文字列の扱いに関する一般的な事柄

 
戻る
 
 


ここでは、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.