Fortran ユーザーズガイド | ![]() ![]() ![]() ![]() ![]() |
付録 B
各リリースにおける機能変更
この付録では、
f77
とf90
の今回のリリースで追加された機能と、旧リリースから変更された機能について説明します。Fortran 95 の新機能と変更
この節では、
f95
の Sun WorkShop 6 とそれ以前のリリースに固有の新機能および動作上の変更点についてまとめてあります。Sun WorkShop 6 における
f95
の新機能以下に、Sun Performance WorkShop 6 でリリースされた Fortran 95 コンパイラにおける新機能と変更された機能を示します。
- 準拠:
f95
は、Fortran 95 規格に完全に準拠しています。- 新コマンド:Fortran 95 のコンパイラは、
f95
またはf90
のいずれかのコマンドで起動できます。- 最適化コードのデバック:
-g
を他のオプションと併用することに関する制約が緩和され、並列化コードおよび-O4
または-O5
を指定した最適化コードを、dbx
および Sun WorkShop デバッカを使用してデバックできるようになりました。- ソースファイル名の拡張子:コンパイラは、
.f95
および.f90
というファイル拡張子に加え、.F95
および.F90
という拡張子も受け付けるようになりました。- 区間演算:今回のリリースでは、区間演算計算を可能にするいくつかの拡張機能を実装しました。詳細は、『Fortran 95 区間演算プログラミングリファレンス』および区間演算の REAME ファイルを参照してください。
- 配列の最適化の向上:コンパイラは、
-O4
および-O5
のレベルで配列に関して積極的な最適化を行うようになりました。- ハイパーリンク診断メッセージ:Sun WorkShop オンラインヘルプは、「構築」ウィンドウに表示される
f95
エラー診断の解釈についてオンラインヘルプ情報を提供するようになり、エラーメッセージから書斎なオンラインヘルプへのハイパーテキストリンクを作成します。- OpenMP:コンパイラは、OpenMP の明示的な並列化指令を受け入れます。OpenMP 仕様は、
http://www.openmp.org/
で表示できます。- Cray 形式の
DOALL
並列化指令にAUTOSCOPE
が追加されました。- 新コマンド行オプションおよび変更されたコマンド行オプション
-aligncommon
は、COMMONブロック内の要素を指定のバイト境界に整列させます。-r8const
は、単精度データ定数をREAL*8
に変換します。-xinterval
および-xia
を使用すると、区間演算展開が有効になります。-xmemalign
は、データ要素のメモリ内での一般的な境界整列を指定します。-om=openmp
および-openmp
を使用すると、OpenMP の明示的並列化指令の固有のコンパイルが可能になります。- UltraSPARC 先読み命令を有効にするために
-xprefetch
の機能拡張が行われ、サブオプションが追加されました。-xrecursive
を使用すると、RECURSIVE
属性が指定されていない副プログラムからの再帰的呼び出しが可能になります。-xtypemap
では、可能なデータ型指定のセットが拡張されました。-fast
が機能拡張され、-O5
、-fsimple=2
、-xvector=yes
および-pad=common
を設定できます。f95
の並列化機能を使用するには、Sun WorkShop HPC ライセンスが必要です。
f90
2.0 の新機能Sun WorkShop 5.0 でリリースされた
f90
2.0 のコンパイラには、f90
1.2 リリースに対する次の新機能と変更された機能が含まれています。
- 新しいオプション :
- ほとんどの
f77
オプションがf90
で認識されます。-fpover
が入出力処理で浮動小数点のオーバーフローを検出します。-xcode
=code で SPARC プラットフォームのメモリーアドレスモデルを指定します。-xcommonchk
で COMMON ブロック宣言に不一致がないか実行時検査を行います。-xprefetch
を使用すると、コンパイラは UltraSPARC II プラットフォームで先読み命令を生成できます。-xvector
を使用すると、コンパイラは DO ループ内の特定の数学ライブラリ呼び出しをベクトル化された数学ルーチンの単一呼び出しで置き換えることができます。- 変更されたオプション :
-xcrossfile[=
n]
オプションのレベル番号が追加されました。-fns[={yes|no}]
オプションの yes/no が追加されました。-Ztha
現在ではこのオプションは無視されます。- 新しい機能 :
-xarch=v9
またはv9a
を使用して 64 ビットの SPARC プラットフォームで 64 ビットの Solaris 7 環境用にコンパイルします。- 入出力ライブラリで大型ファイル (2GB 以上) をサポートします。
- 64 ビットの Solaris オペレーティング環境で大きな配列をサポートします。
- サン形式の指令をデフォルトとして使用できます。
REDUCTION
指令に変数リストの配列を使用できます。- SPARC の場合 :
TASK COMMON
指令が COMMON の変数を非公開として宣言します。- 新しい最適化プラグマでコンパイラの最適化レベルをルーチンごとに設定できます。
- 入出力の相違点 (
f90
1.2 と比較した場合)
- 1. 2 の場合 :
1つの PRINT 文に含まれる変数はすべて改行なしで 1 行に書き込まれます。- 2.0 の場合 :
各変数が別々の行に出力されます。- 1.2 の場合 :
値を区切るのにコンマを使用します。- 2.0 の場合 :
値を区切るのに空白文字を 1 つ使用します。- 1.2 の場合 :
繰り返される値は r* 書式 (3*8.22
) を使用して出力されます。- 2.0 の場合 :
繰り返される値はすべて明示的に (8.22 8.22 8.22
) 出力されます。- 1.2 の場合 :
整数の浮動小数点の末尾がゼロなしで出力されます (1.
)。- 2.0 の場合 :
浮動小数点の整数に末尾のゼロを付けて出力されます (1.0
)。- 1.2 の場合 :
出力される値が、同じ型の変数として読み取られた値と異なることがあります。読み取り時に0.1
であった値が0.100000001
として出力されます。- 2.0 の場合 :
書き込まれた値と読み取られた値が同じになるように、必要最小限の桁数で出力されます。0.1
は0.1
として出力されます。- 1.2 の場合 :
標準の要件に従うと、ゼロの値は指数形式で出力されます。ただし、1.2 では0.E+0
と出力されます。- 2.0 の場合 :
ゼロを0.0E+0
として出力します。- 1.2 の場合 :
複素数値のコンマと虚数部との間に空白を出力します(1., 0.E+0)
。- 2.0 の場合 :
コンマは使用しません (1.0,0.0E+0
)。
- 2.0 では、グループ名の前に
$
や&
を付けて入力できます。&
は Fortran 90 の規格で認められている唯一の書式で、NAMELIST 出力で書き込まれます。- 2.0 では、グループの最終データ項目が CHARACTER の場合を除いて、
$
を入力の終わりを示すシンボルとして使用できます。これは入力として処理されます。- 2.0 では、NAMELIST 入力をレコードの最初の桁から開始することができます。
PRINT *
コンマで区切った出力は廃止しました。OPEN FORM='BINARY'
は、レコードマークなしで規格外の raw テキストの入出力を行うことができます。FORM='BINARY'
でファイルを開いた場合、ファイルにレコード長が埋め込まれないことを除いて、FORM='UNFORMATTED'
を使用した場合とほぼ同じ効果が得られます。このデータなしでは、レコードの開始場所と終了場所を特定することはできません。したがって、どの位置まで後退させるのか分からないので、FORM='BINARY'
ファイルをBACKSPACE
文で移動することはできません。'BINARY
' ファイルに対して読み取り (READ
) を実行すると、入力並び上にある変数を満たすのに必要なだけのデータが読み取られます。詳細は、付録 C または『FORTRAN 77 言語リファレンス』を参照してください。- 異なる装置に対する再帰的入出力が可能です (これは、
f90
I/O ライブラリが 「MT-Warm」 だからです)。- 順次書式付き出力、並びによる出力、および NAMELIST 出力でのデフォルトのレコード長は
RECL=2147483646
(231-2 上文字) です (以前のデフォルトは 267)。ENCODE
とDECODE
が、認識、実装されています。方法については、『FORTRAN 77 言語リファレンス』に記載されています。- 一時ファイルの命名規則は
f77
の場合と同じです。- 以下に示すように、
ADVANCE='NO'
で非前進入出力を有効にできます。- 内部ファイルの入出力の処理は、
f90
1.2 よりも Fortran 90 標準に近くなりました。また、内部入出力を行うルーチンを入出力リストで呼び出すことができます。これは、1.2 (またはf77
) では許可されていませんでした。- 操作上の相違点 :
- モジュールの扱い方が異なります。1 つ以上の
MODULE
単位を含むソースコードをコンパイルすると、情報ファイル (名前.mod
) がモジュールごとに生成されます。この情報ファイルの名前はモジュールの名前で、.mod
拡張子を付けて小文字で生成されます。.mod
ファイルは、モジュールがUSE
文で指定される前に使用できなければなりません。つまり、MODULE
をUSE
文で参照するファイルをコンパイルする前に、すべてのMODULE
ファイルがコンパイルされている (およびモジュール情報ファイルも作成されている) 必要があります。-ftrap=common
はデフォルトのトラップモードです。- Sun Performance Library のルーチンが配列処理を行うように自動リンクされます。
- 新しい言語要素 :
属性
PURE
とELEMENTAL
と
MAXVALMINVAL
の拡張形式
- 新しいデータ型が認識されます。
COMPLEX*32 REAL*16
(および
INTEGER*8*1、*2)
(および
LOGICAL*8*1、*2)
- いくつかのデータ表現が
f90
1.2 以降に変更されています。
INTEGER*2
は、現在では、4 バイトではなく 2 バイトです。INTEGER*1
は、現在では、4 バイトではなく 1 バイトです。LOGICAL*2
は、現在では、4 バイトではなく 2 バイトです。LOGICAL*1
は、現在では、4 バイトではなく 1 バイトです。これにより、1.2 コンパイラでコンパイルした
f90
プログラムで書き込まれたこれらのデータ項目を含むバイナリデータファイルを読み取るプログラムに影響します。これに対処するには、2.0 でコンパイルするときに*1
や*2
ではなくINTEGER*4
またはLOGICAL*4
になるように宣言を変更します。
- 値による呼び出し
%VAL
がf77
と同様に実装されています。ただし、f90
2.0 では、REAL*8
とREAL*16
を double および long double として C ルーチンに渡すことができます。f77
および C のf90
2.0 との互換性 :Fortran
77 の新機能と変更点
ここでは、今回の Sun WorkShop 6 のリリースと旧リリースで
f77
固有新たに追加された機能と変更点について説明します。Sun WorkShop 6 での
f77
の新機能次に、Sun WorkShop 6 の Fortran 77 には、次の新機能および変更された機能が含まれています。
- 入出力拡張機能:
OPEN
(FORM='BINARY'
) を指定したファイルのオープンは、レコードマークがついていないシーケンシャルバイナリ (未書式化) ファイルとして扱われます。詳細は、『FORTRAN 77 言語リファレンス』を参照してください。- 最適化コードのデバック:
-g
を他のオプションと併用することに関する制約が緩和され、並列化コードおよび-O4
または-O5
を指定した最適化コードを、dbx
および Sun WorkShop デバッカーを使用してデバックできるようになりました。- 新コマンド行オプションと変更されたコマンド行オプション
-aligncommon
は、COMMONブロック内の要素を指定のバイト境界に整列させます。-r8const
は、単精度データ定数をREAL*8
に変換します。-xmemalign
は、データ要素のメモリ内で一般的な境界整列を指定します。- UltraSPARC 先読み命令を有効にするために、
-xprefetch
の機能拡張が行われ、サブオプションが追加されました。-xtypemap
では、可能なデータ型指定のセットが拡張されました。-fast
が機能拡張され、-O5
、-fsimple=2
、-xvector=yes
および-pad=common
を設定できます。f77
の並列化機能を使用するには、Sun WorkShop HPC ライセンスが必要です。- ハイパーリンク診断メッセージ:Sun WorkShop オンラインヘルプは、「構築」ウィンドウに表示される
f77
エラー診断の解釈についてオンラインヘルプ情報を提供するようになり、エラーメッセージから詳細なオンラインヘルプへのハイパーテキストリンクを作成します。
f77
5.0 の新機能
- 新しいオプション :
-fpover
が入出力処理で浮動小数点のオーバーフローを検出します。-xcode=
code で SPARC プラットフォームのメモリーアドレスモデルを指定します。-xcommonchk
で COMMON ブロック宣言に不一致がないか実行時検査を行います。-xmaxopt
は OPT=n プラグマを有効にし、ソースコードで OPT プラグマが使用できる最大最適化レベルを制御します。-xprefetch
を使用すると、コンパイラは UltraSPARC II プラットフォームで先取り命令を生成できます。-xvector
を使用すると、コンパイラは DO ループ内の特定の数学ライブラリ呼び出しをベクトル化された数学ルーチンの単一呼び出しで置き換えることができます。- 変更されたオプション :
-xcrossfile[=
n]
オプションのレベル番号が追加されました。-fns[={yes|no}]
オプションの yes/no が追加されました。-Ztha
現在ではこのオプションは無視されます。- 新しい機能 :
-xarch=v9
またはv9a
を使用して 64 ビットの SPARC プラットフォームで 64 ビットの Solaris 7 環境用にコンパイルします。- 入出力ライブラリで大型ファイル (2GB 以上) をサポートします。
- 64 ビットの Solaris 7 環境で大規模配列をサポートします。
- 動的配列 (動的サイズのローカル配列) が実装されています (『FORTRAN 77 言語リファレンス』を参照)。
REDUCTION
指令に変数リストの配列を使用できます。- SPARC の場合 :
TASK COMMON
指令が COMMON の変数を非公開として宣言します。- Fortran 90 スタイルの定数でバイトサイズ (64 ビット、8 バイト、定数に対して
12345678_8
など) を指定できます。- 新しい最適化プラグマでコンパイラの最適化レベルをルーチンごとに設定できます。
- 2000 年以降も正しく処理される
date_AND_time( )
ライブラリルーチン
f77
4.2 の新機能
f77
4.0 リリース以降に追加、または変更されたf77
4.2 の機能は、次のとおりです。n
- 新しいオプション :
-dbl_align_all
n-stop_status=no|yes
- 変更されたオプション :
FORTRAN 77 の上位互換
FORTRAN 77 5.0 のソースは、旧リリースと互換性があります。ただし、オペレーティングシステムの変更やバグ修正のために、多少の変更が加えられています。
Fortran 3.0/3.0.1 と 4.0
Solaris 2 上で Fortran 3.0/3.0.1 を使用してコンパイル/リンクした実行可能ファイル
(a.out
)、ライブラリ (.a
)、およびオブジェクトファイル (.o
) は、Solaris 2 上で実行する Fortran 5.0 と互換性があります。Solaris 1 アプリケーションの実行
Solaris 1 上で生成した実行可能ファイルを Solaris 2 上で実行するには、バイナリ互換パッケージ (BCP) をインストールする必要があります。
Solaris 1 でコンパイル/リンクした実行可能ファイルは、Solaris 2 でも実行できます。ただし、Solaris 2.x でコンパイル/リンクした場合に比べ、パフォーマンスは低下します。
Solaris 1 で Fortran 2.0.1 を使用してコンパイル/リンクしたライブラリ (
.a
) とオブジェクトファイル (.o
) は、Fortran 5.0 とは互換性が保証されません。技術用語について
本書では、Fortran 特有の用語の和訳については、日本標準規格 Fortran (JIS X 3001-1994)で使用されている用語に準じるよう努めました。ただし、以下に挙げるものについては、他言語との関連性を考慮し、また、WorkShop 製品全体との整合性を優先し、日本標準規格とは異なる訳語を用いています。
なお、JIS X 3001-1994 で用いられる用語の調査に際しては、駒沢大学の西村和夫先生、ならびに、江戸川大学の高田正之先生にご協力いただきましたことを、感謝いたします。
サン・マイクロシステムズ株式会社 Copyright information. All rights reserved. |
ホーム | 目次 | 前ページへ | 次ページへ | 索引 |