JavaScript is required to for searching.
ナビゲーションリンクをスキップ
印刷ビューの終了
Oracle Solaris Studio 12.3: Fortran ユーザーズガイド     Oracle Solaris Studio 12.3 Information Library (日本語)
search filter icon
search icon

ドキュメントの情報

はじめに

1.  概要

2.  Solaris Studio Fortran の使用

2.1 クイックスタート

2.2 コンパイラの起動

2.2.1 コンパイルとリンクの流れ

2.2.2 ファイル名の拡張子

2.2.3 ソースファイル

2.2.4 ソースファイルプリプロセッサ

2.2.5 コンパイルとリンクの分離

2.2.6 コンパイルとリンクの整合性

2.2.7 認識されないコマンド行引数

2.2.8 モジュール

2.3 指令

2.3.1 一般的な指令

2.3.1.1 C 指令

2.3.1.2 IGNORE_TKR 指令

2.3.1.3 UNROLL 指令

2.3.1.4 WEAK 指令

2.3.1.5 OPT 指令

2.3.1.6 PIPELOOP[= n] 指令

2.3.1.7 PREFETCH 指令

2.3.1.8 ASSUME 指令

2.3.2 並列化の指令

2.3.2.1 OpenMP 並列化指令

2.3.2.2 従来の Sun および Cray 並列指令

2.3.3 IVDEP 指令

2.4 ライブラリインタフェースと system.inc

2.5 コンパイラの利用方法

2.5.1 ハードウェアプラットフォームの特定

2.5.2 環境変数の使用

2.5.3 メモリーサイズ

2.5.3.1 スワップ領域の制限

2.5.3.2 スワップ領域の増加

2.5.3.3 仮想メモリーの制御

2.6 ユーザー指定のデフォルトオプションファイル

3.  Fortran コンパイラオプション

4.  Solaris Studio Fortran の機能および拡張機能

5.  FORTRAN 77 の互換性: Solaris Studio Fortran への移行

A.  実行時のエラーメッセージ

B.  各リリースにおける機能変更

C.  Fortran 指令の要約

索引

2.2 コンパイラの起動

シェルプロンプトで起動される単純なコンパイラコマンドの構文は次のとおりです。

f95 [options] files...

ここで、files… には、拡張子として .f.F.f90.f95.F90.F95、または .for が付いている 1 つ以上の Fortran のソースファイル名を指定します。options には、1 つ以上のコンパイラオプションフラグを指定します。.f90 または .f95 の拡張子が付いているファイルは、f95 コンパイラだけが認識する「自由形式」の Fortran 95 ソースファイルです。

次の例では、f95 は 2 つのソースファイルをコンパイルし、実行時デバッグを有効な状態にして growth という名前の実行可能ファイルを生成します。

demo% f95 -g -o growth growth.f fft.f95

注 - f95 または f90 コマンドのいずれを使用しても、Fortran コンパイラを起動できます。


新規: コンパイラは、拡張子が .f03 または .F03 のソースファイルも受け入れます。これらは、.f95 および .F95 と同等とみなされ、ソースファイルに Fortran 2003 拡張機能が含まれていることを示す手段として利用できます。

コンパイラが受け付ける各種ソースファイルの拡張子については、「2.2.2 ファイル名の拡張子」を参照してください。

2.2.1 コンパイルとリンクの流れ

前述の例では、コンパイラは growth.o fft.o のロードオブジェクトファイルを自動的に生成し、次にシステムリンカーを起動して growth という実行可能プログラムファイルを生成します。

コンパイルの終了後、オブジェクトファイル growth.offt.o が残ります。このため、ファイルの再リンクや再コンパイルを簡単に行うことができます。

コンパイルが失敗すると、エラーごとにメッセージが返されます。エラーがあるソースファイルについては、.o ファイルや実行可能プログラムファイルは作成されません。

2.2.2 ファイル名の拡張子

コマンド行で入力するファイル名の接尾辞によって、コンパイラがそのファイルをどのように処理するかが決まります。次の表に示されていない拡張子の付いたファイル名、および拡張子のないファイル名は、リンカーに渡されます。

表 2-1 Fortran コンパイラが認識可能なファイル名の拡張子

接尾辞
言語
処理
.f
Fortran 77 または Fortran 95 固定形式
Fortran ソースファイルをコンパイルし、オブジェクトファイルを現在のディレクトリに出力する。オブジェクトファイルのデフォルト名は、ソースファイル名に接尾辞 .o を付けたもの
.f95.f90
Fortran 95 自由形式
.f と同じ
.f03
Fortran 2003 自由形式
.f と同じ
.for
Fortran 77 または Fortran 95 固定形式
.f と同じ
.F
Fortran 77 または Fortran 95 固定形式
コンパイルの前に、FORTRAN 77 のソースファイルを Fortran または C のプリプロセッサで処理する
.F95.F90
Fortran 95 自由形式
Fortran がコンパイルする前に、Fortran 95 自由形式のソースファイルを Fortran または C のプリプロセッサで処理する
.F03
Fortran 2003 自由形式
.F95 と同じ
.s
アセンブラ
アセンブラでソースファイルをアセンブルする
.S
アセンブラ
アセンブルする前にアセンブラのソースファイルを C プリプロセッサで処理する
.il
インライン展開
インライン展開コードのテンプレートファイルを処理する。コンパイラはテンプレートを使って、選択されたルーチンのインライン呼び出しを展開します(テンプレートファイルは特殊なアセンブラファイル。inline(1) マニュアルページを参照)。
.o
オブジェクトファイル
オブジェクトファイルをリンカーに渡す
.a.so.so.n
ライブラリ
ライブラリの名前をリンカーに渡す。.a ファイルは静的ライブラリ、.so.so.n ファイルは動的ライブラリ

Fortran 95 自由形式については、「4.1 ソース言語の機能」を参照してください。

2.2.3 ソースファイル

Fortran コンパイラでは、コマンド行に複数のソースファイルを指定することができます。「コンパイルユニット」とも呼ばれる 1 つのソースファイル中に、複数の手続き (主プログラム、サブルーチン、関数、ブロックデータ、モジュールなど) を記述することができます。アプリケーションは、1 つのファイルに 1 つのソースコード手続きを記述して構成することも、同時に処理される手続きを 1 つのファイルにまとめて構成することもできます。これらの構成方法の長所と欠点については、『Fortran プログラミングガイド』を参照してください。

2.2.4 ソースファイルプリプロセッサ

f95 は、fppcpp の 2 つのソースファイルプリプロセッサをサポートしています。いずれのプリプロセッサもコンパイラから起動され、ソースコード「マクロ」とシンボリック定義を展開してから、コンパイルを開始します。コンパイラでは、デフォルトで fpp が使用されます。-xpp=cpp オプションを指定すると、fpp から cpp にデフォルトを変更できます。-Dname オプションの説明も参照してください。

fpp は Fortran 言語専用のソースプリプロセッサです。詳細は、fpp(1) のマニュアルページを参照してください。これは、デフォルトでは、.F.F90.F95、または .F03 という拡張子の付いたファイルで起動されます。

fpp のソースコードは、次の Netlib Web サイトにあります。

http://www.netlib.org/fortran/

標準的な Unix C 言語のプリプロセッサについては、cpp(1) を参照してください。Fortran のソースファイルでは、fpp よりも cpp を使用することをお勧めします。

2.2.5 コンパイルとリンクの分離

コンパイルとリンクをそれぞれ個別に実行することができます。-c オプションを指定すると、ソースファイルをコンパイルして .o オブジェクトファイルが生成されますが、実行可能ファイルは生成されません。-c オプションを指定しない場合、コンパイラはリンカーを起動します。このようにコンパイルとリンクを別々に実行すると、次の例に示すように、1 つのファイルを修正するための目的で全体を再コンパイルする必要がなくなります。

1 つのファイルをコンパイルし、別の手順でほかのオブジェクトファイルとリンクします。

demo% f95 -c file1.f                          (Make new object file)
demo% f95 -o prgrm file1.o file2.o file3.o         (Make executable file)

リンク時には (2 行目)、完全なプログラムを作成するのに必要なすべてのオブジェクトファイルを必ず 指定してください。オブジェクトファイルが不足していると、未定義の外部参照エラー (ルーチンの不足) によって、リンクが失敗します。

2.2.6 コンパイルとリンクの整合性

コンパイルとリンクを別のステップで行う場合は、整合性のあるコンパイルとリンクのオプションを選択することが重要です。オプションによっては、プログラムの一部をコンパイルするときに使用したら、リンクするときにも同じオプションを使用する必要があります。すべてのソースファイルを、リンクも含めて指定してコンパイルする必要のあるオプションが数多くあります。

第 3 章では、このようなオプションについて説明します。

例: -fast を使用して sbr.f をコンパイルし、C ルーチンをコンパイルしてから、別のステップでリンクします。

demo% f95 -c -fast sbr.f
demo% cc -c -fast simm.c
demo% f95 -fast sbr.o simm.o        link step; passes -fast to the linker

2.2.7 認識されないコマンド行引数

コンパイラで認識されないコマンド行の引数はすべて、リンカーオプション、オブジェクトプログラムファイル名、またはライブラリ名である可能性があるとみなされます。

基本的には次のように区別されます。

例:

demo% f95 -bit move.f           <- -bit is not a recognized f95 option
f95: Warning: Option -bit passed to ld, if ld is invoked, ignored otherwise
demo% f95 fast move.f           <- The user meant to type -fast
ld: fatal: file fast: cannot open file; errno=2
ld: fatal: File processing errors.  No output written to a.out

最初の例では、-bitf95 では認識されず、このオプションはこれを解釈しようとするリンカー (ld) に渡されます。ld では 1 文字のオプションを続けて並べることもできるため、-bit-b -i -tと解釈されます。-b、-i、-t はいずれも ld の有効なオプションであるからです。これは、ユーザーが意図している場合と、意図していない場合とがあります。

2 つ目の例では、f95 の共通のオプションとして -fast を指定しようとしていますが、先頭のハイフンが抜けています。この場合も、コンパイラは引数をリンカーに渡し、リンカーはこれをファイル名と解釈します。

前述の例から、コンパイラコマンドを指定する場合には、十分な注意が必要であることがわかります。

2.2.8 モジュール

f95 は、ソースファイル中にある各 MODULE 宣言に対して、それぞれモジュール情報ファイルを自動的に作成し、USE 文で引用されるモジュールを検索します。検出されたモジュール (MODULE module_name) ごとに、コンパイラは、対応するファイル module_name.mod を現在のディレクトリ内に生成します。たとえば、ファイル mysrc.f95 中にある MODULE list 単位のモジュール情報ファイル list.modf95 によって生成されます。

モジュール情報ファイルを記述および検索するためのデフォルトのパスの設定方法については、-Mpath および -moddir dirlist オプションフラグを参照してください。

すべてのコンパイルユニットで暗黙的に MODULE 宣言を行う方法については、-use コンパイラオプションを参照してください。

fdumpmod(1) コマンドを使用すると、.mod モジュール情報ファイルの内容を表示できます。

詳細は、「4.9 モジュールファイル」を参照してください。