книги / Fortran ╨┤╨╗╤П ╨┐╨╡╤А╤Б╨╛╨╜╨░╨╗╤М╨╜╨╛╨│╨╛ ╨║╨╛╨╝╨┐╤М╤О╤В╨╡╤А╨░
..pdfошибке, если, однако, не специфицированы параметры <errlabel> или <iocheck>. Если <endlabel> указан, то при встре
че записи "конец-файла" управление передается в исполня емый оператор с меткой <endlabel>.
<errlabel> — Метка исполняемого оператора в том же прог раммном модуле, где указан и сам оператор. Если <сгг1аое1> указан, то при возникновении ошибки ввода/вывода управ ление передается в оператор с меткой <crrlabel>. Если <errlabel> опущен, то при возникновении ошибки ввода/выво да будет генерироваться сообщение об ошибке. Причины воз никновения ошибки и действия, которые следует выполнить для ее устранения, определяются в зависимости от значения параметра <iocheck>.
<iocheck> — Целочисленная переменная, элемент цело численного массива или элемент структуры, которые прини мают значение 0 в случае отсутствия ошибок, значение -1 в случае, если встречен "конец-файла", или значение положи тельного целого числа, если ошибки имели место, (см. подразд.3.2.6).
<гес> — Выражение положительного целого типа, называ емое номером записи. Параметр указывается только для фай лов прямого доступа; если параметр <гсс> задается для внут реннего файла или файла последовательного доступа, то будет генерироваться ошибка (т.с. будут получены некорректные результаты); перед началом передачи данных файл позици онируется в запись с номером <гес> (первая запись файла имеет номер 1). По умолчанию в качестве значения параметра <гес> принимается текущая позиция файла.
<iolisl> — Список объектов, в которые передаются значения из файла. Список <iolist> нс может содержать структурных переменных, но может содержать элементы структуры/
ЗАМЕЧАНИЯ Если файл был открыт с параметром
MODE=’READ WRITE’ (принимается по умолчанию), то пользователю предоставляется возможность попеременно чи тать и записывать один и тот же файл, не выполняя при этом каждый раз операцию его повторного открытия. В случае пос ледовательного файла, после каждой операции записи необ
ходимо будет выполнять возврат к началу файла.
Следует отметить, что данные, вводимые из двоичного файла, по своим размерам должны соответствовать данным, записанным в двоичным файл. При попытке прочитать несо ответствующую запись, результаты будут непредсказуемы.
Если параметром оператора READ является выражение, которое вызывает функцию, то эта функция нс должна акти визировать выполнение операторов ввода/вывода или встро енной функции EOF, поскольку при этом результаты выпол нения будут непредсказуемы.
6 Заказ №2 О& |
81 |
ЗАМЕЧАНИЯ
Если Файл был открыт с параметром MODE= READWRITE (принимается по умолчанию), пользователь может альтернативно вводить и выводить данные в один и тот же файл, не выполняя при этом каждый раз операцию от крытия файла. После выполнения оператора вывода необхо димо вернуться в начало файла последовательного доступа.
Ввод после записи ’конец-файла” может привести к возникно вению ошибки.
Если выполняется операция записи в файл последова тельного доступа, то все существующие записи, находящиеся
после записей, которые заново записываются, будут удалять ся.
Если параметром оператора WRITE является выраже ние, в котором выполняется вызов функции, то эта функция не должна активизировать выполнение операторов ввода/вывода или встроенной функции EOF, поскольку в этих случаях результаты их выполнения могут оказаться непредсказуемы ми.
4.6.4Запрос состояния файла.
Оператор INQUIRE
ДЕЙСТВИЕ
Предназначен для получения информации о характе ристиках и текущем состоянии указанного внешнего файла или устройства." Внешний файл Гили устройство) может быть как присоединенным, так и неприсоединенным.
СИНТАКСИС
INQUIRE ({[UNIT= ]<unitspeOFILE =<file>} ,ACCESS=<access>] [,BINARY=<binary> ]
,BLANK=<blank> ][,BLOCKSIZE=<blocksize> ] ,DIRECT=<direct> ] [,ERR=<errlabel> 1
|,EXIST=<exist> ] [,FORM=<form> I f,FORMATTED=<formatted> 1[,IOSTAT=<ioc.heck>]
.MODE=<niode>I [,NAME=<name>] ,NAMEIXnanied> ][,NEXTREC=<nextrec> ]
,NUMBER=<num> ] l,OPEN ED=<opened> ] ,RECL=<rcc>] [,SEQUENTIAL=<scq>]
,SHARE=<share> 1[,0 NFORMATTED=<imformatted> ]) Если параметр UNIT= опущен, то первым должен быть параметр <unitspcc>. Параметры могут указываться в любой
поеледовательности.
<unilspec> — В качестве значения <unitspec> можно ис пользовать либо целочисленное выражение, либо звездочку
(*). Если указано UNIT=*, то параметр NUMBER= в список параметров включать нельзя, иначе будет генерироваться со
общение об ошибке. В описании должен быть специфицирован либо один параметр <unitspec>, либо один параметр <file>; оба описания одновременно не допускаются. Если указан <unitspec>, то операция запроса называется операцией запро
са об устройстве"
специфицированное устройство <unitspec> или файл <file> присоединены к форматному вводу/выводу: для двоичного ввода/вывода значение параметра есть ’BINARY'; для нефор матного ввода/вы вода - ’U NFOK MATED’.
<formatted> — Символьная переменная, элемент символь ного массива или структурный элемент. Устанавливается в значение ’YES’, если среди допустимых форматов, специфи цированных для файла <fiJe> или присоединенных к устройст ву <unitspec>, указан форматный ввод/вывод; в противном случае для параметра устанавливается значение rNO’ или
<iocheck> — Целочисленная переменная, элемент массива или структурный элемент, которые определяются со значе нием ноль, если ошибок не произошло, либо со значением
положительного целого числа в противном случае (см. также подразд.3.2.6).
<mode> — Символьная переменная, элемент символьного массива или структурный элемент. Устанавливается в зна чение состояния текущего режима специфицированного уст ройства. Значения параметра совпадают со значениями, ука зываемыми в операторе OPEN: ‘READ’, WRITE’ и ’READWRITE’. В операторе ’’запроса об устройстве”, пара метр <mode> является неопределенным, если к устройству <unitspec> не присоединен ни один файл.
<паше> — Символьная переменная, элемент символьного массива или структурный элемент. В операторе "запроса об устройстве” параметр устанавливается в значение имени фай ла, присоединенного к устройству <unilspec>. Если к устройст ву <unitspec> не присоединен ни один файл, или если файл, присоединенный к устройству <unilspcc> не имеет имени, то имя <паше> является неопределенным. В операторе "запроса о файле” параметр устанавливается в значение имени, указан
ного для файла <file>.
<named> — Логическая переменная или элемент массива. Устанавливается в значение .FALSE., если файл, специфи цированный как <file> или присоединенный к устройству <unitspec>, не является открытым, или является рабочим фай лом; в противном случае параметр устанавливается взначение
.TRUE..
<nextrec> — Целочисленная переменная, элемент массива или элемент структуры, которые назначают номер следующей записи в файле прямого доступа. Первая запись в файле пря
мого доступа имеет номер 1.
<num> — Целочисленная переменная, элемент массива или элемент структуры. В операторе "запроса о файле”, пара метр устанавливается в значение номера устройства, присо единенного к файлу <file>. Если к файлу <file> устройство нс присоединено, то параметр <num> является неопределенным. В операторе "запроса об устройстве”, параметр устанавливает ся в значение номера, указанного в <umtspec>. Если пользователь специфицировал UNIT=*, то параметр NUMBER= в описание включать нельзя, иначе будет сгенерировано сооб
щение об ошибке.
СИНТАКСИС
CLOSE([UNIT= ]<unitspec> [,ERR=<errlabel> 1 [,IOSTAT=<iocheck> ] [ STATUS=<status> ])
Если опущен параметр UNlT=, то <unitspec> должен быть
первым параметром. Параметры могут указываться в любой последовательности.
<unitspec> — Целочисленное выражение, специфицирую щее внешнее устройство. Ошибок не возникает, если устрой ство не является открытым.
<errlabel> — Метка исполняемого оператора в том же прог раммном модуле, где указан данный оператор. Если параметр <errlabel> указан, то при возникновении ошибки ввода/выво да управление передается в оператор с меткой <errlabel>. Если параметр <errlabel> опущен, то при возникновении ошибки ввода/вывода генерируется сообщение об ошибке этапа испол нения. Результаты возникновения ошибок ввода/вывода оп ределяются спецификацией параметра <iocheck>.
<iochcck> — Целочисленная переменная или элемент мас сива, определяемые со значением 0, если ошибок не произош ло, либо со значением положительного целого числа, если имеет место ошибка (см. также подразд.3.2.6).
<status> — Символьное выражение, которое вычисляется со значением либо ’KEEP’, либо ’DELETE’. Для файлов, откры тых как рабочие файлы, значение параметра <status> по умол чанию принимается равным ’DELETE’ При нормальном за вершении программы рабочие файлы обычно удаляются; спецификация параметра STATUS = ’KEEP’ для рабочих фай лов или временных файлов обуславливает генерацию сооб щений об ошибках этапа исполнения. Для всех остальных фай лов значение параметра <status>, принимаемое по умолчанию, равно ’KEEP’
ЗАМЕЧАНИЯ
Открытые файлы не обязательно могут быть закрыты явно. ФОгТРАН-программы, при их нормальном заверше нии, будут закрывать каждый файл (который они использо вали во время исполнения) со значением состояния, принима
емым по умолчанию.
Закрытие нулевого устройства "отключает" нулевое ус тройство и автоматически "переназначает" его на клавиатуру и экран. Закрытие устройств с номерами 5 и 6, автоматически переназначает эти устройства на клавиатуру или экран, соот ветственно. Закрытие устройства, идентифицированного звез дочкой (*), приводит к генерации сообщения об ошибке этапа
компиляции.
Если параметром оператора CLOSE является выраже ние, в котором реализуется обращение к функции, то эта функция не должна обуславливать выполнения операторов ввода/вывода или встроенной функции EOF, поскольку ре зультат при этом будет непредсказуем.