implicit none
real x
open (10, file='isxseq.txt', form='unformatted', status='old')
open (20, form='unformatted', status='scratch')!открываем врем. файл
do while (.not. eof (10))!
read(10) x!читаем из исходного файла
if (x>=0) write(20) x!записываем во вспомогательный
enddo
rewind(10)! переход на начало исходного файла
rewind(20)! переход на начало вспомогательного файла
Do while (.not.eof (20))
read(20) x!читаем из вспомогательного
write(10)x!пишем в исходный
Enddo
close(10)
close(20)
End subroutine
Program main
implicit none
integer,parameter::n=10
call create_sq (n)
print*,'isx fil'
Call view_sq()
Call del_f()
print*,'posle delete'
Call view_sq()
End
Удаление записей из неформатного файла прямого доступа.
Пример
В неформатном файле прямого доступа удалить все отрицательные числа.
Для решения задачи, как и в файле последовательного доступа, используем временный файл. Временный файл может быть выбран и прямого и последовательного доступа.
Процедура удаления с временным файлом прямого доступа.
Subroutine del_zap ()
implicit none
integer i, k
real x
!исходный файл
open (30, file='f_dir.txt', access='direct', form='unformatted', recl=4)
!временный файл
open(10, access='direct', form='unformatted', recl=4, status='scratch')
i=0!номер записи исходного файла
k=0! номер записи временного файла
do while (.not.eof (30))
i=i+1!формирование номера считываемой записи
read(30, rec=i) x
if (x>0)then
k=k+1! формирование номера записи во врем. файле
write(10, rec=k) x
endif
enddo
find(10, rec=1)!перешли на начало временного файла
close(30, status='delete')!удалили исходный файл
!снова открыли исходный файл для записи
open (30, file='f_dir.txt', access='direct', form='unformatted',recl=4)
i=0
!переписываем из временного файла в основной
do while (.not.eof (10))
i=i+1
read (10, rec=i) x!читаем из временного
write (30, rec=i)x!пишем в основной
Enddo
print*,'ok perezap del,kol=',i
close(10)!при закрытии временный файл удаляется
close(30)
End subroutine
Процедура удаления записи с использованием в качестве временного файла - неформатный файл последовательного доступа.