2016-12-30 2 views
0

왜 Fortran90 프로그램이 파일에 더 이상 쓰지 않는지 이해할 수 없습니다. 그것은 몇 시간 전에 일하는 것이 었습니다. 나는 코드의 일부분을 수정하지도 않았고, 파일에 쓰지 않아야하는 미덕으로 몇 가지 조건을 도입하지도 않았다. 다음 줄에는 터미널에 파일에 기록해야하는 동일한 값을 쓰는 인쇄 명령을 넣었습니다.Fotran90의 파일에 쓸 수 없음

open(500, file='data.dat') 
write(500,fmt='(E14.4,E14.4)') A,B !this SHOULD be printed on unit 500 
write(*, fmt='(E14.4,E14.4)') A,B ! this is printed on terminal 

나는 단위를 변경하려고 시도했지만 아무 것도 변경되지 않았습니다. 나는 새로운 이름으로 새로운 파일을 열어 그 위에 쓰기를 시도했다. 또한 변수 선언 다음에 시작 부분에서도 코드의 다른 부분에도 쓰려고했다. 이것은 작동하지 않는 것 같습니다. 모든 것이 적절하게 이전에 작동했기 때문에 너무 초조했습니다. 무슨 일이 일어 났을까요?

+1

당신은 무슨 일이 일어나길 기대하지만, 무슨 일이 일어날 지 말합니다. 당신은 정교 할 수 있습니까? 또한 문제를 보여주는 [mcve]를 줄 수 있습니까? 그것이 그대로 나는 짐작할 수 있습니다. 하지만, 나는'action = 'write', position = 'rewind', status = 'replace''를'open' 문에 넣으면 어떻게 될까요? – francescalus

+0

형식 부분을 제거하려고하면 어떻게됩니까? 'write (500, *) A, B' – Peaceful

+0

제쳐두고 :이 게시물은 항상 버전 제어 시스템을 사용하고 변경 사항을 일찍 그리고 자주 체크인해야하는 이유의 예입니다. 변경 편집을 분리하기 위해 변경 집합을 양분 할 수 있다는 것은 저에게 무수한 시간과 많은 좌절을 덜어 줬습니다. 도덕적 인 것이나 그것에 대한 얼간이가 없으면, 머큐리얼, 자식, RCS를 배우는 것을 고려해보십시오 - 당신의 머리를 감쌀 수있는 버전 제어 시스템. 거의 즉시 지불합니다. – arclight

답변

0

gfortran 5.3을 Linux 및 다음 프로그램에서 사용합니다 (즉, 코드를 복사하여 붙여 넣기하고 최소 상용구를 작성하는 것입니다).

program hop 
    implicit none 

    double precision :: A, B 

    A = 1 
    B = 2 

    open(500, file='data.dat') 
    write(500,fmt='(E14.4,E14.4)') A,B !this SHOULD be printed on unit 500 
    write(*, fmt='(E14.4,E14.4)') A,B ! this is printed on terminal 

end program hop 

출력 단자에 0.1000E+01 0.2000E+01data.dat 파일에 동일한 콘텐츠.

프로그램에서 정지 명령이 기록되어 있습니까? 출력이 보이지 않으면 I/O 버퍼링과 관련이있을 수 있습니다. 당신이 쓰기 명령 후에 라인을

flush(500) 

을 추가하는 경우

는 동작이 변경되어 있습니까?

+0

또한,'open','write' 등의'iostat'과'iomsg' 인수를 사용하면 간헐적 인 문제 나 외부적인 문제 (디스크가 가득 차서 파일 사용 권한 문제 등)가있는 경우 몇 가지 단서를 제공해야합니다. – arclight

0

주기적으로 파일에 써야합니다. 이제는 위치에 'append'를 추가 한주기에서 파일을 열고주기의 마지막에 파일을 닫습니다. 마치

program pro 
implicit none 
integer (kind=2) :: i, A, B 
do i=1,10 
A=i 
b=i+1 
open(500, file='file.dat', position='append') 
write(500, *) A, B 
close(500) 
enddo 

이제는 작동하는 것 같습니다.

+0

왜 개폐마다 개폐? 시작시 한 번만 엽니 다. –

+0

코드가 실행되는 동안 실시간으로 파일을 보려고 할 경우 닫기는 플러시로 작용합니다. – agentp