Oracle® Solaris Studio 12.4: Fortran ユーザーズガイド

印刷ビューの終了

更新: 2014 年 12 月
 
 

4.2.1 ブール型

f95 では、ブール型の定数と式をサポートしています。ただし、ブール型の変数、配列、文はサポートしていません。

4.2.1.1 ブール型に関する規則

  • マスク処理の場合、ビット単位の論理式ではブール型の結果が生成されます。個々のビットは、対応する演算対象のビットで行われた 1 つまたは複数の論理演算の結果を表します。

  • 2 進の算術演算子および関係演算子では、次のように処理されます。

    • 一方の演算対象がブール型の場合は、そのまま演算が実行されます。

    • 両方の演算対象がブール型の場合は、両者を整数であるとみなして演算が実行されます。

  • ユーザー定義の関数によってブール型の結果を生成することはできません。ただし、一部の (標準でない) 組み込み関数では可能です。

  • ブール型と論理型には、次のような相違点があります。

    • 変数、配列、関数は論理型にできますが、ブール型にすることはできません。

    • LOGICAL 文はありますが、BOOLEAN 文はありません。

    • 論理型の変数、定数、または式は、.TRUE. または .FALSE. の 2 つの値のみ表します。ブール型の変数、定数、または式は、あらゆるバイナリ値を表すことができます。

    • 論理要素は、算式、関係式、またはビット単位の論理式において無効です。ブール要素はいずれにおいても有効です。

4.2.1.2 ブール型定数の代替書式

f95 では、ブール型定数 (8 進、16 進、ホレリス) を、次のような書式 (2 進ではありません) で使用することができます。ただし変数はブール型として宣言できません。標準の Fortran では、このような書式は許されていません。

8 進

書式は ddddddB です。d は任意の 8 進数です。

  • 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 進数であることを表します。

16 進

X'ddd' または X"ddd"d が任意の 16 進数である の書式です。

  • 1 桁から 8 桁までの 16 進数 (0 から 9、A から F) を使用できます。

  • 文字は大文字でも小文字でもかまいません (XxA から Fa から f)。

  • 数字は引用符 (アポストロフィ) または二重引用符で囲む必要があります。

  • 空白は無視されます。

  • 16 進数の始めに + か - の記号を付けてもかまいません。

  • 8 桁の 16 進数は 32 ビットの完全なワードを表しています。この 32 ビットワードの各ビットの内容は、同じ値を表す 2 進数に対応しています。

  • 8 桁未満の場合は、値は右揃えになります。ワードの右端にある n ビットから 31 ビットまでが使用され、それ以外のビットは 0 になります。

ホレリス

ホレリスデータには、次の書式を使用できます。

nH
’H
""H
nL
’L
""L
nR
’R
""R

前述の「…」は文字列を表し、n は文字数を表します。

  • ホレリス定数はブール型です。

  • ビット単位の論理式に文字定数がある場合は、その式はホレリスとみなされます。

  • ホレリス定数には 4 文字まで使用することができます。

例: 8 進と 16 進の定数の表現例を示します。

ブール型定数
1 ワード 32 ビットでの内部の 8 進数
0B
00000000000
77740B
00000077740
X"ABE"
00000005276
X"-340"
37777776300
X’1 2 3’
00000000443
X’FFFFFFFFFFFFFFFF’
37777777777

例: 代入文での 8 進と 16 進の使用例を示します。

i = 1357B
j = X"28FF"
k = X’-5A’

算術式の中で 8 進数または 16 進数の定数を使用すると、結果が未定義になることがあります。ただし、構文エラーにはなりません。

4.2.1.3 別の場所におけるブール型定数の使用

f95 では、DATA 文以外の場所で BOZ 定数を使用することができます。

Bbbb
Oooo
Zzzz
B"bbb"
O"ooo"
Z"zzz"

このような BOZ 定数が実数変数に代入されている場合には、型は変換されません。

標準の Fortran では、これらを DATA 文でのみ使用できます。