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