コンパイラ指令は、特別な動作をするようにコンパイラに指示します。「プラグマ」とも呼ばれます。
コンパイラ指令は 1 行または複数行のテキストとしてソースプログラムに挿入されます。コンパイラ指令は一見注釈に似ていますが、注釈にはない特別な文字が付加されています。Fortran 95 以外のほとんどのコンパイラでは指令を注釈として扱うので、コードの一定の移植性は保たれます。
Fortran の指令については、表 C–1 にまとめられています。
f95 は、「1.9 コマンド行ヘルプ」で説明した指令に加え、独自の特別な指令を認識します。これらの指令は、次のような構文になります。
!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 |
並列化の指令は、コンパイラに次の DO ループの並列化処理を指示する特別な注釈です。これらに関する概要は、付録 D と『Fortran プログラミングガイド』に記載されています。Sun および Cray 形式の並列化指令は、非推奨になり、廃止されました。OpenMP の Fortran API 指令および並列化モデルを使用してください。OpenMP 指令の並列化については、『OpenMP API ユーザーズガイド』を参照してください。