2012-03-05 5 views
3

내 메인 실행 파일을 포함하고있는 폴더는 입력, 출력 및 소스 파일로 매우 어수선하게 쌓여 있습니다. 이 파일 중 일부를 내 실행 파일과 다른 디렉토리로 이동하려고하지만 여전히 액세스 할 수 있습니다. 내 프로그램의 모든 출력 파일을 보유하고있는 디렉토리 (예 : ./main/outfile)를 만들면 환상적입니다. Fortran 77/90에서이 파일에 액세스 할 때 경로를 포함 할 수 있습니까?메인 프로그램의 하위 디렉토리에있는 파일에 액세스하기

컴파일러가 중요한 경우 우분투 11.10에서 실행되는 gfortran을 사용합니다.

답변

7

입/출력 파일의 경우 파일을 열 때 경로 만 지정하면됩니다. 예 :

open(unit=3,file='outputdata/data_modified.txt',status='unknown') 

outputdata 폴더의 파일을 엽니 다. outputdata 폴더가 미리 존재해야합니다. 그렇지 않으면 오류가 발생할 수 있습니다.

+0

이 명령을 호출하기 전에'outputdata' 디렉토리가 존재해야한다는 것을 강조해야합니다. 적어도 ifort를 사용하면 존재하지 않는 디렉토리에 파일을 쓰려고하면 "파일을 찾을 수 없습니다"오류가 발생합니다. – Chris

+0

MAIN 끝의 include 문은 어떻게됩니까? 나는 'include'가 경로 입력을 받아 들일 것이라고 생각하지 않는다. 필자는 포함 문이 매우 긴 목록을 가지고 있습니다. 즉, MAIN과 동일한 디렉터리를 어지럽히는 포함 된 파일이 많이 있습니다.이 모든 서브 루틴을 복사하여 단일 .f 파일에 붙여 넣어 끝 부분에 포함시켜야합니까? 프로그램의? – kxk7607

+0

@ kxk7607 아니, 그러지 마. 동일한 경로 방법이 포함 파일에도 적용됩니다. Include 파일을'includefiles' 폴더에 넣고'include includefiles/statements.inc'를 사용하여 주 프로그램에 지정할 수 있습니다. – bananafish

2

런타임시 시작 디렉토리는 주 프로그램이 상주하는 디렉토리가 아니라 프로그램을 시작할 때 현재 디렉토리입니다. 응용 프로그램 바이너리가 다른 디렉토리에있는 경우에도 현재 디렉토리 (./run_N)에서 파일을 읽고 쓸 것인가 예를

mkdir run_N && cd run_N && ../my_program 

를 들어

.

+0

MAIN이 MAIN과 같은 디렉토리에 생성 된 a.out (또는 실행 가능한 다른 특정 출력)을 생성한다는 인상하에있었습니다. a.out을 데스크탑으로 옮기면 프로그램이 제대로 실행되지 않는다는 것을 이해해야합니까? 용서하십시오, 나는 아직도 FORTRAN 유아기에 있습니다. – kxk7607

관련 문제