Fortran 95: оператор open, переменная состояния: неизвестно или заменено

Я хотел бы знать, в чем разница между этим утверждением:

open(unit=11,file="something.TXT",status="unknown"), который по умолчанию является status в Фортране (т. е. предыдущий оператор такой же, как open(unit=11,file="something.TXT")

и это заявление:

open(unit=11,file="something.TXT",status="replace")

У меня сложилось впечатление, что статус unknown ведет себя именно так, как я ожидал от replace: если файл не существует, он его создает. Если он существует, то он заменяет его.


person gilbertohasnofb    schedule 25.03.2014    source источник


Ответы (1)


Стандарт Fortran устанавливает, что интерпретация status='unknown' зависит от процессора. То есть ваше впечатление слегка неверно.

В имеющемся у меня проекте стандарта 1995 года это объясняется в разделе 9.3.4.2.

В имеющемся у меня проекте стандарта 2003 года это объясняется в разделе 9.4.5.15.

person High Performance Mark    schedule 25.03.2014
comment
Что именно означает зависимость от процессора? Но независимо от этого, это означает, что для максимальной переносимости я должен абсолютно всегда присваивать значение status при открытии файла? - person gilbertohasnofb; 25.03.2014
comment
Вы правильно поняли. Зависимость от процессора означает, что ваш компилятор/среда выполнения могут сделать выбор за вас, если вы хотите быть уверенным в поведении оператора open, вы должны указать один из других параметров для status=. - person High Performance Mark; 25.03.2014