Oracle Solaris Studio 12.2: Fortran ユーザーズガイド

第 5 章 FORTRAN 77 の互換性: Solaris Studio Fortran への移行

単体の FORTRAN 77 コンパイラの提供はありません。Solaris Studio Fortran コンパイラ f95 は、Sun WorkShop f77 コンパイラで以前にコンパイルされた非標準拡張機能を利用するプログラムを含む多くのレガシー FORTRAN 77 プログラムをコンパイルします。

f95 は、これらの FORTRAN 77 の機能の多くを直接的に受け入れます。その他の機能は、FORTRAN 77 互換モード (f95 -f77) でコンパイルする必要があります。

この章では、f95 で受け入れられる FORTRAN 77 の機能について説明し、f95 との互換性がない f77 の機能のリストを示します。Sun WorkShop f77 コンパイラで受け入れられる非標準 FORTRAN 77 拡張機能についての詳細は、 http://docs.sun.com/source/806-3594/index.html の『FORTRAN 77 言語リファレンスマニュアル』を参照してください。

f95 コンパイラで使用可能な Fortran 言語のその他の拡張機能については、第 4 章Solaris Studio Fortran の機能と相違点 を参照してください。

f95 は、標準規則に準拠する FORTRAN 77 プログラムをコンパイルします。移植性を確保するためには、非標準 FORTRAN 77 機能を利用しているプログラムを標準に準拠する Fortran 95/2003 に移行する必要があります。-ansi オプションを指定してコンパイルすると、プログラム中で使用されているすべての非標準機能にフラグが立てられます。

5.1 互換性のある f77 機能

f95 では、レガシー FORTRAN 77 コンパイラ f77 の非標準機能を、直接、または -f77 互換性モードでも使用できます。

ソースの書式

入出力

データ型、宣言、および用法

プログラム、サブルーチン、関数、および実行文

その他

レガシー Sun WorkShop FORTRAN 77 コンパイラの非標準言語拡張機能の構文と意味についての詳細は、http://docs.sun.com/source/806-3594/index.html にある『FORTRAN 77 言語リファレンスマニュアル』(アーカイブファイル) を参照してください。

5.2 非互換性の問題

現行リリースの f95 で、レガシー f77 プログラムをコンパイルおよびテストしたときに生じた非互換性の問題を次に示します。これらの問題は、f95 の比較機能の欠如、または動作の相違点が原因となって発生します。これらの項目は、レガシー Sun WorkShop FORTRAN 77 コンパイラでサポートされる FORTRAN 77 の非標準拡張機能ですが、現在の f95 ではサポートされません。

ソースの書式

入出力

データ型、宣言、および用法

プログラム、サブルーチン、関数、文

コマンド行オプション

f95 でサポートされていない FORTRAN 77 ライブラリルーチン

5.3 レガシー FORTRAN 77 でコンパイルされたルーチンでのリンク

5.3.1 Fortran 組み込み関数

Fortran の標準機能として、FORTRAN 77 にはない組み込み関数がサポートされています。Fortarn の非標準組み込み関数を含むすべての組み込み関数は、『Fortran ライブラリリファレンスマニュアル』に記載されています。

Fortran ライブラリ・リファレンス』に記載された組み込み関数名をプログラムの関数名として使用する場合は、組み込みではないユーザー指定のルーチンを使用するために、f95EXTERNAL 文を追加する必要があります。

Fortran ライブラリリファレンス』には、以前の f77 コンパイラ が認識可能な組み込み関数も記載されています。f95 コンパイラは、これらの名前を組み込み関数と同様に認識できます。

-f77=intrinsics を指定してコンパイルすると、認識可能な組み込み関数は f77 コンパイラで知られるものだけに制限され、Fortran 組み込み関数は無視されます。

5.4 f95 への移行についてのその他の問題

5.5 f77 コマンド

Solaris Studio ソフトウェアには、単独の FORTRAN 77 コンパイラ f77 は含まれていません。最近のリリースでは、FORTRAN 77 の機能の多くが Fortran 95 コンパイラである f95 に盛り込まれているため、レガシー FORTRAN 77 コンパイラの機能の多くは Fortran 95 コンパイラで利用できます。現在の Solaris Studio コンパイラリリースには、f77 スクリプトが用意されています。このスクリプトは、対応するデフォルトオプションのセットを含む f95 コンパイラを呼び出します。f77 の呼び出しは次と同じです。


f95 -f77 -ftrap=%none       

以前のリリースの f77 コンパイラでコンパイルされたライブラリルーチンにリンクする必要がある場合は、-xlang=f77 をコマンド行に追加します。ただし、コンパイルとリンクをそれぞれ別の手順で実行し、-xlang=f77-lM77-lF77、または -lsunmath を明示的に指定している場合は、cc または CC ではなく、f95 (または f77 スクリプト) でリンクする必要があります。また、-fast フラグを使用してコンパイルしている場合は、-fast がトラップモードを「common」に設定するため、-fast の後に -ftrap=%none を追加して、FORTRAN 77 の算術例外におけるトラップの動作を保持します。


f77 -fast -ftrap=%none       

f77 スクリプトを呼び出すと、f95 コンパイラを -f77 互換モードで使用していることを警告するメッセージが表示されます。このメッセージを表示しないようにするには、コマンド行に -errtags=INVOKE を追加します。詳細は、「3.4.23 –f77[= list]」 を参照してください。