一般論として,Visual Fortran は可搬性の高い言語です。この言語の主な利点の 1 つは,多数の徹底的に検証された Fortran コードのライブラリーが存在するということにあります。また,目前の問題を解決するのに既存のコードを再利用したい場合もあるでしょう。ほとんどのベンダが提供する数学,科学計算用のコード・ライブラリーは,ほとんど問題なく Visual Fortran に移植できるはずです。
さらに,Visual Fortran は,Compaq Tru64 UNIX や Compaq OpenVMS オペレーティング・システムを実行しているメインフレーム・クラスの Compaq Alpha システムなどの他のシステムに移植するコードを作成するための開発プラットフォームとして使用されることもあります。
別のシステムからコードを持ち込む場合も,後に別のシステムに持ち出す場合も,次の点に注意する必要があります。
システム依存のコードを独立したモジュールに分離します。個々のプラットフォームごとに,似たような機能を持つ別々のモジュールを持つようにします。
主プログラム中では,両方のプラットフォームでコンパイルできる言語拡張のみを使用し,システム依存のコードはモジュールに入れます。
言語拡張サブセットはモジュールに入れます。
Microsoft コンパイラ命令を使用する場合には,古い $directive 書式は他のシステムでは無視される可能性があるので,!DEC$directive 書式に置き換えます。
大きさが重要な場合,整数値と論理値について,また浮動小数点値について,データの精度を指定します。変数の種別パラメタを明示的に指定しないと,プログラムが整数について (KIND=4) を仮定しているのに,他システムの基本設定が (KIND=2) だったような場合に問題が生じることがあります。
その逆に,変数の大きさが重要でない場合,データの精度を指定しないようにします。精度を指定しているコードは,整数と実数の大きさについて,それと異なる基本大きさを採用しているシステムでは,実行速度が低下します。
浮動小数点演算で不安定になるアルゴリズムは使うのを避けます。浮動小数点数の扱い方についての詳細は,「浮動小数点環境」を参照してください。
各プラットフォームで,等価な浮動小数点精度を指定します。
Microsoft Visual C/C++ または機械語で書かれたコードと相互作用するルーチンとデータを定義するときには,適切な属性を指定するようにします。
関連情報
システム間でのコードの移植についての詳細は,「可搬性」を参照してください。
Compaq Alpha プラットフォームの Compaq Fortran との互換性については,「他のプラットフォーム上の Compaq Fortran との互換性」を参照してください。
言語拡張サブセットの選択
Visual Fortran コンパイラは,さまざまなプラットフォームで使用されている拡張に加えて,Visual Fortran 固有のいくつかの拡張をサポートしています。世の中にはさまざまなコンピュータ用の Fortran コンパイラがあり,ソース・コードを異なるコンパイラ間で移植しなければならないことがあるかもしれません。この移植が一方向の永久的なものであるならば,単に移植先のプラットフォームで動作するようにコードを変更すればすみます。しかし,そのコードを必要に応じてどこにでも移植できるようにしなければならない場合,各プラットフォームでサポートされている Fortran 拡張を意識する必要があります。
いくつかの Visual Fortran コンパイラ・オプションは,可搬性のあるコードを書くのに役立ちます。たとえば,「Project Settings」ダイアログボックスの「Fortran」タブで,またはコマンド行で ANSI/ISO 構文への準拠 (/stand オプション) を指定すると,コンパイラは Fortran 90 または 95 構文に従います。このオプションに正しく準拠しているコードは,厳密な Fortran 構文に従う Fortran コンパイラを持っている任意の他のコンピュータで正しくコンパイルできる確率がきわめて高いと考えられます。
プラットフォーム固有の拡張を使用する場合,これらの拡張の各コンピュータでの実装に違いがあるかどうかを確認し,両方で同じように実装されている機能だけを使用するようにしなくてはなりません (詳細については,「可搬性」を参照)。基本設定では,すべての拡張セットを有効にしてコンパイルを行います。
Visual Fortran コンパイラ指示文は標準 Fortran の注釈と同じ形式なので (!DEC$directive),Visual Fortran コンパイラ指示文を使用しているプログラムは他のシステムでもコンパイルできます。ただし,Visual Fortran コンパイラ指示文としての機能は失われます。
浮動小数点に関する注意事項
浮動小数点演算の答えは,システムによって変わることがあります。これは,システムによって精度が異なり,また丸め誤差が異なる方法で処理されるからです。
浮動小数点演算を不安定にする深刻な原因となりうるプログラミングの 1 つが,浮動小数点数が特定の値に正確に一致したときにのみ何らかの動作を実行するような IF 検証 (明示と暗黙の両方) です。プログラムにこのようなコードが含まれている場合,丸め誤差が生じた場合でも安定して動作する版にコードを書き直してください。詳細については,「浮動小数点環境」と「可搬性」を参照してください。
浮動小数点演算を不安定にするもう 1 つの原因は,精度を低下させる傾向のある数学的アルゴリズムの使用です。コードが精度の低いシステムに移植されると,誤った答えが生じることがあります。詳細については,「浮動小数点環境」を参照してください。
あるシステムの全 REAL 変数を,別のシステムで DOUBLE PRECISION にする方法の 1 つとして,各システム用の明示的なデータ型を宣言するモジュールを使うというものがあります。各モジュールで,異なる種別パラメタを指定してください。もう 1 つの方法は,すべてのソース・ファイルに,各システムの明示的なデータ型を宣言するインクルード・ファイルを追加するというものです。