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

Fortran для персонального компьютера

..pdf
Скачиваний:
22
Добавлен:
15.11.2022
Размер:
12.5 Mб
Скачать

ошибке, если, однако, не специфицированы параметры <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, поскольку ре­ зультат при этом будет непредсказуем.