XL Fortran は、普及している他のコンパイラーと同じく、多くの FORTRAN 77 拡張機能が使用可能です。それには、次のものが含まれます。
拡張機能 | 「XL Fortran for AIX ランゲージ・リファレンス 」の各項を参照してください。 |
---|---|
タイプなし定数 | タイプなしリテラル定数 |
*len タイプの長さ指定子 | データ型 |
BYTE データ型 | BYTE |
長い変数名 | 名前 |
小文字 | 名前 |
整数値と論理値の混在 (-qintlog オプションを使用) | 式の計算 |
文字カウント Q 編集記述子 (-qqcount オプションを使用) | Q (文字カウント) 編集 |
64 ビットのデータ型 (INTEGER(8)、REAL(8)、 COMPLEX(8)、 LOGICAL(8)) で、デフォルトの 64 ビット・タイプ (-qintsize および -qrealsize オプションを使用) のサポートを含みます。 | 整数、実数、複素数、論理 |
CRAY および Sun のコンパイラーでサポートしているものと同様の整数 POINTER (XL Fortran 整数ポインターの算術演算は 1 バイト増分を単位としているのに対し、 CRAY コンピューターでは 8 バイト増分を単位としています。 CRAY コンピューターから移植されたプログラムを正しく機能させるためには、ポインターの増分および減分に 8 を乗算することが必要です。) | POINTER(整数) |
条件付きベクトル組み合わせ (CVMGx) 組み込み関数 | CVMGx (TSOURCE, FSOURCE, MASK) |
日付および時刻サービスとユーティリティー機能 (rtc、irtc、jdate、clock_、timef、date) | サービス・プロシージャーおよびユーティリティー・プロシージャー |
STRUCTURE、UNION、および MAP 構造体 | 構造体コンポーネント、Union および Map |
-qctyplss オプションを指定すると、タイプなし定数を使用する位置と同じ位置で文字定数式を使用することができます。 -qintlog オプションを指定すると、論理式を使用できる場所で整数式を使用することができます (その逆も可能です)。 kind タイプ・パラメーターは、-qintlog がオンでも、論理定数で置き換えてはならないし、 -qctyplss がオンで、それが型のない定数でも文字定数で置き換えてはなりません。
dtime、etime、jdate などの日付および時刻ルーチンは、Fortran サブルーチンとしてアクセス可能です。
libc ライブラリーからのその他の一般的なルーチン (たとえば、 flush、getenv、system) が多数あり、これらも Fortran サブルーチンとしてアクセス可能です。
ワード・サイズの大きいまたは小さいマシンからの移植の場合は、-qintsize オプションを指定すると整数値および論理値のデフォルト・サイズを指定することができ、-qrealsize オプションを指定すると実数および複素数のコンポーネントのデフォルト・サイズを指定することができます。
XL Fortran 組み込みプロシージャーと同じ名前のプロシージャーがある場合は、プログラムは組み込みプロシージャーを呼び出します。 (この状態は、多数の新しい Fortran 90 および Fortran 95 組み込みプロシージャーを追加した場合に、さらに発生する可能性が高くなります。)
それでもユーザー自身のプロシージャーを呼び出したい場合は、名前が競合するプロシージャーに明示的なインターフェースまたは EXTERNAL ステートメントを追加するか、またはコンパイル時に -qextern オプションを使用してください。
XL Fortran は、浮動小数点結果を他の IEEE システムからの結果と矛盾させないために、-qfloat オプションによる設定をサポートしています。 他のシステムの浮動小数点結果の再現を参照してください。
XL Fortran は、さまざまな言語標準に関するいくつかの拡張機能をサポートしています。これらの拡張機能の多くは一般的に使用されているため、プログラムを別のシステムに移植する際には、すべてのコンパイラーがそれらの機能を備えているわけではないことを覚えておいてください。移植作業を始める前に、-qlanglvl オプションを使用して、XL Fortran プログラム内のそのような拡張部分を見つけてください。
$ # -qnoobject stops the compiler after parsing all the source, $ # giving a fast way to check for errors. $ # Look for anything above the base F77 standard. $ xlf -qnoobject -qlanglvl=77std f77prog.f ... $ # Look for anything above the F90 standard. $ xlf90 -qnoobject -qlanglvl=90std use_in_2000.f ... $ # Look for anything above the F95 standard. $ xlf95 -qnoobject -qlanglvl=95std use_in_2000.f ...