0
Предположим, я хочу добавить строку в файл в Fortran. Используя последнюю версию (4.7) gfortran
, я считаю, что это работает:`backspace` в gfortran (старый и новый)
program test
integer :: lun=10, i=0
open(FILE='test.dat', UNIT=lun)
do
read(lun, *, END=20) i
print *, i
end do
20 backspace(lun)
write(lun, *), i+1
end program test
В gfortran 4.4
однако, перезаписывает последнюю строку. Чтобы добавить , я считаю, что нужно использовать
20 continue
вместо backspace
.
Что с этим связано? Как бы вы справились с этим в реальной программе?
похоже на просто неправильное поведение в 4.4. за стандарт ", если предыдущая запись является записью конечного файла, файл становится позиционированным до записи конечного файла.". – agentp
fwiw, старый g77 (3.4.6) ведет себя как ожидалось (не переписывая), а gfortran 4.1.2 перезаписывает. Оба работают правильно, используя open append (хотя g77 нуждается в доступе = вместо position =) – agentp