インテル® Fortran コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス

環境変数 F_UFMTENDIAN を使用する方法

リトルエンディアン - ビッグエンディアンの変換機能は、Fortran 書式なし入力/出力の演算のためのものです。この機能は、リトルエンディアンおよびビッグエンディアン・データ編成を持つファイルの開発と処理を有効にします。

F_U7FMTENDIAN 環境変数は、プログラムの開始時に 1 度だけ処理されます。特定のユニットまたはすべてのユニットに対してこの環境変数が指定した内容は、プログラムの終了時まで継続されます。

F_UFMTENDIAN 環境変数を設定して、変換に使用されるユニット数を指定します。その後、このユニット数を使用する READ/WRITE 文が対応する変換を実行します。他の READ/WRITE 文は、通常どおり動作します。

F_UFMTENDIAN の一般構文

一般的に、変数はセミコロンで分割される 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

変換されたデータは、基本型または基本型の配列です。派生データ型は無効です。

リトルエンディアンからビッグエンディアンへの変換中に、エラーメッセージが表示される場合があります。これらのエラーは、すべて致命的なエラーです。

シェル内の変数設定のコマンドライン (Linux*):

Sh: export F_UFMTENDIAN=MODE;EXCEPTION

セミコロンがある場合は、環境変数値を引用符で囲む必要があります。

また、環境変数には次の構文があります。

F_UFMTENDIAN=u[,u] . . .

  1. F_UFMTENDIAN=big

    すべての入力/出力操作で、READ ではビッグエンディアンからリトルエンディアンへの変換、WRITE ではリトルエンディアンからビッグエンディアンへの変換を実行します。

  2. F_UFMTENDIAN="little;big:10,20"

    または F_UFMTENDIAN=big:10,20

    または F_UFMTENDIAN=10,20

    入力/出力操作は、ユニット番号 10 から 20 に対してビッグエンディアンからリトルエンディアンへの変換を実行します。

  3. F_UFMTENDIAN="big;little:8"

    上記の変換操作は、ユニット番号 8 に対して行われません。入力/出力操作は、その他のすべてのユニットに対してビッグエンディアンからリトルエンディアンへの変換を実行します。

  4. F_UFMTENDIAN=10-20

    入力/出力操作は、ユニット 10、11、12 ... 19、20 に対してビッグエンディアンからリトルエンディアンへの変換を実行します。

  5. F_UFMTENDIAN=10,100 を設定して、次のプログラムを実行したとします。

    integer*4   cc4
    integer*8   cc8
    integer*4   c4
    integer*8   c8
    c4 = 456
    c8 = 789  
    
    ! リトルエンディアン表現のデータを準備
    
    open(11,file='lit.tmp',form='unformatted')
    write(11) c8
    write(11) c4
    close(11)
    
    ! ビッグエンディアン表現のデータを準備
    
    open(10,file='big.tmp',form='unformatted')
    write(10) c8
    write(10) c4
    close(10)
    
    ! リトルエンディアン・マシンでビッグエンディアン・データを読み取り、
    ! 操作を行う
    
    open(100,file='big.tmp',form='unformatted')
    read(100) cc8
    read(100) cc4
    
    ! 読み取ったデータの任意の操作
    
    ! . . .
    close(100)
    stop
    end

    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

    これらのファイルでは、バイトの順番が異なることが分かります。