Я никогда не использовал последовательный доступ с неформатированным выходом по этой точной причине. Однако это зависит от приложения, и иногда удобно иметь индикатор длины записи (особенно для неструктурированных данных). Как было предложено steabert в . Глядя на двоичный вывод fortran на gnuplot , вы можете избежать этого, используя аргумент ключевого слова ACCESS = 'DIRECT'
, и в этом случае вам нужно указать длину записи. Этот метод удобен для эффективного хранения больших многомерных структурированных данных (постоянная длина записи). Следующий пример записывает неформатированный файл, размер которого равен размеру массива:
REAL(KIND=4),DIMENSION(10) :: a = 3.141
INTEGER :: reclen
INQUIRE(iolength=reclen)a
OPEN(UNIT=10,FILE='direct.out',FORM='UNFORMATTED',&
ACCESS='DIRECT',RECL=reclen)
WRITE(UNIT=10,REC=1)a
CLOSE(UNIT=10)
END
Обратите внимание, что это не идеальный aproach в смысле переносимости. В неформатированном файле, написанном с прямым доступом, нет информации о размере каждого элемента. Текстовый файл readme, описывающий размер данных, отлично подходит для меня, и я предпочитаю этот метод вместо заполнения в последовательном режиме.