Fortran 90 では、FORTRAN 77 に新たに豊富な機能を追加しています。 Fortran 90 は、特定の作業を実行するために FORTRAN 77 よりも向上した技法または機能を提供しています。 FORTRAN 77 言語に対して Fortran 90 で新たに追加された主な機能の一部について、以下に概要を示します。
固定ソース形式 (FORTRAN 77 で定義されたもの) に加えて、Fortran 90 では、自由ソース形式を定義しています。この形式では、ステートメントはどのカラムからも開始でき、ブランクは有効となります。
詳細については、自由ソース形式を参照してください。
データ型の長さ指定 (たとえば、INTEGER*4) は、業界共通の拡張機能です。Fortran 90 では、文字以外の組み込みデータ型の精度と範囲、文字のデータ型で利用可能な文字セットを指定する機能を提供しています。 SELECTED_INT_KIND および SELECTED_REAL_KIND 組み込み関数とともに使用すると、パラメーターを使用するデータ型は、異なるプラットフォーム間で移植可能になります。
詳細については、型付きパラメーターおよび指定子を参照してください。
派生型はユーザー定義型で、そのコンポーネントは組み込み型またはその他の派生型、あるいはその両方です。派生型のオブジェクトは、組み込み機能の割り当て、 I/O、およびプロシージャーの引き数として使用できます。定義または拡張された組み込み操作で、派生型を使用すると、強力なデータ抽出機能が提供されます (たとえば、リンクされたリスト)。
詳細については、派生型を参照してください。
Fortran 90 では、配列式および割り当てを指定することができます。配列全体の一部である配列セクションを 1 つの配列として使用することができます。配列構造は、配列の値を指定するための簡略化された構文を提供しています。想定形状配列 (assumed-shape arrays)、据え置き形状配列 (deferred-shape arrays) および自動割り振り可能配列 (automatic arrays) によって、配列の使用に柔軟性を持たせています。 WHERE 構造体を使用して、配列式の計算および配列の割り当てをマスクしてください。
詳細については、第 4 章, 配列の概念を参照してください。
ポインターは、値ではなくメモリーのアドレスを参照します。ポインターは、リンクされたリストおよび動的配列を作成する手段を提供しています。組み込み型または派生型のオブジェクトをポインターとして宣言することができます。
詳細については、ポインター関連付けおよび POINTER (Fortran 90)を参照してください。
ストレージは、コンパイル時にポインターのターゲットおよび割り振り可能配列のために確保されません。 ALLOCATE および DEALLOCATE ステートメントを使用して、実行時にストレージの使用方法を制御することができます。また、ポインター割り当てを使用して、ポインターに関連する記憶スペースを変更することもできます。
詳細については、ALLOCATE、DEALLOCATE、および ポインターの割り当てを参照してください。
CASE 構造体では、実行するステートメント・ブロックの中から 1 つのみを選択するための簡略化された構文を提供しています。各 CASE ブロックのケース式は、構造体のケース式に照らして計算されます。
制御文節なしの DO ステートメントおよび DO WHILE 構造体は、その汎用性が高められています。さらに、CYCLE および EXIT ステートメントは、構造体内から実行される構造体を制御します。
制御構造体には名前を付けることができますが、これはネスト構造体で読みやすさを向上させ、構文チェックを行いやすくします。
詳細については、第 6 章, 制御構造を参照してください。
Fortran 90 では、プロシージャーを容易に使用するために多くの新しい機能を取り入れています。関数を使用して、組み込み演算子を拡張したり、新しい演算子を定義することができます。サブルーチンにより、組み込みの割り当てを拡張することができます。プロシージャーの実引き数をキーワードで指定することができ、仮引き数の意図的な使用やオプションであるか否かについて明示的に示すことができます。
仮プロシージャーまたは外部プロシージャーのインターフェースや特性をインターフェース・ブロックに明示することができます。汎用インターフェース・ブロックでは、実引き数の性質に基づいて、ブロック内で定義した特定のプロシージャーのいずれかにアクセスするために、参照する名前を指定することができます。
メインプログラムや他のサブプログラムに含まれる内部プロシージャーにより、ホスト・プロシージャーで定義されたエンティティーにアクセスする一方で、プログラムを区分することができます。
Fortran 90 では再帰的プロシージャーが可能です。関数およびサブルーチンは、直接または間接的に自らを呼び出すことができます。
詳細については、第 7 章, プログラム単位およびプロシージャーを参照してください。
モジュールは、データのカプセル化の手段およびデータに適用する操作を提供します。モジュールとは、実行不能プログラム単位のことで、これにはデータ・オブジェクトの宣言、派生型の定義、プロシージャー、およびプロシージャー・インターフェースを含めることができます。モジュールを使うと、あるエンティティーは特定のモジュール内でのみ使用して、その他のエンティティーは任意のプログラム単位からアクセスできるように指定することもできます。
詳細については、モジュールを参照してください。
Fortran 90 では、Fortran に対して新たに多くの組み込みプロシージャーを追加しています。たとえば、ある変形組み込みプロシージャーでは、強力な配列操作機能を提供します。新規に追加された豊富な照会機能により、エンティティーの特性を調べることができます。
詳細については、第 12 章, 組み込みプロシージャーを参照してください。