XL Fortran は、普及している他のコンパイラーと同じく、多くの FORTRAN 77 拡張機能が
使用可能です。それには、次のものが含まれます。
拡張機能 | 参照する「XL Fortran ランゲージ・リファレンス」の項 |
---|---|
型なし定数 | 型なしリテラル定数 |
*len 型の長さ指定子 | データ型 |
BYTE データ型 | BYTE |
長い変数名 | 名前 |
小文字 | 名前 |
整数値と論理値の混在 (-qintlog オプションを使用) | 式の計算 |
文字カウント Q 編集記述子 (-qqcount オプションを使用) | Q (文字カウント) 編集 |
レジスター内の設定ビットをカウントしてデータ・オブジェクト・パリティーを判別するための組み込み機能 | POPCNT, POPPAR |
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 ステートメント、または PROCEDURE ステートメントを追加するか、あるいはコンパイル時に -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 ...