マニュアルページ rindex.3f
名前
index, rindex, lnblnk, len - インデックスまたは部分文字列 の
長さの取得
形式
CHARACTER*(*) string, substr
n = INDEX (string, substr)
INTEGER*4 FUNCTION rindex
CHARACTER*(*) string, substr
n = rindex (string, substr)
INTEGER*4 FUNCTION lnblnk
CHARACTER*(*) string
n = lnblnk (string)
CHARACTER*(*) string
n = LEN (string)
機能説明
INDEX(a1,a2) は、文字列 a1 の中で最初に現れた部分文字列 a2
のインデックスを返します。該当する部分文字列が見つからなかっ
た場合は、ゼロを返します。(組み込み関数)
rindex(a1,a2) は、文字列 a1 の中で最後に現れた部分文字列 a2
のインデックスを返します。該当する部分文字列が見つからなかっ
た場合は、ゼロを返します。
lnblnk(a1) は、文字列 a1 の中の、空白以外の最後の文字のイン
デックスを返します。すべての文字オブジェクトが固定長であり、
必要に応じて空白でパディングされている f77 では、この関数が
役立ちます。
LEN は、文字列引数の宣言されたサイズを返します。(組み込み関
数)
注意事項
len、 index、 rindex、 lnblnk を 64 ビット環境で使用できるよ
うに、コンパイラオプション -xarch=v9 や v9a を付けてコンパイ
ルを実行すると、2 GB 以上あるような大きな文字列に適用した場
合は、戻り値が INTEGER*4 のデータ範囲を越えてしまうことがあ
ります。このような場合は、関数、結果を受け取る変数ともに、
INTEGER*8 と宣言する必要があります。
使用例
例: LEN()、 INDEX()、 rindex()、 lnblnk()
CHARACTER s*32 / '123456789 123456789 1234' /
INTEGER*4 declen, first, last, lnblnk, rindex
declen = LEN( s )
first = INDEX( s, '123' )
last = rindex( s, '123' )
lastnb = lnblnk( s )
PRINT*, declen, lastnb, first, last
END
demo% f77 -silent tindex.f demo% a.out
32 24 1 21
demo%
上記の例では、 declen は 32 です。24 ではありません。これ
は、文字変数の宣言された長さであり、実際の文字列の長さではあ
りません。
ファイル
libfui.a