XL Fortran コンパイラー・オプションの概要

以降に記載されている表は、XL Fortran コンパイラーで使用できるコンパイラー・オプションを示しています。 これらのオプションは、コンパイラー指示 @PROCESS を使用して、 構成ファイル、コマンド行、Fortran ソース・コードにも入力できます。

-q で始まるコンパイラー・オプション、 サブオプション、そして @PROCESS ディレクティブを、大文字または小文字のいずれかで入力できます。 ただし、-qmixed オプションを指定してある場合、 -qextern オプションに指定するプロシージャー名は、 大文字と小文字を区別することに注意してください。

全般で、-q コンパイラー・オプションおよび サブオプションには小文字を使用し、@PROCESS ディレクティブには 大文字を使用するという規則を使用しています。 ただし、本節の「構文」節とサマリー表の「コマンド行オプション」列では、-q オプションとサブオプションの名前および @PROCESS ディレクティブの 名前には大文字を使用しており、オプション・キーワードの最小の省略形を表します。 たとえば、-qOPTimize の有効な省略形は、 -qopt-qopti などです。

使用するオプションの重要度を理解し、代わりに使用できるオプションがわかれば、 プログラムを正しく効率的に機能させるために費やす時間と努力を節減することができます。

コンパイラーへの入力を制御するオプション

下のオプションは、コンパイラー入力に高い影響を与えます。 これらはどのソース・ファイルが処理されるかを決定し、 大/小文字の区別、桁の区別、その他のグローバルな形式の問題についての選択を行います。

関連情報:
XL Fortran 入力ファイルおよび 出力ファイルの位置を指定するオプションを参照してください。

互換性を維持するためのオプションに記載されているオプションの多くは、許可されている入力形式を多少変えます。

表 4. コンパイラーへの入力を制御するオプション
コマンド行 オプション @PROCESS ディレクティブ 説明 トピック参照
-Idir   インクルード・ファイルおよび .mod ファイルの検索パスにディレクトリーを追加します。 XL Fortran が cpp を呼び出す場合、このオプションを指定しておくと、#include ファイルの検索パスに ディレクトリーが追加されます。 コンパイラーは、インクルード・ファイルおよび .mod ファイルのデフォルト・ディレクトリーを検査する前に、 検索パス内の個々のディレクトリーを検査します。 インクルード・ファイルの場合は、INCLUDE 行のファイル名が絶対パスで示されていない場合にのみ、このパスが 使用されます。 #include ファイルの -I オプションについての詳細は、cpp の資料を参照してください。

デフォルト: 以下のディレクトリーは、次のような順序で検索されます。

  1. 現行ディレクトリー
  2. ソース・ファイルが入っているディレクトリー
  3. /usr/include.

また、 /opt/ibmcmp/xlf/10.1/include も検索されます。 コンパイラーとともに出荷されるインクルード・ファイルと .mod ファイルはここに入っています。

-I オプション
-qci=numbers CI(numbers) 指定された INCLUDE 行を活動化します。
デフォルト:
デフォルト値なし。
-qci オプション
-qcr
-qnocr
コンパイラーが CR (復帰) 文字をどのように解釈するかを制御することができます。 これにより、Mac OS または DOS/Windows のエディターを使用して作成したコードをコンパイルできます。
デフォルト:
-qcr
-qcr オプション
-qdirective
  [=directive_list]
-qnodirective
  [=directive_list]
DIRECTIVE
  [(directive_list)]
NODIRECTIVE
  [(directive_list)]
トリガー定数として知られる文字列を指定します。 これらの文字列は、コメント行をコンパイラーのコメント・ディレクティブとして識別します。
デフォルト:
IBM* で始まっているコメント行はディレクティブと見なされます。 -qsmp=omp> が指定されている場合は、$OMP だけがディレクティブ・トリガーであると見なされます。 他のディレクティブ・トリガーはすべて、明示的にオンに切り替えない限り、オフになります。 -qsmp=noomp (-qsmp には noomp がデフォルト) が指定されている場合、IBMP$OMP および SMP$ はディレクティブ・トリガーと見なされ、オンになっているその他のディレクティブ・トリガー (IBM*IBMT など) と同様に見なされます。 -qthreaded が指定されている場合は、IBMT で始まっているコメント行もディレクティブと見なされます。
-qdirective オプション
-qenum=value 列挙型定数の範囲を指定し、判別されるストレージ・サイズを使用可能にします。 -qenum オプション
-qfixed
  [=right_margin]
FIXED
  [(right_margin)]
入力ソース・プログラムが固定ソース形式になっていることを示し、任意で行の最大長を指定します。
デフォルト:
f90xlf90xlf90_rf95xlf95、および xlf95_r コマンドの場合は -qfree=f90xlfxlf_r、および f77/fort77 コマンドの場合は -qfixed=72 です。
-qfixed オプション
-qfree[={f90|ibm}]
-k
FREE[({F90|
  IBM})]
ソース・コードがフリー・フォームになっていることを示します。 ibm および f90 サブオプションは、それぞれ VS FORTRAN と Fortran 90/Fortran 95 に対して定義されている 自由ソース形式との互換性を指定します。 -k と -qfree は、-qfree=f90 の短縮形です。
デフォルト:
f90f95xlf90xlf90_rxlf95、および xlf95_r コマンドの場合は -qfree=f90xlfxlf_r、および f77/fort77 コマンドの場合は -qfixed=72 です。
-qfree オプション
-qmbcs
-qnombcs
MBCS
NOMBCS
文字リテラル定数、ホレリス定数、H 編集記述子、 文字ストリング編集記述子にマルチバイト文字セット (MBCS) 文字または Unicode 文字を含めることができるかどうかをコンパイラーに示します。
デフォルト:
-qnombcs
-qmbcs オプション
-U
-qmixed
-qnomixed
MIXED
NOMIXED
コンパイラーが、名前内の文字の大文字と小文字を区別するようにします。
デフォルト:
-qnomixed
-U オプション
-qsuffix={suboptions}   コマンド行でのソース・ファイル・サフィックスを指定します。 -qsuffix オプション

出力ファイルの位置を指定するオプション

これらのオプションは、コンパイラーが出力ファイルを格納するディレクトリーの名前を指定します。

この表では、* は、XL Fortran コンパイラーではなく ld コマンドによってオプションが処理されることを示します。 これらのオプションの詳細については、ld コマンドに関する Linux 情報に記載されています。

関連情報:
XL Fortran 出力ファイルおよび コンパイラーへの入力を制御するオプションを参照してください。
表 5. 出力ファイルの位置を指定するオプション
コマンド行 オプション @PROCESS ディレクティブ 説明 トピック参照
-d   cpp によって作成されたプリプロセス済みソース・ファイルを削除せずに残します。
デフォルト:
cpp で作成された一時ファイルは削除されます。
-d オプション
-o name*   出力オブジェクト・ソース・ファイル、実行可能ソース・ファイル、 アセンブラー・ソース・ファイルなどの名前を指定します。
デフォルト:
-o a.out
-o オプション
-qmoddir=directory   コンパイラーが書き込むモジュール・ファイル (.mod) の位置を指定します。
デフォルト:
.mod ファイルは現行ディレクトリーに置かれます。
-qmoddir オプション

パフォーマンスの最適化のためのオプション

これらのオプションは、XL Fortran プログラムの実行速度を速めたり、パフォーマンスが低下している 部分を見つけ、調整するのに役立ちます。 このようなオプションの中で最も重要なのは -O です。 一般に、他のパフォーマンス関連のオプションは、-O と組み合わせることにより、効果が上がります。 -O を組み合わせないと、まったく効果のないオプションもあります。

関連情報:
XL コンパイラー・プログラムの最適化』を参照してください。

浮動小数点処理のためのオプションに記載されているオプションの中にも、パフォーマンスを向上させるものがあります。 ただし、これらのオプションを使用する際は、エラー条件や誤った結果が起きないように十分注意して使用してください。

表 6. パフォーマンスの最適化のためのオプション
コマンド行 オプション @PROCESS ディレクティブ 説明 トピック参照
-O[level]
-qoptimize[=level]
-qnooptimize
OPTimize[(level)]
NOOPTimize
コンパイル時にコードを最適化するかどうかを指定し、 最適化する場合は、最適化のレベル (0、2、 3、4 または 5) を指定します。
デフォルト:
-qnooptimize
-O オプション
-p
-pg
  プロファイル用のオブジェクト・ファイルをセットアップします。
デフォルト:
プロファイルなし。
-p オプション
-Q
-Q!
-Q+names
-Q-names
  プロシージャーをインライン化するかどうか、または、 特定のプロシージャーをインライン化しなければならないかインライン化してはならないかを指定します (これらを両方指定する場合もあります)。 names はプロシージャー名をコロンで区切ったリストです。
デフォルト:
インライン化なし。
-Q オプション
-qalias=
{[no]aryovrlp |
[no]intptr |
[no]pteovrlp|
[no]std}...]
ALIAS(
{[NO]ARYOVRLP
|[NO]INTPTR
|[NO]PTEOVRLP
|[NO]STD}... )
ある種の別名付けが、プログラムに含まれているかどうかを示します。 コンパイラーは、同じストレージ・ロケーションにさまざまな名前が別名として付けられている可能性がある場合、 最適化の有効範囲を制限します。
デフォルト:
xlf95xlf95_rf90、 および f95 コマンドの場合は -qalias=aryovrlp:nointptr:pteovrlp:stdxlfxlf_rf77、 および fort77 コマンドの場合は -qalias= aryovrlp:intptr:pteovrlp:std です。
-qalias オプション
-qalign={[no]4k|
struct {=subopt}|
bindc {=subopt}}
ALIGN( {[NO]4K| STRUCT{(subopt)}| BINDC{(subopt)}}) 誤って位置合わせされたデータによるパフォーマンス上の問題を回避する、 ストレージ内でのデータ・オブジェクトの位置合わせを指定します。 [no]4kbindc、 および struct オプションを一緒に指定することができ、 しかも互いに排他的ではありません。 [no]4k オプションは、 基本的には論理ボリューム I/O とディスク・ストライピングの組み合わせに 有効です。
デフォルト:
-qalign= no4k:struct=natural:bindc=linuxppc
-qalign オプション
-qarch=architecture   コンパイラーが生成する命令を制御します。 デフォルトを変更すると、 パフォーマンスを向上させることができますが、 特定のマシンでしか実行できないコードが生成される可能性があります。 選択項目は com、 ppc、 ppcgr、 ppc64、 ppc64gr、 ppc64grsq、 rs64b、 rs64c、 pwr3、 pwr4、 pwr5、 pwr5x、 ppc64v、 および ppc970 です。
デフォルト:
-qarch=ppc64grsq
-qarch オプション
-qassert={deps |
nodeps |
itercnt=n}
ASSERT(DEPS |
NODEPS |
ITERCNT(N))
最適化を微調整するのに役立つファイルの特性に関する情報を指定します。
デフォルト:
-qassert=deps:itercnt=1024
-qassert オプション
-qcache={
auto |
assoc=number |
cost=cycles |
level=level |
line=bytes |
size=Kbytes |
type={C|c|D|d|
I|i}}[:...]
  特定の実行マシンに対して、キャッシュ構成を指定します。 コンパイラーはこの情報を使用して、 特に、データ・キャッシュに適合するデータ量に限定して処理するように構造化 (あるいはブロック化) 可能なループ演算の場合に、 プログラムのパフォーマンスを調整します。
デフォルト:
コンパイラーは、 -qtune 設定値または -qarch 設定値、 あるいは、その両方に基づいて一般的な値を使用します。
-qcache オプション
-qcompact
-qnocompact
COMPACT
NOCOMPACT
コード・サイズを大きくする最適化を抑制します。
デフォルト:
-qnocompact
-qcompact オプション
-qdirectstorage
-qnodirectstorage
指定のコンパイル単位がライトスルー使用可能またはキャッシュ使用禁止のストレージを参照できることを コンパイラーに通知します。 このオプションは慎重に使用してください。 メモリーとキャッシュ・ブロックの作業に精通し、最適なパフォーマンスを得るためにアプリケーションを チューニングすることができるプログラマーを対象としています。
デフォルト:
-qnodirectstorage
-qdirectstorage オプション
-qenablevmx
-qnoenablevmx
ベクトル・マルチメディア拡張機能 (Vector Multimedia eXtension (VMX)) 命令の生成を使用可能にします。
デフォルト:
-qenablevmx
-qenablevmx オプション
-qessl  

Fortran 90 組み込みプロシージャーの代わりに科学技術計算サブルーチン・ライブラリー (ESSL) ルーチンを使用することが できます。 -lessl でリンクするときは、ESSL シリアル・ライブラリーを使用します。 -lesslsmp でリンクするときは、ESSL SMP ライブラリーを使用します。

デフォルト:
-qnoessl
-qessl オプション
-qhot[=suboptions]
-qnohot
HOT[=suboptions]
NOHOT
最適化中にループ分析および換を 実行するようにコンパイラーに指示します。
デフォルト:
-qnohot
-qhot オプション
-qinlglue | -qnoinlglue   このオプションは、-q64 および -O2 およびより高位のものでコンパイルしているとき、ご使用の アプリケーションで外部関数呼び出しを最適化する Glue コードをインライン化します。
デフォルト:
-qnoinlglue
-qinlglue オプション
-qipa[=suboptions] | -qnoipa   プロシージャー間で詳細な分析 (プロシージャー間分析、つまり IPA) を行うことによって、-O 最適化を増大させます。
デフォルト:
サブプログラムの境界全域に適用されるある一定の最適化を除外しながら、 -O は個々のサブプログラムを分析します。 -O5 を指定することと、 -O4-qipa=level=2 を指定することは同じであることに注意してください。
-qipa オプション
-qkeepparm
-qnokeepparm
  最適化しているときでも、着信するプロシージャー・パラメーターがスタックに保管されることを保証します。
デフォルト:
-qnokeepparm
-qkeepparm オプション
-qmaxmem=
  Kbytes
MAXMEM
  (Kbytes)
コンパイラーが特定のメモリー集中の最適化を実行するときに、 割り振るメモリーの量を指定キロバイト数に制限します。 値 -1 を指定すれば、制限チェックは行わず、必要なだけメモリーを使って最適化を実行します。
デフォルト:
-qmaxmem=8192-O3-O4、および -O5 では、 -qmaxmem=-1
-qmaxmem オプション
-qpdf{1|2}   プロファイル指示フィードバック (profile-directed feedback (PDF)) によって最適化を調整します。 その場合、条件付き分岐の近辺および頻繁に実行されるコード・セクション内の最適化が、サンプル・プログラムの実行結果を使用して改善されます。
デフォルト:
最適化では、分岐の頻度とその他の統計に関しては、固定の想定を使用します。
-qpdf オプション
-qprefetch | -qnoprefetch   プリフェッチ命令がコンパイラーによって自動的に挿入されるかどうかを指示します。
デフォルト:
-qprefetch
-qprefetch オプション
-qshowpdf
-qnoshowpdf

追加の呼び出しとブロック数プロファイル情報を実行可能ファイルに追加します。 このオプションは、-qpdf1 オプションとともに使用します。

デフォルト:
-qnoshowpdf
-qshowpdf オプション
-qsmallstack[=
dynlenonheap |
nodynlenonheap]
-qnosmallstack

可能な限りコンパイラーがスタック使用を最小化するように指定します。

デフォルト:
-qnosmallstack
-qsmallstack オプション
-qsmp[=suboptions]
-qnosmp
  xlf_rxlf90_rまたは xlf95_r で 使用するとき、ループの自動並列化、ループおよび他の項目のユーザー指定の並列化、 およびアルゴリズムのチャンク化の選択を制御します。
デフォルト:
-qnosmp
-qsmp オプション
-NSbytes
-qSPILLsize=
  bytes
SPILLsize
  (bytes)
レジスター予備スペースのサイズを指定します。
デフォルト:
-NS512
-NS オプション
-qstacktemp={
0 | -1 |
positive_integer}
STACKTEMP={
0 | -1 |
positive_integer}

実行時に適用できる XL Fortran コンパイラーのテンポラリー (temporary) をどこに割り振るかを判別します。

デフォルト:
0 コンパイラーは 適当なテンポラリー (temporary) をヒープまたはスタックに任意に割り振ります。
-qstacktemp オプション
-qstrict
-qnostrict
STRICT
NOSTRICT
-O3、-O4、および -O5 オプションで行われた最適化によって プログラムのセマンティクスが変更されないことを保証します。
デフォルト:
-O3 以上のレベルの最適化が有効になっている場合は、結果または例外が、 最適化していないプログラムの結果または例外と異なるように、コードを再配置できます。 -O2 の場合、デフォルトは -qstrict です。 このオプションは、-qnoopt の場合は無視されます。
-qstrict オプション
-qstrict_induction
-qnostrict_induction

コンパイラーが帰納 (ループ・カウンター) 変数の最適化を実行してしまわないようにします。 そのような最適化を実行した場合、帰納変数が関係した整数オーバーフローの動作が発生したときに アンセーフ になる可能性があります (プログラムのセマンティクスが変更される可能性があります)。

デフォルト:
-qnostrict_induction
-qstrict_induction オプション
-qthreaded   コンパイラーがスレッド・セーフ・コードを生成するように指定します。xlf_rxlf90_rおよび xlf95_r コマンドの場合、 これはデフォルトでオンになります。 -qthreaded オプション
-qtune=
implementation
  ハードウェア・アーキテクチャーの特定のインプリメンテーションに対する命令の選択、 スケジューリング、その他のインプリメンテーションに依存するパフォーマンス拡張機能を調整します。 auto、rs64b、 rs64c、pwr3、pwr4、 pwr5、または ppc970 の設定が有効です。
デフォルト:
-qtune=pwr4
-qtune オプション
-qunroll[=auto |
yes]
-qnounroll
自動的に DO ループをアンロールすることを、 コンパイラーに許可するかどうかを指定します。
デフォルト:
-qunroll=auto
-qunroll オプション
-qunwind
-qnounwind
UNWIND
NOUNWIND
プロシージャー呼び出し中に、コンパイラーが、揮発性レジスターの保存と復元のデフォルト動作を保持するように指定します。
デフォルト:
-qunwind
-qunwind オプション
-qzerosize
-qnozerosize
ZEROSIZE
NOZEROSIZE
サイズがゼロの文字ストリングおよび配列の検査を行わせないことによって、 FORTRAN 77 プログラムと、一部の Fortran 90 および Fortran 95 プログラムのパフォーマンスを向上させます。
デフォルト:
xlf90xlf90_rxlf95xlf95_rf90、 および f95 コマンドの場合は -qzerosize であり、xlfxlf_rf77、 および fort77 コマンドの場合は -qnozerosize です (サイズがゼロのオブジェクトを含むプログラムには、これらの コマンドを使用できないことを示しています)。
-qzerosize オプション

エラー・チェックおよびデバッグのためのオプション

これらのオプションを使用すると、XL Fortran プログラム内の問題を回避、検出、 修正するのに役立ち、問題判別とデバッグを頻繁に参照する必要もなくなります。

特に、-qlanglvl は、Fortran 標準の潜在的な違反を警告することによって、 コンパイル・プロセスの初期の段階で移植性の問題を検出するのに役立ちます。 これはプログラムで拡張が行われていたり、 そのような拡張ができるようにするコンパイラー・オプションが備えられているためです。

-C および -qflttrap のようなその他のオプションは、 実行時の計算エラーの検出もしくは回避、 またはその両方を行います (これを行わないと誤った出力結果が作成される可能性があります)。

これらのオプションではコンパイル時に追加チェックを必要とし、 また実行速度の低下をもたらす実行時エラー・チェックを使用する場合もあるので、 チェックの必要性、コンパイル速度の低下、 実行パフォーマンスという 3 要素間の適切なバランスを見つけ出すために実験が必要な場合があります。

これらのオプションを使用すると、行わなければならない問題判別とデバッグの量を最小限にとどめることができます。 デバッグ中に役立つオプションには、他にも次のものがあります。

表 7. デバッグおよびエラー・チェックのためのオプション
コマンド行 オプション @PROCESS ディレクティブ 説明 トピック参照
-C
-qcheck
-qnocheck
CHECK
NOCHECK
配列エレメント、配列セクション、文字サブストリングなどへの個々の参照が正しいかどうかを チェックします。 コンパイル時に境界外参照が検出されると、重大エラーとして報告され、実行時に SIGTRAP シグナルを生成します。
デフォルト:
-qnocheck
-C オプション
-D
-qdlines
-qnodlines
DLINES
NODLINES
桁 1 に D を持つ固定ソース形式行がコンパイルされるか、コメントとして扱われるかを指定します。
デフォルト:
-qnodlines
-D オプション
-g
-qdbg
-qnodbg
DBG
NODBG
シンボリック・デバッガーで使用するデバッグ情報を生成します。
デフォルト:
-qnodbg
-g オプション
-qflttrap
  [=suboptions]
-qnoflttrap
FLTTRAP
  [(suboptions)]
NOFLTTRAP
実行時に検出する浮動小数点例外条件のタイプを決定します。 該当する例外が発生すると、 プログラムは SIGFPE シグナルを受信します。
デフォルト:
-qnoflttrap
-qflttrap オプション
-qfullpath
-qnofullpath
  ソース・ファイルとインクルード・ファイルの完全なパス名、 つまり絶対パス名は、コンパイルされたオブジェクト・ファイルの中にデバッグ情報と一緒に記録されます (-g オプション)。
デフォルト:
ソース・ファイルの相対パス名はオブジェクト・ファイルの中に記録されます。
-qfullpath オプション
-qhalt=sev HALT(sev) コンパイル時メッセージの最大の重大度が、指定した重大度と等しいか、それを上回る場合、 オブジェクト・ファイル、実行可能ファイル、アセンブラー・ソース・ファイルを作成する前に動作を停止します。 severity (重大度) は、i (通知)、l (言語)、w (警告)、e (エラー)、s (重大エラー)、u (回復不能エラー)、 q (「停止しない」を示す重大度) のいずれかです。
デフォルト:
-qhalt=S
-qhalt オプション
-qinitauto[=hex_value]
-qnoinitauto
  hex_value の長さに応じて、自動変数用のストレージの個々のバイトまたはワード (4 バイト) を、特定の値に初期化します。 これにより、定義前に参照される変数を見つけることができます。たとえば、REAL 変数を シグナル NAN 値に 初期化するための -qinitauto オプションと、 -qflttrap オプションの両方を使用することにより、実行時に初期化されていない REAL 変数を参照していないかどうかを識別することができます。
デフォルト:
-qnoinitautohex_value を付けずに -qinitauto を指定する場合、コンパイラーは自動ストレージの 各バイトの値をゼロに初期化します。
-qinitauto オプション
-qlanglvl={
   77std
   | 90std
   | 90pure
   | 95std
   | 95pure
   | 2003std
   | 2003pure
   | extended}
   
LANGLVL({
   77STD
   | 90STD
   | 90PURE
   | 95STD
   | 95PURE
   | 2003STD
   | 2003PURE
   | EXTENDED})
非準拠の検査を行う言語標準 (または標準のスーパーセットまたはサブセット) を決定します。 非準拠のソース・コード、 およびそのような非準拠を許可するオプションを識別します。
デフォルト:
-qlanglvl=extended
-qlanglvl オプション
-qlinedebug
-qnolinedebug
LINEDEBUG
NOLINEDEBUG
デバッガーに対して行番号およびソース・ファイル名情報を生成します。
デフォルト:
-qnolinedebug
-qlinedebug オプション
-qOBJect
-qNOOBJect
OBJect
NOOBJect
オブジェクト・ファイルを作成するか、または、 ソース・ファイルの構文をチェックした直後に停止するかを指定します。
デフォルト:
-qobject
-qobject オプション
-qsaa
-qnosaa
SAA
NOSAA
SAA FORTRAN 言語定義に従っているかどうかをチェックします。 非準拠のソース・コード、 およびそのような非準拠を許可するオプションを識別します。
デフォルト:
-qnosaa
-qsaa オプション
-qsaveopt
-qnosaveopt
  ソース・ファイルのコンパイルに使用するコマンド行オプションを、該当するオブジェクト・ファイルに保管します。
デフォルト:
-qnosaveopt
-qsaveopt オプション
-qsigtrap[=
trap_handler]
  xl__trce、事前定義トラップ・ハンドラーまたは ユーザー作成トラップ・ハンドラーをメイン・プログラムにインストールします。
デフォルト:
トラップ・ハンドラーがインストールされません。 trap 命令が実行されたとき、プログラムはメモリー・ダンプします。
-qsigtrap オプション
-qtbtable={none
| small
| full}
  64 ビット環境にのみ適用されます。 オブジェクト・ファイル内のトレースバック情報のデバッグ量を制限し、 プログラムのサイズを小さくします。
デフォルト:
最適化なしで (-O を指定しない) コンパイルする場合、 またはデバッグ用に (-g を指定して) コンパイルする場合、 トレースバックの全情報をオブジェクト・ファイルに入れます。 それ以外の場合、トレースバックの限定情報をオブジェクト・ファイルに入れます。
-qtbtable オプション
-qwarn64
-qnowarn64
  8 バイト整数ポインターの 4 バイトへの切り捨てを検出します。 通知メッセージを使って 32 ビットから 64 ビットへマイグレーションするときに問題を起こす可能性のある文を識別します。
デフォルト:
-qnowarn64
-qwarn64 オプション
-qxflag=dvz
-qxflag=dvz を指定すると、コンパイラーは、浮動小数点ゼロ除算演算を検出するコードを生成します。
デフォルト:
浮動小数点ゼロ除算演算を検出するコードは生成されません。
-qxflag=dvz オプション
-qxlines
-qnoxlines
XLINES
NOXLINES
桁 1 に X を持つ固定ソース形式行をソース・コードと見なしてコンパイルするか、コメントとして扱うかを指定します。
デフォルト:
-qnoxlines
-qxlines オプション

リストとメッセージを制御するオプション

これらのオプションは、 コンパイラーがリスト (.lst ファイル) を作成するかどうか、 どのような種類の情報がリストに入るか、 エラー条件を検出したらコンパイラーはそれについて何を行うかなどを決定します。

エラー・チェックおよびデバッグのためのオプションに記載されているオプションの中には、 コンパイラー・メッセージも作成できるものがあります。

表 8. リストとメッセージを制御するオプション
コマンド行 オプション @PROCESS ディレクティブ 説明 トピック参照
-#   個々のコンポーネントを実際には実行せずに、コンパイルの進行に関する情報を生成します。
デフォルト:
進捗メッセージは生成されません。
-# オプション
-qattr[=full]
-qnoattr
ATTR[(FULL)]
NOATTR
属性の属性コンポーネントおよびリストの相互参照セクションを作成するかどうかを指定します。
デフォルト:
-qnoattr
-qattr オプション
-qflag=
  listing_severity:
  terminal_severity
-w
FLAG
  (listing_severity,
  terminal_severity)
診断メッセージを指定されたレベルまたはそれ以上のレベルに限定します。 listing_severity またはそれ以上の重大度を持つメッセージだけがリスト・ファイルに書き込まれます。 terminal_severity またはそれ以上の重大度を持つメッセージだけが端末装置に書き込まれます。 -w は、-qflag=e:e の短い形式です。
デフォルト:
-qflag=i:i
-qflag オプション
-qlist[={[no]offset}]
-qnolist
LIST[([NO]OFFSET)]
NOLIST
リストのオブジェクト・セクションを作成するかどうかを指定します。
デフォルト:
-qnolist
-qlist オプション
-qlistopt
-qnolistopt
LISTOPT
NOLISTOPT
リスト・ファイル内のすべてのコンパイラー・オプションの設定を表示するか、 または、選択したオプションだけを表示するかを決定します。 これらの選択したオプションには、コマンド行またはディレクティブに 指定されているオプションと、常にリストにあるオプションが含まれます。
デフォルト:
-qnolistopt
-qlistopt オプション
-qnoprint   他のリスト・オプションの設定とは関係なく、 リスト・ファイルが作成されないようにします。
デフォルト:
-qattr、-qlist、-qlistopt、 -qphsinfo、 -qreport、 -qsource、または -qxref の いずれかを指定したとき、1 つの リストが作成されます。
-qnoprint オプション
-qphsinfo
-qnophsinfo
PHSINFO
NOPHSINFO
各コンパイラー・フェーズのタイミング情報が端末に表示されるかどうかを決定します。
デフォルト:
-qnophsinfo
-qphsinfo オプション
-qreport[={smplist
  | hotlist}...]
-qnoreport
REPORT
  [({SMPLIST |
HOTLIST}...)]
NOREPORT
プログラムを並列化する方法とループを最適化する方法を示す 変換報告書を作成するかどうかを決定します。
デフォルト:
-qnoreport
-qreport オプション
-qsource
-qnosource
SOURCE
NOSOURCE
リストのソース・セクションを作成するかどうかを指定します。
デフォルト:
-qnosource
-qsource オプション
-qsuppress
[= nnnn-mmm
[:nnnn-mmm...] |
cmpmsg] |
-qnosuppress
  出力ストリームから抑止されるメッセージを指定します。 -qsuppress オプション
-qversion
-qnoversion
  起動されているコンパイラーバージョンとリリースを表示します。
デフォルト:
-qnoversion
-qversion オプション
-qxref
-qnoxref
-qxref=full
XREF
NOXREF
XREF(FULL)
属性の相互参照コンポーネントおよびリストの相互参照セクションを作成するかどうかを決定します。
デフォルト:
-qnoxref
-qxref オプション
-S   個々の Fortran ソース・ファイルに対して同等のアセンブラー・ソースを示す 1 つ以上の .s ファイルを作成します。
デフォルト:
同等のアセンブラー・ソースは作成されません。
-S オプション
-v   呼び出しコマンドで実行される個々のコンパイラー・コンポーネントの名前とパラメーターを表示することによって、 コンパイルの進捗状況をトレースします。
デフォルト:
進捗メッセージは生成されません。
-v オプション
-V   呼び出しコマンドで実行される個々のコンパイラー・コンポーネントの名前とパラメーターを表示することによって、 コンパイルの進捗状況をトレースします。 これらの情報は、シェル実行可能形式で表示されます。
デフォルト:
進捗メッセージは生成されません。
-V オプション

互換性を維持するためのオプション

これらのオプションは、過去、現在、将来のハードウェア・プラットフォーム上の XL Fortran ソース・コード間の互換性を維持するのに役立つほか、 変更をできる限り最小にとどめてプログラムを XL Fortran に移植するのに役立ちます。

関連情報:
XL Fortran へのプログラムの移植』 でこの主題を詳細に説明しています。 『他のシステムの浮動小数点結果の複写』では、他のシステムと互換性のある浮動小数点結果を得るためには、浮動小数点処理のためのオプションに記載されているオプションをどのように使用したらよいかを説明しています。

-qfree オプション-qfree=ibm 形式もまた、VS FORTRAN 自由ソース形式との互換性を提供します。

表 9. 互換性を維持するためのオプション
コマンド行 オプション @PROCESS ディレクティブ 説明 トピック参照
-qautodbl=setting AUTODBL(setting) 単精度浮動小数点計算を倍精度へ自動的に変換する方法、 そして倍精度計算を拡張精度へ自動的に変換する方法を提供します。 none、 dbl、 dbl4、 dbl8、 dblpad、 dblpad4、 または dblpad8 の設定のいずれかを使用します。
デフォルト:
-qautodbl=none
-qautodbl オプション
-qbigdata
-qnobigdata
32 ビット・モードでは、初期化されたデータの 16 MB を超えるプログラム (gcc 制限) および 共用ライブラリーの呼び出しルーチン (like open、 close、 printf など) 用に、このオプションを使用します。
デフォルト:
-qnobigdata
-qminimaltoc オプション
-qcclines
-qnocclines
CCLINES
NOCCLINES
コンパイラーが条件付きコンパイル行を認識するかどうかを決定します。
デフォルト:
-qsmp=omp オプションを指定した場合は -qcclines、指定しなかった場合は-qnocclines
-qcclines オプション
-qctyplss
[=([no]arg)]
-qnoctyplss
CTYPLSS
[([NO]ARG)]
NOCTYPLSS
型が指定されていない定数を使用できる場合に、 必ず文字定数式が許可されるかどうかを指定します。 他のプラットフォームからプログラムを移植するとき、 この言語拡張機能が必要となる場合があります。サブオプション arg は、実引数として使用される ホレリス定数が、整数の実際の引数として扱われることを指定します。
デフォルト:
-qnoctyplss
-qctyplss オプション
-qddim
-qnoddim
DDIM
NODDIM
配列が参照されるたびに、pointee 配列の境界が再評価されること を指定し、pointee 配列用の境界式に対する制約事項をいくつか除去します。
デフォルト:
-qnoddim
-qddim オプション
-qdpc
-qdpc=e
-qnodpc
DPC
DPC(E)
NODPC
実定数を DOUBLE PRECISION 変数に割り当てるときに、 最大の精度を得られるように実定数の精度を高めます。 他のプラットフォームからプログラムを移植するとき、 この言語拡張機能が必要となる場合があります。
デフォルト:
-qnodpc
-qdpc オプション
-qescape
-qnoescape
ESCAPE
NOESCAPE
文字ストリング、ホレリス定数、H 編集記述子、ストリング編集記述子で、 円記号がどのように扱われるかを指定します。 円記号は、エスケープ文字または円記号文字として扱うことができます。 他のプラットフォームからプログラムを移植するとき、 この言語拡張機能が必要となる場合があります。
デフォルト:
-qescape
-qescape オプション
-qextern=names   ユーザー作成のプロシージャーを、XL Fortran 組み込み機能の代わりに 呼び出せるようにします。names はプロシージャー名をコロンで区切ったリストです。 プロシージャー名は、コンパイル中の個々の コンパイル単位の EXTERNAL 文内にあるかのように扱われます。 プロシージャー名が XL Fortran 組み込みプロシージャーと競合する場合は、 このオプションを使用して組み込みプロシージャーの代わりに ソース・コード内のプロシージャーを呼び出します。
デフォルト:
組み込みプロシージャー名がユーザー作成のプロシージャー名と同じであると、 前者が後者をオーバーライドします。
-qextern オプション
-qextname
[=name:name...]
-qnoextname
EXTNAME
[(name:name...)]
NOEXTNAME
すべてのグローバル・エンティティーの名前に下線を追加します (これが混合言語プログラムに 対する規則であるシステムの場合、システムからプログラムを移植するのに役立ちます)。
デフォルト:
-qnoextname
-qextname オプション
-qinit=f90ptr INIT(f90ptr) ポインターの初期関連付け状況を関連付け解除にします。
デフォルト:
ポインターのデフォルト時関連付け状況は未定義です。
-qinit オプション
-qintlog
-qnointlog
INTLOG
NOINTLOG
式および文内に整数と論理値を混在させることができることを指定します。
デフォルト:
-qnointlog
-qintlog オプション
-qintsize=bytes INTSIZE(bytes) デフォルトの INTEGER 値および LOGICAL 値のサイズを設定します。
デフォルト:
-qintsize=4
-qintsize オプション
-qlog4
-qnolog4
LOG4
NOLOG4
論理オペランドを持つ論理演算の結果が、LOGICAL(4) であるか、 それともオペランドの最大長を持つ LOGICAL であるかを指定します。
デフォルト:
-qnolog4
-qlog4 オプション
-qminimaltoc
-qnominimaltoc
コンパイラーは、各コンパイル単位ごとに、1 つの TOC エントリーのみ作成します。 デフォルトでは、プログラム内の固有の非自動変数参照ごとに、少なくとも 1 つの TOC エントリー をコンパイラーが割り当てます。 8192 の TOC エントリーのみが使用可能で、重複エントリーは廃棄されません。 これは、プログラムが 8192 の TOC エントリーを超える場合、64 ビット・モードで大きなプログラムをリンクしている際に、 エラーが起きる原因になります。
デフォルト:
-qnominimaltoc
-qminimaltoc オプション
-qmodule=mangle81
コンパイラーが非組み込みモジュール・ファイルに対して XL Fortran バージョン 8.1 の命名規則を 使用するように指定します。
デフォルト:
コンパイラーは、非組み込みモジュール名に対して現在の命名規則を使用します。 この規則は、前のバージョンのコンパイラーで使用されていた 規則とは互換性がありません。
-qmodule オプション
-qnullterm
-qnonullterm
NULLTERM
NONULLTERM
仮引数として渡される文字定数式に NULL 文字を付加することによって、 ストリングを C 関数に渡しやすくします。
デフォルト:
-qnonullterm
-qnullterm オプション
-1
-qonetrip
-qnoonetrip
ONETRIP
NOONETRIP
DO 文が実行される場合、 反復回数が 0 であったとしても、コンパイル済みプログラム内の個々の DO ループを最低 1 回実行します。
デフォルト:
-qnoonetrip
-1 オプション
-qport
  [=suboptions]
-qnoport
PORT
  [(suboptions)]
NOPORT
他の Fortran 言語拡張機能を収容するためにいくつかのオプションを提供して、 XL Fortran にプログラムを移植すると柔軟性が増加します。
デフォルト:
-qnoport
-qport オプション
-qposition=
   {appendold |
   appendunknown}
POSITION(
{APPENDOLD |
APPENDUNKNOWN})
POSITION= 指定子を持たない OPEN 文の後にデータが書き込まれ、 対応する STATUS= 値 (OLD または UNKNOWN) が指定されると、 ファイル・ポインターをファイルの終わりに置きます。
デフォルト:
OPEN 文の I/O 指定子とコンパイラー呼び出し コマンドに応じて、 xlfxlf_r、 および f77/fort77 コマンドの場合は -qposition=appendold xlf90xlf90_rxlf95xlf95_rf90、 および f95 コマンドの場合は、 定義済みの Fortran 90 および Fortran 95 の動作になります。
-qposition オプション
-qqcount
-qnoqcount
QCOUNT
NOQCOUNT
拡張精度 Q 編集記述子 (Qw.d) だけではなく、 Q 文字カウント編集記述子 (Q) を受け入れます。 -qnoqcount を使用すると、すべての Q 編集記述子が拡張精度 Q 編集記述子として解釈されます。
デフォルト:
-qnoqcount
-qqcount オプション
-qoldmod=compat このオプションは、V9.1.1 より前の XL Fortran のバージョンでコンパイルされたモジュール・データを含む オブジェクト・ファイルが未初期化のモジュール・データを含まないかまたは convert_syms スクリプトを使用して 移植するかを指定します。 -qoldmod オプション
-qrealsize=bytes REALSIZE(bytes) REALDOUBLE PRECISIONCOMPLEX、および DOUBLE COMPLEX 値のデフォルト・サイズを設定します。
デフォルト:
-qrealsize=4
-qrealsize オプション
-qsave[={all |
defaultinit}]
-qnosave
SAVE{(ALL |
DEFAULTINIT)}
NOSAVE
ローカル変数のデフォルト・ストレージ・クラスを指定します。 -qsave-qsave=all、あるいは -qsave=defaultinit は、デフォルト・ストレージ・クラスを STATIC に設定し、-qnosave は、AUTOMATIC に 設定します。
デフォルト:
-qnosave

FORTRAN77 コマンドの動作と同一にするために、xlfxlf_rf77、 または fort77 では、-qsave がデフォルトで オンになります。

-qsave オプション
-qsclk=[centi | micro ] SYSTEM_CLOCK 組み込みプロシージャーを使用して値を戻すとき、 コンパイラーがセンチ秒レゾリューションを使用するように指定します。 -qsclk=micro を使用することによりマイクロ秒レゾリューションを指定することができます。

デフォルト: -qsclk=centi

-qsclk オプション
-qswapomp
-qnoswapomp
SWAPOMP
NOSWAPOMP
コンパイラーが、XL Fortran プログラムにある OpenMP ルーチンを認識して置換するように指定します。
デフォルト:
-qswapomp
-qswapomp オプション
-u
-qundef
-qnoundef
UNDEF
NOUNDEF
変数名の暗黙の型指定が許可されるかどうかを指定します。 -u および -qundef は、暗黙のステートメントを許可する個々の有効範囲にある IMPLICIT NONE 文と同じ効果を持っています。
デフォルト:
-qnoundef
-u オプション
-qxflag=oldtab XFLAG(OLDTAB) 桁 1 から 5 のタブを単一文字として 解釈します (固定ソース形式のプログラムの場合)。
デフォルト:
タブは 1 つ以上の文字として解釈されます。
-qxflag=oldtab オプション
-qxlf77=settings XLF77(settings) 変更された言語セマンティクスと I/O データ形式について、 FORTRAN 77 との互換性を提供します。 これらの変更のほとんどは、Fortran 90 標準で必要です。
デフォルト:
デフォルト・サブオプションは、xlf90xlf90_rxlf95xlf95_rf90、 および f95 コマンドの場合は blankpad、nogedit77、 nointarg、nointxor、 leadzero、nooldboz、 nopersistent、 および nosofteof で、xlfxlf_r、 および f77/fort77 コマンドの場合は正確にこの逆です。
-qxlf77 オプション
-qxlf90=
  {[no]signedzero |
  [no]autodealloc}
XLF90(
  {[no]signedzero |
  [no]autodealloc})
言語の特定の機能について、コンパイラーが Fortran 90 または Fortran 95 レベルのサポートを提供しているかどうかを 判別します。
デフォルト:
xlf95xlf95_r、 および f95 呼び出しコマンドでは、 デフォルト・サブオプションは signedzeroautodealloc です。 他のすべての呼び出しコマンドでは、デフォルト・サブオプションは nosignedzeronoautodealloc です。
-qxlf90 オプション

浮動小数点処理のためのオプション

システムの浮動小数点のパフォーマンスと精度を最大限に利用するために、 コンパイラーおよび XLF コンパイル済みプログラムが浮動小数点計算をどのように実行するかを詳しく指定しなければならない場合もあります。

関連情報:
-qflttrap オプションおよび 『他のシステムの浮動小数点結果の複写』を参照してください。
表 10. 浮動小数点処理のためのオプション
コマンド行 オプション @PROCESS ディレクティブ 説明 トピック参照
-qfloat=options FLOAT(options) 特定のタイプの浮動小数点計算を処理するために、コンパイラーがどのようにコードの生成または最適化を 行うかを決定します。
デフォルト:
デフォルト・サブオプション は、nocomplexgccnofltintfoldnohsfltmafnonansnorrmnorsqrt、 および nostrictnmaf で、これらの設定の中には、-O3 最適化がオンの場合、または -qarch=ppc の場合は異なるものもあります。
-qfloat オプション
-qieee={ Near
  | Minus
  | Plus
  | Zero}
-y{n | m | p | z}
IEEE({Near
  | Minus
  | Plus
  | Zero})
コンパイル時に定数浮動小数点式を評価するときにコンパイラーが使用する丸めモードを指定します。
デフォルト:
-qieee=near
-qieee オプション
-qstrictieeemod
-qnostrictieeemod
STRICTIEEE-
MOD
NOSTRICTIEEE-
MOD
ieee_arithmetic および ieee_exceptions 組み込み モジュール用の Fortran 2003 IEEE 演算規則を コンパイラーに順守させるかどうかを指定します。
デフォルト:
-qstrictieeemod
-qstrictieeemod オプション

リンクを制御するオプション

これらのオプションは、コンパイル中に ld コマンドがオブジェクト・ファイルを処理する方法を制御します。 これらのオプションの中には、ld に渡されて、 コンパイラーによる処理がまったく行われないものもあります。

コンパイラーは認識されないオプションをリンカーに渡すので、 コンパイラー・コマンド行に実際に ld オプションを入れることができます。

この表では、* は、XL Fortran コンパイラーではなく ld コマンドによってオプションが処理されることを示します。 これらのオプションの詳細については、ld コマンドに 関する man ページに記載されています。

表 11. リンクを制御するオプション
コマンド行 オプション @PROCESS ディレクティブ 説明 トピック参照
-c   実行可能ファイルの代わりに、オブジェクト・ファイルを作成します。
デフォルト:
実行可能ファイルを作成するコンパイルおよびリンク・エディット
-c オプション
-Ldir*   指定されたディレクトリーの -l オプションで指定されたライブラリーを調べます。
デフォルト:
/usr/lib
-L オプション
-lkey*   指定されたライブラリー・ファイル (key はファイル libkey.so、 または libkey.a を選択します) を検索します。
デフォルト:
xlf.cfg にリストされているライブラリー
-l オプション
-qpic
-qnopic
  共用ライブラリーで使用できる位置独立コード (PIC) を生成します。
デフォルト:
32 ビット・モードでは -qnopic。 64 ビット・モードでは -qpic=small
-qpic オプション

他のコンパイラー操作を制御するオプション

これらのオプションを使用すると、次を実行する際に役立ちます。

表 12. コンパイラーの内部操作を制御するためのオプション
コマンド行 オプション @PROCESS ディレクティブ 説明 トピック参照
-Bprefix   コンパイル中に使用する実行可能ファイル (コンパイラー、リンカーなど) の代替パス名を決定します。これは -t オプションと組み合わせて使用することができ、 これらのコンポーネントのどれが -B の影響を受けるかを決定します。
デフォルト:
これらのコンポーネントのパスは、構成ファイルと $PATH 環境変数、またはその両方に定義されます。
-B オプション
-Fconfig_file
-Fconfig_file:
  stanza
-F:stanza
  代替構成ファイルを指定するか、 その構成ファイル内で使用するスタンザを指定します (またはその両方を指定します)。
デフォルト:
構成ファイルは /etc/opt/ibmcmp/xlf/10.1/xlf.cfg ですが、 スタンザはコンパイラーを実行するコマンドの名前によって異なります。
-F オプション
-q32   32 ビット・ターゲット・アーキテクチャーのビット・モードと命令セットを設定します。 -q32 オプション
-q64   64 ビット・ターゲット・アーキテクチャーのビット・モードと命令セットを設定します。 -q64 オプション
-tcomponents   -B オプションで指定されたプレフィックスを、指定されたコンポーネントに適用します。 components には、セパレーターを持たない 1 つ以上の F、 c、 d、 I、 a、 h、 b、 z、または l を指定でき、それぞれ、 C プリプロセッサー、コンパイラー、 -S 逆アセンブラー、 プロシージャー間分析 (IPA) ツール、アセンブラー、ループ・最適化プログラム、コード生成プログラム、 バインド・プログラム、およびリンカーに対応します。
デフォルト:
-B プレフィックスがあれば、それがすべてのコンポーネントに適用されます。
-t オプション
-Wcomponent,options   リストされたオプションを、コンパイル中に実行されるコンポーネントに渡します。 component は、 F、c、 d、I、a、z、または l のいずれかで、それぞれ、 C プリプロセッサー、コンパイラー、 -S 逆アセンブラー、 プロシージャー間分析 (IPA) ツール、アセンブラー、バインド・プログラム、およびリンカーに 対応します。
デフォルト:
これらのプログラムに渡されるオプションは次のとおりです。
  • 構成ファイルにリストされているオプション
  • コマンド行上の認識されないオプション (リンカーに渡される)
-W オプション

廃止、または不適オプション

次に示すオプションは、 以下の理由のいずれかまたは両方のために廃止されています。

注:
  1. これらのオプションのいずれかを既存の makefile またはコンパイル・スクリプトで使用している場合は、 将来起こり得る問題を回避するために、できる限り早急に新しい代替オプションへマイグレーションする必要があります。
  2. -qpositionappend サブオプションは、appendunknown に代わりました。
表 13. 廃止、または不適オプション
コマンド行 オプション @PROCESS ディレクティブ 説明 トピック参照
-qcharlen=
   length
CHARLEN
   (length)
これは廃止されたオプションです。依然として受け入れますが、無効です。 文字定数および定数のサブオブジェクトの最大長は 32 767 バイト (32 KB) です。 文字変数の最大長は、268 435 456 バイト (256 MB) です (32 ビット・モードの場合)。 また文字変数の最大長は 64 ビット・モードで 2**40 バイトです。 この限界は常に有効で、長ストリングを含むプログラムに移植性の問題が生じるのを防ぐのに十分な大きさと なっています
-qrecur
-qnorecur
RECUR
NORECUR
このオプションの使用はお勧めできません。 外部サブプログラムを再帰的に呼び出すことができるかどうかを指定します。

新規プログラムの場合、RECURSIVE キーワード を使用すると、標準適応した方法で再帰的プロシージャーを使用することができます。 -qrecur オプションを指定すると、コンパイラーはすべてのプロシージャーが再帰的であると見なしてしまいます。 再帰的プロシージャーのコード生成の効率が落ちる可能性があります。RECURSIVE キーワードを使用すれば、どのプロシージャーを再帰的にするかを正確に指定することができます。

-qrecur オプション