サポートされるネイティブ数値形式と非ネイティブ数値形式

インテル® Fortran は、次のリトル・エンディアン浮動小数点形式をメモリ上でサポートします:

浮動小数点サイズ

メモリ上の書式

REAL(KIND=4)
COMPLEX(KIND=4)

IEEE* S_floating

REAL(KIND=8)
COMPLEX(KIND=8)

IEEE T_floating

REAL(KIND=16
COMPLEX(KIND=16)

IEEE X_floating

プログラムが、メモリ上の書式とデータサイズが異なる浮動小数点形式を含む書式なしデータファイルの読み書きを行う必要がある場合、その書式なしデータの変換を要求することができます。

各種のコンピュータにおけるデータ格納は、リトル・エンディアンまたはビッグ・エンディアンの格納規則を使用します。格納方法の規則は、一般に、複数のバイトにわたる数値に次のように適用されます:

次の図は、この 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 バイト) のネイティブ・リトル・エンディアン整数と次のリトル・エンディアン独自の浮動小数点形式:

  • REAL (KIND=4) および COMPLEX (KIND=4) の VAX F_float

  • REAL (KIND=8) および COMPLEX (KIND=8) の VAX D_float

  • REAL (KIND=16) および COMPLEX (KIND=16) の IEEE スタイル X_float

FGX

適切な INTEGER サイズ (1 バイト、2 バイト、4 バイト、8 バイト) のネイティブ・リトル・エンディアン整数と次のリトル・エンディアン独自の浮動小数点形式:

  • REAL (KIND=4) および COMPLEX (KIND=4) の VAX F_float

  • REAL (KIND=8) および COMPLEX (KIND=8) の VAX G_float

  • REAL (KIND=16) および COMPLEX (KIND=16) の IEEE スタイル X_float

IBM

適切な INTEGER サイズ (1 バイト、2 バイト、4 バイト、8 バイト) のビッグ・エンディアン整数データと REAL および COMPLEX の単精度数/倍精度数のビッグ・エンディアン IBM 専用 (System\370 とこれに似たシステムで使われているもの) 浮動小数点形式。

LITTLE_ENDIAN

適切な INTEGER サイズ (1 バイト、2 バイト、4 バイト、8 バイト) のネイティブ・リトル・エンディアン整数と次のネイティブ・リトル・エンディアン IEEE 浮動小数点形式:

  • REAL (KIND=4) および COMPLEX (KIND=4) の S_float

  • REAL (KIND=8) および COMPLEX (KIND=8) の T_float

  • REAL (KIND=16) および COMPLEX (KIND=16) の IEEE スタイル X_float

NATIVE

メモリとディスクの間で変換は行われません。これは書式なしファイルにおけるデフォルトです。

VAXD

適切な INTEGER サイズ (1 バイト、2 バイト、4 バイト、8 バイト) のネイティブ・リトル・エンディアン整数と次のリトル・エンディアン VAX 独自の浮動小数点形式:

  • REAL (KIND=4) および COMPLEX (KIND=4) の VAX F_float

  • REAL (KIND=8) および COMPLEX (KIND=8) の VAX D_float

  • REAL (KIND=16) および COMPLEX (KIND=16) のVAX H_float

VAXG

適切な INTEGER サイズ (1 バイト、2 バイト、4 バイト、8 バイト) のネイティブ・リトル・エンディアン整数と次のリトル・エンディアン VAX 独自の浮動小数点形式:

  • REAL (KIND=4) および COMPLEX (KIND=4) の VAX F_float

  • REAL (KIND=8) および COMPLEX (KIND=8) の VAX G_float

  • REAL (KIND=16) および COMPLEX (KIND=16) のVAX H_float

非ネイティブ形式を読み取ると、ディスク上の非ネイティブ形式はメモリ上のネイティブ形式に変換されます。変換後の非ネイティブ値がネイティブ・データ型の範囲を超えている場合、ランタイム・メッセージが表示されます。