文字数編集記述子は,現在の入力記録中の残りの文字数を返します。
対応する I/O 並び項目は,整数型か論理型でなくてはなりません。たとえば,以下の文が指定されたとします。
READ (4,1000) XRAY, KK, NCHRS, (ICHR(I), I=1,NCHRS) 1000 FORMAT (E15.7,I4,Q,(80A1))
2 つの欄が変数 XRAY と KK に読み取られます。記録に残った文字数が 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)
この例の入力文は,変数 XRAY と K を読み込みます。記録の残りの文字数は 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
関連情報
制御編集記述子の形式については,「制御編集記述子の形式」を参照してください。