2012-02-25 4 views
0
내가 각 루프에서 새 파일을 만들려면

, 난 ... 어떻게여러 파일에 대한 Fortran WRITE 루프?

!file1, file2,....., file[n] 

OPEN (1,FILE='file1.out',ACCESS='SEQUENTIAL',STATUS='UNKNOWN') 
do ph=1,N6 
do i=1,nx-1 
    A(i)=mu*U(i-1) 
end do 
do j=0,nx 
    U(j)=A(j) 
end do 
    if (mod(ph,Ne)==0) then ! ? 
    WRITE(1,200) nt,U(i) 
    endif 
    200 format(5E12.4) 
end do 

를 모르는 아니면, 내가 줄 바꿈 또는 열 쓸 수 있습니까? 저는 포트란에서 초보자입니다. 감사합니다

+0

코드 예제가 실제로 도움이되지 않습니다. 'm' 배열을 여러개의 파일에 쓰고 싶습니까, 아니면'm'의 각 요소를 별도의 파일에 쓰길 원합니 까? 귀하의 문제에 대한 배경을 저희에게 알려 주시면보다 적절한 답변을 제시 할 수있게 될 것입니다. – Chris

+0

좋아요, 코드 분리를 추가하십시오. 나는 매번 새로운 파일에 배열 U를 쓰고 싶다. 이처럼, 나는 단지 마지막 U를 file1.out에 가지고 있습니다. 나는 루프 동안 계산 된 각각의 U를보고 싶습니다. – supertoto

답변

2

기존 코드는 파일에 마지막 write 문 이상을 출력해야합니다 ... 순차 파일이므로 출력이 순차적으로 파일에 추가됩니다. 하나의 출력 만보고 있다면 IF 문이 출력되는 것이 전부입니까?

여러 파일로 출력하려는 ​​경우 여러 파일로 출력하는 가장 쉬운 방법은 장치 번호를 다시 사용하고 프로그램에서 파일 이름을 만드는 것입니다. 파일/장치를 닫은 다음 다시 열어야합니다. 이것은 열린 문과 단위 숫자가 여러 개있는 것보다 훨씬 쉽습니다. 파일 수가 증가하면 어색해집니다. 다음은 100 개 미만의 파일을 가정 한 코드입니다.

do i=1, N 
    write (filename, '("myfile", I2.2, ".txt")') I 
    open (file=filename,unit=16,...) 
    calculations... 
    write (16,'(5E12.4)') nt,U(i) 
    close (16) 
end do 
+0

고마워요, 제가 원했던 바로 그것입니다! – supertoto

+0

순차를 위해 좋습니다, 나는 이해하지 않았다. 나는 다른 방법을 생각하고 있었지만 가능한 경우 kown을하지 않았습니다. 같은 파일에 있지만 다른 열 U (i)에 쓸 수 있습니까? 하지만 당신의 해결책은 괜찮습니다. – supertoto

+0

@supertoto write 문에서'ADVANCE = 'NO'를 사용하여 같은 파일의 다른 열에 쓸 수 있습니다. –