変数群順番 WRITE 文は,対応する NAMELIST 文中のオブジェクトのデータ型を使ってデータ形式を決定することにより,データを内部形式から外部形式に変換します。その後,変換されたデータは外部ファイルに書き込まれます。
一般に,出力として転送された値は,入力として転送された値と同じ書式を持ちます。
基本設定では,文字定数はアポストロフィまたは引用符によって区切られず,個々の内部のアポストロフィまたは引用符は,外部でも 1 つのアポストロフィまたは引用符によって表現されます。
この動作は,(OPEN 文中の) DELIM 指定子によって次のように変更することができます。
ファイルが DELIM='QUOTE' 指定子を付けて開かれた場合,文字定数は引用符によって区切られ,内部の引用符は外部では 2 つの連続した引用符によって表現されます。
ファイルが DELIM='APOSTROPHE' 指定子を付けて開かれた場合,文字定数はアポストロフィによって区切られ,内部のアポストロフィは外部では 2 つの連続したアポストロフィによって表現されます。
個々の出力文は 1 つまたは複数の完全な記録を書き込みます。
文字定数表現または複素数定数は記録全体より長くてもかまいません。複素数定数の場合,虚部と右括弧が現在の記録に収まらなければ,コンマと虚部間で記録終了が起こることがあります。
個々の出力記録は,前の記録から継続された文字定数表現の場合を除いて,改行制御のための空白文字で始まります。
斜線,8 進値,ヌル値,および値の繰り返し書式は出力されません。
ファイルが書式なし I/O のために接続されている場合,変数群データ転送は禁止されます。
例
以下の文を考えます。
CHARACTER*19 NAME(2)/2*' '/ REAL PITCH, ROLL, YAW, POSITION(3) LOGICAL DIAGNOSTICS INTEGER ITERATIONS NAMELIST /PARAM/ NAME, PITCH, ROLL, YAW, POSITION, & DIAGNOSTICS, ITERATIONS ... READ (UNIT=1,NML=PARAM) WRITE (UNIT=2,NML=PARAM)
次の入力が読み取られたとします。
&PARAM NAME(2)(10:)='HEISENBERG', PITCH=5.0, YAW=0.0, ROLL=5.0, DIAGNOSTICS=.TRUE. ITERATIONS=10 /
この場合には,外部装置 2 に接続されているファイルに以下の記録が書き込まれます。
&PARAM NAME = ' ', ' HEISENBERG', PITCH = 5.000000 , ROLL = 5.000000 , YAW = 0.0000000E+00, POSITION = 3*0.0000000E+00, DIAGNOSTICS = T, ITERATIONS = 10 /
出力ファイルが DELIM='APOSTROPHE' で開かれていなければ,文字値はアポストロフィで囲まれないということに注意してください。POSITION 値は変数群入力で定義されていないので,POSITION の現在値が書き込まれます。
以下の例は,複数個の変数を宣言しています。これらは,namelist に置かれ,初期化され,変数群 I/O として画面に出力されます。
INTEGER(1) int1 INTEGER int2, int3, array(3) LOGICAL(1) log1 LOGICAL log2, log3 REAL real1 REAL(8) real2 COMPLEX z1, z2 CHARACTER(1) char1 CHARACTER(10) char2 NAMELIST /example/ int1, int2, int3, log1, log2, log3, & & real1, real2, z1, z2, char1, char2, array int1 = 11 int2 = 12 int3 = 14 log1 = .TRUE. log2 = .TRUE. log3 = .TRUE. real1 = 24.0 real2 = 28.0d0 z1 = (38.0,0.0) z2 = (316.0d0,0.0d0) char1 = 'A' char2 = '0123456789' array(1) = 41 array(2) = 42 array(3) = 43 WRITE (*, example)
この例は,以下の出力を生成します。
&EXAMPLE INT1 = 11, INT2 = 12, INT3 = 14, LOG1 = T, LOG2 = T, LOG3 = T, REAL1 = 24.00000 , REAL2 = 28.0000000000000 , Z1 = (38.00000,0.0000000E+00), Z2 = (316.0000,0.0000000E+00), CHAR1 = A, CHAR2 = 0123456789, ARRAY = 41, 42, 43 /
関連情報
NAMELIST 文については,「NAMELIST」を参照してください。
書式付き順番 WRITE 文の一般的な規則については,「書式付き順番 WRITE 文の規則」を参照してください。
変数群入力については,「変数群順番 READ 文の規則」を参照してください。