Второй способ дополнения файла информацией
Существует функция EOF(n)состояния файла. Если открыт канал оператором OPEN:
OPEN (UNITE=3, FILE=’…)
и мы производим чтение оператором READ:
READ (3,*) …
то в обычном режиме функция EOF(3) имеет значение .FALSE. . В том случае, если из файла прочитана последняя запись, функция EOF(3) принимает значение .TRUE..
Значение этой функции можно использовать для обнаружения оператора конца файла и дополнения файла информацией.
По сравнению с предыдущим способом не требуется делать возврат назад на одну строку и восстанавливать последнею запись.
Задача:
В файле ZONA находятся записи. В каждой записи три числа A, B, C. Подсчитать количество записей в файле, дополнить его аналогичной информацией. Пополнение файла информацией остановить при вводе слова “конец”.
OPEN (4,FILE=’ZONA’, STATUS=’OLD’)
KZ=0
IF(EOF(4)) GO TO 4
READ (4,*) A,B,C
KZ=KZ+1
GO TO 2
4 WRITE (6,*)’В файле было записей’,KZ
7 WRITE (6,*)’Введите новые значения A, B, C’
8 READ (5,*,ERR=12) A,B,C
WRITE (4,*) A,B,C
Строку с новыми данными добавляем в файл.
KZ=KZ+1
Повторяем ввод данных с клавиатуры и выводим их в файл
GOTO 8
При вводе текста вместо числа наступит сбойная ситуация и управление будет передано на метку 12.
12 WRITE (6,*)’Всего записей’,KZ
CLOSE(4)
PAUSE
STOP
END
При вводе любого текстового символа произойдёт сбой по чтению, и программа будет снята с выполнения. Чтобы программа не снялась с выполнения в операторе READ необходимо предусматривать обработку сбойной ситуации. Что мы и сделали в строке READ(5,*,ERR=12) A,B,C. В противном случае текст (“всего записей”,KZ) не будет выведен никогда.
Дата добавления: 2015-06-10; просмотров: 816;