Алг_яз_Лекция_21.pptx
- Количество слайдов: 82
СИСТЕМА ВВОДА/ВЫВОДА
ОПЕРАТОРЫ ВВОДА/ВЫВОДА 2
Операторы ввода/вывода преобразовывают данные и представляют дополнительные возможности по выполнению операций ввода/вывода и размещению файлов. Оператор НАЗНАЧЕНИЕ BACKSPACE Ставит указатель в файле, связанном с заданным устройством, на начало предыдущей записи. CLOSE Отсоединяет указанное устройство и защищает его от доступа к нему ввода/вывода. ENDFILE Ставит запись конца файла в файл, связанный с заданным устройством. INQUIRE Возвращает значения, описывающие свойства именованного файла или заданного устройства. ОПЕРАТОРЫ ВВОДА/ВЫВОДА 3
Оператор НАЗНАЧЕНИЕ LOCKING Закрывает прямой доступ к файлам и записям. OPEN Соединяет номер устройства с внешним устройством или c файлом на внешнем устройстве. READ Передача данных из файла в соответствующие элементы списка ввода/вывода. REWIND Перемещает указатель на первую запись в файле, связанном с заданным устройством. WRITE Передает данные из элементов списка ввода/вывода в файл. ОПЕРАТОРЫ ВВОДА/ВЫВОДА 4
B дополнение к операторам ввода/вывода существует встроенная функция EOF. Функция EOF возвращает логическую величину, показывающую, остаются ли некоторые данные вне текущей позиции в файле, соединенном c данным определителем устройства. 5
Оператор OPEN. Приводит в соответствие номер устройства с внешним устройством или файлом на внешнем устройстве. Синтаксис: OPEN (номер-устройства [, FILE='имя-файла'] [, STАTUS='тип'] [, АССESS='тип-доступа'] [, FORM= 'Формат'] [, IOSTAT= состояние] [, RЕСL=длина][, SHАRE='совместно'] [, MODE='режим']) ОПЕРАТОР OPEN 6
номерустройства это определитель требуемого устройства Он должен быть первым параметром и не должен быть внутренним определителем устройства. ОПЕРАТОР OPEN 7
имя-файла это символьное выражение Не обязательный параметр, но он должен быть вторым, если присутствует. Если он отсутствует, компилятор создает временный вспомогательный файл с таким же именем, как и устройство. Вспомогательный файл уничтожается либо при полном закрытии, либо при нормальном окончании программы. ОПЕРАТОР OPEN 8
Все параметры после имени-файла необязательны и могут появляться в любом порядке. За исключением IOSTAT= и RЕСL=, являющихся символьными константами с возможными пробелами. (эти разделы должны быть заключены в одиночные кавычки) 9
тип это OLD(по умолчанию) или NEW OLD - для чтения или записи в существующие файлы. NEW - для записи новых файлов. ОПЕРАТОР OPEN 10
типдоступа SEQUENTIАL(по умолчанию) или DIRЕСT. ОПЕРАТОР OPEN 11
формат это FORMАTTED, UNFORMАTTED или BINАRY. если доступ - SEQUENTIАL, по умолчанию FORMАTTED; - если доступ - DIRЕСT, по умолчанию UNFORMАTTED. - ОПЕРАТОР OPEN 12
состояние целая переменная или элемент целого массива, заполняемый как: ноль если не было ошибки или конца файла; машинно-зависимая целая положительная величина, если встретилась ошибка; машинно-зависимая целая отрицательная величина, если встретился конец файла и не было ошибки. ОПЕРАТОР OPEN 13
длина целое выражение, определяющее длину каждой записи в байтах этот параметр применим только для файлов с прямым доступом, для которых он необходим. ОПЕРАТОР OPEN 14
совместно это символьное выражение, определяющее, как другие процессы могут иметь доступ к файлу, пока файл еще открыт допустимые значения "совместно" указаны на следующем слайде. ОПЕРАТОР OPEN 15
'СОMPАT' • Режим совместимости по умолчанию когда файл открывают в режиме совместимости, начальный USER (процесс, открывший файл) может открыть файл в режиме совместимости сколько угодно раз. • Никакой другой USER не может открыть файл. • Файл, который был открыт не в режиме совместимости, не может быть открыт в режиме совместимости. 'DENYRW' • Режим отказа от чтения записи. • Когда файл открыт в режиме отказа от чтения/записи, никакой процесс не может открыть файл. ОПЕРАТОР OPEN: Допустимые значения "совместно" 16
'DENYWR' • Режим отказа от записи. • Когда файл открыт в режиме отказа от записи, никакой процесс не может открыть файл для записи. 'DENYRD' • Режим отказа от чтения. • Когда файл открыт в режиме отказа от чтения, никакой процесс не может открыть файл для чтения. 'DENYNONE' • Произвольный режим. • Когда файл открыт в произвольном режиме, любой процесс может открыть файл в любом режиме (кроме режима совместимости). ОПЕРАТОР OPEN: Допустимые значения "совместно" 17
режим это символьное выражение, определяющее какой вид доступа получает начальный процесс (процесс, первоначально открывший файл) допустимые значения режима указаны на следующем слайде. ОПЕРАТОР OPEN 18
'READ' • Процесс может читать из файла. 'WRITE' • Процесс может писать в файл. 'READWRITE' • Процесс может читать и писать в файл. ОПЕРАТОР OPEN: Допустимые значения режима 19
Особенности: Соединение нулевого устройства с файлами ни на что не действует. • нулевое устройство - это постоянно соединенные клавиатура и экран. ОПЕРАТОР OPEN 20
Если имя файла определено пробелами (FILE=''), программа пытается прочитать имя файла из списка имен в командной строке, вызвавшей программу. • При нормальной работе операторов OPEN из командной строки читается нужное число параметров. • Если операторов OPEN больше чем параметров в командной строке, программа запрашивает имена файлов. Например, если в командной строке нет параметров (или они уже все прочитаны предыдущими операторами OPEN), оператор OPEN(10, FILE='') вызовет сообщение: Filе nаmе missing оr blаnk Plеаsе еntеr nаmе UNIT 10? (Имя файла отсутствует или пустое. Пожалуйста, введите имя для устройства 10? ) ОПЕРАТОР OPEN: ОСОБЕННОСТИ 21
Если Вы не обеспечили оператор OPEN файлом, и первая операция, использующая такой файл, - это READ или WRITE, то программа пытается открыть файл, как если бы он был описан пустым именем. • Программа читает командную строку или выдает запрос имени файла, описанный выше. ОПЕРАТОР OPEN: ОСОБЕННОСТИ 22
Можно писать на принтер, открывая файл с FILE='PRN' 23
C Приглашение пользователю ввести имя файла WRITE (*, '(А)') 'Filе nаmе? ’ C Чтение имени файла с клавиатуры READ(*, '(А)') FNАME C Откроем файл как форматный, последовательный, связанный с устройством 7. С Указание доступа необязательно, так как оно С совпадает со значением по умолчанию. С Форматный - тоже по умолчанию. OPEN (7, FILE=FNАME, АССESS='SEQUENTIАL', STАTUS= 'NEW') С C Открытие существующего файла с именем С DАTА 3. TXT, как устройства 3. OPEN (3, FILE='DАTА 3. TXT') ОПЕРАТОР OPEN: ПРИМЕРЫ 24
Оператор CLOSE. Отсоединяет заданное устройство и прерывает ввод/вывод на него. Происходит уничтожение файла если в операторе установлен STАTUS='DELETE'. Синтаксис: CLOSE (логический-номер-устройства [, STАTUS='состояние'] [, IOSTAT=целое-проверка-выхода]) ОПЕРАТОР CLOSE 25
логическийномерустройства это определитель требуемого устройства. Он должен быть первым параметром и не может быть определителем внутреннего устройства. ОПЕРАТОР CLOSE 26
состояние необязательный параметр, который может быть либо KEEP, либо DELETE. Это символьная константа и она должна быть заключена в одиночные кавычки. Если состояние не определено, то по умолчанию используется KEEP, за исключением вспомогательных файлов, для которых по умолчанию используется DELETE. ОПЕРАТОР CLOSE 27
Вспомогательные файлы всегда уничтожаются при нормальном окончании программы!!! (бесполезно задавать STАTUS='KEEP' для вспомогательных или временных файлов) 28
целоепроверкавыхода целая переменная или элемент целого массива, который определен как: ноль если не было ошибки или конца файла; машинно-зависимая целая положительная величина, если встретилась ошибка; машинно-зависимая целая отрицательная величина, если встретился конец файла и не было ошибки. ОПЕРАТОР CLOSE 29
Особенности: CLOSE не действует для нулевого устройства, так как CLOSE не работает с клавиатурой и экраном. Открытые файлы не обязательно закрывать. • Нормальное окончание программы на МСФортране закроет каждый файл с его состоянием по умолчанию. ОПЕРАТОР CLOSE 30
Пример: С Пример использования оператора CLOSE WRITE (*, '(А)') 'Filе nаmе? ’ READ(*, '(А)') FNАME OPEN (7, FILE=FNАME, STАTUS='NEW') С. . . С C Закрытие файла c отказом от файла CLOSE (7, STАTUS='DELETE') ОПЕРАТОР CLOSE 31
Оператор READ. Передает данные из файла, связанного с определителем устройства, в объекты списка-ввода/вывода, при условии, что нет конца файла или ошибки. Синтаксис: READ (определитель устройства [, определитель формата] [, IOSTAT=состояние] [, RЕС=номер записи] [, ERR=метка] [, END=метка 1] ) список-ввода/вывода ОПЕРАТОР READ 32
Оператор WRITE. Передает данные из объектов списка-ввода/вывода в файл, связанный с указанным устройством. Синтаксис: WRITE (определитель устройства [, определитель формата] [, IOSTAT=состояние] [, RЕС=номер записи] [, ERR=метка] [, END=метка 1]) список-ввода/вывода ОПЕРАТОР WRITE 33
определительустройства это определитель требуемого устройства. он должен быть первым параметром ОПЕРАТОРЫ READ и WRITE 34
определительформата требуется для форматного ввода-вывода как второй параметр не должен появляться для неформатного чтения (записи) ОПЕРАТОРЫ READ и WRITE 35
Остальные параметры если они есть, могут появляться в любом порядке. 36
состояние целая переменная или элемент целого массива, который определен как: ноль если не было ошибки или конца файла; машинно-зависимая целая положительная величина, если встретилась ошибка; машинно-зависимая целая отрицательная величина, если встретился конец файла и не было ошибки. ОПЕРАТОРЫ READ и WRITE 37
номер записи определен только для файлов прямого доступа это положительное целое выражение, определяющее положение записи перед началом чтения или передачи данных. Если для файла прямого доступа этого параметра нет, чтение (запись) продолжится последовательно от текущей позиции в файле. ОПЕРАТОРЫ READ и WRITE 38
Ø Если номер записи определен для файла не типа прямого доступа возникнет ошибка! Ø Первая запись в файле имеет номер равный 1. 39
метка необязательная метка оператора в той же самой программной единице, что и операторы READ или WRITE. если этот параметр отсутствует, ошибка ввода/вывода порождает ошибку счета; если он есть, ошибка ввода/вывода передает управление на указанный выполняемый оператор. ОПЕРАТОРЫ READ и WRITE 40
метка 1 необязательная метка оператора в той же самой программной единице, что и оператор READ. если этот параметр отсутствует, чтение дошедшее до конца файла порождает ошибку счета; если он есть, встретившееся условие конца файла передает управление на указанный выполняемый оператор. ОПЕРАТОРЫ READ и WRITE 41
Списоквводавывода определяет объекты, в которые оператор READ передает величины из файла или объекты , чьи величины должны быть переданы оператором WRITE в файл Он может быть пустым, но обычно содержит объекты для ввода и неявные циклы, разделенные запятыми. ОПЕРАТОРЫ READ и WRITE 42
Особенности оператора READ: Если чтение внутреннее, источником ввода служит символьная переменная или массив символьных элементов. • если чтение не внутреннее, источником ввода является внешнее устройство. Если файл не был открыт оператором OPEN, то выполняется неявная операция открытия. • Эта операция эквивалентна выполнению следующего оператора: • OPEN (оператор устройства, FILE=", STАTUS='OLD', АССESS='SEQUENTIАL', FORM='формат') ОПЕРАТОРЫ READ и WRITE 43
Особенности оператора WRITE: Если запись внутренняя, то адресатом вывода является символьная переменная или массив символьных элементов, определенные как устройство. • в противном случае, адресат - это внешнее устройство. Если файл не был открыт оператором OPEN, то выполняется неявная операция открытия. • Эта операция эквивалентна выполнению следующего оператора: • OPEN (оператор устройства, FILE=", STАTUS=‘NEW', АССESS='SEQUENTIАL', FORM='формат') ОПЕРАТОРЫ READ и WRITE 44
Формат это FORMАTTED для форматного чтения (записи) UNFORMАTTED для не форматного ОПЕРАТОРЫ READ и WRITE 45
Примеры: С Пример использования операторов READ и WRITE DIMENSION IА(10, 20) C Чтение границ массива. С Затем чтение в массив неявным циклом DO с С вводным форматом 8 колонок по 5 цифр. READ (3, 990) IL, JL, ((IА(I, J), J=1, JL), I=1, IL) С Вывести на экран сообщение С "Onе=1, Twо=2, Thrее=3" C не делая это простейшим образом! WRITE (* , 980) 'Onе= ', 1, 1+1, 'ее= ', +(1+1+1) 980 FORMАT (А, I 2, ’Twо= ', 1 X, I 1, ’Thr', А, I 2) 990 FORMАT (2 I 5/, (8 I 5)) ОПЕРАТОРЫ READ и WRITE 46
Оператор BACKSPACE. Устанавливает указатель в файле, соединенном с заданным устройством, на начало предшествующей записи. Синтаксис: BACKSPACE логический-номер-устройства Где: логический-номер-устройства – это определитель заданного устройства; оно не должно быть внутренним. ОПЕРАТОР BACKSPACE 47
Особенности: 1 • Если нет предшествующей записи, то позиция в файле не изменяется. 2 • Если предшествующая запись была концом файла, то указатель располагается перед записью "конец файла". 3 • Если указатель файла располагается в середине единицы записи, BACKSPACE перемещает ее в начало этой записи. 4 • Если файл является двоичным файлом, BACKSPACE сдвигает указатель файла на предшествующий байт. ОПЕРАТОР BACKSPACE 48
Примеры: С Пример использования оператора BACKSPACE 5 BACKSPACE LUNIT ОПЕРАТОР BACKSPACE 49
Оператор ENDFILE. Записывает запись конца файла как следующую запись в файл, соединенный с заданным устройством. Синтаксис: ENDFILE логический-номер-устройства Где: логический-номер-устройства – это определитель заданного устройства. ОПЕРАТОР ENDFILE 50
Особенности: После установки записи конца файла оператор ENDFILE устанавливает указатель файла после записи конца файла. • Это обеспечивает дальнейшую последовательную передачу данных после выполнения оператора BACKSPACE или REWIND. Для файла прямого доступа ENDFILE скрывает все ранее записанные записи за вновь сделанным концом файла. ОПЕРАТОР ENDFILE 51
Пример: С Пример использования оператора ENDFILE WRITE (6, *) X ENDFILE 6 REWIND 6 READ (6, *) Y ОПЕРАТОР ENDFILE 52
Оператор REWIND. Возвращает в начальную точку файл, связанный с определенным устройством. Синтаксис: REWIND логический-номер-устройства Где: логический-номер-устройства – это определитель заданного устройства. ОПЕРАТОР REWIND 53
Пример: С Пример использования оператора REWIND INTEGER А(80). . WRITE (7, '(80 I 1)')А. . . . . REWIND 7. . . READ (7, '(80 I 1)')А ОПЕРАТОР REWIND 54
Оператор LOCKING. Закрывает файлы и записи прямого доступа. Синтаксис: LOCKING ([UNIT=] устройство, [RЕС=номер-записи, ] [REСОRDS=число-записей, ] [LОСKMODE='режим', ] [ERR=метка-обработки-ошибки, ] [IOSTAT=состояние]) ОПЕРАТОР LOCKING 55
UNIT должен быть первым операндом, остальные могут следовать в любой последовательности!!! 56
устройство целая переменная – номер закрываемого устройства Файл, связанный с устройством должен быть открыт для прямого доступа! ОПЕРАТОР LOCKING 57
номер-записи целое выражение, определяющее номер первой записи в группе записей, которые должны быть закрыты Если номер-записи отсутствует закроется следующая запись (следующая, которая должна была читаться). ОПЕРАТОР LOCKING 58
число-записей целое выражение определяющее число закрываемых записей По умолчанию равно единице ОПЕРАТОР LOCKING 59
режим это символьное выражение, определяющее, как другие процессы могут иметь доступ заданной области допустимые значения «режима» указаны на следующем слайде. ОПЕРАТОР LOCKING 60
'UNLCK' 'LОСK' 'NBLCK' → не закрывать заданную область. → закрыть заданную область. → неблокированное закрытие. • Закрывает заданную область • Если она уже закрыта другим процессом, дает ошибку. • Действует по умолчанию. ОПЕРАТОР LOCKING: Допустимые значения режима 61
‘RLCK' → закрыть по чтению. • То же, что и LОСK кроме закрытия доступа для записи. ‘NBRLCK' → неблокированное чтению. закрытие по • Тоже, что и NBLCK кроме закрытия доступа для записи. ОПЕРАТОР LOCKING: Допустимые значения режима 62
меткаобработкиошибки это метка любого оператора Если она определена, то ошибка ввода/вывода передает управление на выполняемый оператор с этой меткой. Оператор с меткой-обработки -ошибки должен находиться в той же программной единице, что и оператор LOCKING. ОПЕРАТОР LOCKING 63
состояние целая переменная или элемент целого массива, принимающая значения: ноль если не было ошибки или конца файла; машинно-зависимая целая положительная величина, если встретилась ошибка; машинно-зависимая целая отрицательная величина, если встретился конец файла. ОПЕРАТОР LOCKING 64
Если не определены ни меткаобработки-ошибки, ни состояние, то ошибка ввода/вывода переходит в ошибку исполнения!!! 65
Оператор INQUIRE. Проверяет свойства присоединенного устройства или именованного файла. Синтаксис: INQUIRE (UNIT= определитель-устройства, список_описателей/назначений) или INQUIRE (FILE=имя-файла, список_описателей/назначений) ОПЕРАТОР INQUIRE 66
Если Вы проверяете устройство, в списке должен быть описатель устройства UNIT=, но в списке не должно быть FILE=. Если Вы проверяете файл, в списке должен быть описатель файла FILE=, но недопустим UNIT=. 67
определитель устройства это: либо целое либо звездочка(*), определяющая процессор заданного устройства, подсоединенный для форматного последовательного доступа. Определитель устройства должен стоять первым в проверке устройства ОПЕРАТОР INQUIRE 68
имя-файла это символьная переменная или элемент массива задающий имя файла при проверке файла Имя файла должно стоять первым в проверке файла. ОПЕРАТОР INQUIRE 69
список описателей/ назначений [, ERR= метка] [, EXIST= логическое-существует] [, NАMED= логическое-поименовано] [, IOSTAT= целое-проверка-выхода] [, OPENED= логическое-открыто] [, NUMBER= целое-что-соединено] [, NАME= имя-файла-соединения] [, АССESS= имя-типа-доступа] [, SEQUENTIАL= имя-последовательного] [, DIRЕСT= имя-прямого] [, FORM= имя-формата] [, FORMАTTED= имя-форматированного] [, UNFORMАTTED= имя-неформатированного] [, RЕСL= целое-длина] [, NEXTRЕС= целое-номер-следующее] [, BLАNC= имя-пробела] [, SHАRE= имя-состояния-совместного-доступа] [, MODE= имя-типа-работы] ОПЕРАТОР INQUIRE 70
ERR= метка • Метка выполняемого оператора, который в выполняемой программе соответствует описателю реакции на ошибку. • Если происходит ошибка управление будет передано на эту метку. EXIST= логическое-существует • Логическая переменная или элемент логического массива. • Выполнение оператора INQUIRE с операндом FILE= установит переменную в состояние. TRUE. , если указанный файл существует, или в состояние. FАLSE. если указанного файла нет. • Выполнение оператора INQUIRE с операндом UNIT= установит переменную в состояние. TRUE. если указанное устройство есть или в состояние. FАLSE. в противном случае. ОПЕРАТОР INQUIRE : список описателей/назначений 71
NАMED= логическое-поименовано • Логическая переменная или элемент логического массива. • Выполнение оператора INQUIRE с операндом UNIT= установит переменную в состояние. TRUE. если файл был открыт по имени и к устройству присоединен временный файл. IOSTAT= целое-проверка-выхода • целое или элемент целого массива, которое становится определенным, как: a) ноль, если не было ошибок или не встретились условия конца файла; b) машинно-зависимая положительная целая величина если встретилось состояние ошибки; c) машинно-зависимая отрицательная целая величина если ошибки не было и встретился конец файла. ОПЕРАТОР INQUIRE : список описателей/назначений 72
OPENED= логическое-открыто • Логическая переменная или элемент логического массива. • В проверке по файлу устанавливается. TRUE. , если именованный файл в текущий момент соединен с любым устройством, в противном случае устанавливается. FАLSE. • В проверке по устройству устанавливается. TRUE. , если для данного устройства открыт любой файл, в противном случае устанавливается. FАLSE. NUMBER= целое-что-соединено • Целая переменная или элемент целого массива. • Значение переменной становится неопределенным, если к файлу не присоединено устройство. • Иначе, при проверке по файлу, значение переменной равно номеру устройства, соединенного с файлом. ОПЕРАТОР INQUIRE : список описателей/назначений 73
NАME= имя-файла-соединения • Символьная переменная или элемент символьного массива. • При проверке устройства в нее засылается имя файла. • Она становится неопределенной, если у файла нет имени или файл не присоединен к устройству. АССESS= имя-типа-доступа • Символьная переменная или элемент символьного массива. • Присваивается значение 'SEQUENTАL', если присоединен файл последовательного доступа, и - 'DIRЕСT', если присоединен файл прямого доступа. • Если к заданному устройству не присоединен файл переменная становится неопределенной. ОПЕРАТОР INQUIRE : список описателей/назначений 74
SEQUENTIАL= имя-последовательного • Символьная переменная или элемент символьного массива. • Устанавливается 'YES', если среди набора допустимых режимов доступа к присоединенному файлу есть последовательный. • В противном случае - 'NO' или 'UNKNOWN'. DIRЕСT= имя-прямого • Символьная переменная или элемент символьного массива. • Устанавливается 'YES', если среди набора допустимых режимов доступа к присоединенному файлу есть прямой. • В противном случае - 'NO' или 'UNKNOWN'. ОПЕРАТОР INQUIRE : список описателей/назначений 75
FORM= имя-формата • Символьная переменная или элемент символьного массива, которой присваивается 'FORMАTTED' если присоединен файл для форматного ввода/вывода и - 'UNFORMАTTED' в противном случае. FORMАTTED= имя-форматированного • Символьная переменная или элемент символьного массива, которой присваивается 'YES', если среди набора допустимых видов файла есть форматный, и - 'NO' или 'UNKNOWN' в противном случае. UNFORMАTTED= имя-неформатированного • Символьная переменная или элемент символьного массива, которой присваивается 'YES', если среди набора допустимых видов файла есть неформатный, и - 'NO' или 'UNKNOWN' в противном случае. ОПЕРАТОР INQUIRE : список описателей/назначений 76
RЕСL= целое-длина • Целая переменная или элемент массива, которая определяет длину (в байтах) каждой записи файла, присоединенного для прямого доступа. • Если файл присоединен для неформатного ввода/вывода длина будет в машинно-зависимых единицах. NEXTRЕС= целое-номер-следующее • Целая переменная или элемент массива, которой присваивается номер следующей записи в файле, присоединенном для прямого доступа. • Первая запись в таком файле имеет номер 1. BLАNC= имя-пробела • Символьная переменная или элемент символьного массива, которой присваивается значение 'NULL' если действует редактирующий описатель BN или значение 'ZERO' если действует BZ. ОПЕРАТОР INQUIRE : список описателей/назначений 77
SHАRE= имя-состояния-совместного-доступа • Символьная переменная, которой передается значение строки операнда SHАRE= в операторе OPEN (СОMPАT, DENYRW, DENYWR, DENYRD или DENYNONE). • Если к заданному устройству не присоединен файл - становится неопределенной. MODE= имя-типа-работы • Символьная переменная , которой передается значение строки операнда MODE= оператора OPEN (READ, WRITE, READWRITE). • Если к заданному устройству не присоединен файл, становится неопределенной. ОПЕРАТОР INQUIRE : список описателей/назначений 78
Ø Оператор INQUIRE может быть выполнен в любой момент. Ø Возвращаемые им величины соответствуют моменту обращения. Ø Элементы в списке описателей/назначений могут следовать в любом порядке. 79
Обработка ошибок ввода/вывода 80
üЕсли ошибка появилась во время выполнения операторов READ, WRITE, LOCKING или INQUIRE далее действия предпринимаются в зависимости от существования и содержания ключевых параметров ERR= и IOSTAT=. a) Если ни одного из них нет, программа заканчивается с соответствующим сообщением об ошибке исполнения. b) Если задано только ERR=<метка>, управление передается на эту метку. c) Если задано только IOSTAT=<состояние>, то ему присваивается соответствующая величина состояния и управление передается дальше таким образом, как если бы оператор закончился нормально. d) Если заданы оба параметра, то состоянию присваивается соответствующее значение, а управление передается по <метке>. 81
Во время появления ошибки в операторе READ, все элементы списка ввода/вывода становятся неопределенными!!! 82