次字串的起啟和終止位置, 可以使用整數常數,變數或陳式規定。
假如未註明起啟位置, 則假設為 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"