BOZ 리터럴 상수
BOZ 리터럴 상수 (BOZ literal constants)
포트란의 비(非)십진 정수 상수, 즉 BOZ 리터럴 상수의 문법과 사용 가능한 위치, 그리고 gfortran만의 확장을 설명해요.
본문
십진 상수 외에도 포트란은 이진(b), 팔진(o), 십육진(z) 정수 상수를 지원해요. 문법은 접두어 따옴표 숫자들 따옴표 형태예요. 접두어는 b, o, z 중 하나이고, 따옴표는 ' 또는 " 중 하나이며, 숫자는 이진이면 0 또는 1, 팔진이면 07, 십육진이면 0F 사이예요. (예: b'01011101'.)
Fortran 95까지는 BOZ 리터럴 상수가 DATA 문에서 정수 변수를 초기화할 때에만 허용됐어요. Fortran 2003부터는 BOZ 리터럴 상수를 REAL, DBLE, INT, CMPLX 내장 함수의 실인자로도 쓸 수 있게 됐어요.
BOZ 리터럴 상수는 그저 비트의 문자열이며, 숫자 타입으로 변환하는 동안 필요에 따라 패딩되거나 잘려요. 포트란 표준은 부호 비트(sign bit)의 처리가 프로세서 의존적이라고 명시하는데, gfortran은 부호 비트를 사용자가 기대하는 대로 해석해요.
폐기 예정인 확장으로서, GNU Fortran은 십육진 BOZ 리터럴 상수를 X 접두어로도 지정할 수 있게 해요. 또한 문자열에 접미사를 붙여서도 BOZ 리터럴 상수를 지정할 수 있는데, 예를 들어 Z'ABC'와 'ABC'X는 서로 동등해요. 추가로, 확장으로서 BOZ 리터럴은 DATA 문과 포트란 표준에 나열된 내장 함수 밖의 일부 문맥에서도 허용돼요. 이 확장을 켜려면 -fallow-invalid-boz를 쓰면 돼요.
정리하면 이래요. 기본 표준 위치(DATA, 일부 내장 함수)에서는 추가 플래그 없이 쓸 수 있고, 그 밖의 위치에서 쓰려면 -fallow-invalid-boz가 필요해요. X 접두어나 'ABC'X 같은 표기는 부득이한 경우 빼고는 피하는 게 좋아요.
더 알아보기
- IAND·IOR 등 비트별 내장 함수
- -fallow-invalid-boz 옵션
- 정수·실수 타입 변환 내장 함수