필자는 FORTRAN을 오래 전부터 사용해 왔으며 최근에는 이전 FORTRAN 프로그램 (F77)을 유지 관리하는 임무를 수행했습니다. 다음 코드는 익숙했다 :포트란 암시 루프 명확화
READ(FILE_LOG_UNIT, IOSTAT=FILE_STATUS) NUM_WORDS,
. (BUFFER(BIX), BIX=1, NUM_WORDS)
일부는 온라인 포럼이 저를 혼동 한 부분은 계속 라인, 묵시적 루프 것으로 나타났다 검토. 내 프로그램이 바로 여기에서 문제를 일으키고 있기 때문에 이것을 일반적인 DO 루프로 변환하려고합니다. 그것을 변환하는 것은 5 년 후에 추운 위로이 것을 고르는 다음 가난한 물방울을 도울 것입니다! 어쨌든, DO 루프 상응하는 나의 추측은
READ(FILE_LOG_UNIT, IOSTAT=FILE_STATUS) NUM_WORDS
DO BIX=1, NUM_WORDS
READ(FILE_LOG_UNIT, IOSTAT=FILE_STATUS) BUFFER(BIX)
ENDDO
이다 그러나 나는 단지이 변경했을 때, 작업하는 테스트 케이스가 작동을 멈췄습니다. 나는 여전히 두 가지 다른 READ (처음에는 NUM_WORDS를 얻고 두 번째는 데이터를 반복하는 것) 때문에 덜 급격한 변화를 시도했지만 두 개의 명령문으로 변환했지만 암시 된 루프는 그대로 유지한다고 생각했습니다.
READ(FILE_LOG_UNIT, IOSTAT=FILE_STATUS) NUM_WORDS
READ(FILE_LOG_UNIT, IOSTAT=FILE_STATUS) (BUFFER(BIX), BIX=1, NUM_WORDS)
하지만이 변경으로 인해 좋은 테스트 케이스가 실패하게됩니다. 두 가지 변경 사항 모두에서 NUM_WORDS의 가치가 예상대로 향상되어 루프가 실패한 것으로 보입니다.
그래서 원래의 암시 루프에 해당하는 DO 루프는 무엇입니까? 아니면 내가 잘못된 길을 가고 있는가?
감사합니다.
답변 해 주셔서 감사합니다. janneb. 파일 열기에 대한 가정은 정확합니다. 포맷되지 않은 순차적 사용하고 있습니다. 그리고 당신의 대답을 통해 나는 더 중요한 문제가 읽기라는 것을 알았고 그것이 기록을 읽는다는 사실을 잊어 버렸습니다. – user3617977