Spec-Zone.ru › GNU Fortran 14

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

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= не поддерживается в других системах.

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

Spec-Zone.ru

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