付録 A. 異なる標準の間の互換性

この情報は、FORTRAN 77 のユーザーで、Fortran 95、Fortran 90 および XL Fortran については 詳しくないユーザーのためのものです。

以下に記載した点以外では、Fortran 90 標準および Fortran 95 標準が、 先行の Fortran 国際標準 (Fortran International Standard)、ISO 1539-1:1980 (略式名称 FORTRAN 77) の、上位互換性のある拡張言語です。 標準適応の FORTRAN 77 プログラムは、Fortran 90 標準の環境下でも 標準適応となります。ただし、組み込みプロシージャーについての 下記の項目 4 は例外です。 標準適応の FORTRAN 77 プログラムは、 削除された機能をプログラムで使用しない限り、 Fortran 95 標準の環境下でも標準適応となります。ただし、 組み込みプロシージャーについての下記の項目 4 は例外です。 Fortran 90 標準および Fortran 95 標準では、 一部の機能の動作が制限されています (これらの機能は、FORTRAN 77 では プロセッサー依存のものです)。したがって、これらのプロセッサー依存の 機能のうち、いずれかを使用している標準適応の FORTRAN 77 プログラムは、Fortran 90 標準 および Fortran 95 標準の環境下で使用すると、標準適応プログラムであるにもかかわらず、 解釈が変わってしまう可能性があります。以下の FORTRAN 77 の 機能を Fortran 90 および Fortran 95 の環境下で使用すると、解釈結果が異なります。

  1. FORTRAN 77 では、DATA ステートメントの DOUBLE PRECISION データ・オブジェクトの 初期化に実定数が使用される場合、プロセッサーは、実際のデータに格納できる定数から得られる精度より高い精度を 提供することができました。 Fortran 90 および Fortran 95 では、プロセッサーにこのオプションはありません。

    XL Fortran の以前のリリースは、Fortran 90 および Fortran 95 の動作と整合性があります。

  2. 共通ブロックに属さない名前付き変数が、DATA ステートメントで初期化され、SAVE の 属性が指定されなかった場合、FORTRAN 77 では、SAVE 属性をプロセッサー依存のままにしていました。 Fortran 90 標準および Fortran 95 標準では、この名前付き変数に、SAVE 属性を持たせるように指定します。

    XL Fortran の以前のリリースは、Fortran 90 および Fortran 95 の動作と整合性があります。

  3. FORTRAN 77 では、入力リストで必要とする文字数が、入力のフォーマット時にレコードに格納される文字数以下で なければならないことが必須でした。 Fortran 90 標準および Fortran 95 標準では、入力レコードの文字数が不足する場合、適切な OPEN ステートメントに PAD='NO' 指定子が指定されていなければ、入力レコードに論理的にブランクを埋め込むことを指定します。

    XL Fortran では、-qxlf77 コンパイラー・オプションの noblankpad サブオプションが指定されて いる場合は、入力レコードにブランクが埋め込まれません。

  4. Fortran 90 標準および Fortran 95 標準には、FORTRAN 77 よりも多くの組み込み関数があり、組み込みサブルーチンが いくつか追加されています。 したがって、標準適応の FORTRAN 77 プログラムを Fortran 90 および Fortran 95 の環境下で使用すると、変換処理結果が異なる可能性があります。 これは、FORTRAN 77 で、新標準の組み込みプロシージャーのいずれかと同じ名前のプロシージャーを呼び出した 場合に起こります。 ただし、このプロシージャーを EXTERNAL ステートメントに指定した場合は例外です。

    XL Fortran では、指定された名前のプロシージャーが、-qextern コンパイラー・オプションに よって、EXTERNAL ステートメントに指定されたプロシージャーであるかのように扱われます。

  5. Fortran 95 では、編集記述子によっては、定様式出力ステートメント内のリスト項目で使う 0 値の フォーマット結果が異なる場合があります。 しかも、Fortran 95 標準は FORTRAN 77 と違い、値を丸めることで出力フィールドの形式にどのような影響を 与えるかを指定します。 したがって、値と編集記述子の特定の組み合わせによっては、FORTRAN 77 プロセッサーは Fortran 95 プロセッサーを 使用する場合とは異なる出力形式を生成する可能性があります。
  6. Fortran 95 では、プロセッサーが、正の実数ゼロと負の実数ゼロを区別することができます。 これは Fortran 90 ではできませんでした。Fortran 95 は、2 番目の引き数が負の実数ゼロの場合、SIGN 組み込み関数の動作を変更します。
IBM Copyright 2003