Sun Studio 12: Fortran ユーザーズガイド

4.2 データ型

ここでは、Fortran 95 データ型の特徴と拡張機能について説明します。

4.2.1 ブール (Boolean) 型

f95 では、ブール型の定数と式をサポートしています。ただし、ブール型の変数、配列、文はサポートしていません。

4.2.1.1 ブール型に関する規則

4.2.1.2 ブール型定数の代替書式

f95 では、ブール型定数 (8 進、16 進、ホレリス) を、次のような書式 (2 進ではありません) で使用することができます。ただし変数はブール型として宣言できません。標準の Fortran では、このような書式は許されていません。

8 進

書式は ddddddB です。d は任意の 8 進数です。

入出力の書式指定では、B という文字は 2 進数であることを示しますが、それ以外の場合は 8 進数であることを表します。

16 進

d が任意の 16 進の数字である X’ddd または X"ddd" の書式です。

ホレリス

ホレリスデータには、次の書式を使用できます。

nH

’H

""H

nL

’L

""L

nR

’R

""R

前述の「…」は文字列を表し、n は文字数を表します。

例: 8 進と 16 進の定数の表現例を示します。

ブール型定数 

1 ワード 32 ビットでの内部の 8 進数 

0B

00000000000

77740B

00000077740

X"ABE"

00000005276

X"-340"

37777776300

X’1 2 3’

00000000443

X’FFFFFFFFFFFFFFFF’

37777777777

例: 代入文での 8 進と 16 進の使用例を示します。


i = 1357B
j = X"28FF"
k = X’-5A’

算術式の中で 8 進数または 16 進数の定数を使用すると、結果が未定義になることがあります。 ただし、構文エラーにはなりません。

4.2.1.3 別の場所におけるブール型定数の使用

f95 では、DATA 文以外の場所で BOZ 定数を使用することができます。

Bbbb

Oooo

Zzzz

B"bbb"

O"ooo"

Z"zzz"

このような BOZ 定数が実数変数に代入されている場合には、型は変換されません。

標準の Fortran では、BOZ 定数は DATA 文でのみ使用できます。

4.2.2 数値データ型のサイズの略記法

f95 では、宣言文、関数文、IMPLICIT 文において、次のような非標準の書式で型を宣言することができます。1 列目の形式は一般に使用されていますが、非標準の Fortran 95 です。2 列目の種別番号はベンダーにより変わります。

表 4–2 数値データ型のサイズの表記法

非標準 

宣言子 

短縮書式 

意味 

INTEGER*1

INTEGER(KIND=1)

INTEGER(1)

1 バイトの符号付き整数 

INTEGER*2

INTEGER(KIND=2)

INTEGER(2)

2 バイトの符号付き整数 

INTEGER*4

INTEGER(KIND=4)

INTEGER(4)

4 バイトの符号付き整数 

LOGICAL*1

LOGICAL(KIND=1)

LOGICAL(1)

1 バイト論理型 

LOGICAL*2

LOGICAL(KIND=2)

LOGICAL(2)

2 バイト論理型 

LOGICAL*4

LOGICAL(KIND=4)

LOGICAL(4)

4 バイト論理型 

REAL*4

REAL(KIND=4)

REAL(4)

IEEE の単精度浮動小数点数 (4 バイト) 

REAL*8

REAL(KIND=8)

REAL(8)

IEEE の倍精度浮動小数点数 (8 バイト) 

REAL*16

REAL(KIND=16)

REAL(16)

IEEE の 4 倍精度浮動小数点数 (16 バイト) 

COMPLEX*8

COMPLEX(KIND=4)

COMPLEX(4)

単精度複素数 (各部に 4 バイト) 

COMPLEX*16

COMPLEX(KIND=8)

COMPLEX(8)

倍精度複素数 (各部に 8 バイト) 

COMPLEX*32

COMPLEX(KIND=16)

COMPLEX(16)

4 倍精度複素数 (各部に 16 バイト) 

4.2.3 データ型のサイズおよび整列

記憶領域および整列は常にバイト単位で表されます。シングルバイトに収まる値は、バイト整列です。

データ型のサイズおよび整列は、コンパイラのオプションとプラットフォーム、および変数の宣言方法に依存します。COMMON ブロック内のデフォルトの最大の整列は、4 バイトの境界整列です。

デフォルトのデータ整列および記憶領域の割り当ては、-aligncommon -f-dalign-dbl_align_all-xmemalign、および -xtypemap などの特別なオプションを指定してコンパイルすることにより、変更できます。このマニュアルは、これらのオプションが有効でないものとして記述されています。

いくつかプラットフォームにおける特殊ケースのデータ型および整列については、『Fortran プログラミングガイド』に追加の説明があります。

デフォルトのサイズおよび整列を次の表にまとめます (データ型のその他の点およびオプションは考慮していません)。

表 4–3 デフォルトのデータサイズおよび整列 (バイト)

Fortran 95 のデータ型 

サイズ 

デフォルトの整列 

COMMON 内の整列 

BYTE X

CHARACTER X

CHARACTER*n X

COMPLEX X

COMPLEX*8 X

DOUBLE COMPLEX X

COMPLEX*16 X

COMPLEX*32 X

16 

16 

32 

8/16 

DOUBLE PRECISION X

REAL X

REAL*4 X

REAL*8 X

REAL*16 X

16 

8/16 

INTEGER X

INTEGER*2 X

INTEGER*4 X

INTEGER*8 X

LOGICAL X

LOGICAL*1 X

LOGICAL*2 X

LOGICAL*4 X

LOGICAL*8 X

次の点に注意してください。

オプション -f または -dalign は、8、16、または 32 バイトのデータすべてを、強制的に 8 バイト境界で整列させます。オプション -dbl_align_all の場合は、すべてのデータが 8 バイト境界で整列します。これらのオプションを使用するプログラムには、移植性がない場合があります。