インテル® Fortran コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス
リトルエンディアン - ビッグエンディアンの変換機能は、Fortran 書式なし入力/出力の演算のためのものです。この機能は、リトルエンディアンおよびビッグエンディアン・データ編成を持つファイルの開発と処理を有効にします。
F_U7FMTENDIAN 環境変数は、プログラムの開始時に 1 度だけ処理されます。特定のユニットまたはすべてのユニットに対してこの環境変数が指定した内容は、プログラムの終了時まで継続されます。
F_UFMTENDIAN 環境変数を設定して、変換に使用されるユニット数を指定します。その後、このユニット数を使用する READ/WRITE 文が対応する変換を実行します。他の READ/WRITE 文は、通常どおり動作します。
一般的に、変数はセミコロンで分割される 2 つの部分で構成されます。F_UFMTENDIAN 値の中では、スペースは使用できません。
F_UFMTENDIAN=MODE | [MODE;] EXCEPTION
説明:
MODE = big | little
EXCEPTION = big:ULIST | little:ULIST | ULIST
ULIST = U | ULIST,U
U = decimal | decimal -decimal
MODE は、現在のデータ形式を定義し、ファイルで表現されます。省略できます。
キーワードの little は、データがリトルエンディアン形式であり、変換されないことを意味します。これはデフォルトです。
キーワードの big は、データがビッグエンディアン形式であり、変換されることを意味します。
EXCEPTION は、MODE.EXCEPTION キーワード (little または big) の例外リストの定義に使用し、EXCEPTION リストからのユニットを結合するファイル内のデータ形式を定義します。この値は、リストされたユニットの MODE 値を無効にします。
EXCEPTION キーワードとコロンは省略できます。キーワードが省略されたときのデフォルトは、big です。
各リストメンバーの U とは、シンプルユニット番号またはユニット番号です。リストメンバーの上限は、64 です。
decimal は、負でない小数で 232 よりも小さな値です。
変換されたデータは、基本型または基本型の配列です。派生データ型は無効です。
リトルエンディアンからビッグエンディアンへの変換中に、エラーメッセージが表示される場合があります。これらのエラーは、すべて致命的なエラーです。
シェル内の変数設定のコマンドライン (Linux*):
Sh: export F_UFMTENDIAN=MODE;EXCEPTION
セミコロンがある場合は、環境変数値を引用符で囲む必要があります。
また、環境変数には次の構文があります。
F_UFMTENDIAN=u[,u] . . .
F_UFMTENDIAN=big
すべての入力/出力操作で、READ ではビッグエンディアンからリトルエンディアンへの変換、WRITE ではリトルエンディアンからビッグエンディアンへの変換を実行します。
F_UFMTENDIAN="little;big:10,20"
または F_UFMTENDIAN=big:10,20
または F_UFMTENDIAN=10,20
入力/出力操作は、ユニット番号 10 から 20 に対してビッグエンディアンからリトルエンディアンへの変換を実行します。
F_UFMTENDIAN="big;little:8"
上記の変換操作は、ユニット番号 8 に対して行われません。入力/出力操作は、その他のすべてのユニットに対してビッグエンディアンからリトルエンディアンへの変換を実行します。
F_UFMTENDIAN=10-20
入力/出力操作は、ユニット 10、11、12 ... 19、20 に対してビッグエンディアンからリトルエンディアンへの変換を実行します。
F_UFMTENDIAN=10,100 を設定して、次のプログラムを実行したとします。
|
lit.tmp ファイルと big.tmp ファイルを od ユーティリティーで比較します。
> od -t x4 lit.tmp
0000000 00000008 00000315 00000000 00000008
0000020 00000004 000001c8 00000004
0000034
> od -t x4 big.tmp
0000000 08000000 00000000 15030000 08000000
0000020 04000000 c8010000 04000000
0000034
これらのファイルでは、バイトの順番が異なることが分かります。