データ・オプションは、Fortran データがコンパイル、最適化、およびコードの生成によって扱われる際の規則を指定します。
次のトピックも参照してください。
互換性オプション
言語オプション
デフォルト: 構造体のみにパディングを追加。(共通ブロックにはパディングは追加されません。)
代替構文: -noalign
共通ブロックまたは構造体にパディング・バイトを追加しないようコンパイラに命令します。これは -noalign と同じです。
デフォルト: -align nocommons または -align nodcommons
自然境界上にあるすべての共通ブロックに含まれたデータ項目を、デフォルトのバイト境界ではなく、最大 4 バイト (-align commons) または最大 8 バイト (-align dcommons) まで、パディング・バイトを追加してアライメントします。
コマンドラインに -stand オプションが含まれている場合、コンパイラは -align dcommons を無視します。
デフォルト: -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 records
派生型のコンポーネントおよびレコードのフィールドを最大 8 バイト (派生型に SEQUENCE 文を指定した場合) まで、パディングを追加して自然境界上にアライメントするように指定します。また、-align sequence も参照してください。
-align norecords オプションは、最大 8 バイトの自然境界上ではなく、パディングを追加せずにコンポーネントおよびフィールドを任意のバイト境界上にアライメントするように指定します。
デフォルト: -align nosequence
SEQUENCE 属性が指定されている派生型のコンポーネントが、現在使用しているアライメント規則に従うことをコンパイラに伝えます。デフォルトのアライメント規則は、不整列のコンポーネントを自然境界上にアライメントします。
デフォルト値の -align nosequence を指定した場合、現在使用しているアライメント規則に関わらず、SEQUENCE 属性が指定されている派生型のコンポーネントをパックします。
コマンドラインに -stand オプションが含まれている場合、コンパイラは -align sequence を無視します。
デフォルト: -assume nobyterecl
書式なしファイルに対するバイトユニットの使用を指定します。このオプションは、次の操作を行います。
明示的な OPEN 文の RECL 指定子の値がバイト単位であることを指定します。
出力リストで INQUIRE によって返されたレコード長の値を、強制的にバイト単位にします。
デフォルト値の -assume nobyterecl は、書式なしファイルの RECL 値が 4 バイト (ロングワード) 単位であることを指定します。
デフォルト: -assume nodummy_aliases
代替構文: -common_args
このオプションを使用した場合、コンパイラはプロシージャへの仮引数が他の仮引数と、または参照結合、ホスト結合、または共通ブロックを使用して共有した変数とメモリ位置を共有していることを仮定します。
-assume dummy_aliases を指定した場合、呼び出されるサブプログラムのみコンパイルする必要があります。
仮エイリアシングに関連したプログラム・セマンティクスは、標準 Fortran に完全に従っていないため、パフォーマンスが低下します。したがって、デフォルト値の -assume nodummy_aliases を指定することで、プログラムのランタイム・パフォーマンスが向上します。しかし、仮エイリアシングに依存するプログラムで -assume dummy_aliases を指定しない場合、プログラムはランタイム時に予期せぬ動作を引き起こします。このようなプログラムの結果は、行われた最適化の内容に依存します。場合によっては、通常の結果が生じることもありますが、問題を引き起こすエイリアスが関わる演算に使われた値が変わったために、結果が変わる場合もあります。
仮エイリアシングの仮定に関する詳細については、『ユーザーズ・ガイド Vol II』 の「アプリケーションの最適化」を参照してください。
デフォルト: -assume protect_constants
このオプションは、定数が読み取り専用であることを指定します。
-assume noprotect_constants オプションは、定数実引数のコピーを渡すようコンパイラに命令します。その結果、標準 Fortran では行うことができないコピーの変更を、呼び出されたルーチンで変更することができます。呼び出しルーチンは、定数を変更しません。
デフォルト値の -assume protect_constants を指定した場合、定数実引数を渡します。この値を変更した場合、エラーが発生する可能性があります。
デフォルト: -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
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 用)。
ランタイムで指定された COMMON ブロックの動的割り当てを有効にします。
例: 共通 ブロック A、B、および、C には次の構文を使用します:
-dyncom "a,b,c"
デフォルト: -integer_size 32
代替構文: -i{2|4|8} (2、4、および 8 は、INTEGER および LOGICAL 変数の KIND を表します)
INTEGER 型または LOGICAL 型の宣言、定数、関数、および組込み関数のデフォルト・サイズ (ビット) を指定します。n には 16、32、または 64 を指定することができます。
n が 16 の場合: デフォルトの INTEGER および LOGICAL 変数の長さは 2 バイトです。INTEGER 宣言および LOGICAL 宣言は、(KIND=2) として扱われます。代替構文: -i2 また、「INTEGER(KIND=2) の表現」も参照してください。
n が 32 の場合: デフォルトの INTEGER および LOGICAL 変数の長さは 4 バイトです。INTEGER 宣言および LOGICAL 宣言は、(KIND=4) として扱われます。代替構文: -i4 また、「INTEGER(KIND=4) の表現」も参照してください。
n が 64 の場合: デフォルトの INTEGER および LOGICAL 変数の長さは 8 バイトです。INTEGER 宣言および LOGICAL 宣言は、(KIND=8) として扱われます。代替構文: -i8 また、「INTEGER(KIND=8) の表現」も参照してください。
デフォルト: オフ
gprof(1) を使用して、関数のプロファイリングができるようにコンパイルとリンクを行います。
これは -p または -qp を指定するのと同じです。
デフォルト: -real_size 32
代替構文: -r{8|16} (8 および 16 は、実数変数の KIND を表します)
REAL 型または COMPLEX 型の宣言、定数、関数、および組込み関数のデフォルト・サイズ (ビット) を指定します。n には 32、64、または 128 を指定することができます。
n が 32 の場合: REAL 型の宣言、定数、関数、および組込み関数を REAL(KIND=4) (SINGLE PRECISION) として定義し、COMPLEX 型の宣言、定数、関数、および組込み関数を COMPLEX(KIND=4) (COMPLEX) として定義します。
代替構文: なし
次のトピックも参照してください。
REAL(KIND=4) (REAL) の表現
COMPLEX(KIND=4) (COMPLEX) の表現
n が 64 の場合: REAL 型の宣言、定数、関数、および組込み関数を REAL(KIND=8) (DOUBLE PRECISION) として定義し、COMPLEX 型の宣言、定数、関数、および組込み関数を COMPLEX(KIND=8) (DOUBLE COMPLEX) として定義します。
-real_size 64 を指定した場合、CMPLX、FLOAT、REAL、SNGL、および AIMAG を含む組込み関数は、引数が明示的に REAL(KIND=4) または COMPLEX(KIND=4) として指定されていない限り、REAL(KIND=4) または COMPLEX(KIND=4) の結果に代わり REAL(KIND=8) または COMPLEX(KIND=8) の結果を生成するようになります。例えば、CMPLX 組込み関数への参照は、CMPLX の引数が明示的に REAL(KIND=4)、REAL*4、COMPLEX(KIND=4)、または COMPLEX*8 として指定されていない限り、DCMPLX の結果 (COMPLEX(KIND=8)) を生成します。この場合、結果として得られるデータ型は COMPLEX(KIND=4) になります。
代替構文: -r8 または -autodouble
次のトピックも参照してください。
REAL(KIND=8) (DOUBLE PRECISION) の表現
COMPLEX(KIND=8) (DOUBLE COMPLEX) の表現
n が 128 の場合: REAL 型の宣言、定数、関数、および組込み関数を REAL(KIND=16) として定義し、COMLEX 型の宣言、定数、関数、および組込み関数を COMPLEX(KIND=16) として定義します。
代替構文: -r16
次のトピックも参照してください。
REAL(KIND=16) の表現
COMPLEX(KIND=16) の表現
デフォルト: オフ (クレイポインタが他の変数のエイリアシングを行わない場合)
クレイポインタが他の変数のエイリアシングを行わない (つまり、他の変数との間で共有するメモリを指定しない) ことを仮定します。
次の例について考えてみます。
pointer (pb, b)
pb = getstorage()
do i = 1, n
b(i) = a(i) + 1
enddo
デフォルトでは、コンパイラは b と a がエイリアスされていると仮定します。このような仮定を回避するには、-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-)
INTEGER、REAL、COMPLEX、または LOGICAL 組込み型のローカルスカラ変数で、保存はされているがまだ初期化されていない変数を、すべてゼロに初期化します。
Use -save on the command line to make all local variables specifically marked as SAVE.