Spec-Zone.ru › GNU Fortran 11

6.1.32 Расширенные спецификаторы ввода/вывода

GNU Fortran поддерживает дополнительные устаревшие спецификаторы ввода/вывода CARRIAGECONTROL, READONLY, и SHARE с флагом компиляции -fdec для совместимости.

CARRIAGECONTROL

Спецификатор CARRIAGECONTROL позволяет пользователю управлять параметрами завершения строк между записями вывода для устройства ввода/вывода. Этот спецификатор не имеет смысла для файлов только для чтения. Когда CARRAIGECONTROL указан при открытии устройства для форматированного записи, точная настройка CARRIAGECONTROL определяет символы, которые нужно записать между записями вывода. Синтаксис:

OPEN(..., CARRIAGECONTROL=cc)

Где cc — это символьное выражение, которое вычисляется в одно из следующих значений:

'LIST' Одна переводная строка между записями (по умолчанию)
'FORTRAN' Устаревшая интерпретация первого символа (см. ниже)
'NONE' Нет разделителя между записями

При использовании CARRIAGECONTROL='FORTRAN', когда записывается запись, первый символ входной записи не записывается, а вместо этого определяет разделитель выходных записей следующим образом:

Ведущая буква Значение Символ(ы) разделения вывода
'+' Перезапись Только возврат каретки
'-' Новая строка Перевод строки и возврат каретки
'0' Пропуск строки Два перевода строки и возврат каретки
'1' Новая страница Формат страницы и возврат каретки
'$' Запрос Перевод строки (без возврата каретки)
CHAR(0) Перезапись (без продвижения) Нет
READONLY

Спецификатор READONLY может быть задан при открытии устройства и эквивалентен спецификатору ACTION='READ', за исключением того, что файл может не быть удален при закрытии (т.е. CLOSE с STATUS="DELETE"). Синтаксис:

OPEN(..., READONLY)
SHARE

Спецификатор SHARE позволяет блокировать устройство на уровне системы при его открытии для контролируемого доступа из нескольких процессов/потоков. Спецификатор SHARE имеет несколько форм:

OPEN(..., SHARE=sh)
OPEN(..., SHARED)
OPEN(..., NOSHARED)

Где sh в первой форме — это символьное выражение, принимающее значение, показанное в таблице ниже. Последние две формы — алиасы для определенных значений sh:

Явная форма Сокращенная форма Значение
SHARE='DENYRW' NOSHARED Эксклюзивный (запись) замок
SHARE='DENYNONE' SHARED Общий (чтение) замок

В общем случае только один процесс может удерживать эксклюзивный (запись) замок для данного файла одновременно, в то время как многие процессы могут удерживать общие (чтение) замки для одного и того же файла.

Поведение блокировки может различаться в зависимости от вашей операционной системы. В системах POSIX блокировка реализуется с помощью fcntl. Обратитесь к руководствам операционной системы для получения дополнительной информации. Блокировка с помощью SHARE= не поддерживается в других системах.

Далее: Устаревшие операторы PARAMETER, Предыдущее: Битовые логические операторы, Вверх: Расширения, реализованные в GNU Fortran [Оглавление][Индекс]

© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-11.1.0/gfortran/Extended-I_002fO-specifiers.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API