Sun Studio 12: Fortran ユーザーズガイド

4.8 指令

コンパイラ指令は、特別な動作をするようにコンパイラに指示します。「プラグマ」とも呼ばれます

コンパイラ指令は 1 行または複数行のテキストとしてソースプログラムに挿入されます。コンパイラ指令は一見注釈に似ていますが、 注釈にはない特別な文字が付加されています。Fortran 95 以外のほとんどのコンパイラでは指令を注釈として扱うので、コードの一定の移植性は保たれます。

Sun 形式の並列指令では、f95 -explicitpar のデフォルトです。Cray 形式の指令に切り換えるには、コンパイラコマンド行フラグの -mp=cray を使用してください。OpenMP 指令を使用した明示的な並列化では、-openmp を指定してコンパイルしてください。

Fortran の指令については、表 C–1 にまとめられています。

4.8.1 f95 の特殊な指令行の書式

f95 は、「1.9 コマンド行ヘルプ」で説明した指令に加え、独自の特別な指令を認識します。これらの指令は、次のような構文になります。


!DIR$ d1, d2, …

4.8.1.1 ソースが固定形式の場合

4.8.1.2 ソースが自由形式の場合

これらのことから、!DIR$ を 1 桁目から 5 桁目に記述しておけば、自由形式または固定形式のどちらのソースでも機能することがわかります。

4.8.2 FIXED 指令と FREE 指令

指令行のあとに続くソース行の書式を指定します。

4.8.2.1 スコープ

指令が適用される範囲は、ファイル内に指令が出現してから最後までの部分、または次に FREE あるいは FIXED が出現するまでの部分です。

4.8.2.2 使用法

4.8.2.3 制限事項

FREE 指令と FIXED 指令には次の制限事項があります。

例: FREE 指令を指定します。


!DIR$ FREE
    DO i = 1, n
        a(i) = b(i) * c(i)
    END DO

4.8.3 並列化の指令

並列化の指令は、コンパイラに次の DO ループの並列化処理を指示する特別な注釈です。これらに関する概要は、付録 D と『Fortran プログラミングガイド』に記載されています。f95 は、OpenMP Fortran API 指令だけでなく、Sun および Cray 形式の並列化指令も認識します。OpenMP 指令の並列化については、『OpenMP API ユーザーズガイド』を参照してください。