文字型の宣言文

CHARACTER 型指定子の後に,文字オブジェクトまたは関数の長さを続けることができます。これは次のいずれかの形式を取ります。

キーワード形式

CHARACTER [([LEN=]len)]
CHARACTER [([LEN=]len [,[KIND=]n])]
CHARACTER [(KIND=n [,LEN=len])]

非キーワード形式

CHARACTER*len[,]

len
次のいずれか。

どちらの形式でも,len として有効な値の最大値は,Tru64 UNIX,Linux,および Windows システムでは 2147483647 (2**31-1) で,OpenVMS システムでは 65535 です。負の値はゼロとして扱われます。

n
有効な種別パラメタを宣言しているスカラ整数型初期値式。現時点で使用可能な種別値は 1 のみです。

規則と振る舞い

文字宣言の中には自動割付けオブジェクトを宣言することができます。オブジェクトは仮引数であってはならず,その長さは定数式でない宣言式によって宣言されなくてはなりません。

文字値文関数または文字型の文関数仮引数に対して宣言される長さは,整定数式でなくてはなりません。

関数名または仮引数に対して星印の長さ宣言式 *(*) が使用された場合,対応する関数の引用または実引数の長さが使用されます。同じように,名前付き定数に対して星印の長さ宣言が使用された場合,名前の長さは,その名前が表す実定数の長さとなります。たとえば,以下の文では,STRING は 9 バイトの長さとなります。

	CHARACTER*(*) STRING
	PARAMETER (STRING = 'VALUE IS:')

関数名は,関数が内部またはモジュール関数であるか,配列値,ポインタ値,再帰,または純粋関数である場合,* の長さで宣言することはできません。

CHARACTER*(*) という形式は,Fortran 95 の廃止予定事項となっています。

以下の例では,文字列 last_name に長さ 20 が与えられています。

	CHARACTER (LEN=20) last_name

以下の例では,stri に長さ 12 を与え,他の 2 つの変数には長さ 8 が与えられています。

	CHARACTER *8 strg, strh, stri*12

以下の例では,仮引数として strh に文字が代入された時にその文字の長さが与えられ,他の 2 つの変数には長さ 8 が与えられています。

	CHARACTER *8 strg, strh(*), stri

以下の例は,既知の長さを文字列に与える方法を示しています。

	CHARACTER*32 string
	CHARACTER string*32

以下の例は,未知の長さを文字列に与える方法を示しています。

	CHARACTER string*(*)
	CHARACTER*(*) string

次の例は,32 文字の要素を 100 個含んでいる配列 NAMES,9 文字の要素を 100 個含んでいる配列 SOCSEC,および長さが 10 文字で,初期値 'ABCDEFGHIJ' を持つ変数 NAMETY を宣言しています。

	CHARACTER*32 NAMES(100),SOCSEC(100)*9,NAMETY*10 /'ABCDEFGHIJ'/

次の例は,LASTFIRST という 2 つの 8 文字の長さの変数を宣言している CHARACTER 文を示しています。

	INTEGER, PARAMETER :: LENGTH=4
	CHARACTER*(4+LENGTH) LAST, FIRST

次の例は,1 文字の要素を 26 個含む配列 LETTER を宣言している CHARACTER 文を示しています。これはまた,呼び出し側プログラムによって定義される長さを持つ仮引数 BUBBLE も宣言しています。

	SUBROUTINE S1(BUBBLE)
	CHARACTER LETTER(26), BUBBLE*(*)

次の例では,NAME2 は自動割付けオブジェクトです。

	SUBROUTINE AUTO_NAME(NAME1)
	  CHARACTER(LEN = *)          NAME1
	  CHARACTER(LEN = LEN(NAME1)) NAME2

関連情報