論理データの表現

論理データは 1、2、4、または 8 バイトです。

LOGICAL データ宣言に使用される基本データの大きさは、LOGICAL(4) (LOGICAL(KIND=4) と同じ) です。ただし、コンパイラー・オプションを指定してこのデフォルトをオーバーライドできます。integer-size 16 オプションを使用して LOGICAL(2) を指定したり、integer-size 64 オプションを使用して LOGICAL(8) を指定できます。

インテル® 64 アーキテクチャー・ベースのシステム向けにパフォーマンスを向上させるには、LOGICAL(2) または LOGICAL(1) ではなく、LOGICAL(4) (または LOGICAL(8)) を使用してください。IA-32 アーキテクチャー・ベースのシステムには、LOGICAL(8)、LOGICAL(2)、LOGICAL(1) ではなく、LOGICAL(4) を使用してください。

LOGICAL(KIND=1) の値は、1 バイトで格納されます。LOGICAL(1) データは、論理値 .TRUE. と .FALSE. の他にも、-128 ~ 127 の範囲の値を持つことができます。また、論理変数は整数データとして解釈することもできます。

LOGICAL(1) に加えて、論理値は任意のバイト境界から始まる連続する 2 バイト (LOGICAL(2))、4 バイト (LOGICAL(4))、または 8 バイト (LOGICAL(8)) に格納することもできます。

ifort では、論理変数に数値を代入できます。これまでは、数値の内部表現がそのまま論理変数に割り当てられていました。現在、デフォルトでは、数値は .true. または .false. の内部表現に変換され、変換された値が論理変数に格納されます。古いセマンティクスに動作を変更するには、コマンドラインで assume old_logical_assign を指定します。

fpscomp nologicals コンパイラー・オプションが設定されている場合 (デフォルト)、論理値が真か偽かは下位ビットが決定します。C 言語で記述されたプロシージャーと Microsoft* Fortran PowerStation の論理値 (ゼロが偽、非ゼロが真) を相互運用するには、fpscomp logicals を指定します。

LOGICAL(1)、LOGICAL(2)、LOGICAL(4)、LOGICAL(8) のデータ表現 (fpscomp nologicals が設定されている場合) は以下のようになります。

LOGICAL(1)、LOGICAL(2)、LOGICAL(4)、および LOGICAL(8) のデータ表現
LOGICAL(1)、LOGICAL(2)、LOGICAL(4)、および LOGICAL(8) のデータ表現

関連情報