2014-12-07 1 views
2

명시 적으로 STATUS을 지정하지 않고도 OPEN 문을 사용하는 사람들이 종종 나타납니다. Fortran 90 및 2008 표준에서는 STATUS에 대해 다음과 같이 표시됩니다.오픈시 기본 상태가 "알 수 없음"입니다.

UNKNOWN이 지정되면 상태는 프로세서에 따라 다릅니다. 이 지정자가 생략되면 기본값은 UNKNOWN입니다.

나는 이것을 해석합니다. STATUS을 생략하면 사용중인 컴퓨터에 따라 어떤 일이 생길 수 있습니다.

그러나 일부 테스트를 수행하면 기본 동작 (STATUS 생략시)은 REPLACE입니다. 그러나이 동작을 gfortran 컴파일러 설명서 (https://gcc.gnu.org/onlinedocs/)에 설명되어 있습니다.

질문 : 이건 REPLACE gfortran 및 ifort와 같은 인기있는 컴파일러의 기본 동작입니까? 그렇다면 실제로 문서화 되었습니까 (하지만 방금 찾지 못했습니다).

+1

문서화되지 않은 동작은 거의 무작위를 의미하지 않습니다. –

+1

'OPEN' 명령문의 권장 지정자는'file','access','status','action'입니다. –

답변

3

일반적인 컴파일러에서는 UNKNOWN이 모두 매우 유사하게 동작합니다. 하지만 확실히 REPLACE과 같지 않습니다! 그 선택은 읽고 자하는 데이터를 덮어 씁니다!

IBM의 XL 포트란 설명서

이를 지정

UNKNOWN은, 기존 파일을 연결하거나 새로운 파일을 만들고 연결할 수 있습니다. 파일이 있으면 OLD로 연결됩니다. 파일에 이 없으면 NEW로 연결됩니다.

+0

감사합니다 - 출력 된 파일 만 사용했기 때문에'REPLACE'라고 생각했습니다. – boxofchalk1

+1

조금 정교합니다. 'open (.. status = 'replace')'는 쓰는 지 여부에 관계없이'open' 명령문에서 즉시 기존 파일을 지 웁니다. 'old' 또는'unknown'은 첫 번째'write'에서만 기존 파일을 덮어 씁니다. 나는 '알 수없는'다른 행동이있을 수 있고, 보편적 인 행동을 표준화하지 않는 이유에 대해 당황 스럽다. – agentp

관련 문제