XL Fortran ディレクティブは、コメント形式ディレクティブまたは非コメント形式ディレクティブの どちらかのグループに属します。
本節では、以下のコメント形式ディレクティブについて詳しく説明します。
COLLAPSE | SNAPSHOT |
SOURCEFORM | SUBSCRIPTORDER |
本節で説明するもの以外のコメント形式ディレクティブについては、ディレクティブおよび最適化を参照してください。
>>-trigger_head--trigger_constant--directive------------------->< |
trigger_constant のデフォルト値は IBM* です。
-qsmp コンパイラー・オプションをこれらの呼び出しコマンドと併用する場合、 オプション -qdirective=IBM*:SMP$:$OMP:IBMP:IBMT がデフォルトでオンになります。 -qsmp=omp オプションを指定した場合、デフォルトでオプション -qdirective=$OMP を 設定したときと同じようになります。 -qdirective コンパイラー・オプションで代替または追加の trigger_constant を指定することもできます。 詳細については、「XL Fortran ユーザーズ・ガイド」の -qdirective コンパイラー・オプションを 参照してください。
すべてのコメント形式ディレクティブ (デフォルト trigger_constant を使用するディレクティブ以外) は、 コンパイラーによってコメントとして見なされます。 ただし、該当する trigger_constant が -qdirective コンパイラー・オプションによって 定義されている場合は例外です。 結果として、これらのディレクティブを含むコードは、 非 SMP 環境に移植することができます。
XL Fortran は、IBM(R) での解釈による OpenMP 仕様をサポートします。 コードの移植性を最大限にするために、 可能な限りこれらのディレクティブを使用することをお勧めします。 これらのディレクティブは、OpenMP の trigger_constant、 $OMP と一緒に使用してください。 この trigger_constant は、 他のディレクティブとは使用しないでください。
XL Fortran にはさらに trigger_constant の IBMP および IBMT が 含まれます。-qsmp コンパイラー・オプションを使用してコンパイルする場合、 コンパイラーは IBMP を認識します。 IBMP は、SCHEDULE ディレクティブ、および OpenMP ディレクティブの IBM 拡張と一緒に使用してください。 -qthreaded コンパイラー・オプションを使用してコンパイルする場合、 コンパイラーは IBMT を認識します。xlf_r、 xlf90_r、 または xlf95_r 呼び出しコマンドのデフォルトは IBMT です。 これは THREADLOCAL ディレクティブと一緒に使用することをお勧めします。
XLF ディレクティブには、他のベンダーと共通のディレクティブがあります。 これらのディレクティブをコードで使用すると、ベンダーが選択したどの trigger_constant でも 使用することができます。 -qdirective コンパイラー・オプションを使用してトリガー定数を指定すると、ベンダーが選択した trigger_constant を使用可能にすることができます。 代替 trigger_constant の指定について詳しくは、「XL Fortran ユーザーズ・ガイド」の -qdirective コンパイラー・オプションを参照してください。
trigger_head は、Fortran 90 の自由ソース形式または固定ソース形式のいずれかのコメント行の規則に従います。 trigger_head が ! である場合、1 桁目に入れる必要はありません。 trigger_head と trigger_constant の間にブランクを入れないでください。
directive_trigger (trigger_head を trigger_constant、!IBM* と 組み合わせて定義したものなど)、およびすべてのディレクティブ・キーワードは、大文字だけ、小文字だけ、 大文字小文字の混合のいずれでも指定できます。
インライン・コメントをディレクティブ行に指定できます。
!IBM* INDEPENDENT, NEW(i) !This is a comment
ディレクティブは、同じ行の別のステートメントまたは行の後に入れることはできません。
コメント形式ディレクティブはすべて、継続することができます。 ディレクティブを後続のステートメントに組み込んだり、ステートメントを後続のディレクティブに組み込むことは できません。
すべての後続行において directive_trigger を指定しなければなりません。 ただし、後続行上の directive_trigger は、後続行で使用されている directive_trigger と 同一である必要はありません。 たとえば、次のようになります。
!IBM* INDEPENDENT & !TRIGGER& , REDUCTION (X) & !IBM*& , NEW (I)
これは以下と同等です。
!IBM* INDEPENDENT, REDUCTION (X), NEW (I)
これは、IBM* と TRIGGER の両方がアクティブ trigger_constant である場合です。
詳細については、行およびソース形式を参照してください。
ディレクティブは、自由ソース形式または固定ソース形式のコメントとして (現行のソース形式によって異なる) 指定できます。
trigger_head が C、c、* のいずれかである場合は、1 桁目に入れる必要があります。
固定ソース形式の trigger_constant の最大長は、1 行以上継続するディレクティブの場合は 4 です。 この規則は後続行にのみ適用され、最初の行には適用されません。 最初の行の場合、trigger_constant の最大長は 15 です。 ただし、最初の行のトリガーの最大長は 4 にすることをお勧めします。 許容最大長の 15 は後方互換性のために設定されているものです。
trigger_constant の長さが 4 以下の場合、コメント・ディレクティブの最初の行の 6 桁目には ホワイト・スペースまたはゼロのどちらかが必要です。 長さが 5 以上の場合、6 桁目にある文字は trigger_constant の一部になります。
コメント・ディレクティブの継続行の directive_trigger は、1 〜 5 桁目に入れる必要があります。 継続行の 6 桁目には、ホワイト・スペースやゼロ以外の文字が必要です。
詳細については、固定ソース形式を参照してください。
trigger_constant の最大長は 15 です。
行の最後のアンパーサンド (&) は、ディレクティブが続くことを示します。 ディレクティブ行を続ける場合は、directive_trigger をすべての後続行の最初に入れなければなりません。 後続行をアンパーサンドで始める場合でも、directive_trigger をアンパーサンドの前に入れる必要があります。 たとえば、次のようになります。
!IBM* INDEPENDENT & !IBM*& , REDUCTION (X) & !IBM*& , NEW (I)
詳細については、自由ソース形式を参照してください。
本節では、以下の非コメント形式ディレクティブについて詳しく説明します。
EJECT | INCLUDE |
#LINE | @PROCESS |
>>-directive--------------------------------------------------->< |
コンパイラーは、非コメント形式のディレクティブを必ず認識します。
非コメント形式ディレクティブは継続行を持つことができません。
付加的なステートメントをディレクティブと同じ行に入れることは できません。