Fortran: добавяне на колона към файл (т.е. пропускане на различно количество хоризонтални интервали)

Аз съм дяволски начинаещ с Fortran (f90) и някои очевидно лесни проблеми се оказват причина за тежки главоболия... Благодаря, че ми помогнахте с този:

Моят код преминава през цикъл, обработва данни и ги записва във файл. Бих искал тези данни да бъдат записани в колони на същия файл, докато цикълът приключи.

OPEN (unit=11,file=filename // '.csv')
WRITE(11,'(i4,A1,f10.6)') NUM4 , tab, NUMfloat10_6
CLOSE(11)

Този код работи добре за запазване на един набор от данни. "tab" се дефинира като char(9); името на файла се посочва от потребителя в началото на скрипта.

Когато съм в режим на цикъл, бих искал да добавя още един раздел като „A1“ и друг NUMfloar10_6 („f10.6“). Не мога обаче да направя нещо подобно:

OPEN (unit=11,file=filename // '.csv')
WRITE(11,'(Tk,i4,A1,f10.6)') NUM4 , tab, NUMfloat10_6
CLOSE(11)

с k, дефинирано като цяло число, нарастващо с броя на цикъла * 15.

Как да реша този проблем? Как да „добавя“ колони към файл, без да знам колко интервала да пропусна?


person offeltoffel    schedule 11.06.2014    source източник
comment
не можете просто да отворите файл и да добавите към него по колони, ще трябва или да четете във файла ред по ред, да добавяте данни, да пишете реда или да използвате форматиран директен режим.   -  person steabert    schedule 11.06.2014
comment
stackoverflow.com/questions/ 23834138/   -  person agentp    schedule 11.06.2014


Отговори (1)


В случай, че използвате ifort, просто добавете скоби <k>

  k = 2
  WRITE(*,'(T<k>,A)'), "Hello World!"

  k = 6
  WRITE(*,'(T<k>,A)'), "Hello World!"

  k = 16
  WRITE(*,'(T<k>,A)'), "Hello World!"

произвежда:

 Hello World!
     Hello World!
               Hello World!
person Peter    schedule 11.06.2014
comment
Компилирах с ifort, проверете примера в края на страницата - person Peter; 11.06.2014
comment
Обърнете внимание, че описанието на тази функция е в зелено. Това е разширение. Ако добавите /stand (или -stand) към вашия команден ред, ifort трябва да се оплаче. - person IanH; 11.06.2014
comment
добре, актуализиран отговор. Благодаря, не знам за значението на зеленото - person Peter; 11.06.2014