インテル® Fortran は、次のリトル・エンディアン浮動小数点形式をメモリ上でサポートします:
浮動小数点サイズ |
メモリ上の書式 |
REAL(KIND=4) |
IEEE* S_floating |
REAL(KIND=8) |
IEEE T_floating |
REAL(KIND=16 |
IEEE X_floating |
プログラムが、メモリ上の書式とデータサイズが異なる浮動小数点形式を含む書式なしデータファイルの読み書きを行う必要がある場合、その書式なしデータの変換を要求することができます。
各種のコンピュータにおけるデータ格納は、リトル・エンディアンまたはビッグ・エンディアンの格納規則を使用します。格納方法の規則は、一般に、複数のバイトにわたる数値に次のように適用されます:
リトル・エンディアンでの格納
最下位ビット (LSB) の値は、最も小さいアドレスのバイトに含まれています。
最上位ビット (MSB) の値は、最も大きいアドレスのバイトに含まれています。
数値のアドレスは、LSB を含むバイトです。それ以降の大きいアドレスのバイトには、より上位のビットが含まれています。
ビッグ・エンディアンでの格納
最下位ビット (LSB) の値は、最も大きいアドレスのバイトに含まれています。
最上位ビット (MSB) の値は、最も小さいアドレスのバイトに含まれています。
数値のアドレスは、MSB を含むバイトです。それ以降の大きいアドレスのバイトには、より下位のビットが含まれています。
次の図は、この 2 つのバイト順方式の違いを示します。
INTEGER 値のリトル・エンディアンとビッグ・エンディアンの格納方法
書式なしデータファイルをビッグ・エンディアンとリトル・エンディアンのコンピュータ間で移動するためには、データを変換する必要があります。
インテル Fortran は、プログラムがいくつかの非ネイティブ浮動小数点形式とビッグ・エンディアンの INTEGER または浮動小数点形式で、書式なしデータ (もともと書式なし I/O 文で書き出されたもの) を読み書きする機能を提供しています。サポートされている非ネイティブ浮動小数点形式には、VAX FORTRAN がサポートしている VAX* リトル・エンディアン浮動小数点形式、Sun Microsystems システムと IBM RISC* System/6000 システムの大部分で使用されている標準 IEEE ビッグ・エンディアン浮動小数点形式、IBM 浮動小数点形式 (IBM の System/370 とこれに似たシステムで使われているもの)、および CRAY* 浮動小数点形式などがあります。
一般に、書式なしデータの変換は書式付きデータの変換よりも高速で、浮動小数点数の精度が失われる可能性も低くなります。
ネイティブ・メモリ形式には、リトル・エンディアン整数とリトル・エンディアンの IEEE 浮動小数点形式、REAL(KIND=4) 宣言と COMPLEX(KIND=4) 宣言の S_floating、REAL(KIND=8) 宣言と COMPLEX(KIND=8) 宣言の T_floating、および REAL(KIND=16) 宣言と COMPLEX(KIND=16) 宣言の IEEE X_floating があります。
次の表は、サポートされている非ネイティブ書式なしファイル形式のキーワードとそのデータ型のリストです:
非ネイティブ数値形式、キーワード、およびサポートされているデータ型
キーワード |
説明 |
BIG_ENDIAN |
適切な INTEGER サイズ (1 バイト、2 バイト、4 バイト、8 バイト) のビッグ・エンディアン整数データと REAL および COMPLEX の拡張単精度数/拡張倍精度数の IEEE 浮動小数点形式。INTEGER (KIND=1) データまたは INTEGER*1 データはリトル・エンディアンとビッグ・エンディアンで同じです。 |
CRAY |
適切な INTEGER サイズ (1 バイト、2 バイト、4 バイト、8 バイト) のビッグ・エンディアン整数データと REAL および COMPLEX の単精度数/倍精度数のビッグ・エンディアン CRAY 独自の浮動小数点形式。 |
FDX |
適切な INTEGER サイズ (1 バイト、2 バイト、4 バイト、8 バイト) のネイティブ・リトル・エンディアン整数と次のリトル・エンディアン独自の浮動小数点形式:
|
FGX |
適切な INTEGER サイズ (1 バイト、2 バイト、4 バイト、8 バイト) のネイティブ・リトル・エンディアン整数と次のリトル・エンディアン独自の浮動小数点形式:
|
IBM |
適切な INTEGER サイズ (1 バイト、2 バイト、4 バイト、8 バイト) のビッグ・エンディアン整数データと REAL および COMPLEX の単精度数/倍精度数のビッグ・エンディアン IBM 専用 (System\370 とこれに似たシステムで使われているもの) 浮動小数点形式。 |
LITTLE_ENDIAN |
適切な INTEGER サイズ (1 バイト、2 バイト、4 バイト、8 バイト) のネイティブ・リトル・エンディアン整数と次のネイティブ・リトル・エンディアン IEEE 浮動小数点形式:
|
NATIVE |
メモリとディスクの間で変換は行われません。これは書式なしファイルにおけるデフォルトです。 |
VAXD |
適切な INTEGER サイズ (1 バイト、2 バイト、4 バイト、8 バイト) のネイティブ・リトル・エンディアン整数と次のリトル・エンディアン VAX 独自の浮動小数点形式:
|
VAXG |
適切な INTEGER サイズ (1 バイト、2 バイト、4 バイト、8 バイト) のネイティブ・リトル・エンディアン整数と次のリトル・エンディアン VAX 独自の浮動小数点形式:
|
非ネイティブ形式を読み取ると、ディスク上の非ネイティブ形式はメモリ上のネイティブ形式に変換されます。変換後の非ネイティブ値がネイティブ・データ型の範囲を超えている場合、ランタイム・メッセージが表示されます。