ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
Oracle Solaris Studio 12.3: Fortran ユーザーズガイド Oracle Solaris Studio 12.3 Information Library (日本語) |
4. Solaris Studio Fortran の機能および拡張機能
4.3.3 Cray ポインタと Fortran 95 のポインタ
4.4 STRUCTURE および UNION (VAX Fortran)
4.6.10 Fortran 2003 の FLUSH 入出力文
4.6.11 Fortran 2003 POINTER INTENT 機能
4.6.14 その他の Fortran 2003 および Fortran 2008 機能
ここでは、Fortran データ型の機能と拡張子について説明します。
f95 では、ブール型の定数と式をサポートしています。ただし、ブール型の変数、配列、文はサポートしていません。
マスク処理の場合、ビット単位の論理式ではブール型の結果が生成されます。個々のビットは、対応する演算対象のビットで行われた 1 つまたは複数の論理演算の結果を表します。
2 進の算術演算子および関係演算子では、次のように処理されます。
一方の演算対象がブール型の場合は、そのまま演算が実行されます。
両方の演算対象がブール型の場合は、両者を整数であるとみなして演算が実行されます。
ユーザー定義の関数によってブール型の結果を生成することはできません。ただし、一部の (標準でない) 組み込み関数では可能です。
ブール型と論理型には、次のような相違点があります。
変数、配列、関数は論理型にできますが、ブール型にすることはできません。
LOGICAL 文はありますが、 BOOLEAN 文はありません。
論理型の変数、定数、または式は .TRUE. または .FALSE. の 2 つの値のみ表します。ブール型の変数、定数、または式は、任意のバイナリ値を表すことができます。
論理要素は、算式、関係式、またはビット単位の論理式において無効です。ブール要素はいずれにおいても有効です。
f95 では、ブール型定数 (8 進、16 進、ホレリス) を、次のような書式 (2 進ではありません) で使用することができます。ただし変数はブール型として宣言できません。標準の Fortran では、このような書式は許されていません。
B または b のどちらの文字を使用してもかまいません。
1 桁から 11 桁までの 8 進数 (0 から 7) を使用できます。
11 桁の 8 進数は 32 ビットの完全なワードを表します。左端の数字は常に 0、1、2、3 のいずれかです。
8 進の個々の数字は 3 ビットの値を表します。
右端の桁は、右 3 ビット (29、30、31 ビット) の内容を表します。
11 桁未満の場合は、値は右揃えになります。ワードの右端にある n ビットから 31 ビットまでが使用され、それ以外のビットは 0 になります。
空白は無視されます。
入出力の書式指定では、B という文字は 2 進数であることを示しますが、それ以外の場合は 8 進数であることを表します。
X'ddd' または X"ddd"、d が任意の 16 進数である の書式です。
1 桁から 8 桁までの 16 進数 (0 から 9、A から F) を使用できます。
文字は大文字でも小文字でもかまいません (X、x、A から F、a から f)。
数字は引用符 (アポストロフィ) または二重引用符で囲む必要があります。
空白は無視されます。
16 進数の始めに + か - の記号を付けてもかまいません。
8 桁の 16 進数は 32 ビットの完全なワードを表しています。この 32 ビットワードの各ビットの内容は、同じ値を表す 2 進数に対応しています。
8 桁未満の場合は、値は右揃えになります。ワードの右端にある n ビットから 31 ビットまでが使用され、それ以外のビットは 0 になります。
ホレリスデータには、次の書式を使用できます。
|
前述の「…」は文字列を表し、n は文字数を表します。
例: 8 進と 16 進の定数の表現例を示します。
|
例: 代入文での 8 進と 16 進の使用例を示します。
i = 1357B j = X"28FF" k = X’-5A’
算術式の中で 8 進数または 16 進数の定数を使用すると、結果が未定義になることがあります。ただし、構文エラーにはなりません。
f95 では、DATA 文以外の場所で BOZ 定数を使用することができます。
|
このような BOZ 定数が実数変数に代入されている場合には、型は変換されません。
標準の Fortran では、BOZ 定数は DATA 文でのみ使用できます。
f95 では、宣言文、関数文、IMPLICIT 文において、次のような非標準の書式で型を宣言することができます。1 列目の形式は一般に使用されていますが、非標準の Fortran です。2 列目の種別番号はベンダーにより変わります。
表 4-2 数値データ型のサイズの表記法
|
記憶領域および整列は常にバイト単位で表されます。シングルバイトに収まる値は、バイト整列です。
データ型のサイズおよび整列は、コンパイラのオプションとプラットフォーム、および変数の宣言方法に依存します。COMMON ブロック内のデフォルトの最大の整列は、4 バイトの境界整列です。
デフォルトのデータ整列および記憶領域の割り当ては、-aligncommon、 -f、-dalign、-dbl_align_all、-xmemalign、および -xtypemap などの特別なオプションを指定してコンパイルすることにより、変更できます。このマニュアルは、これらのオプションが有効でないものとして記述されています。
いくつかのプラットフォームにおける特殊ケースのデータ型および整列については、『Fortran プログラミングガイド』に追加の説明があります。
デフォルトのサイズおよび整列を次の表にまとめます (データ型のその他の点およびオプションは考慮していません)。
表 4-3 デフォルトのデータサイズおよび整列 (バイト)
|
次の点に注意してください。
REAL*16 および COMPLEX*32: 64 ビット環境 (-m64 を指定してコンパイル) では、デフォルトの整列は、表で 8/16 と示されるように、8 バイトではなく 16 バイト境界整列になります。このデータ型は、4 倍精度とも呼ばれます。
配列および構造体は、その要素または欄に従って整列します。配列は、配列要素と同じように整列します。構造体は、もっとも広い整列で整列する欄と同じように整列します。
オプション -f または -dalign は、8、16、または 32 バイトのデータすべてを、強制的に 8 バイト境界で整列させます。オプション -dbl_align_all の場合は、すべてのデータが 8 バイト境界で整列します。これらのオプションを使用するプログラムには、移植性がない場合があります。