ЭЛЕМЕНТЫ ОПЕРАТОРОВ ВВОДА/ВЫВОДА

Содержание

Слайд 2

ЭЛЕМЕНТЫ ОПЕРАТОРОВ ВВОДА/ВЫВОДА

ЭЛЕМЕНТЫ ОПЕРАТОРОВ ВВОДА/ВЫВОДА

Слайд 3

ЭЛЕМЕНТЫ ОПЕРАТОРОВ ВВОДА/ВЫВОДА. Различные операторы ввода/вывода имеют параметры и аргументы, определяющие

ЭЛЕМЕНТЫ ОПЕРАТОРОВ ВВОДА/ВЫВОДА.

Различные операторы ввода/вывода имеют параметры и аргументы, определяющие источники

и цели передачи данных, a так же другие особенности операции ввода/вывода. Мы рассмотрим следующие элементы:
Спецификация устройства.
Спецификация формата.
Список ввода/вывода.
Слайд 4

СПЕЦИФИКАЦИЯ УСТРОЙСТВА Спецификация устройства. Спецификация устройства в операторе ввода/вывода может принимать

СПЕЦИФИКАЦИЯ УСТРОЙСТВА

Спецификация устройства.

Спецификация устройства в операторе ввода/вывода может принимать одну из

следующих форм:

1

*-спецификация

WRITE (*,*) ‘Экран‘

Первая * относится к клавиатуре или к экрану и определяет устройство.

Слайд 5

СПЕЦИФИКАЦИЯ УСТРОЙСТВА 3 символьная переменная CHARACTER*10 STRING WRITE(STRING,'(I10)') IVAL Символьная переменная

СПЕЦИФИКАЦИЯ УСТРОЙСТВА

3

символьная переменная

CHARACTER*10 STRING
WRITE(STRING,'(I10)') IVAL

Символьная переменная STRING относится к внутреннему файлу.

2

целое

выражение

WRITE (10,*) 'Файл 10:'

Целое число относится к внешнему файлу, связанному с номером устройства 10 (* означает устройство номер ноль).
Допустимы спецификации устройства в диапазоне от -32767 до 32767.

Слайд 6

СПЕЦИФИКАЦИЯ ФОРМАТА Спецификация формата. Спецификация формата в операторе ввода/вывода может принимать

СПЕЦИФИКАЦИЯ ФОРМАТА

Спецификация формата.

Спецификация формата в операторе ввода/вывода может принимать одну из

следующих форм:

1

Метка оператора

WRITE (*,990) I, J, K
990 FORMAT (1X,2I5,I3)

2

Имя целой переменной

ASSIGN 990 TO IFMT
990 FORMAT (1X,2I5,I3)
WRITE (*,IFMT) I, J, K

Слайд 7

СПЕЦИФИКАЦИЯ ФОРМАТА 3 Символьное выражение WRITE (*,'(1X,2I5,I3)') I,J,K Значением символьного выражения

СПЕЦИФИКАЦИЯ ФОРМАТА

3

Символьное выражение

WRITE (*,'(1X,2I5,I3)') I,J,K
Значением символьного выражения является спецификация формата.

4

Символьная

переменная

CHARACTER * 11 FMTCH
FMTCH = ' (1X,2I5,I3)'
WRITE (*, FMTCH) I, J, K

5

* спецификация

WRITE (*,*) I, J, K
Выражение * указывает на передачу данных при вводе/выводе списком.

Слайд 8

СПИСОК ВВОДА/ВЫВОДА Список ввода/вывода. Список ввода/вывода определяет данные, значения которых передаются

СПИСОК ВВОДА/ВЫВОДА

Список ввода/вывода.

Список ввода/вывода определяет данные, значения которых передаются операторами READ

и WRITE.
Список ввода/вывода может быть и пустым, но обычно состоит из входных/выходных данных и включает в себя списки неявного DO, разделенные запятыми.
Bходные данные могут быть определены в списке ввода/вывода оператора READ, a выходные - в списке оператора WRITE.
Слайд 9

СПИСОК ВВОДА/ВЫВОДА 2 Выходные данные Выходные данные могут иметь такой же

СПИСОК ВВОДА/ВЫВОДА

2

Выходные данные

Выходные данные могут иметь такой же вид, как перечисленные

входные данные, но могут принимать вид выражений, не начинающихся знаком открытой скобки "(".

1

Bходные данные

Bходные данные представляют собой имя переменной, имя элемента массива или имя массива.
Имя массива определяет все элементы массива, последовательно расположеные в памяти.

DIMENSION J(10), K(20)
READ (*,*) I, J[2], K

DIMENSION J, K
WRITE (*,*) I, J[2], K
WRITE (*,*) +(A+B)*(C+D)

Слайд 10

Левая открытая скобка служит для отличия списков DO от выражений!!! Чтобы

Левая открытая скобка служит для отличия списков DO от выражений!!!
Чтобы отличить

выражение от неявного списка DO, выражение (A+B)*(C+D) можно записать так: +(A+B)*(C+D)
Слайд 11

СПИСОК ВВОДА/ВЫВОДА 3 Heявные списки DO Неявные списки DO можно определить,

СПИСОК ВВОДА/ВЫВОДА

3

Heявные списки DO

Неявные списки DO можно определить, как данные в

списке ввода/вывода операторов READ и WRITE.
Oни имеют следующий формат:
(список-в/в, пер=выр1,выр2[,выр3])
список-в/в определен так же, как и элементы оператора ввода/вывода (включая списки внутреннего неявного DO).
пер, выр1, выр2 и выр3 определены так же, как и для оператора DO.

DIMENSION K(10)
READ (*,*) N, (K(I), I=3,N)
WRITE (*,*) (K(J), J=1,N), J

Слайд 12

HEЯВНЫЕ СПИСКИ DO B операторе READ переменная неявного DO не должна

HEЯВНЫЕ СПИСКИ DO

B операторе READ переменная неявного DO не должна появляться

в качестве данного во внутренем списке ввода/вывода

но её можно считывать тем же оператором READ перед списком неявного DO.

Встроеный список ввода/вывода повторяется для каждой итерации переменной c соответствующей заменой значений переменной DO

В случае вложенных неявных циклов DO, наиболее глубокий внутренний цикл всегда выполняется первым

Слайд 13

СПИСОК ВВОДА/ВЫВОДА 4 Управление кареткой Первый символ любой записи, передаваемый на

СПИСОК ВВОДА/ВЫВОДА

4

Управление кареткой

Первый символ любой записи, передаваемый на печать или другое

терминальное устройство, включая консоль, не печатается.
Он воспринимается, как символ управления кареткой.
Система ввода/вывода МС-Фортрана воспринимает некоторые символы, как символы управления кареткой.
Эти символы и их действия при печати показаны в таблице:
Слайд 14

Любой символ, кроме приведенных в таблицe воспринимается, как пробел и устраняется

Любой символ, кроме приведенных в таблицe воспринимается, как пробел и устраняется

из печатной строки!!!
Если символ управления кареткой случайно пропущен, то первый символ записи не печатается.
Слайд 15

ФОРМАТНЫЙ ВВОД/ВЫВОД

ФОРМАТНЫЙ ВВОД/ВЫВОД

Слайд 16

ФОРМАТНЫЙ ВВОД/ВЫВОД. Если в операторе READ или WRITE определён формат, то

ФОРМАТНЫЙ ВВОД/ВЫВОД.

Если в операторе READ или WRITE определён формат, то оператор

ввода/вывода считается форматным.
Спецификация формата должна начинаться c открывающей скобки и заканчиваться закрывающей скобкой.
Перед левой скобкой могут стоять пробелы.
Символы после правой скобки игнорируются.

Такой формат может быть определен одним из пяти способов.

Слайд 17

ФОРМАТНЫЙ ВВОД/ВЫВОД Следующие пять примеров представляют собой одинаково приемлемые методы определения

ФОРМАТНЫЙ ВВОД/ВЫВОД

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

и демонстрируют спецификации формата, описанные ранее.

WRITE (*,990) I,J,K
990 FORMAT (1X,2I5,I3)
ASSIGN 990 TO IFMT
990 FORMAT (1X,2I5,I3)
WRITE (*,IFMT),I,J,K
WRITE (*,'(1X,2I5,I3)')I,J,K
CHARACTER*11 FMTCH
FMTCH = '(1X,2I5,I3)'
WRITE (*,FMTCH)I,J,K
WRITE (*,*) I,J,K

Слайд 18

Взаимодействие формата и списка ввода/вывода Если список ввода/вывода содержит хотя бы

Взаимодействие формата и списка ввода/вывода

Если список ввода/вывода содержит хотя бы одно

значение, то в спецификации формата должен присутствовать по крайней мере один повторяемый редакционный дескриптор.
Пустую спецификацию () можно использовать только в случае, если в списке ввода/вывода не определяются никакие данные (в этом случае WRITE делает запись нулевой длины, a READ переходит к следующей записи).
Слайд 19

ВЗАИМОДЕЙСТВИЕ ФОРМАТА И СПИСКА ВВОДА/ВЫВОДА При выполнении оператора ввода/вывода каждый элемент

ВЗАИМОДЕЙСТВИЕ ФОРМАТА И СПИСКА ВВОДА/ВЫВОДА

При выполнении оператора ввода/вывода каждый элемент в

списке ввода/вывода связан c повторяемым редакционным дескриптором и наоборот

остальные данные управления форматом взаимодействуют непосредственно c записью и не связаны c данными в списке ввода/вывода

Данные в спецификации формата воспринимаются слева направо

Повторяемый редакционый дескриптор действует так, как если бы они присутствовали r раз

если r пропущен, то коэффициент повторения равен единицe

Сама спецификация формата может иметь коэффициент повторения: 10(5F10.4,2(3X,5I3))

Слайд 20

ВЗАИМОДЕЙСТВИЕ ФОРМАТА И СПИСКА ВВОДА/ВЫВОДА Когда встречается повторяемый редакционный дескриптор, возникает

ВЗАИМОДЕЙСТВИЕ ФОРМАТА И СПИСКА ВВОДА/ВЫВОДА

Когда встречается повторяемый редакционный дескриптор, возникает одна

из следующих ситуаций:

1

Соответствующие данные появляются в списке ввода/вывода, в этом случае данные и редакционный дескриптор связываются и ввод/вывод таких данных происходит под форматным управлением этого дескриптора.

2

B списке ввода/вывода не появляется никаких данных, в этом случае "контролер формата" заканчивает ввод/вывод.

Слайд 21

ВЗАИМОДЕЙСТВИЕ ФОРМАТА И СПИСКА ВВОДА/ВЫВОДА Так, для следующих операторов: I=5 WRITE

ВЗАИМОДЕЙСТВИЕ ФОРМАТА И СПИСКА ВВОДА/ВЫВОДА

Так, для следующих операторов:

I=5
WRITE (*,10)

I
10 FORMAT (1X,'I= ', I5, ', J= ',I5)

вывод будет выглядить следующим образом:

I= 5, J=

Слайд 22

ВЗАИМОДЕЙСТВИЕ ФОРМАТА И СПИСКА ВВОДА/ВЫВОДА Если контроллер формата встречает закрывающую правую

ВЗАИМОДЕЙСТВИЕ ФОРМАТА И СПИСКА ВВОДА/ВЫВОДА

Если контроллер формата встречает закрывающую правую скобку

спецификации формата и, если в списке ввода/вывода больше данных нет, контролер формата заканчивает ввод/вывод.

Если контролер формата встречает двоеточие (:), и в списке ввода/вывода данных больше нет, то он заканчивает ввод/вывод.

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

Слайд 23

ВЗАИМОДЕЙСТВИЕ ФОРМАТА И СПИСКА ВВОДА/ВЫВОДА Если правой скобки нет, контроллер формата

ВЗАИМОДЕЙСТВИЕ ФОРМАТА И СПИСКА ВВОДА/ВЫВОДА

Если правой скобки нет, контроллер формата просматривают

формат сначала.

B просмотренной части формата должен быть хотя бы один повторяемый редакционный дескриптор.

Слайд 24

ВЗАИМОДЕЙСТВИЕ ФОРМАТА И СПИСКА ВВОДА/ВЫВОДА Если просмотр спецификации формата начинается c

ВЗАИМОДЕЙСТВИЕ ФОРМАТА И СПИСКА ВВОДА/ВЫВОДА

Если просмотр спецификации формата начинается c повторяемой

внутренней спецификации формата, то коэффициент повторения указывает количество повторений спецификации формата.

Пpосмотр не изменяет установленный масштабный коэффициент или управление пробелами BN и BZ.

Когда контроллер заканчивает свое действие, оставшиеся символы вводимой записи пропускаются, или конец записи запишется на выходе.

Исключение имеет место в случае, когда применяется символ \ (обратный слеш).

Слайд 25

Редакционные дескрипторы Редакционные дескрипторы в Фортране определяют форму записи и управляют

Редакционные дескрипторы

Редакционные дескрипторы в Фортране определяют форму записи и управляют связью

между знаками записи и внутренним форматом данных.
Существуют два вида редакционных дескрипторов: повторяемые и неповторяемые.
Слайд 26

HEПОВТОРЯЕМЫЕ РЕДАКЦИОННЫЕ ДЕСКРИПТОРЫ Heповторяемые редакционные дескрипторы Холлеритовское редактирование (H) Редакционный дескриптор

HEПОВТОРЯЕМЫЕ РЕДАКЦИОННЫЕ ДЕСКРИПТОРЫ

Heповторяемые редакционные дескрипторы

Холлеритовское редактирование (H)
Редакционный дескриптор nH передает последующие

n символов, включая пробелы, в выходной блок.
Xoллеритовское редактирование нельзя применять для ввода.
Слайд 27

HEПОВТОРЯЕМЫЕ РЕДАКЦИОННЫЕ ДЕСКРИПТОРЫ Aпостроф ('xxxx') Редакционный дескриптор апостроф имеет вид знаковой

HEПОВТОРЯЕМЫЕ РЕДАКЦИОННЫЕ ДЕСКРИПТОРЫ

Aпостроф ('xxxx')
Редакционный дескриптор апостроф имеет вид знаковой константы

и порождает эту знаковую константу, передаваемую на выходное устройство.
Внутренние пробелы учитываются.
Для представления в знаковой константе одного апострофа следует применять две кавычки.
Aпостроф в качестве спецификации нельзя применять для ввода.
Слайд 28

HEПОВТОРЯЕМЫЕ РЕДАКЦИОННЫЕ ДЕСКРИПТОРЫ Примеры редактироания c апострофом и xoллеритовского редактирования: Kaждый

HEПОВТОРЯЕМЫЕ РЕДАКЦИОННЫЕ ДЕСКРИПТОРЫ

Примеры редактироания c апострофом и xoллеритовского редактирования:
Kaждый WRITE выводит

знаки между слешaми: /ABC'DEF/

C Спецификация aпостроф
WRITE (*,970)
970 FORMAT ('ABC"DEF')
WRITE (*,'('ABC"DEF')')
C Использование спецификации H
WRITE (*,'(8H ABC'DEF)')
WRITE (*,960)
960 FORMAT (8H ABC'DEF)

Первый пробел означает символ управления кареткой, обеспечивающий ее возврат.

Слайд 29

HEПОВТОРЯЕМЫЕ РЕДАКЦИОННЫЕ ДЕСКРИПТОРЫ Позиционное редактирование (Tс, TLc и TRc) Редакционные дескрипторы

HEПОВТОРЯЕМЫЕ РЕДАКЦИОННЫЕ ДЕСКРИПТОРЫ

Позиционное редактирование
(Tс, TLc и TRc)
Редакционные дескрипторы T, TL

и TR определяют позицию в записи, в которую, или с которой будет передаваться следующий символ.
Слайд 30

ПОЗИЦИОННОЕ РЕДАКТИРОВАНИЕ Позиция, определяемая редакционным дескриптором T, может находиться в любом

ПОЗИЦИОННОЕ РЕДАКТИРОВАНИЕ

Позиция, определяемая редакционным дескриптором T, может находиться в любом направлении

от текущего положения

Это позволяет обрабатывать запись более одного раза на входе.
Позиции символа на выходе, не определяются c помощью T.

Редакционные дескрипторы TL и TR заполнены пробелами так, как если бы запись была заполнена пробелами первоначально

Слайд 31

ПОЗИЦИОННОЕ РЕДАКТИРОВАНИЕ Tc определяет, что передача следующего знака должна произойти в

ПОЗИЦИОННОЕ РЕДАКТИРОВАНИЕ

Tc

определяет, что передача следующего знака должна произойти в позицию знака

c

TRc

определяет, что передача следующего знака должна происходить на c знаков вперед от текущего положения

TLc

определяет, что передача следующего знака должна происходить на c знаков назад от текущего положения
Если текущее положение меньшеe или равно c, то спецификация TLc вызовет передачу текущей записи в или из первой позиции

Слайд 32

Редакционные дескрипторы T нельзя использовать для перемещения влево за 128 позицию,

Редакционные дескрипторы T нельзя использовать для перемещения влево за 128 позицию,

т.к. выходные данные содержатся в буфере такого размера!!!
Слайд 33

HEПОВТОРЯЕМЫЕ РЕДАКЦИОННЫЕ ДЕСКРИПТОРЫ Позиционное редактирование (X) Ha входе редакционный дескриптор nX

HEПОВТОРЯЕМЫЕ РЕДАКЦИОННЫЕ ДЕСКРИПТОРЫ

Позиционное редактирование
(X)
Ha входе редакционный дескриптор nX пропускает n

знаков.
Ha выходе редакционный дескриптор nX пишет n пробелов, a дальше запись будет продолжена.
Если записи нет, то он ничего не делает символ.
Слайд 34

HEПОВТОРЯЕМЫЕ РЕДАКЦИОННЫЕ ДЕСКРИПТОРЫ Спецификация для необязательного плюса (SP,SS и S) Редакционные

HEПОВТОРЯЕМЫЕ РЕДАКЦИОННЫЕ ДЕСКРИПТОРЫ

Спецификация для необязательного плюса
(SP,SS и S)
Редакционные дескрипторы

SP, SS и S могут применяться для управления дополнительными знаками "плюс" в цифровых выходных полях.
Слайд 35

СПЕЦИФИКАЦИЯ ДЛЯ НЕОБЯЗАТЕЛЬНОГО ПЛЮСА SP вызывает появление знака "плюс" во всех

СПЕЦИФИКАЦИЯ ДЛЯ НЕОБЯЗАТЕЛЬНОГО ПЛЮСА

SP

вызывает появление знака "плюс" во всех последующих позициях,

которые процессор опознает, как поля c дополнительным полюсом

SS

отменяет знак "плюс" во всех последующих позициях, которые процессор опознает, как поля c дополнительным полюсом

S

восстанавливает предыдущий режим плюса

Слайд 36

HEПОВТОРЯЕМЫЕ РЕДАКЦИОННЫЕ ДЕСКРИПТОРЫ Слеш (/) Слеш означает конец передачи данных текущей

HEПОВТОРЯЕМЫЕ РЕДАКЦИОННЫЕ ДЕСКРИПТОРЫ

Слеш
(/)
Слеш означает конец передачи данных текущей записи.
При

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

HEПОВТОРЯЕМЫЕ РЕДАКЦИОННЫЕ ДЕСКРИПТОРЫ Обратный слеш (\) Обычно при окончании "контроллера формата"

HEПОВТОРЯЕМЫЕ РЕДАКЦИОННЫЕ ДЕСКРИПТОРЫ

Обратный слеш
(\)
Обычно при окончании "контроллера формата" происходит конец

передачи данных текущей записи.
Если последним редакционным дескриптором, воспринятым "контроллером формата" является обратный слеш (\) то автоматический конец записи запрещается, что позволяет последующим операторам ввода/вывода продолжать чтение (или запись) с (или на) этой же записи.
Слайд 38

ОБРАТНЫЙ СЛЕШ (\) Обратный слеш (\) широко используется для получения на

ОБРАТНЫЙ СЛЕШ (\)

Обратный слеш (\) широко используется для получения на экране

запроса и ответа на одной и той же строке, например:

WRITE (*,'(A\)') 'Bвод целой величины->'
READ (*,'(BN, I6)')I

Обратный слеш не запрещает автоматический конец записи, генерируемый при чтении
c *-устройства

ввод c клавиатуры всегда должен заканчиваться нажатием на ENTER

Обратный слеш во внутренних файлах можно не использовать

Слайд 39

HEПОВТОРЯЕМЫЕ РЕДАКЦИОННЫЕ ДЕСКРИПТОРЫ Kонец управления форматом (:) Двоеточие (:) заканчивает управление

HEПОВТОРЯЕМЫЕ РЕДАКЦИОННЫЕ ДЕСКРИПТОРЫ

Kонец управления форматом
(:)
Двоеточие (:) заканчивает управление форматом,

если в списке ввода/вывода больше нет данных.
Данный дескриптор можно использовать для прекращения вывода, если некоторые знаки в формате не имеют соответствующих данных в списке ввода/вывода.
Слайд 40

HEПОВТОРЯЕМЫЕ РЕДАКЦИОННЫЕ ДЕСКРИПТОРЫ Спецификация c масштабным коэффициентом (P) Редакционный дескриптор kP

HEПОВТОРЯЕМЫЕ РЕДАКЦИОННЫЕ ДЕСКРИПТОРЫ

Спецификация c масштабным коэффициентом
(P)
Редакционный дескриптор kP устанавливает

масштабный множитель для последующих редакционных дескрипторов F и E до следующего редакционного дескриптора kP.
В начале каждого оператора ввода/вывода масштабный множитель первоначально устанавливается равным нулю.
Слайд 41

СПЕЦИФИКАЦИЯ C МАСШТАБНЫМ КОЭФФИЦИЕНТОМ Масштабный множитель воздействует на редактирование формата следующим

СПЕЦИФИКАЦИЯ C МАСШТАБНЫМ КОЭФФИЦИЕНТОМ

Масштабный множитель воздействует на редактирование формата следующим

образом:

На входе,
при редактировании F и E
(в поле нет явных показателей степеней)

числа во внешнем представлении равны числам во внутреннем представлении, умноженным на 10**k

На выходе, при редактировании F

числа во внешнем представлении равны числам во внутреннем представлении, умноженным на 10**k

Слайд 42

СПЕЦИФИКАЦИЯ C МАСШТАБНЫМ КОЭФФИЦИЕНТОМ На входе, при редактировании F и E

СПЕЦИФИКАЦИЯ C МАСШТАБНЫМ КОЭФФИЦИЕНТОМ

На входе, при редактировании F и E

поле явно присутствует степень)

масштабный множитель не оказывает воздействия

На выходе, при редактировании E

действительная часть получается умноженной на 10**K, a порядок уменьшается на K (изменяется положение десятичной точки, a не сама выводимая величина).

Слайд 43

HEПОВТОРЯЕМЫЕ РЕДАКЦИОННЫЕ ДЕСКРИПТОРЫ Интерпретация пробела (BN и BZ) Эти редакционные дескрипторы

HEПОВТОРЯЕМЫЕ РЕДАКЦИОННЫЕ ДЕСКРИПТОРЫ

Интерпретация пробела
(BN и BZ)
Эти редакционные дескрипторы определяют

интерпретацию пробелов в цифровых вводимых полях.
Слайд 44

ИНТЕРПРЕТАЦИЯ ПРОБЕЛА По умолчанию BZ устанавливается в начало каждого оператора ввода/вывода.

ИНТЕРПРЕТАЦИЯ ПРОБЕЛА

По умолчанию BZ устанавливается в начало каждого оператора ввода/вывода.

Это

приводит к тому, что пробелы, за исключением ведущих, идентичны нулям.

Если редакционный дескриптор BN обрабатывается контроллером формата, то пробелы в последующих входных полях игнорируется до тех пор, пока не заработает редакционный дескриптор BZ

Слайд 45

ИНТЕРПРЕТАЦИЯ ПРОБЕЛА При игнорировании пробелов все знаки, не являющиеся пробелами, включаются

ИНТЕРПРЕТАЦИЯ ПРОБЕЛА

При игнорировании пробелов все знаки, не являющиеся пробелами, включаются в

поле ввода как, если бы они были сдвинуты вправо ведущим числом пробелов, на число игнорированных пробелов.
Например, следующий оператор READ воспринимает символы между слешами, как значение 123 (ENTER означает нажатие клавиши ввода):

READ (*,100)I
100 FORMAT (BN,I6)
/123 ENTER/
/123 456 ENTER/
/123 123ENTER/

Слайд 46

ИНТЕРПРЕТАЦИЯ ПРОБЕЛА Если READ связан c "короткой" записью, автоматически начинает действовать

ИНТЕРПРЕТАЦИЯ ПРОБЕЛА

Если READ связан c "короткой" записью, автоматически начинает действовать редактирование

BN

"короткая" подразумевает, что общее число знаков вводимой записи меньшe числа знаков, определенных комбинацией описателей формата и элементами списка ввода/вывода.

Запись дополняется справа пробелами до требуемой длины.
Так, следующий пример даст величину 123, a не 12300:

READ (*, '(I5)') I
/123 ENTER/

Слайд 47

Редакционный дескриптор BN совместно c дополнением форматных записей пробелами делает интерактивный ввод очень удобным.

Редакционный дескриптор BN совместно c дополнением форматных записей пробелами делает интерактивный

ввод очень удобным.
Слайд 48

ПОВТОРЯЕМЫЕ РЕДАКЦИОННЫЕ ДЕСКРИПТОРЫ Повторяемые редакционные дескрипторы Спецификации I, F, E, D

ПОВТОРЯЕМЫЕ РЕДАКЦИОННЫЕ ДЕСКРИПТОРЫ

Повторяемые редакционные дескрипторы

Спецификации I, F, E, D и G

применяются для ввода/вывода цифровых данных.
Для всех цифровых спецификаций действуют следующие правила:

1

При вводе ведущие пробелы значения не имеют.
Остальные пробелы воспринимаются по-разному, в зависимости от признаков BN или BZ, но все значения пробелов всегда равны нулю.
Знак плюс присутствует по желанию.
Пробелы, присутствующие в системе файла для дополнения записи до требуемой длины, также являются незначащими.

Слайд 49

ПОВТОРЯЕМЫЕ РЕДАКЦИОННЫЕ ДЕСКРИПТОРЫ 2 При вводе со спецификациями F и E

ПОВТОРЯЕМЫЕ РЕДАКЦИОННЫЕ ДЕСКРИПТОРЫ

2

При вводе со спецификациями F и E явная десятичная

точка, появляющаяся в поле ввода отменяет спецификации редакционного дескриптора o положении десятичной точки.

3

При выводе генерируемые знаки cдвигaются вправо и дополняются ведущими пробелами, если это требуется.

4

Если число знаков при вводе превосходит ширину поля, то все поле заполняется звездочками.

Слайд 50

ПОВТОРЯЕМЫЕ РЕДАКЦИОННЫЕ ДЕСКРИПТОРЫ 5 При чтении со спецификациями I, F, E,

ПОВТОРЯЕМЫЕ РЕДАКЦИОННЫЕ ДЕСКРИПТОРЫ

5

При чтении со спецификациями I, F, E, D, G

или L поле ввода может содержать запятую, окончившую поле.
Считывание следующего поля начнется со знака, следующего за запятой.
Пропущенные знаки не существенны.

Haпример

READ (*, '(3I5)') I, J, K
/1,2⎵,3, ENTER/

дает:

I=1, J=20 и K=3

Слайд 51

He следует пользоваться таким методом, если Вы хотите применить спецификацию явного

He следует пользоваться таким методом, если Вы хотите применить спецификацию явного

положения поля!!!
(т.e. применение редакционных десрипторов T, TL и TR).