字符常数的一般形式是由一对单引号‘
’或一对双引号“”限定的一串字符。字符串中的字符,允许是
PORTRAN
字符集的任意字符,如果系统还支持其它字符,例如汉字、希腊字、化学符号、数学符号,也可引入字符串内,用一对‘ ’或“”界定。
字符型数据除了有类型、种别外,比其它类型还多了一个长度特性,即规定它有几个字符数。字符型说明语句的关键字是
CHARACTER
,其长度说明方法是紧跟在
CHARACTER
后面写一对括号,
括号内写
LEN=
字符长度。其一般形式是:
CHARACTER[(LEN=
整型字符长度表达式
[,KIND=
种别值
])][,
属性说明
] ::
变量名表
[=
初始值
]
其中
LEN
后面的整常数表达式规定被说明字符变量长度,为正整数,
LEN
的参数与
KIND
的参数都写在括号内,次序可以任意。在字符型说明语句中,长度说明必须有,不可省略,种别参数可以省略,此时
取标准
值。仅有关键字
CHARACTER
而没有括号时认为字符是一个字节长。可以省去
LEN=
及
KTND=
,只写参数值,此时字符长度必须写在前面。只有长度说明的语句可分为有括号和无括号两种,例如:
CHARACTER(
LEN=12,KIND=1) :: A,B
CHARACTER(
KIND=1,LEN=12) :: A,B
CHARACTER(
12,1) :: A,B
CHARACTER*
12
:
: A,B
都是等价的,前者说明
X
、
Y2
是字符型变量,种别参数为
3
.每个变量长度为
12
。后者说明表明长度为
12
,种别值为
1
。
长度也可以写成一个
*
号,表示长度暂不确定,待以后与程序中实际需要的长度相一致。例如:
CHARACTER(LEN=*),PARAMETER
:: C_NAME=
‘
GIRL
’
CHARACTER(LEN=*),PARAMETER
:: C_NAME=
‘
BOY
’
都是合法的说明语句,说明字符常量
C_NAME
,前者长度为
4
,后者长度为
3
。
用字符型变量作为过程
的哑元时
,可以用正整数作长度,也可以把
*
作长度,后者可以与任何长度的实元
作哑实结合
,相当于以实元的具体长度
为哑元的
长度。
CHARACTER
后面说明的长度是其后所有实体名的公共长度,如果某一变量的长度与其它不同,可以在其变量名后标出自己的特有长度,方法是在变量名后写上
*
及长度。
例加
:
CHARACTER(
LEN=12) :: A,B*5,C,D*7,E
字符数据中某一部分相连的字符为
字符子串
,也可以作为一个实体与字符变量一样参加操作。
字符子串的
一般形式是:
V(e1:e2)
。
V
是字符型实体名,包括字符变量名、字符函数名、字符数组元素等等。
e1,e2
是整型表达式
或正整常数
,
e1
的值指明子串在
V
中的
起始列号
,
e2
的值指明子串在
V
中的
终止列号
。如果
e1
省略,表示
子串从
第一个
字符取起
;
e2
省略,
表示子串取到
末尾;如
e1,e2
都省略,表示
子串从头
取到尾。例如:设有字符变量
A
,其取值为‘
ABCDE12345FGH
’,则下面
的子串取值
为:
A(3:11)
->
‘
CDE12345F
’,
A(I+4:9)
->
‘
E1234
’
(I=1)
,‘
1234
’
(I=2)
A(:5)
->
‘
ABCDE
’
A(11:)
->
‘
FGH
’
A(:)
->
‘
ABCDE12345FGH
’
A(3:3)
->
‘
C
’
子串在程序中可直接引用,也可被其它字符实体再赋值,因此可使程序员任意地取出一部分字符,并按需要替换一部分字符,非常灵活。例如:
PRINT *
,
(A(I:I
+
1),I=6,9)
,可以打印‘
12
’、‘
23
’、‘
34
’、‘
45
’。