コンパイラ指令は、特別な動作をするようにコンパイラに指示します。ディレクティブはプラグマとも呼ばれます。
コンパイラ指令は 1 行または複数行のテキストとしてソースプログラムに挿入されます。コンパイラディレクティブは一見注釈に似ていますが、注釈にはない特別な文字が付加されています。Fortran 95 以外のほとんどのコンパイラでは指令を注釈として扱うので、コードの一定の移植性は保たれます。
すべての Fortran ディレクティブについてのサマリーは、Fortran ディレクティブのサマリーを参照してください。
f95 は、コマンド行ヘルプで説明したディレクティブに加え、独自の特別なディレクティブを認識します。これらの指令は、次のような構文になります。
!DIR$ d1, d2, …
指令を 7 桁目以降に記述します。
73 桁目以降は無視されます。
最初の指令行の 6 桁目は空白です。
継続指令行の 6 桁目は空白以外の文字です。
!DIR$ のあとに空白を 1 つ付けて、行の任意の位置に記述できます。
!DIR$ 文字は、その行の空白でない最初の文字となります。
指令は空白のあとに記述します。
新たに始まる指令行では、!DIR$ の直後に空白、タブ、または改行が続きます。
ディレクティブの継続行では、!DIR$ の直後に空白、タブ、改行以外の文字が続きます。
これらのことから、!DIR$ を 1 桁目から 5 桁目に記述しておけば、自由形式または固定形式のどちらのソースでも機能することがわかります。
指令行のあとに続くソース行の書式を指定します。
指令が適用される範囲は、ファイル内に指令が出現してから最後までの部分、または次に FREE あるいは FIXED が出現するまでの部分です。
1 つのソースファイル内でソースの書式を切り換えることができます。
INCLUDE ファイルのソースの書式を切り換えることができます。INCLUDE ファイルの先頭に指令を挿入します。INCLUDE ファイルが処理されたあとに、ソースの書式が INCLUDE ファイルの処理前の書式に戻ります。
FREE ディレクティブと FIXED ディレクティブには次の制限事項があります。
どちらの指令もコンパイラの指令行に単独で指定します (継続行にしないでください)。
どちらの指令もソースコードの任意の位置に指定できます。その他の指令は作用するプログラム中に指定する必要があります。
例: FREE 指令を指定します。
!DIR$ FREE DO i = 1, n a(i) = b(i) * c(i) END DO
並列化ディレクティブは、あるコードの領域の並列化を試行するようコンパイラに指示する特殊なコメントです。Sun および Cray 形式の並列化ディレクティブはいずれも廃止されて非推奨になりました。OpenMP ディレクティブおよび並列化モデルが推奨されます。OpenMP 並列化については、Oracle Developer Studio 12.5: OpenMP API ユーザーズガイドを参照してください。