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

Второй способ дополнения файла информацией

Существует функция 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

2 IF(EOF(4)) GO TO 4

READ (4,*) A,B,C

KZ=KZ+1

GO TO 2

4 Write (6,*)’в файле было записей’,kz

  1. WRITE (6,*)’Введите новые значения A, B, C

8 READ (5,*,ERR=12) A,B,C

WRITE (4,*) A,B,C

Строку с новыми данными добавляем в файл.

KZ=KZ+1

Повторяем ввод данных с клавиатуры и выводим их в файл

GOTO 8

При вводе текста вместо числа наступит сбойная ситуация и управление будет передано на метку 12.

  1. WRITE (6,*)’Всего записей’,KZ

CLOSE(4)

PAUSE

STOP

END

При вводе любого текстового символа произойдёт сбой по чтению, и программа будет снята с выполнения. Чтобы программа не снялась с выполнения в операторе READнеобходимо предусматривать обработку сбойной ситуации. Что мы и сделали в строкеREAD(5,*,ERR=12)A,B,C. В противном случае текст (“всего записей”,KZ) не будет выведен никогда.

38. Работа с текстом

Средствами ФОРТРАН-4 в одну ячейку памяти можно записать до 4 символов текстовой информации. Начиная с ФОРТРАН-77 в одну ячейку памяти (одной текстовой переменной) может быть присвоен текст длиной до 254 символов, но эти переменные должны быть описаны специальным оператором описания:

CHARACTER

CHARACTER*10 A,B,C(12),D*8,K*5(10)

Это значит, что в программе переменные А, В, Dи массивы С и К будут текстового типа (строковые).

*10 – групповой описатель длинны, распространяется на А, В, С. Резервирует для каждой переменной в оперативной памяти ЭВМ по 10 байт на каждую переменную, где могут помещаться до 10 текстовых символов.

Массив С(12) состоит из 12 элементов, каждый из которых может содержать до 10 текстовых символов.

Массив Kтекстового типа, содержит 10 элементов длиной по 5 байт.

39. Текстовые константы

Текстовые константы могут быть представлены в двух формах:

а). старая форма – холлеритовская строка – представляет собой число выводимых символов n, признак константы латинская букваHи сами выводимые символы:

nHнабор символов

n– целая беззнаковая константа в диапазоне 1-255.

Пример:

Энергофак

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

'ЭНЕРГОФАК-2000'

'ЭНЕРГОФАК''2003'

Символ апостроф внутри текста отображается двумя апострофами, идущими подряд.

Текстовая константа – это строка символов, которая заключена между двумя апострофами или задана холлеритовской строкой.

Значения текстовых переменных могут быть заданы оператором присваивания или оператором DATAили в результате ввода информации.

K(1)='ВЕСНА'

K(2)=4HЗИМА

DATA K(3)/'ОСЕНЬ'/

READ (5,7) K(4)

7 FORMAT (A5)

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