Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
63
Добавлен:
02.05.2014
Размер:
553.98 Кб
Скачать

36. Операторы для работы с записями в файле

К операторам для работы с записями в файле относят:

  1. BACKSPACE n – позволяет вернуться на одну запись назад в файле, открытому по каналуn.

Пример:

BACKSPACE 3 или BACKSPACE (UNIT=3)

Оператор BACKSPACEможет повторяться несколько раз или находиться внутри циклаDO.

DO 2 I=1,4

2 BACKSPACE 3

Если при многократном повторном выполнении BACKAPACE3 метка считывания записи переместится в самое начало файла, то операция остановится. Указатель считывания записи будет установлен на первую запись.

2) REWIND nустанавливает указатель считывания записи в самое начало файла на первую запись. Файл открыт по каналуn;

  1. ENDFILE nзаписывает физический признак конца файла на том месте, где находится указатель считывания записи. После момента установки её в любом месте файла, информация после этого оператора обрезается.

37. Дополнение файла информацией

При дополнении файла информацией не происходит удаления информации, содержащейся в файле, а происходит дополнение новых записей в файл и файл при этом увеличивается.

Задача:

В файле NAGR.DATхранятся записи, содержащие значенияU,I,cosφ,t. Нужно:

1) открыть файл, читать его до конца, затем дополнить его аналогичной информацией. Закончить дополнение файла по сбойной ситуации;

2) подсчитать и выдать количество записей в старом файле и в изменённом.

Первый способ дополнения файла информацией:

OPEN (3,FILE=’NAGR.DAT’,STATUS=’OLD’)

В файле неизвестное количество записей. Неизвестно: форматная запись или нет.

KZAP=0

  1. READ (3,*, END=8) U,TOK,CF,T

KZAP=KZAP+1

GOTO 7

  1. WRITE (6,*)’В файле было ’,KZAP,’ записей’

Считываем первую запись и счётчик зафиксирует эту запись (KZAP=KZAP+1). По GO TO 7 повторяется чтение новой записи. Когда чтение дойдёт до конца файла, управление передаётся на метку 8. НО ФАЙЛ НЕ ЗАКРЫВАЕТСЯ. Сейчас нам необходимо в цикле вводить информацию: U, I … с клавиатуры дисплея и записывать эту информацию в файл. Процесс ввода и записи можно повторять бесконечное число раз до возникновения сбойной ситуации.

BACKSPACE 3

WRITE (3,*) U,TOK,CF,T

С помощью последних 2-х строк происходит возвращение назад на одну запись в файле и восстановление последней записи. Без перезаписи последней строки невозможно осуществить дальнейшую запись информации в файл.

  1. WRITE (6,*)’Введите U,I,cos f,T’

READ (5,*, ERR=10)U,TOK,CF,T

WRITE(3,*)U,TOK,CF,T

Процесс ввода информации с клавиатуры дисплея и записи в файл может повторяться бесконечное количество раз по GO TO 11. При наступлении сбойной ситуации управление будет передано на метку 10.

KZAP=KZAP+1

GOTO 11

10 Write (6,*)’Всего записей в файле’,kzap

CLOSE (3)

Желательно закрыть файл.

STOP

END

Без перезаписи последней строки исходного файла эта программа будет работать на СМ, ЕС технике, кроме персональных ЭВМ. На персональных ЭВМ после попытки чтения информации из записи, содержащей конец файла и после наступления ситуации “конец файла”, запись информации в этот файл невозможна (мало кто об этом знает).

Чтобы можно было записать информацию в этот файл, необходимо:

    1. вернуться на одну запись назад – BACKSPAСE 3

    2. повторить последнюю запись в файл. На место последней записи записать последнюю информацию, считанную из старого файла;

    3. потом свободно записывать дополнительную информацию в файл.

Соседние файлы в папке Программирование на Фортране