내장 프로시저 소개
내장 프로시저 소개 (Introduction to Intrinsics)
내장 프로시저(intrinsic procedures)는 Fortran 프로그램에서 바로 사용할 수 있는, 컴파일러가 미리 정의해 둔 함수와 서브루틴이에요. 이 글에서는 GNU Fortran이 제공하는 내장 프로시저가 어떤 기준으로 정의되는지, 종류 매개변수(kind)를 어떻게 표기하는지 살펴볼게요.
본문
GNU Fortran의 내장 프로시저 구성
GNU Fortran이 제공하는 내장 프로시저에는 두 종류가 있어요. 하나는 Fortran 95와 그 이후에 지원되는 표준에서 요구하는 프로시저들이고, 다른 하나는 G77과의 하위 호환성을 위한 프로시저들이에요. 만약 여기 설명과 Fortran 표준의 설명 사이에 충돌이 있다면, 그 충돌은 의도된 것이 아니며 표준이 권위 있는 기준이 되어야 해요.
KIND 종류 매개변수 표기
Fortran 95 표준에서 KIND 종류 매개변수의 나열(enumeration)은 프로세서가 정의하도록 되어 있어요. GNU Fortran은 기본 정수 타입을 INTEGER(KIND=4)로, 기본 실수 타입을 REAL(KIND=4)로 정의해요. 그리고 표준은 이 두 데이터 타입이 더 높은 정밀도를 가진 또 다른 종류를 가져야 한다고 규정해요.
gfortran이 지원하는 일반적인 대상 아키텍처에서는 이 추가 종류 매개변수가 KIND=8이에요. 그래서 REAL(KIND=8)과 DOUBLE PRECISION은 서로 같아요.
일반적인(generic) 내장 프로시저의 설명에서는 종류 매개변수를 KIND=*로 표기해요. 특정 이름(specific name)에 대한 설명에서는 종류 매개변수를 명시적으로 주는데, 예를 들면 REAL(KIND=4)나 REAL(KIND=8)처럼요. 마지막으로 간결함을 위해 선택적인 KIND= 구문은 생략되기도 해요.
선택적 인자 표기
많은 내장 프로시저는 하나 이상의 선택적(optional) 인자를 가져요. 이 문서는 Fortran 95 표준에서 사용하는 관례를 따라서, 그런 인자를 대괄호(square brackets)로 표기해요.
-std= 옵션
GNU Fortran은 -std= 명령행 옵션을 제공하는데, 이 옵션으로 내장 프로시저의 집합을 특정 표준으로 제한할 수 있어요. 기본적으로 gfortran은 -std=gnu 옵션을 설정하므로, 여기서 설명하는 모든 내장 프로시저가 수용돼요.
여기에는 한 가지 주의할 점이 있어요. 일부 내장 프로시저에 대해 g77은 함수와 서브루틴을 모두 구현했어요. gfortran은 g77과의 하위 호환을 위해 두 형태를 모두 구현했는데, 이 함수와 서브루틴은 하나의 서브프로그램 안에서 섞어 쓸 수 없어요. 이후 설명에서는 각 내장 프로시저에 적용되는 표준이 따로 명시돼요.
더 알아보기
- 내장 프로시저의 전체 목록은 Intrinsic Procedures 문서에서 확인할 수 있어요.
- 내장 모듈 전체 목록은 Intrinsic Modules 문서에서 확인할 수 있어요.
- 종류 매개변수에 대한 자세한 내용은 KIND Type Parameters 문서를 참고해 보세요.