모듈에 subroutine과 function을 정의하면 이들 procedure를 불러오는 프로그램은 explicit interface를 갖는 것이다.

explicit interface를 갖으면 컴파일러가 미묘한 문제를 일으키는 오류를 찾아낼 수 있다.

그러나 모듈에 procedure를 담지 못할 수도 있다. 예를 들어 매우 이전 버전의 포트란 라이브러리를 사용하는 경우.

프러시져를 새로이 모듈에 담는 것이 항상 좋은 것은 아니다. 왜냐하면 이전 포트란 라이브러리를 사용하는 프로그램이

존재하기 때문. 그렇다고 두 버전의 프로시져를 유지하기도 힘든 상황.

이럴 때 프로시저를 불러오는 프로그램에서 interface block을 사용하여 explicit interface을 확보할 수 있다.

결론

프로시져를 만들 때는

1) 해당 프로그램에서 한번만 사용할 것같은 프로시저는 내부 프로시저로 만들고

2) 다른 프로그램에서도 사용할 수 있는 것은 모듈에 담고

왠만하면 외부 프로시저는 만들지 않는다.

3) 이전 버전의 포트란 라이브러리 또는 비 포트란(예를 들어 C) 프로시저를 사용하는 경우 interface block을 사용. 이 경우도 메인 프로그램에 interface block을 만들지 말고 module에 interface block을 만들고 메인 프로그램에서 use를 사용하여 module을 사용하는 것이 바람직

'Programming > Fortran' 카테고리의 다른 글

NAMELIST I/O  (0) 2009.01.06
Access to command line arguments  (0) 2009.01.05
Derived data types : database를 읽어 정렬하기  (0) 2009.01.02
배정도 실수로 변수를 초기화 하기  (0) 2008.12.18
저장값의 범위 2  (0) 2008.12.18

+ Recent posts