Oracle® Solaris Studio 12.4: Fortran ユーザーズガイド

印刷ビューの終了

更新: 2014 年 12 月
 
 

3.4.122 –xfilebyteorder=options

リトルエンディアン式プラットフォームとビッグエンディアン式プラットフォーム間のファイルの共有をサポートします。

このフラグは、書式なし入出力ファイル内のデータのバイト順序とバイト列を特定します。options には、次のフラグを任意に組み合わせたものを指定しますが、少なくとも 1 つのフラグを指定する必要があります。

littlemax_align:spec

bigmax_align:spec

native:spec

max_align は、ターゲットプラットフォームの最大バイト列を宣言します。指定できる値は 1、2、4、8、および 16 です。境界整列は、C 言語の構造体との互換性を維持するため、プラットフォーム依存のバイト列を使用する Fortran VAX 構造体と Fortran 派生型に適用されます。

最大バイト列が max_align のプラットフォームでは、little は「リトルエンディアン」ファイルを表します。たとえば little4 は 32 ビット x86 ファイルを表すのに対し、little16 は 64 ビット x86 ファイルを表します。

big は、最大バイト列が max_align の「ビッグエンディアン」ファイルを指定します。たとえば big8 が 32 ビット SPARC ファイルを表すのに対し、 big16 は 64 ビット SPARC ファイルを表します。

native は、コンパイルしているプロセッサプラットフォームが使用しているのと同じバイト順序、バイト列の「ネイティブ」ファイルを表します。次は、「ネイティブ」とみなされます。

プラットフォーム
「ネイティブ」に相当するフラグ:
32 ビット SPARC
big8
64 ビット SPARC
big16
32 ビット x86
little4
64 ビット x86
little16

spec には、コンマ区切りのリストで次を指定します。

%all

unit

filename

%all は、SCRATCH として開かれるか、-xfilebyteorder フラグで明示的に指定する以外のすべてのファイルと、そのほかの論理ユニットを表します。%all は、1 回だけ指定できます。

unit は、プログラムによって開かれた特定の Fortran ユニット番号を表します。

filename は、プログラムによって開かれた特定の Fortran ファイル名を表します。

3.4.122.1 例:

-xfilebyteorder=little4:1,2,afile.in,big8:9,bfile.out,12
-xfilebyteorder=little8:%all,big16:20

3.4.122.2 備考:

このオプションは、STATUS="SCRATCH" を指定して開かれたファイルには適用されません。それらのファイルに対する入出力操作は、常にネイティブプロセッサのバイト順序とバイト列が使用されます。

コンパイラコマンド行に -xfilebyteorder が指定されていない場合の最初のデフォルトは、-xfilebyteorder=native:%all です。

このオプションには、ファイル名およびユニット番号をそれぞれ 1 回だけ宣言できます。

コマンド行に -xfilebyteorder を含める場合は、little、big、または native の少なくとも 1 つの指定と組み合わせる必要があります。

このフラグで明示的に宣言されていないファイルは、ネイティブファイルとみなされます。たとえば、-xfilebyteorder=little4:zork.out を付けて zork.out をコンパイルした場合、このファイルは、4 バイトの最大データ整列規則を持つリトルエンディアンの 32 ビット x86 ファイルと宣言され、ほかのすべてのファイルはネイティブファイルになります。

ファイルに指定されたバイト順序はネイティブプロセッサと同じであるが、バイト列が異なる場合は、バイトスワップが行われないにしても、適切なパディングが使用されます。たとえば -m64 を付けた、64 ビット x86 プラットフォーム向けのコンパイルで、-xfilebyteorder=little4:filename が指定された場合などがそうです。

ビッグエンディアンとリトルエンディアン式プラットフォーム間で共有されるデータレコード内で宣言する型は、同じサイズである必要があります。たとえば、-xtypemap=integer:64,real:64,double:128 を付けてコンパイルした SPARC 実行可能ファイルの生成するファイルを、-xtypemap=integer:64,real:64,double:64 を付けてコンパイルした x86 実行可能ファイルが読み取ることはできません。これは、両者のデフォルトの倍精度データ型のサイズが異なるためです。(ただし、Solaris Studio 12 Update 1 のリリース以降では、double:128 は x64 プロセッサで受け入れられます)。

VAX 構造体の成分の整列を変更するオプション (-vax=struct_align など) または構造型の成分の整列を変更するオプション (-aligncommon-dalign など) をあるプラットフォームで使用する場合、同じ整列オプションを、その整列オプションの影響を受ける内容を持つ同じ書式なしデータファイルを共有するほかのプラットフォームでも使用する必要があります。

ネイティブ以外のファイルとして指定されたファイルに対して、UNION/MAP データオブジェクト全体を使った入出力操作を行うと、実行時入出力エラーになります。ネイティブ以外のファイルに対しては、MAP の個別メンバーを使った入出力操作のみ行うことができます。UNION/MAP を含む VAX レコード全体を使った入出力操作は行えません。