Sun Studio 12: Fortran ユーザーズガイド

4.6 Fortran 2003 の機能

今回の f95 コンパイラのリリースには、Fortran 2003 規格の多数の新機能が含まれています。詳細は、Fortran 2003 規格を参照してください。

4.6.1 C 関数との相互運用性

Fortran の新しい規格には次のものが含まれています。

ISO_C_BINDING モジュールは、C の型と互換のデータを表す種別パラメータである名前付き定数へのアクセスを可能にします。

この規格草稿は、BIND(C) 属性も取り入れています。Fortran の構造型は、BIND 属性を持つものならば、C と相互に利用できます。

Fortran 95 コンパイラの今回のリリースでは、規格草稿の第 15 章に記述されている機能を実現します。また、規格第 4 章に述べられている、C の型に対応する構造型およびリストを定義する機能を備えます。

4.6.2 IEEE 浮動小数点の例外処理

新しい組み込みモジュール、IEEE_ARITHMETIC および IEEE_FEATURES は、Fortran 言語における例外と IEEE 演算をサポートします。次のように指定すると、これらの機能がすべてサポートされます。

USE, INTRINSIC :: IEEE_ARITHMETIC

USE, INTRINSIC :: IEEE_FEATURES

INTRINSIC キーワードが Fortran 2003 で新しく追加されました。これらのモジュールは、一連の構造型、定数、丸めモード、照会関数、要素別処理関数、種別関数、要素別処理サブルーチン、非要素別処理サブルーチンを定義します。詳細は Fortran 2003 規格草稿の第 14 章に説明があります。

4.6.3 コマンド行引数用組み込み関数

Fortran 2003 規格では、コマンド行引数および環境変数を処理するための新しい組み込み関数が紹介されています。それら組み込み関数は次の 3 つです。

4.6.4 PROTECTED 属性

Fortran 95 コンパイラでは、新たに Fortran 2003 の PROTECTED 属性が使えるようになりました。PROTECTED はモジュール要素の使用に制限を設けます。PROTECTED 属性を持つオブジェクトは、それ自身が宣言されるモジュール内でのみ定義可能です。

4.6.5 Fortran 2003 非同期入出力

コンパイラは入出力文中の ASYNCHRONOUS 指定子を認識します。

ASYNCHRONOUS=[’YES’ | ’NO’]

この構文は Fortran 2003 規格の第 9 章で提案されているものです。WAIT 文とともに使うことで、コンピューティングで重複する可能性のある入出力処理を指定することができます。このコンパイラは ASYNCHRONOUS=’YES’ を認識しますが、規格草稿は実際の非同期入出力を要求しません。今回のコンパイラのリリースでは、入出力は常に同期します。

4.6.6 ALLOCATABLE 属性の拡張機能

Fortran 2003 で、ALLOCATABLE 属性に使用できるデータエンティティーが拡張されました。以前、この属性はローカルに格納された配列変数に制限されていました。現在では、次の要素を使用できます。

割り付け要素は、記憶領域に関連付けられているすべての場所で使用が禁止されています。COMMON ブロックと EQUIVALENCE 文。割り付け配列成分は SEQUENCE 型になることがありますが、そのような型のオブジェクトは COMMON および EQUIVALENCE で使用できません。

4.6.7 VALUE 属性

f95 コンパイラは、Fortran 2003 VALUE 型の宣言属性を受け入れます。

この属性とともに副プログラムのダミー入力引数を指定すると、実際の引数は「値」によって渡されます。次の例では、リテラル値を引数とする Fortran 95 副プログラムを呼び出す C 言語の主プログラムにおいて VALUE 属性を使用しています。


C コード:
#include <stdlib.h>
int main(int ac, char *av[])
{
    to_fortran(2);
}

Fortran コード:
       subroutine to_fortran(i)
       integer, value :: i
       print *, i
       end

4.6.8 Fortran 2003 ストリーム入出力

Fortran 2003 規格では、新しい「ストリーム」入出力方式が定義されています。ストリーム入出力探査は、データファイルを連続したバイトのシーケンスとして扱い、1 から始まる正の整数でアドレスを定義できます。データファイルは、書式付きアクセスまたは書式なしアクセス用に結合できます。

OPEN 文で ACCESS=’STREAM’ 指定子を使用して、ストリーム入出力ファイルを宣言します。バイトアドレスにファイルを位置付けるには、READ または WRITE 文に POS=scalar_integer_expression 指定子が必要です。 INQUIRE 文では、ACCESS='STREAM'、指定子 STREAM=scalar_character_variable、および POS=scalar_integer_variable が使用できます。

4.6.9 Fortran 2003 の書式付き入出力機能

3 つの新しい Fortran 2003 書式付き入出力指定子が、f95 に実装されています。これらの指定子は、OPENREADWRITEPRINT、および INQUIRE 文で指定されます。

INQUIRE 文で使用する場合は、これらの指定子は、現在の値を返すための文字変数を宣言します。

新しい編集記述子 DPDCRP、および RC は、単一の FORMAT 文内のデフォルトの設定を、それぞれ、小数点、小数部のコンマ、プロセッサ定義の丸め、および互換性のある丸めに変更します。次に例を示します。

WRITE(*,’(I5,DC,F10.3)’) N, W

F10.3 出力項目のピリオドの代わりにコンマが使用されます。

書式付き入出力の浮動小数点丸めモードの変更については、-iorounding コンパイラコマンド行オプションも参照してください (「3.4.49 -iorounding[ ={compatible|processor-defined}]」)。

4.6.10 Fortran 2003 の FLUSH 入出力文

f95 コンパイラでは、Fortran 2003 の FLUSH 文を使用できます。FLUSH 文を使用すると、外部ファイルに書き込まれたデータをほかのプロセスで利用したり、Fortran 以外の方法で外部ファイルに配置されたデータを READ 文で利用したりすることができるようになります。