文字数編集 (Q 形)

文字数編集記述子は,現在の入力記録中の残りの文字数を返します。

対応する I/O 並び項目は,整数型か論理型でなくてはなりません。たとえば,以下の文が指定されたとします。

		READ (4,1000) XRAY, KK, NCHRS, (ICHR(I), I=1,NCHRS)
	1000	FORMAT (E15.7,I4,Q,(80A1))

2 つの欄が変数 XRAYKK に読み取られます。記録に残った文字数が NCHRS に格納され,その文字数分が配列 ICHR に読み取られます (この命令は,記録が 80 文字よりも長い場合には失敗することがあります)。

書式仕様の最初に文字数編集記述子を置くと,入力記録の長さを知ることができます。

出力時には文字数編集記述子を使用すると,対応する I/O 並び項目が読み飛ばされます。

以下の例を考えます。

		CHARACTER ICHAR(80)
		READ (4, 1000) XRAY, K, NCHAR, (ICHAR(I), I= 1, NCHAR)
	1000	FORMAT (E15.7, I4, Q, 80A1)

この例の入力文は,変数 XRAYK を読み込みます。記録の残りの文字数は NCHAR で,Q 形編集記述子で指定されています。配列 ICHAR は,記録の残りの文字数を読み込むことで埋められます。(この命令は,NCHAR (配列 ICHAR の大きさ) が 80 より大きい場合,失敗することに注意してください。) 書式仕様に Q を置くことによって,入力記録の実際の大きさを決定することができます。

Q で返される長さが記録中の残りの文字数をであり,実数,整数または他のデータ形式の数ではないことに注意してください。Q で返される長さが読み込まれると直ちに使用することができ,同じ書式文や可変書式で後で使用することができます。(「可変書式」を参照してください。)

ファイル Q.DAT が以下のものを含んでいると仮定します。

	1234.567Hello, Q Edit 

以下のプログラムは,数 REAL1 を読み込み,記録中の残りの文字を決定し,それらを STR に読み込みます。

		CHARACTER STR(80)
		INTEGER LENGTH
		REAL REAL1
		OPEN (UNIT = 10, FILE = 'Q.DAT')
		READ (10, 100) REAL1, LENGTH, (STR(I), I=1, LENGTH)
	100	FORMAT (F8.3, Q, 80A1)
		WRITE(*,'(F8.3,2X,I2,2X,<LENGTH>A1)') REAL1, LENGTH, (STR(I), &
			I= 1, LENGTH)
		END

画面への出力は,以下のようになります。

	1234.567  13  Hello, Q Edit

Q 記述子のみを含む READ 文は,ファイルを次の記録に進めます。たとえば,次のデータを含む Q.DAT を考えます。

	abcdefg
	abcd

以下の文の READ を考えます。

		OPEN (10, FILE = "Q.DAT")
		READ(10, 100) LENGTH
	100	FORMAT(Q)
		WRITE(*,'(I2)') LENGTH
		READ(10, 100) LENGTH
		WRITE(*,'(I2)') LENGTH
		END

画面への出力は以下のようになります。

	7
	4

関連情報

制御編集記述子の形式については,「制御編集記述子の形式」を参照してください。