Fortran 言語が進化するにつれて、古い機能のいくつかは、現在のプログラミングの必要に応じて調整され、新しい機能によってさらに効率よく処理されるようになるのはきわめて自然なことです。同時に、受け継がれてきた Fortran コードにかなりの投資がなされたことを考えると、ここで FORTRAN 77 の機能の一部を削除することはユーザーの必要を考慮していないことにもなります。このような理由で、XL Fortran は Fortran 90 標準および FORTRAN 77 標準の完全な上位互換となっています。 Fortran 95 では、Fortran 90 言語標準と FORTRAN 77 言語標準の機能の一部が削除されています。ただし、削除された機能に代わる有効な機能があるので、機能そのものは Fortran 95 から削除されていません。
Fortran 95 は、2 つの旧式の機能のカテゴリーを定義しています。つまり、「削除された機能」および「古くなった機能」です。「削除された機能」とは、Fortran 90 または FORTRAN 77 ではほとんど使用されていないと考えられるため、Fortan 95 ではサポートされなくなった機能です。
「古くなった機能」とは、現在でもよく使用されているものの、それに代わるさらに優れた新規の機能や方式を採用できる FORTRAN 77 の機能です。「古くなった機能」は、定義上では Fortran 95 標準でサポートされていますが、次期の Fortran 標準では「削除された機能」となるものもあります。プロセッサーは「削除された機能」を、言語の拡張機能としてサポートし続ける可能性もありますが、既存のコードを、よりよい方式を採用するように修正していかれることをお勧めします。
Fortran 90 は、以下の FORTRAN 77 機能を「古くなった機能」としています。
推奨する方式: 論理 IF ステートメント、IF 構造体、または CASE 構造体を使用してください。
推奨する方式: 整数タイプの変数および式を使用してください。
推奨する方式: READ ステートメントを使用してください。
推奨する方式: CASE 構造体で戻りコードを評価するか、またはプロシージャーからの戻りで計算 GO TO ステートメントを評価してください。
! FORTRAN 77 CALL SUB(A,B,C,*10,*20,*30) ! Fortran 90 CALL SUB(A,B,C,RET_CODE) SELECT CASE (RET_CODE) CASE (1)
·
·
·
CASE (2)
·
·
·
CASE (3)
·
·
·
END SELECT
推奨する方式: 内部プロシージャーを使用してください。
推奨する方式: END IF ステートメントの次のステートメントへの分岐。
推奨する方式: END DO または CONTINUE ステートメントを使って各ループを終了してください。
推奨する方式: 文字定数編集記述子を使用してください。
Fortran 95 は、以下の FORTRAN 77 機能を「古くなった機能」としています。
推奨する方式: 論理 IF ステートメント、IF 構造体、または CASE 構造体を使用してください。
推奨する方式: CASE 構造体で戻りコードを評価するか、またはプロシージャーからの戻りで計算 GO TO ステートメントを評価してください。
! FORTRAN 77 CALL SUB(A,B,C,*10,*20,*30) ! Fortran 90 CALL SUB(A,B,C,RET_CODE) SELECT CASE (RET_CODE) CASE (1)
·
·
·
CASE (2)
·
·
·
CASE (3)
·
·
·
END SELECT
推奨する方式: END DO または CONTINUE ステートメントを使って各ループを終了してください。