| 関連情報 |
診断性能比較
NAG Fortran コンパイラと他社製Fortranコンパイラの比較
NAG Fortranコンパイラは非常に強力なユーザプログラム診断機能を持っています。 この機能により初期化忘れを始めとするユーザプログラムの誤りを見つけ出す他、 ポータビリティーを考えた場合に重要なFortran標準規格への非準拠を見つけ出します。
この強力な診断機能は、多くのNAG Fortran コンパイラをご利用いただくお客様が、NAGを選択する際に大きなキーポイントになっています。
ここではいくつかのサンプルコードで、他社製コンパイラとの比較を行います。本比較はWindows版のNAG Fortranコンパイラ(Fortran Builder)とWindows上で稼働する他メーカーのFortranコンパイラを比較しています。
下記のそれぞれのプログラムについてエラーの検出状況を ○ と × で示しています。
引数の整合性1 - 配列引数の寸法が一致しない
NAG:○ 他社I:× 他社P:× gfortran:×

引数の整合性2 - 文字引数の長さが一致しない
NAG:○ 他社I:× 他社P:× gfortran:×

引数の整合性3 - 同じファイル内での引数の型が一致しない
NAG:○ 他社I:○ 他社P:× gfortran:×

引数の整合性4 - 異なるファイルで引数の型が一致しない
NAG:○ 他社I:× 他社P:× gfortran:×


関数とサブルーチンの混同1 - 同じファイル内の関数をサブルーチンとして呼び出し
NAG:○ 他社I:○ 他社P:× gfortran:○

関数とサブルーチンの混同2 - 異なるファイルの関数をサブルーチンとして呼び出し
NAG:○ 他社I:○ 他社P:× gfortran:×


関数とサブルーチンの混同3 - 同じファイルのサブルーチンを関数として引用
NAG:○ 他社I:○ 他社P:× gfortran:○

関数とサブルーチンの混同4 - 異なるファイルのサブルーチンを関数として引用
NAG:○ 他社I:○ 他社P:× gfortran:×


定数の変更 - 定数引数に値を代入
NAG:○ 他社I:× 他社P:× gfortran:×

配列サイズの整合性 - 寸法が異なる配列を代入
NAG:○ 他社I:× 他社P:○ gfortran:○

領域外アクセス1 - 内部サブルーチンから配列の領域外をアクセス
NAG:○ 他社I:○ 他社P:○ gfortran:○

領域外アクセス2 - 大きさ引継ぎ配列の領域外をアクセス
NAG:○ 他社I:× 他社P:× gfortran:×

領域外アクセス3 - 文字引数の領域外をアクセス
NAG:○ 他社I:○ 他社P:× gfortran:○

DO制御変数1 - サブルーチン内でDOループ制御変数を変更
NAG:○ 他社I:× 他社P:× gfortran:×

DO制御変数2 - EQUIVALENCE経由でDOループ制御変数を変更
NAG:○ 他社I:× 他社P:× gfortran:×

ゼロ増分DO - DOループの刻みがゼロ
NAG:○ 他社I:○ 他社P:× gfortran:×

初期化忘れ1 - 割付け配列の初期化忘れ
NAG:○ 他社I:× 他社P:× gfortran:×

初期化忘れ2 - 配列の部分的な初期化忘れ
NAG:○ 他社I:× 他社P:× gfortran:×

初期化忘れ3 - 大きさ引継ぎ配列の初期化忘れ
NAG:○ 他社I:× 他社P:× gfortran:×

初期化忘れ4 - 共通ブロックの初期化忘れ
NAG:○ 他社I:× 他社P:× gfortran:×

初期化忘れ5 - 固定サイズの配列の初期化忘れ
NAG:○ 他社I:× 他社P:× gfortran:×

初期化忘れ6 - 外部サブルーチンのINTENT(OUT)引数の初期化忘れ
NAG:○ 他社I:○ 他社P:× gfortran:×

初期化忘れ7 - 内部サブルーチンのINTENT(OUT)引数の初期化忘れ
NAG:○ 他社I:○ 他社P:× gfortran:×

初期化忘れ8 - モジュール変数の初期化忘れ
NAG:○ 他社I:× 他社P:× gfortran:×

初期化忘れ9 - 保存配列の初期化忘れ
NAG:○ 他社I:× 他社P:× gfortran:×

初期化忘れ10 - サブルーチンに渡されたスカラー変数の初期化忘れ
NAG:○ 他社I:× 他社P:× gfortran:×

ぶら下がったポインタ - 既に解放された領域にポインタを通じて代入
NAG:○ 他社I:× 他社P:× gfortran:×

NAGコンパイラと他社の比較の集計結果
