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

35. Обработка сбойных ситуаций и ситуаций “конец файла” при вводе-выводе информации

Оператор ввода имеет структуру следующего вида:

READ (n, m1, ERR=m2, END=m3) список

где n– номер канала ввода;

m1– метка оператораFORMATили “ * ”;

m2– метка оператора, по которому передаётся управление, если при вводе информации произошёл сбой по чтению.

Сбойная ситуации наступает в том случае, когда вводимая информация не соответствует описанию полей оператора FORMAT. Например: целое число вводится с десятичной точкой; вещественное число вводится с двумя минусами; число не соответствует формату; вместо числовой информации вводится текстовая информация (распространённая ошибка); при форматном вводе ставится запятая, которая является ошибкой при отделении одного числа от другого.

m3– метка, на которую передаётся управление, если при попытке чтения очередной записи обнаружен конец файла.

В обычном режиме во время чтения информации при возникновении ошибки задача снимается с выполнения. Из-за досадной ошибки может быть потеряно много расчетного времени. Но при обработке сбойной ситуации этого можно избежать.

Обработка сбойной ситуации:

Пример обработки сбойных ситуаций при вводе исходных данных с экрана дисплея:

OPEN (4,FILE=’REZ.DAT’)

7 Write (6,*) ’Введите a,I,b’

READ (5,8,ERR=11) A, I, B

  1. FORMAT (F6.2,I4,E9.3)

Прочитанные исходные данные выводятся в файл результатов

WRITE (4,12) A,I,B

  1. FORMAT (2X,’Исходные данные’/4X,’A=’,F7.2,’ I=’,I4,’ B=’,G12.4)

Формат вывода данных может отличаться от формата ввода.

GOTO 13

  1. WRITE (6,*) ’При вводе ИД произошёл сбой. Введите ИД заново по

*формату F6.2, I4, E9.3’

GO TO 7

  1. D=A+B

Если при вводе информации в данной программе произошла ошибка, то управление передаётся на метку 11. По этой метке мы выдаём текстовое сообщение об ошибке и подсказку, как эту ошибку исправить.

После этого повторяем ввод исходных данных.

Обработка ситуации “конец файла”:

Обработка ситуаций “конец файла” используется при чтении файла до конца. В обычном режиме без обработки ситуаций “конец файла” произойдёт прекращение выполнения программы из-за возникновения фатальной ошибки.

OPEN (4,FILE=’DAN.DAT’)

  1. READ (4,8,END=11) A,I,B

  2. FORMAT (F6.2,I4,E9.3)

WRITE (6,12) A,I,B

12 FORMAT (2X,’Прочитали’,4X,’A=’,F7.2,’ I=’,I4,’ B=’,G11.4)

WRITE (6,*)’Вычисляем’

GO TO 7

  1. WRITE (6,*)’При чтении ИД обнаружен конец файла. Конец расчета’

STOP

END

Задача:

Система передачи данных записывала в файл информацию U,I,cosφ,t. При каждом скачкообразном изменении нагрузки записывается новая запись (количество записей неизвестно). Подсчитать количество записанных записей, а так же количество электроэнергии, потреблённой нагрузкой за истекший период.

Открываем файл, читаем исходные данные и формируем массивы Pиt., одновременно считая количество записей. При достижении конца файла переходим к вычислению сумм и выводу результата.

DIMENSION P(1000),T(1000)

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

I=1

KZ=0 Задаем переменную КZ – счетчик количества прочитанных записей

  1. READ (4,*,END=8) U,TOK,CF,T(I) При достижении конца файла управление будет передано на метку 8

P(I)=U*TOK*CF

KZ=KZ+1

I=I+1

GOTO 11

8 WRITE (6,*)’Количество записей=’,KZ

SQ=0.

DO 12 J=1,KZ–1

12 SQ=SQ+P(J)*(T(J+1)–T(J))

WRITE (6,*)’Количество электроэнергии =’,SQ

CLOSE(4)

PAUSE

STOP

END

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