データ・オプション

データ・オプションは、Fortran データがコンパイル、最適化、およびコードの生成によって扱われる際の規則を指定します。

次のトピックも参照してください。
互換性オプション

言語オプション

データ・オプションの説明

-align none

デフォルト: 構造体のみにパディングを追加。(共通ブロックにはパディングは追加されません。)

代替構文: -noalign

共通ブロックまたは構造体にパディング・バイトを追加しないようコンパイラに命令します。これは -noalign と同じです。

-align [no]commons または -align [no]dcommons

デフォルト: -align nocommons または -align nodcommons

自然境界上にあるすべての共通ブロックに含まれたデータ項目を、デフォルトのバイト境界ではなく、最大 4 バイト (-align commons) または最大 8 バイト (-align dcommons) まで、パディング・バイトを追加してアライメントします。

コマンドラインに -stand オプションが含まれている場合、コンパイラは -align dcommons を無視します。

-align recnbyte

デフォルト: -align rec16byte (これは、-Zp16 または -align records と同じです。)

代替構文: -Zp{1|2|4|8|16}

構造体に、1、2、4、8、または16 バイトの境界整列条件を指定します。

レコードのフィールドおよび派生型のコンポーネントを、指定された境界 (n には 1、2、4、8、または 16 を指定できます) またはそれらが自然にアライメントされる境界のうち、サイズがより小さくなる境界でアライメントします。

-align recnbyte の指定によって、共通ブロックが自然にアライメントされるか、パックされるかを制御することはできません。

このオプションは、次の操作を行います。

同等のオプション

-Zp  

-align records または -align rec16byte

-Zp1

-align records または -align rec1byte

-Zp2

-align rec2byte

-Zp4

-align rec4byte  

-Zp8

-align rec8byte

-Zp16

-align rec16byte または -align records

/align:none

-noalign

-align all

次のすべてのオプションを指定します。 align nocommons、-align dcommons、-align records、-align nosequence

-align [no]records

デフォルト: -align records

派生型のコンポーネントおよびレコードのフィールドを最大 8 バイト (派生型に SEQUENCE 文を指定した場合) まで、パディングを追加して自然境界上にアライメントするように指定します。また、-align sequence も参照してください。

-align norecords オプションは、最大 8 バイトの自然境界上ではなく、パディングを追加せずにコンポーネントおよびフィールドを任意のバイト境界上にアライメントするように指定します。

-align [no]sequence

デフォルト: -align nosequence

SEQUENCE 属性が指定されている派生型のコンポーネントが、現在使用しているアライメント規則に従うことをコンパイラに伝えます。デフォルトのアライメント規則は、不整列のコンポーネントを自然境界上にアライメントします。

デフォルト値の -align nosequence を指定した場合、現在使用しているアライメント規則に関わらず、SEQUENCE 属性が指定されている派生型のコンポーネントをパックします。

コマンドラインに -stand オプションが含まれている場合、コンパイラは -align sequence を無視します。

-assume [no]byterecl

デフォルト: -assume nobyterecl

書式なしファイルに対するバイトユニットの使用を指定します。このオプションは、次の操作を行います。

デフォルト値の -assume nobyterecl は、書式なしファイルの RECL 値が 4 バイト (ロングワード) 単位であることを指定します。

-assume [no]dummy_aliases

デフォルト: -assume nodummy_aliases

代替構文: -common_args

このオプションを使用した場合、コンパイラはプロシージャへの仮引数が他の仮引数と、または参照結合、ホスト結合、または共通ブロックを使用して共有した変数とメモリ位置を共有していることを仮定します。
-assume dummy_aliases を指定した場合、呼び出されるサブプログラムのみコンパイルする必要があります。
仮エイリアシングに関連したプログラム・セマンティクスは、標準 Fortran に完全に従っていないため、パフォーマンスが低下します。したがって、デフォルト値の -assume nodummy_aliases を指定することで、プログラムのランタイム・パフォーマンスが向上します。しかし、仮エイリアシングに依存するプログラムで -assume dummy_aliases を指定しない場合、プログラムはランタイム時に予期せぬ動作を引き起こします。このようなプログラムの結果は、行われた最適化の内容に依存します。場合によっては、通常の結果が生じることもありますが、問題を引き起こすエイリアスが関わる演算に使われた値が変わったために、結果が変わる場合もあります。

仮エイリアシングの仮定に関する詳細については、『ユーザーズ・ガイド Vol II』 の「アプリケーションの最適化」を参照してください。

-assume [no]protect_constants

デフォルト: -assume protect_constants

このオプションは、定数が読み取り専用であることを指定します。

-assume noprotect_constants オプションは、定数実引数のコピーを渡すようコンパイラに命令します。その結果、標準 Fortran では行うことができないコピーの変更を、呼び出されたルーチンで変更することができます。呼び出しルーチンは、定数を変更しません。

デフォルト値の -assume protect_constants を指定した場合、定数実引数を渡します。この値を変更した場合、エラーが発生する可能性があります

-auto_scalar、-auto、および -save

デフォルト: -auto_scalar (-recursive または -openmp が指定されていない場合のデフォルトです。指定されている場合、デフォルトは -auto です)

-auto の代替構文: -automatic および -nosave

-save の代替構文: -noauto および -noautomatic

デフォルトのローカル記憶領域が不要な場合、変数が格納されている場所を指定します。

-auto_scalar オプションは、INTEGER、REAL、COMPLEX、および LOGICAL 組込み型のスカラ変数をスタックに割り当てます。

-auto_scalar は、EQUIVALENCE 文または SAVE 文に含まれている変数、または共通ブロックに含まれている変数には作用しません。-auto_scalar を指定すると、プログラムのパフォーマンスが向上することがあります。 ただし、プログラムが、最後にルーチンが呼び出されたときと同じ値を持つ変数に依存している場合は、プログラムが正しく機能しないことがあります。複数のサブルーチン呼び出しにわたってその値を保持する必要のある変数は、SAVE 文内になければなりません。

-auto は、すべての変数をローカル・スタティック・ストレージではなく、スタックに割り当てます。このオプションは、SAVE 属性が指定されている変数には影響しません。また、EQUIVALENCE  文や共通ブロックに含まれません。

-save オプションは、再帰ルーチン内のローカル変数を除き、すべての変数を保存します (静的割り当て)。

-auto を指定すると、プログラムのパフォーマンスが向上することがあります。 ただし、プログラムが、最後にルーチンが呼び出されたときと同じ値を持つ変数に依存している場合は、プログラムが正しく機能しないことがあります。

-double_size {64|128}

デフォルト: -double_size 64

DOUBLE PRECISION 型および DOUBLE COMPLEX 型の宣言、定数、関数、および組込み関数を定義します。

-double_size 64 オプションは、DOUBLE PRECISION 型の宣言、定数、関数、および組込み関数を REAL*8 として定義し、DOUBLE COMPLEX 型の宣言、関数、および組込み関数を COMPLEX*16 として定義します。

-double_size 128 オプションは、DOUBLE PRECISION 型の宣言、定数、関数、および組込み関数を REAL*16 として定義し、DOUBLE COMPLEX 型の宣言、関数、および組込み関数を COMPLEX*32 として定義します (Fortran 90/95 用)。

-dyncom "blk1,blk2,..."

ランタイムで指定された COMMON ブロックの動的割り当てを有効にします。

例: 共通 ブロック A、B、および、C には次の構文を使用します:

-dyncom "a,b,c"

-integer_size {16|32|64}

デフォルト: -integer_size 32

代替構文: -i{2|4|8} (2、4、および 8 は、INTEGER および LOGICAL 変数の KIND を表します)
INTEGER 型または LOGICAL 型の宣言、定数、関数、および組込み関数のデフォルト・サイズ (ビット) を指定します。n には 16、32、または 64 を指定することができます。

-pg

デフォルト: オフ

gprof(1) を使用して、関数のプロファイリングができるようにコンパイルとリンクを行います。

これは -p または -qp を指定するのと同じです。

-real_size {32|64|128}

デフォルト: -real_size 32

代替構文: -r{8|16} (8 および 16 は、実数変数の KIND を表します)

REAL 型または COMPLEX 型の宣言、定数、関数、および組込み関数のデフォルト・サイズ (ビット) を指定します。n には 32、64、または 128 を指定することができます。

-safe_cray_ptr

デフォルト: オフ (クレイポインタが他の変数のエイリアシングを行わない場合)

クレイポインタが他の変数のエイリアシングを行わない (つまり、他の変数との間で共有するメモリを指定しない) ことを仮定します。

次の例について考えてみます。

pointer (pb, b)

pb = getstorage()

do i = 1, n

  b(i) = a(i) + 1

enddo

デフォルトでは、コンパイラは ba がエイリアスされていると仮定します。このような仮定を回避するには、-safe_cray_ptr オプションを指定します。コンパイラは b(i)a(i) がお互いに独立しているとして処理します。

しかし、変数をクレイポインタでエイリアスする場合、-safe_cray_ptr オプションを使用すると、正確な結果が得られません。下記の例のコードでは、-safe_cray_ptr オプションを使用しないでください。

pointer (pb, b)

pb = loc(a(2))

   do i=1, n

      b(i) = a(i) +1

   enddo

-zero[-]

デフォルト: オフ (-zero-)

INTEGER、REAL、COMPLEX、または LOGICAL 組込み型のローカルスカラ変数で、保存はされているがまだ初期化されていない変数を、すべてゼロに初期化します。

Use -save on the command line to make all local variables specifically marked as SAVE.