以下の Fortran 90 機能は,Fortran の新しい機能です。
Fortran 90 は,行中で位置が特別の意味を持たない新しい自由形式を提供しています。予約済みの列はなく,行末に注釈を置くことができ,空白は状況によって独自の意味を持つことがあります (たとえば,PROGRAM の代わりとして P R O G R A M と宣言することはできません)。
詳細については,「自由形式」を参照してください。
Fortran 90 は,FORTRAN 77 の初期値設定プログラム単位よりも強力な (またその制限の多くを解消している) モジュールと呼ばれる新しい形式のプログラム単位を備えています。
モジュールは,1 つの大域名でグループ化された宣言の組です。モジュールにより,データ,手続,および手続インタフェースなどの関連する項目の組をカプセル化し,他のプログラム単位から利用できるようにすることができます。
モジュール項目を非公開にすることで,参照を制限し,データの抽象化を行い,より安全で移植性の高いプログラムを作成することができます。
詳細については,「MODULE PROCEDURE」を参照してください。
Fortran 90 では,組込みデータ型と構造型の任意の組み合わせから新しいデータ型を定義することができます。構造型オブジェクトは,全体として参照することもできますし,個々の成分を直接参照することもできます。
組込み演算子 (+ や * など) をユーザー定義データ型に拡張したり,任意の型の演算対象に対して新しい演算子を定義することもできます。
Fortran 90 では,組込み演算子と組込み関数は,任意の配列値演算対象 (全体配列または部分配列) に作用することができます。
配列に関する新機能として,全体的,部分的,および配列選別代入 (選択的代入を行うための WHERE 文を含む) と,配列値の定数および式があります。ユーザー定義の配列値関数を作成し,配列構成子を使って 1 次元配列の値を宣言し,配列を動的に割り付ける (ALLOCATABLE および POINTER 属性を使用) ことができます。
多次元配列の作成,配列の操作,配列に対する演算の実行,および配列が関与する計算 (たとえば,SUM は配列要素の和を計算します) のサポートを行う新しい組込み手続が用意されています。
Fortran 90 では,ユーザー定義手続を総称インタフェース宣言に入れることができます。これにより,ブロックの総称名を使って手続を引用することができます。
ブロック内の特定の手続の選択は,引数のプロパティに基づいて行われます。これは,総称組込み関数名が使用されているときに,特定の組込み関数が引数のプロパティに基づいて選択されるのと同じです。
詳細については,「手続の総称名の定義」を参照してください。
Fortran 90 のポインタは,データの動的な参照と処理を可能にする機構です。これにより,配列の大きさを動的に変更したり,構造体を互いにリンクしたりすることができます。
ポインタには任意の組込み型または構造型を持たせることができます。指示先に結合されたポインタは,ほとんどの式と代入中で使用することができます。
詳細については,「POINTER - Fortran 90/95」と「ポインタ代入」を参照してください。
Fortran 90 手続は,FUNCTION または SUBROUTINE 文で RECURSIVE キーワードが宣言されていれば,再帰的に呼び出すことができます。
詳細については,「プログラム単位と手続」を参照してください。
Fortran 90 手続はインタフェース宣言を含むことができます。インタフェース宣言は以下の目的に使用できます。
外部または仮手続の特性を記述する
手続の総称名を定義する
新しい演算子を定義する (または組込み演算子を拡張する)
新しい代入形式を定義する
詳細については,「手続インタフェース」を参照してください。
ユーザー定義のデータ型,演算子,および意味を使用することで,必要に応じて Fortran を拡張することができます。これらの新しいデータ型とその演算をモジュールにパッケージ化し,1 つまたは複数のプログラム単位から利用できるようにすることで,データの抽象化を実現することができます。
新しい機能と能力が追加されたことにより,一部の古い機能は冗長になり,最終的には廃止される可能性があります。たとえば,ASSIGN と,割当て形 GO TO 文の機能は,内部手続に置き換えた方が効果的です。また、Fortran の古い機能の中には,新しいハードウェア・アーキテクチャーでは最適な性能が得られないものもあります。
廃止予定事項については,「廃止事項と廃止予定事項」を参照してください。