- Fortran 2018に完全対応
- IMPLICIT NONE (EXTERNAL)が導入された。
- IMPORT,NONE; IMPORT,ALL; IMPORT,ONLYにより、親子結合の制御が可能となった。
- 16進数浮動小数点の入出力(EXは出力用)が導入された。
- IEEE算術のサポートが拡張され、多数の新しい手続きが追加された: IEEE_FMA, IEEE_GET_MODES, IEEE_INT, IEEE_MAX_NUM, IEEE_MAX_NUM_MAG, IEEE_MIN_NUM, IEEE_MIN_NUM_MAG, IEEE_REAL, IEEE_SET_MODES, IEEE_SIGNBIT, IEEE_{QUIET,SIGNALING}_{EQ,NE,LT,LE,GT,GE}。また、IEEE_RINT関数には、全体の丸めモードを変更せずに丸めを指定できるようになるオプションのROUND引数が追加された。
- 乱数生成器が像ごとに設定され、共有されなくなった。乱数生成器を初期化できるようになる新しい組込み手続きRANDOM_INITが導入された。
このリリースでの小さな追加内容:
- 最小幅(E0.d, ES0.d, EN0.d等)および/または最小指数幅(Ew.dE0等)で実数をE形式でフォーマットできるようになった。
- RANDOM_SEEDを除く任意の種類の整数/論理が組込み関数で使用できるようになった。
- 総称引用仕様を簡潔に宣言できるGENERIC文が追加された。
- 新たなOUT_OF_RANGE組込み関数を使用して変換エラーをチェックできるようになった。
- DO CONCURRENT文に局所性指定子LOCAL, LOCAL_INIT, SHAREDを指定できるようになり、構造内で参照される変数の扱いを制御できるようになった。
- モジュールからインポートされる項目のデフォルトアクセシビリティを"PUBLIC module-name"または"PRIVATE module-name"で設定できるようになった。
非常に小さな追加内容:
- 整数、論理、文字にG0.d編集記述子が許可されるようになった。
- IMAGE_INDEX組込み関数が、TEAMまたはTEAM_NUMBER引数を持てるようになった。
- ISO_C_BINDINGの名前付き定数C_PTRDIFF_Tが、C型c_ptrdiff_tと相互運用できるようになった。
- ISO_C_BINDINGで、C_LOCおよびC_FUNLOCが純粋関数となり、C_F_POINTERサブルーチンが非純粋となった。
- 配列構築子およびDATA文中の暗示的DOループで整数型-specを指定できるようになった。
- 算術IF文と非ブロックDO構造が削除され、FORALL構造、FORALL文、およびラベル付きDO文が廃止予定であると報告されるようになった。
- 非標準の組込みモジュールの使用に関する拡張メッセージが生成されるようになった。
- Fortran 2023の一部サポート
- 1行あたり最大10000文字までの長さをサポート。
- SELECTED_LOGICAL_KIND組込み関数が、特定のサイズの論理型(ビット単位)の種別番号を返す。
- ISO_FORTRAN_ENVモジュールには、8ビット、16ビットなどの論理型を指定するための定数LOGICAL8, LOGICAL16, LOGICAL32, LOGICAL64が含まれる。
- AT編集記述子により、後続の空白を省略して文字データを出力できるようになった。
- OpenMPのサポート向上
- 現時点でOpenMP 4.0および4.5が部分的にサポートされている。これにはSIMDおよびTARGET構造、DO SIMDおよびTARGET DATA、LINEAR節などが含まれる。今後のアップデートでOpenMP 4.0および4.5のサポートが完了する予定。
- その他のコンパイラの強化
- 診断の改善およびエラーチェックの追加。
- デフォルトのFortran言語レベルがFortran 2018となった。
- 乱数生成器がdoubleおよびquad精度でより多くのエントロピーを有するようになった。
- -glineオプションを使用したエラー時のトレースバックが、-coarrayまたは-openmpと共に使用可能になった。
- 過長なコメントと過長な文のテキストが別々に報告されるようになった。
- -xldargオプションにより、リンカフェーズの引数を特定の位置に渡せるようになった。
- -fpplonglinesオプションにより、fppが長い行を分割しないように指示できるようになった。
- -w=longlinesオプションにより、長いソース行に関する警告を抑制できるようになった。
- -u=allオプションにより、-u=サブオプションをすべて指定できるようになった。
- -u=externalオプションにより、IMPLICIT NONE (EXTERNAL)をすべての場所で指定できるようになった。
- -u=localityオプションにより、すべてのDO CONCURRENTにおいてDEFAULT (NONE)を指定できるようになった。
- -Warn=double_real_literalオプションにより、デフォルトの倍精度リテラルが報告されるようになった。
- -Warn=unkind_real_literalオプションにより、デフォルトの実リテラルが報告されるようになった。
- -Error=オプションにより、特定の警告メッセージをエラーとして扱うことが指定できるようになった。
- 廃止予定であるCHARACTER*構文の使用がデフォルトで報告されるようになった。これは-nonstrictオプションにより抑制できる。
- ツールの強化
- -elcase=オプションにより、指数文字のケースをキーワードのケースとは別に制御できるようになった。
- -canonicalise_floating_literalsオプションにより、実リテラル定数を一貫してフォーマットできるようになった
- PolishがOpenMP DO構造の本体をインデントするようになった。
- 引数のないサブルーチンおよび呼び出しに括弧を追加できるようになった。
- 依存解析用のオプション-odirにより、Makefileの依存性を作成する際のオブジェクトファイルの位置を指定できるようになった。
- 以前のリリースとの互換性
nAG Fortranリリース7.2は、リリース7.1と完全に互換性がある。
より詳しくはリリースノート7.2をご参照下さい。