次字串的起啟和終止位置, 可以使用整數常數,變數或陳式規定。 假如未註明起啟位置, 則假設為 1。 假如未註明終止位置, 則假設為該變數內含字串的最後位置。 例如, UNIT(:4) 之值為 'CENT', 而 UNIT(4:) 之值為 'TERS'。 注意起啟位置應為正, 而終止位置應大於起啟位置。

修改字串的一部分時, 可以引用次字串。 例如,

UNIT(:5) = 'MICRO'

則 UNIT 的值變成 'MICROMETERS'。

輸出和輸入

字元資料的輸出和輸入, 可以使用串列式或格式化 I/O。 用法見 第六章

10.2 INDEX 和 LEN 函數

INDEX

當抽取或修改次字串時, 往往要先找其在字串中的位置。 例如, 'ATOMIC WEIGHT OF KRYPTON'

中找 'WEIGHT' 的置, 可使用 FORTRAN 的庫存函數 INDEX :

INDEX('ATOMIC WEIGHT OF KRYPTON', 'WEIGHT')

計算, 其值應為 8。

另一 FORTRAN 的庫存函數 LEN, 用以計算字串的長度。 例如,

CHARACTER *20 NAME NAME = 'JOHN DOE' 敘述 結果 -------------------------------------------- PRINT *, LEN('JOHN DOE') 8 PRINT *, LEN(NAME) 20 N = LEN('MR. ' // NAME) N 值為 24 PRINT *, LEN(NAME(9:)) 12 DO 10 I = 1, LEN(NAME) 迴圈重覆 20 次 -------------------------------------------- EDITOR (source)

10.3 字元比較

第四章 提及的比較運算子, 都可以字元或字串為運算元。 不過字元的比較是根據其數值碼的大小順序,即所謂 對併順序 (collating sequence)。 這種順序隨計算機而略有不同。

LLT, LLE, LGT, 和 LGE 函數

根據對併順序做比較時, 同一程式在不同的計算機上跑, 很可能產生不同的結果。 然而使用 LLT, LLE, LGT, 和 LGE 函數, 固定採用 ASCII 碼 的對併順序, 就不致發生這種問題。
ANSI FORTRAN 77 標準特別規定: 大寫字母 A 到 Z , 和數字 0 到 9 , 依照通常的次序。 字母和數字的數值碼不交叉。 空白必須在 A 和 0 之前。 然而並未規定特殊符號的次序。 LLT ('1', 'A')

ICHAR 和 CHAR 函數

每一字元在對併順序中的位置, 可用 ICHAR 函數取得。 用法如下: ICHAR( char )

char 為以單一字元為值的陳式。

ICHAR 的反函數(inverse function) CHAR 用法如下:

CHAR( integer )

此函數產生一字元, 在對併順序中的位置為 integer

CODER (source)

FORTRAN 90 特色

  • 字串也可用雙引號,如 "CENTIMETERS"
  •