implicit none
open(20, file='isx_base.txt', access= 'direct', form='unformatted', recl= sizeof(z))
do i=1, n
print*,'bb name'
read*,z.name! формирование компонент структуры
print*,'bb kol'
read*,z.kol
print*,'bb zenu'
read*,z.cost
write (20, rec=i)z запись сформированной структуры в файл
enddo
close(20)
End subroutine create
! Процедура просмотра
Subroutine view()
use global
implicit none
open (20, file='isx_base.txt', access= 'direct', form='unformatted', recl= sizeof(z))
i=0! номер записи
print*,' name novara ',' kol. tow ',' cena tow'
do while (.not.eof(20))
i=i+1
read (20, rec=i) z! чтение из файла всей структуры
print*,z. name, z.kol, z.cost! вывод на экран компонент
Enddo
close(20)
End subroutine view
! Процедура справка
Subroutine inform()
use global
implicit none
character(20) newname
real value
integer k
open(20, file='isx_base.txt', access= 'direct', form='unformatted', recl=sizeof(z))
i=0
print*,'name new tovara'
read*, newname
k=0
value=0
do while (.not. eof(20))
i=i+1
read(20,rec=i)z
if ( z.name==newname)then
k=k+z. kol
value=value+k* z. cost!вычислениестоимости
endif
Enddo
print'(3 (2x, A),I3, 5x, A, F4.1)','tow', newname, 'kol=', k, 'value=', value
close(20)
End subroutine inform
Выбор метода доступа в файле и типа записи
Выбор способа доступа к файлу определяется характером решаемой задачи. Если необходимо редактировать записи файла, то, наверное, целесообразнее использовать используются файлы прямого доступа. Если необходимо часто добавлять записи, то проще использовать последовательные неформатные файлы.
|
|
При выборе типа записей файла следует учитывать следующее:
Передача данных в неформатных файлах выполняется быстрее, т.к. не требуется преобразование данных;
Программировать неформатный ввод/вывод проще, чем форматный;
Неформатные файлы имеют меньший размер, чем текстовые файлы;
В текстовых файлах из-за округления может возникнуть потери точности;
При необходимости иметь данные в доступной для визуального просмотра форме, используют текстовые файлы.