更新日付: 2004 年 5 月 26 日 |
Sun Studio 9: Fortran 95 Readme |
目次
- はじめに
- Sun Studio 9 Fortran 95 について
- 新規および変更された機能
- ソフトウェアの修正事項
- 問題点と回避策
- 制限事項と互換性の問題
- 記述の誤りの訂正
- Fortran 95 の必須パッチ
- ライブラリの再配布について
A. はじめに
この文書では、Sun[tm] Studio 9 Fortran 95 コンパイラ、f95 に関する情報を提供しています。記載内容は、このリリースで導入された新機能とソフトウェアの修正事項、既知の問題点、制限事項、互換性の問題などです。また、本書の記載内容はソフトウェアマニュアルの情報を更新ないし補充します。
製品マニュアル
- リリースノート: http://docs.sun.com から入手可能です。リリースノートの情報は、各製品の Readme ファイルの情報に優先します。
- コンパイラおよびツールのドキュメント: 製品のマニュアルページ、README の HTML バージョン、およびマニュアルは、/installation_directory/SUNWspro/docs/ja/index.html からアクセスできます。Solaris プラットフォームの場合、デフォルトの installation_directory は、/opt です。Sun Studio 9 ソフトウェアが /opt 以外のディレクトリにインストールされている場合は、ご使用のシステムにおける実際のパスを、システム管理者に確認してください。index.html ページから以下のマニュアルにアクセスできます。
- Fortan ユーザーズガイド
- Fortran プログラミングガイド
- OpenMP API ユーザーズガイド
- 数学ライブラリ Readme
- 数値計算ガイド
- インクリメンタルリンカー Readme
- Sun Performance Library Readme
- Sun Performance Library Reference Manual
- Sun Performance Library User's Guide
- IDE のドキュメント: IDE にある「ヘルプ」メニューから Sun Studio 9 IDE の各コンポーネントのオンラインヘルプにアクセスできます。
- 開発者向けリソースのポータル : 技術資料、サンプルコード、ドキュメント、ナレッジベースについては、開発者向けポータルの http://developers.sun.com/prodtech/cc を参照してください。
注 - Compiler Collection ソフトウェアがデフォルトの /opt 以外のディレクトリにインストールされている場合は、ご使用のシステムにおける実際のパスを、システム管理者に確認してください。
B. Sun Studio 9 Fortran 95 について
この文書は、今回のリリースのバージョン 8.0 の f95 で新たに追加された機能と変更された機能に関する最新情報を提供します。
バージョン 8.0 の Fortran 95 コンパイラ f95 は、Sun Studio 9 のコンポーネントの 1 つとしてリリースされ、SPARC(R) プラットフォームおよび x86 プラットフォームの Solaris[tm] オペレーティングシステム (Solaris OS) のバージョン 8、9、および 10 で使用できます。
このコンパイラの前のバージョンは 7.1 で、Sun Studio 8 とともにリリースされました。
C. 新規および変更された機能
ここでは、このリリースの Fortran 95 で新たに追加された機能と変更された機能を説明しています。 各コンパイラオプションの詳細は、『Fortran ユーザーズガイド』と f95(1) のマニュアルページを参照してください。
- x86 プラットフォーム版 Solaris OS 用の f95
- 実行時パフォーマンスの向上
- Fortran 2003 のコマンド行組み込み関数
- f95 コマンド行オプションの追加および変更
- デフォルトの SPARC アーキテクチャを v8plus に変更
- OpenMP: 最大スレッド数を増加
- OpenMP: 変数の自動スコープ
- x86 プラットフォーム版 Solaris OS 用の f95
このリリースの Sun Studio では、x86 プラットフォーム版 Solaris OS で Fortran 95 コンパイラが使用できるようになっています。-xtarget 値として generic、 native、 386、 486、pentium、 pentium_pro、 pentium3、pentium4 のいずれかを使ってコンパイルし、Solaris x86 プラットフォーム用の実行可能ファイルを生成できます。x86 プラットフォームでのデフォルトは -xtarget=generic です。x86 プラットフォーム版の場合、次の f95 機能はまだ実装されていません。使用できるのは、SPARC プラットフォーム上だけです。
- 区間演算 (コンパイラオプション -xia および -xinterval)
- Quad (128 ビット) 演算 (REAL*16 など)
- IEEE 組み込みモジュール の IEEE_EXCEPTIONS、IEEE_ARITHMETIC、および IEEE_FEATURES
- sun_io_handler モジュール
- -autopar、-parallel、-explitipar、-openmp などの並列化オプション
次の f95 コマンド行オプションは、x86 プラットフォームでのみ使用できます。SPARC プラットフォーム では使用できません。
- -fprecision、-fstore、および -nofstore
次の f95 コマンド行オプションは、SPARC プラットフォームでのみ使用できます。x86 プラットフォーム では使用できません。
- -xcode、-xmemalign、-xprefetch、-xcheck、-xia、-xinterval、-xipo、-xjobs、-xlang、-xlinkopt、-xloopinfo、-xpagesize、-xprofile_ircache、-xreduction、-xvector、-depend、-openmp、-parallel、-autopar、-explicitpar、-vpara、-XlistMP
また、x86 プラットフォーム版の場合、-fast を指定することによって -nofstore が追加されます。
x86 プラットフォームでのコンパイルについて
- x86 プラットフォームにおける -xtarget 値と展開
x86 プラットフォームの場合は、2 つの -xtarget 値が新たに使用できるようになっています。
-xtarget=pentium3 は、-xarch=sse -xchip=pentium3 -xcache=16/32/4:256/32/4 に展開されます。
-xtarget=pentium4 は、-xarch=sse2 -xchip=pentium4 -xcache=8/64/4:256/128/8 に展開されます。- 次の -xarch および -xchip 値が新たに追加されています。
-xchip=pentium3 - Pentium 3 プロセッサ用に最適化します。
-xchip=pentium4 - Pentium 4 プロセッサ用に最適化します。
-xarch=sse は、pentium_pro 命令セットに sse 命令セットを追加します。
-xarch=sse2 は、pentium_pro 命令セットに sse2 命令セットを追加します。
- -fns は、pentium3 または pentium4 プロセッサでのみ有効です。-xarch が sse か sse2 でない場合、-fns=yes は無視されます。-xarch が sse か sse2 の場合、SSE および SSE2 浮動小数点演算命令に対し、-fns=yes は、アンダーフローをゼロにフラッシュし (FTZ)、非正規化オペランドをゼロとして扱う (DAZ) ことを意味します。-fns=yes は、従来の x86 浮動小数点演算命令には影響しません。
- x86 に関する特記事項
Solaris x86 SSE/SSE2 Pentium 4 互換プラットフォームで動作するよう -xarch={sse | sse2} を使ってコンパイルしたプログラムは、SSE/SSE2 対応のプラットフォームでのみ実行する必要があります。SSE/SSE2 に対応していないプラットフォームでそうしたプログラムを実行すると、セグメント例外が発生したり、明示的な警告メッセージなしに不正な結果が発生することがあります。SSE/SSE2 でコンパイルされたバイナリが SSE/SSE2 に対応していないプラットフォームで実行されることのないようにするための OS およびコンパイラに対するパッチが、後日提供される可能性があります。
Pentium 4 互換のプラットフォームの場合は、Solaris 9 update 6 以降の OS リリースは SSE/SSE2 に対応しています。これより前のバージョンの Solaris OS は SSE/SSE2 に対応していません。
このことは、.il インラインアセンブリ言語関数を使用しているプログラムや、SSE/SSE2 命令を利用している __asm() アセンブラコードにも当てはまります。
コンパイルとリンクを別々に行う場合は、必ずコンパイラを使ってリンクし、-xarch={sse | sse2} で適切な起動ルーチンがリンクされるようにしてください。
x86 の浮動小数点レジスタのサイズが 80 バイトであるため、x86 上と SPARC 上での算術演算結果が異なることがあります。こうした違いが出ないようにするには、-fstore オプションを使用してください。あるいは、ハードウェアが SSE2 をサポートしている場合は、-xarch=sse2 を付けてコンパイルしてください。- 実行時パフォーマンスの向上
今回のリリースでは、多くのアプリケーションの実行時パフォーマンスが向上するとみられます。最良の結果を得るには、最適化レベルを高くして (-xO4 または -xO5)、コンパイルしてください。これらのレベルでは、コンパイラが内部手続きや、形状引き継ぎ、割り付け、あるいはポインタ引数を持つ手続きをインライン化することができます。- Fortran 2003 のコマンド行組み込み関数
Fortran 2003 規格草案では、コマンド行引数および環境変数を処理するための新しい組み込み関数が紹介されています。今回のリリースの f95 コンパイラには、これらの組み込み関数が実装されています。新しい組み込み関数は以下のとおりです。
- GET_COMMAND(コマンド, 長さ, ステータス)
コマンド で、プログラムを呼び出しコマンド行全体を返します。- GET_COMMAND_ARGUMENT(コマンド, 値, 長さ, ステータス)
値でコマンド行引数を返します。- GET_ENVIRONMENT_VARIABLE(名前, 値, 長さ, ステータス, トリム名)
環境変数の値を返します。- f95 コマンド行オプションの追加および変更
このリリースの f95 では、次のコマンド行オプションが新しく追加されています。詳細は f95(1) のマニュアルページを参照してください。
このリリースの f95 では、次のコマンド行オプションのデフォルト値が変更されています。
- -xipo_archive={ none | readonly | writeback }
クロスファイル最適化でアーカイブ (.a) ライブラリを取り込むことができます (SPARC のみ)。-xipo_archive=none
アーカイブファイルを処理しません。-xipo_archive=readonly
実行可能ファイルを生成する前に、アーカイブライブラリ (.a) に存在するオブジェクトファイル (-xipo でコンパイルしたファイル) を使ってリンカーに渡すオブジェクトファイルを最適化します。-xipo_archive=writeback
実行可能ファイルを生成する前に、アーカイブライブラリ (.a) に存在するオブジェクトファイル (-xipo でコンパイルしたファイル) を使ってリンカーに渡すオブジェクトファイルを最適化します。コンパイル中に最適化されたライブラリに含まれるオブジェクトファイルはすべて、その最適化されたバージョンに置き換えられます。-xipo の値が指定されていない場合、コンパイラは -xipo_archive=none とみなします。
- -xprefetch_auto_type=[no%]indirect_array_access
間接アクセスされるデータ配列に対して間接プリフェッチを生成します (SPARC のみ)。[no%]indirect_array_access
直接メモリーアクセスに対してプリフェッチが生成されるのと同じ方法で、-xprefetch_level=[1|2|3] オプションが指示するループに対して間接プリフェッチを生成します (または生成しません)。-xprefetch_auto_type の値が指定されていない場合、コンパイラは -xprefetch_auto_type=[no%]indirect_array_access に設定します。
-xprefetch オプションは、SPARC プラットフォームでのみ使用できます。
-xdepend、-xrestrict、-xalias_level などのオプションは、メモリー別名のあいまいさを排除する情報の生成に役立つため、間接プリフェッチ候補の決定の積極性に影響し、このため、自動的な間接プリフェッチの挿入が促進されることがあります。
- -xprofile_pathmap=collect_prefix:use_prefix
プロファイルデータファイルのパスマッピングを設定します。以前に -xprofile=collect を使ってコンパイルしたときに使用したディレクトリとは異なるディレクトリにプロファイリングする場合は、-xprofile_pathmap オプションを -xprofile=use オプションと併用してください。
- -xprefetch のデフォルト値は -xprefetch=no%auto,explicit です。
- -xmemalign のデフォルト値は -xmemalign=8i です。 ただし、-xarch=v9 オプションのいずれかを付けたコンパイルでは、デフォルト値は -xmemalign=8f になります。
- -xarch=v9 オプションのいずれかを付けたコンパイルでの -xcode のデフォルト値は abs44 になります。
以前のリリースのコンパイラで使用されていたデフォルト値でコンパイルにするには、次のオプションを明示的に指定します。
- 32 ビットコンパイルの場合: -xarch=v8 -xmemalign=4s -xprefetch=no
- 64 ビットコンパイルの場合: -xcode=abs64 -xprefetch=no
- デフォルトの SPARC アーキテクチャを v8plus に変更
デフォルトの SPARC アーキテクチャは V7 でなくなりました。この Sun Studio 9 リリースでは、-xarch=v7 のサポートに制限があります。新しいデフォルトは V8PLUS (UltraSPARC) です。-xarch=v8 以上をサポートしているのは Solaris 8 OS だけであるため、-xarch=v7 によるコンパイルは、-xarch=v8 として扱われます。SPARC V8 システム (SPARCStation 10 など) に配備するには、明示的に -xarch=v8 を使ってコンパイルします。提供のシステムライブラリは、SPARC V8 アーキテクチャで動作します。
SPARC V7 システム (SPARCStation 1 など) に配備するには、明示的に -xarch=v7 を使ってコンパイルします。提供のシステムライブラリは、SPARC V8 命令セットを利用します。この Sun Studio 9 リリースでは、SPARC V7 アーキテクチャをサポートするのは、Solaris 8 OS だけです。SPARC V8 命令が検出されると、OS はソフトウェアでその命令を解釈します。このためプログラムは実行されますが、パフォーマンスは低下します。
- OpenMP: 最大スレッド数を増加
OMP_NUM_THREADS およびマルチタスクライブラリの最大スレッド数が 128 から 256 に増加しました。- OpenMP: 変数の自動スコープ
このリリースの Fortran 95 コンパイラに実装されている、共有メモリー並列プログラミング用の OpenMP API には、並列領域における変数の自動スコープ機能があります。詳細は、『OpenMP API ユーザーズガイド』を参照してください。(このリリースでは、OpenMP は SPARC プラットフォームにのみ実装されます。)その他の Sun Studio 9 コンポーネントについては、『Sun Studio 9 の新機能』を参照してください。このマニュアルは、ソフトウェアに付属している他のマニュアル同様、file:/opt/SUNWspro/docs/index.html からアクセスできます。Sun Studio 9 コレクションの『Sun Studio 9 の新機能』は、http://docs.sun.comでも提供しています。
D. ソフトウェアの修正事項
現時点では新しい情報はありません。
E. 問題点と回避策
ここでは、このリリースにおける既知のソフトウェアの問題と、その回避策について説明します。
次に示す問題の多くは、このリリースのあとで提供されるパッチで修正される可能性があります。最新情報またはパッチについては、http://developers.sun.com/prodtech/cc/support_index.html を参照してください。
- -errwarn オプションが機能しない
このリリースで導入されたオプションフラグの -errwarn が正しく実装されていないため、コマンド行エラーになります。パッチを入手して、この問題を解決してください。(5035157)- 予期しないインライン化
引数リストを空にして -xinline= フラグを使用すると、インライン化が完全に無効になるはずです。しかし、実際には一部関数がインライン化されることがあります。回避策は、明示的に -xinline=%none を使用することです。(5032991)
- -xO4 の位置でセグメント例外
-xO4 を付けてコンパイルしたサブプログラムに対する引数が定数の場合、最適化が不適切であると、間違って定数への書き込みを試みるコードが挿入され、セグメント例外になることがあります。回避策として、最適化レベルを低くしてサブプログラムをコンパイルしてください。 (5040283)
F. 制限事項と互換性の問題
ここでは、制限事項およびシステムまたはその他のソフトウェアとの互換性の問題について説明します。
- -xlinkopt
-xlinkopt を指定してコンパイルする場合、-zcompreloc リンカーオプションは使用しないでください。[4825600]
- モジュール情報ファイル (.mod) の書式
モジュール情報ファイル (.mod ファイル) の書式は、このリリースのコンパイラで変更されました。コンパイラは、次に示す 1 つのケースを除き、旧リリースで生成された .mod ファイルを問題なく処理します。
モジュール OLD が旧リリースの f95 コンパイラでコンパイルされていて、モジュール NEW を現在のリリースでコンパイルすると、問題が発生する可能性があります。この問題を防ぐには、古いモジュール OLD をこのリリースで再コンパイルしてください。
MODULE NEW
USE OLD
END MODULE
コンパイルされた各 .mod ファイルには、それを生成したコンパイラに関連するバージョン番号が付けられます。このリリースのコンパイラでコンパイルされたモジュールファイルには、"Version 1.0" が付けられます。コンパイル済みの .mod のバージョン番号は、fdumpmod(1) ユーティリティーを使用して確認できます。f95 コンパイラの以前のリリースで生まれた互換性の問題は、このリリースの 8.0 コンパイラでも継続しています。以前の f95 リリースから 8.0 (Sun Studio 9) にアップグレードするにあたっては注意してください。互換性の問題とは次のとおりです。
- 区間関数の呼び出し
Forte Developer 7 リリースで区間関数の呼び出しのインタフェース (AB) が変更され、Sun WorkShop 2 update 2 およびそれ以前のリリースの ABI とバイナリレベルの互換性がなくなっています。つまり、区間関数を使用したプログラムとライブラリは、現在の f95 で再コンパイルする必要があります。特に、C++ で呼び出される Fortran 区間関数と Fortran で呼び出される C++ 区間関数は、f95 と CC コンパイラで再コンパイルする必要があります。
- CHARACTER*1 「値による呼び出し」インタフェース
Fortran 95 バージョン 7.0 では、引用仕様宣言内の VALUE 属性で指定された副プログラムの呼び出しで、CHARACTER*1 を渡す方法について旧リリースとの互換性がありませんでした。
Fortran 95 プログラムを正しく記述し、バージョン 7.0 または 8.0 の f95 でコンパイルした場合、旧リリースとの違いは問題になりません。呼び出し側ルーチンと呼び出されたルーチンが異なるリリースのコンパイラでコンパイルされている場合、またはいずれかのルーチンが C で記述されている場合、旧リリースとの違いが問題となります。
次の例で考えてみます。
main.f:
interface
subroutine s(c1,c2)
character*1, value :: c1 ! c1 is call-by-value
character*2 :: c2
integer I
end subroutine
end interface
call s('A', 'BC')
end
sub.f:
subroutine s(c1,c2)
character*1, value :: c1
character*(*) :: c2
print *, 'You passed ',c1,' and ',c2
ENDmain.f を以前のリリースのコンパイラでコンパイルして、sub.f を今回のリリースでコンパイルした場合、プログラムは誤って次の結果を生成します。
You passed A and Bこのリリースのコンパイラは、文字長パラメータを持たない CHARACTER *1 データの場合は、値による呼び出しで渡します。それ以外の場合は、コンパイラが呼び出しの一部として自動的に生成する非表示の長さパラメータ付きで文字データは渡されます (Fortran 95 では CHARACTER データの値による呼び出しを CHARACTER*1 に限定しています)。
同様に、Fortran 95 ルーチンを呼び出すか Fortran 95 ルーチンに呼び出される C ルーチンで CHARACTER*1 データが値による呼び出しで渡されることを必要としているものは、それらの引数について長さパラメータを必要としないように書き直す必要があります。
- Forte Developer 6 アップデート 2 オブジェクトファイルとのバイナリレベルの非互換性
バージョン 7.0 の f95 では、明示的な KIND と共に入力された構造型または変数を -aligncommon フラグが正しく整合しないという問題が修正されています。
次のプログラムを例に見てみます。
-aligncommon を使用して FD6u2 Fortran 95 (バージョン 6.2) でコンパイルすると、次の出力が生成されます。
character*26 type
logical(1) :: l1 = .true.
real(16) :: r16 = 1
integer(2) :: i2 = 1
common /A/ l1,r16,i2
print *, '--------------------------------------------'
print *, ' Fortran 95 COMMON-block alignment in Bytes '
print *, '--------------------------------------------'
type = 'logical(1)'
print *, type, loc(l1)-loc(l1)
type = 'real(16)'
print *, type, loc(r16)-loc(l1)
type = 'integer(2)'
print *, type, loc(i2)-loc(l1)
end本来なら、次のような出力が得られるはずです (実際、バージョン 8.0 と 7.0 の f95 コンパイラでは、次のように出力します) 。
--------------------------------------------
Fortran 95 COMMON-block alignment in Bytes
--------------------------------------------
logical(1) 0
real(16) 8
integer(2) 24
--------------------------------------------
Fortran 95 COMMON-block alignment in Bytes
--------------------------------------------
logical(1) 0
real(16) 1
integer(2) 17共通ブロックが明示的な kind 値とともに入力された構造型または変数を含む場合、-aligncommon オプションを使用してコンパイルする際に、FD6U2 オブジェクトファイルを、バージョン 8.0 または 7.0 コンパイラで生成されたオブジェクトと混在させないでください。
以下に示す一般的な事柄にも注意してください。
Solaris 7 以降のリリースの OS が動作する SPARC V9 プラットフォーム上でのリンク
libm.a や libc.a といった多くの静的システムライブラリは、最近の Solaris の SPARC V9 プラットフォームでは利用できません。このため、動的共有ライブラリの libm.so と libc.so のみ提供されています。このため、SPARC V9 プラットフォームでは、-Bstatic および -dn コンパイラオプションによってリンクエラーが発生する可能性があることを意味します。この場合、アプリケーションは動的ライブラ リを使用する必要があります。
システムライブラリを動的にリンクしながら、静的バージョンのユーザーライブラリと明示的にリンクするには、次のようなコマンド行を使用します。
f95 -o prog prog.f -Bstatic -lxyz -labc -Bdynamic
このコマンドは、libxyz.a および llibabc.a と明示的にリンクする一方、シ ステムライブラリをはじめとする、その他のすべてのライブラリを動的にリン クします。
配列組み込み関数における大域レジスタの使用
配列組み込み関数の ANY、ALL、COUNT、MAXVAL、MINVAL、SUM、PRODUCT、DOT_PRODUCT、MATMUL は、各 SPARC プラットフォームアーキテクチャ用に高度に調整されています。このため、これらの関数は大域レジスタの %g2、%g3、%g4 をスクラッチレジスタとして利用します。
上記の配列組み込み関数を呼び出す場合に、これらのレジスタが一時記憶領域として利用できることを前提にしたユーザーコードを作成しないでください。これらのレジスタ内のデータは、配列組み込み関数を呼び出したときに上書きされます。
アーカイブライブラリ内の F95 モジュールが実行可能ファイルに含まれない
デバッガ dbx では、コンパイルで使用するオブジェクトファイルがすべて実行可能ファイルに含まれている必要があります。通常のプログラムは、ユーザーが特別な作業をしなくても、この要件を満たします。例外となるのは、モジュールを含むアーカイブを使用する場合です。プログラムがモジュールを使用するが、モジュール内の手順または変数をどれも参照しない場合は、結果として生じるオブジェクトファイルには、モジュール内で定義されるシンボルへの参照は含まれません。リンカーは、オブジェクトファイルで定義されているシンボルへの参照が存在する場合のみ、アーカイブに入っているオブジェクトファイルをリンクします。そのような参照がない場合、オブジェクトファイルは実行可能ファイルに含まれません。dbx は、使用したモジュールと関連するデバッグ情報を検索する際に警告メッセージを表示します。デバッグ情報が見つからないシンボルに関する情報は提供できません。
この問題を回避するためには、-u リンカーオプションを使用します。このオプションは、1 つのシンボルをそのオプション引数として取ります。そのシンボルを未定義のリンカーシンボルのセットに追加し、問題を解決します。モジュールと関連付けられているリンカーシンボルは通常、小文字の文字列に下線が後続するモジュール名です。
たとえば、モジュール MODULE_1 を含むオブジェクトファイルをアーカイブから取り出すには、リンカーオプション -u module_1_ を指定します。 f95 コマンドを使用してリンクを実行する場合、コマンド行で -Qoption ld -umodule_1_ を使用してください。
Fortran 95 の構成型および SCCS
SCCS ではパーセント記号 (%) を単一文字の ID キーワードの区切り文字として使用するため、単一文字の名前で構造体コンポーネントを定義する、Fortran 95 プログラムのユーザーは、SCCS 管理されたソースコードファイルを保持する上で、予期しない結果を受け取ることがあります。
これは必ずしもコンパイラのバグとは限らず、Fortran 95 言語と SCCS ソースコード管理システムの衝突である可能性があります。
この問題を回避するには、ソースコードを SCCS で管理する計画がある場合は、構造体の構成要素に単一文字の名前を使用しないようにします。またはキーワードを無視する SCCS get オプション -k でファイルを取得するか、X % Y % Z のように % の前後に空白を挿入します。
G. 記述の誤りの訂正
現時点では情報はありません。
H. Fortran 95 の必須パッチ
このリリースの必須およびオプションのパッチについては、『リリースノート』を参照してください。
I. ライブラリの再配布について
実行可能ファイルが、次のファイルに示されたサンの動的ライブラリを必要とする場合は、ライセンスにもとづいて、それらのライブラリを再配布できます。
/opt/SUNWspro/READMEs/ja/runtime.libraries
注 - ソフトウェアが /opt 以外のディレクトリにインストールされている場合は、ご使用のシステムにおける実際のパスを、システム管理者に確認してください。
どのような形態でも、ヘッダーファイル、ソースコード、オブジェクトモジュール、オブジェクトモジュールの静的ライブラリを第三者に配付、公開することはできません。
使用ライセンスは、CD-ROM のケースの裏面にあるエンドユーザーオブジェクトコードライセンスに記載されています。
Copyright (C) 2004 Sun Microsystems, Inc. All rights reserved.Use is subject to license terms.