入力データの短い欄の終了

入力時に Fw.d などの編集記述子は,外部欄から w 個の文字 (欄幅) を読み取ることを指定します。

欄が含んでいる文字が w 個よりも少ない場合,入力文は記録中の次のデータ欄から文字列を読み取ります。この動作を避けるには,短い欄を空白またはゼロで埋めるか,コンマを使って入力データを区切ります。

短い欄の充填

OPEN 文の指定子 PAD='YES' を使うと,入力データの短い欄を空白で埋めるように指定することができます。ただし,空白はその時点で有効となっている基本動作に応じて,空白またはゼロとして解釈されます。次の例を考えます。

	READ (2, '(I5)') J

J に対して 3 が入力されると,J の値はどちらの基本動作が有効になっているかに応じて (BLANK='NULL' または BLANK='ZERO'),30000 または 3 となります。これは予期しない結果が生じる原因となりかねません。

確実に目的の動作を得るには,BN 形または BZ 形編集記述子を明示的に指定します。たとえば,次のようにすれば,空白は必ず (ゼロではなく) 空白として解釈されます。

	READ (2, '(BN, I5)') J

コンマによる入力データの区切り

コンマを使うと,短いデータ欄を終了させることができます。コンマは,指定の d の部分 (小数点の右側の文字数) には影響を与えません。

コンマは,I 形,B 形,O 形,Z 形,F 形,E 形,D 形,EN 形,ES 形,G 形,および L 形編集記述子に対して指定された w を無効にします。たとえば,以下の文が実行されたとします。

		READ (5,100) I,J,A,B
	100	FORMAT (2I6,2F10.2)

以下の値を含んでいる記録が読み取られたとします。

	1, -2, 1.0, 35 

この場合には,以下の代入が行われます。

	I = 1
	J = -2
	A = 1.0
	B = 0.35

コンマは w 文字よりも短い欄だけを終了させます。w 個以上の文字を含んでいる欄の後にコンマがあった場合,そのコンマは次の欄の一部と見なされます。

空 (長さゼロ) 欄は,2 つの連続したコンマか,w 個の文字を含んだ欄の後のコンマによって指定されます。結果として代入される値は,指定されている欄記述子に応じて,00.00.0D00.0Q0,または .FALSE. です。

関連情報

入力処理の詳細については,「数値編集の一般的な規則」を参照してください。