Fortran 95 지원 현황

Fortran 95 지원 현황

GNU Fortran이 Fortran 95 표준의 어떤 부분을 완전히 지원하지 않는지, 그리고 그때 어떤 대안을 쓸 수 있는지를 짚어주는 짧은 문서예요. 대부분의 기능은 지원하지만, 가변 길이 문자열과 조건부 컴파일 두 가지는 표준 규격과 직접 걸리지 않으니 이 부분만 미리 알아두면 좋아요.

출처: Fortran 95 status (The GNU Fortran Compiler)

본문

Fortran 95 표준의 Part 2(ISO/IEC 1539-2:2000) 는 가변 길이 문자열(varying length character strings)을 규정하고 있어요. 그런데 GNU Fortran은 현재 이 문자열을 직접 지원하지 않아요. 대신 GNU Fortran에서 함께 쓸 수 있는 Fortran 구현체가 두 가지 있는데, 하나는 이곳에서 찾을 수 있어요.

ISO_VARYING_STRING의 기능 중 일부는 Fortran 2003의 지연 길이(deferred-length) 문자 문자열이 지원하므로, 이걸 대체 수단으로 생각하면 돼요. 구체적으로는 character(len=:) 타입의 allocatable 변수나 포인터가 바로 그 역할을 해요.

Fortran 95 표준의 Part 3(ISO/IEC 1539-3:1998) 은 조건부 컴파일(Conditional Compilation)을 정의하는데, 이건 널리 쓰이지도 않고 GNU Fortran 컴파일러가 직접 지원하지도 않아요. 이런 파일을 전처리하려면 coco라는 프로그램을 사용할 수 있어요.

더 알아보기

  • 가변 길이 문자열의 표준적 대안인 지연 길이 문자열은 Fortran 2003 이후에 추가된 기능이에요. character(len=:), allocatable을 함께 기억해 두세요.
  • 조건부 컴파일이 꼭 필요하다면 GNU Fortran의 전처리 단계나 coco 같은 외부 도구를 붙여 쓰는 쪽이 현실적이에요.
  • GNU Fortran은 Fortran 95 표준의 핵심 규격(Part 1, ISO/IEC 1539-1:1997)을 거의 완전히 지원하므로, 실제로 신경 쓸 지점은 이 문서에서 다룬 두 가지(가변 길이 문자열, 조건부 컴파일) 정도로 좁혀져요.
  • 실제로 ISO_VARYING_STRING 스타일의 가변 문자열이 필요하다면, 외부 구현체를 붙이기 전에 지연 길이 character(len=:)로 충분한지 먼저 따져 보는 게 좋아요.