XL Fortran for AIX V8.1.1

ユーザーズ・ガイド


アップグレードの問題の回避または修正方法

XL Fortran は FORTRAN 77 プログラムと全般に下位互換性を維持していますが、 XL Fortran、Fortran 90 および Fortran 95 言語には注意すべきいくつかの変更点があります。

既存のコンパイル環境の動作を保持するために、 xlf コマンドと f77 コマンドはどちらも、可能な場合には、初期 XL Fortran バージョンでの機能と同じ機能を実行します。まったく新しい Fortran 90 または Fortran 95 プログラムを作成したり、前のプログラムを修正して潜在的な問題を回避すれば、 xlf90 コマンドと xlf95 コマンドの使用を開始できます。このコマンドは、ソース・コード形式に Fortran 90 および Fortran 95 の規則を使用します。

以下の表では、xlf の代わりに xlf_r または xlf_r7 を、 xlf90 の代わりに xlf90_r または xlf90_r7 を、 xlf95 の代わりに xlf95_r または xlf95_r7 を使用できることに注意してください。

表 1. プログラムを XL Fortran バージョン 8 にマイグレーションする際の潜在的な問題

右の列は xlf コマンドまたは f77 コマンドを使用することによって回避できる問題を示しています。
潜在的な問題 解決策または回避策 xlf で回避できる問題
コンパイルの問題
新しい組み込みプロシージャー名が外部プロシージャー名と競合します。外部プロシージャーの代わりに、組み込みプロシージャーが呼び出されます。 -qextern オプションを使用するか、または EXTERNAL ステートメントを挿入して、あいまいさを回避してください。 Fortran 90 または Fortran 95 プロシージャーでも必要な動作を実行できる場合は、このプロシージャーへ切り替えることを検討してください。
.XOR. 組み込みが認識されません。 オプション -qxlf77=intxor を使用してください。 Yes
サイズがゼロのオブジェクトは、コンパイラーで許可されません。 xlf90 コマンドか xlf95 コマンドを使用するか、または xlf または f77 コマンドに -qzerosize オプションを指定して使用してください。
パフォーマンス / 最適化の問題
既存のプログラムまたは旧バージョンの XL Fortran オブジェクト・ファイルとリンクされているプログラムの動作が遅いか、または新しいハードウェアで期待したパフォーマンスの改善が見られません。 すべてを再コンパイルしてください。
-O3 または -qhot 最適化でコンパイルしたプログラムの動作が、最適化されていない場合と異なります (異なる結果、例外、またはコンパイル・メッセージ)。 -qstrict オプションを追加してみてください。
-O-1 オプションの組み合わせは、誤解を避けるため、-O1 と短縮することができません。 (-O2-O3-O4、および -O5 という最適化レベルはありますが、 -O1 はありません。) -O-1 を別個のオプションとして指定してください。
整数 POINTER を使用するプログラムが、最適化時に誤った結果を発生させます。 xlf90 コマンドまたは xlf95 コマンドに -qalias=intptr オプションを指定するか、 xlf コマンドを使用してください。 Yes
実行時の問題
ファイルの終わりまで読み込んだ後、最初に BACKSPACE ステートメントを実行しないでレコードを追加しようとしたプログラムが正しく機能しない。書き込み要求はエラー・メッセージを生成します。 既存のプログラムをコンパイルするため、 xlf90 コマンドまたは xlf95 コマンドに -qxlf77=softeof オプションを指定するか、 xlf コマンドを使用してください。新規プログラムの場合は、エンドファイル・レコードを過ぎて書き込む前に BACKSPACE ステートメントを追加してください。 Yes
初期化されていない変数が、必ずしもゼロに設定されるとは限らず、以前に実行されたプログラムがユーザー・スタックの限界を超える場合があります。デフォルト・ストレージ・クラスが現在、 STATIC (この言語が許可する実施の選択項目) ではなく、 AUTOMATIC になっていることが原因です。 ご使用の変数を明示的に初期化するか、 xlf90 コマンドか xlf95 コマンドに -qsave オプションを指定して使用するか、あるいはソースの必要な箇所で SAVE ステートメントを追加してください。 Yes
POSITION= 指定子を指定しないでオープンしたいくつかのファイルにデータを書き込むと、データを追加しないでファイルが上書きされます。 -qposition=appendold オプションを使用するか、または必要な場所に POSITION= 指定子を追加してください。 Yes
新たにコンパイルしたプログラムが、 NAMELIST データが入っている既存のデータ・ファイルを読み取ることができません。 Fortran 90 および Fortran 95 標準が、過去に AIX で使用されているものとは異なる namelist の形式を定義するのが原因です。 環境変数 XLFRTEOPTS をストリング namelist=old に設定してください。

以前の NAMELIST データを生成したプログラムは、再コンパイルしなければなりません。


いくつかの I/O ステートメントおよび編集記述子では、多少異なる I/O を受け入れたり作成したりします。たとえば現在では、実際の出力には適切な場合には先行ゼロがあります。

I/O 形式の変更は、さらに使いやすくすることを意図したもので、業界によくある慣行なので、作成する新しいデータにはデフォルト値を使用するようにしてください。

既存のデータ・ファイルとの互換性を維持しなければならない場合は、 xlf コマンドでコンパイルしてください。互換性がない原因が、単一の特定の I/O 変更にある場合は、 -qxlf77 オプションに下位互換性のためのサブオプションがあるかどうかを調べてください。そのサブオプションがある場合は、xlf90 または xlf95 コマンドに切り替えて、前のデータ・ファイルを使用するプログラムで -qxlf77 オプションを使用できます。 Yes
数値結果および I/O 出力が、必ずしも XL Fortran バージョン 2 とまったく同じであるとは限りません。 I/O の特定の実施の詳細、たとえば、リスト指示出力のスペース割り付けおよび IOSTAT 値の意味などは、 XL Fortran バージョン 2 とは異なります。 (これらの相違が下位互換性スイッチを持っていないことを除けば、この項目は前の項目と同じです。) 既存のデータ・ファイルを再び作成しなければならないか、またはこれらの詳細に依存しているプログラムを変更しなければならない場合があります。 -qxlf77 コンパイラー・オプション、または XLFRTEOPTS 実行時オプションによって下位互換性スイッチが提供されていない場合は、以前の動作を実行することはできません。
現在 B=-0.0 の場合、SIGN(A,B)-|A| を戻します。 XL Fortran バージョン 7.1 より以前では、|A| が戻されました。 この動作は、Fortran 95 標準に準拠し、2 進の浮動小数点演算の IEEE 標準と整合します。 -qxlf90=signedzero オプションがオンにされると実行されます。それをオフにするか、またはデフォルトでこのオプションを使用しないコマンドを指定してください。 Yes
出力形式では、負のゼロは負符号 (-) が印刷されます。出力形式がゼロ (すなわち、末尾のゼロ以外の数字が出力では切り捨てられているため、出力がゼロのように見える場合) の負の値にも、負符号 (-) が印刷されます。 XL Fortran バージョン 7.1 より以前では、これらの状態で負符号 (-) は印刷されませんでした。 この動作は、Fortran 95 標準に準拠し、 -qxlf90=signedzero オプションがオンにされているために実行されます。それをオフにするか、またはデフォルトでこのオプションを使用しないコマンドを指定してください。 Yes
関連情報:


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]