入力ファイルは次のようになります。
...
Binning n: 4, "Si2-Events", Event #: 12, Primary(s) weight 1.0000E+00
Number of hit cells: 3
488534 4.23038400E-05 489533 1.50734719E-04 489534 5.79968946E-05
Binning n: 4, "Si2-Events", Event #: 13, Primary(s) weight 1.0000E+00
Number of hit cells: 2
477500 3.04398331E-04 478500 1.13192732E-06
Binning n: 4, "Si2-Events", Event #: 14, Primary(s) weight 1.0000E+00
Number of hit cells: 2
512496 1.32522946E-05 513496 2.86743394E-04
Binning n: 4, "Si2-Events", Event #: 15, Primary(s) weight 1.0000E+00
Number of hit cells: 2
476539 1.95245666E-04 476540 2.37216373E-05
Binning n: 4, "Si2-Events", Event #: 16, Primary(s) weight 1.0000E+00
Number of hit cells: 9
502533 1.26090490E-05 502534 1.00212252E-04 503527 3.07000097E-04 503528 9.53662311E-06 503529 9.42530642E-06 503530 1.07992764E-05 503531 1.26466557E-05 503532 1.68176994E-05 503533 1.18242851E-05
...
言い換えれば、私は多くの行を持つファイルを持っており、それぞれが3行目にセル番号とエネルギーを表示しています.
488534 4.23038400E-05 489533 1.50734719E-04 489534 5.79968946E-05
この行だけを読み取り、出力ファイルにセル番号とエネルギーを 2 つの列に書き込む Fortran コードを書きたいと思います。
Line 1
Cells 488534
489533
489534
Energy
4.23038400E-05
1.50734719E-04
5.79968946E-05
Line 2
Cells 477500
478500
Energy 3.04398331E-04
1.13192732E-06
etc...
問題は、セルの数が行ごとに異なることです。すべての値を読み取ったときに次の行にスキップするにはどうすればよいですか?
以下は、私がテストしたコードの一部です。
open (unit=7, file="Si1.txt", action="read", access="sequential")
open (unit=8, file="output.txt", action="write")
do i = 1, 900
read (7,*) line1
read (7,*) line2
read (7,*) cell1, energy1, cell2, energy2
write(8,*) "Run = ", i, "and cells = ", cell1, cell2, "and energy = ", energy1, energy2
end do
問題は、その行に 2 つ以上の値がある場合にのみ機能し、2 つ未満の場合は機能しないことです。
私は少し迷っています (そしておそらくここでは初心者です) が、これを機能させる方法について何か提案はありますか?