組み込み型

整数

+----------------------------------IBM 拡張----------------------------------+

次の表では、XL Fortran が整数データ型を使用して 表すことのできる値の範囲を示しています。

Kind パラメーター 値の範囲
1 -128 〜 127
2 -32 768 〜 32 767
4 -2 147 483 648 〜 2 147 483 647
8 -9 223 372 036 854 775 808 〜 9 223 372 036 854 775 807

XL Fortran は、デフォルトの kind 型付きパラメーターを 4 に設定します。 kind 型付きパラメーターは、整数値のバイト・サイズと同等です。 -qintsize コンパイラー・オプションを使用して、 デフォルトの整数サイズを 2、4、8 バイトのいずれかに変更してください。 -qintsize オプションが、デフォルトの論理サイズに対しても 同じように影響することに注意してください。

+------------------------------End of IBM 拡張-------------------------------+

整数の型指定子は、INTEGER キーワードを含んでいなければなりません。 整数の型指定子のエンティティーの宣言に関する詳細については、INTEGERを参照してください。

符号付き整数のリテラル定数の形式は、以下のとおりです。



            .-------.
            V       |
>>-+-----+----digit-+--+---------------+-----------------------><
   +- + -+             '-_--kind_param-'
   '- - -'
 
 

kind_param
数字ストリング またはスカラー整数定数名 のいずれかです。

符号付き整数のリテラル定数は、オプションの符号を持ち、 その後に小数点の付かない整数を表す 10 進数のストリングが続き、 さらに、必要な場合には kind 型付きパラメーターが続きます。 符号付き整数のリテラル定数は、正、負、ゼロのいずれでもかまいません。 符号なしでゼロ以外の場合、その定数は正の値と見なされます。

kind_param を指定する場合、リテラル定数の絶対値は その kind_param で許される値の範囲内で表現できるものでなければなりません。

+----------------------------------IBM 拡張----------------------------------+

XL Fortran で kind_param が指定されておらず、 しかも定数の絶対値をデフォルトの整数で表せない場合には、 その定数は表現可能な種類にプロモートされます。

XL Fortran は、内部的に 2 つの補数表記で整数を表します。 最左端のビットは数の符号です。

+------------------------------End of IBM 拡張-------------------------------+

整定数の例

0                       ! has default integer size
-173_2                  ! 2-byte constant
9223372036854775807     ! Kind type parameter is promoted to 8

実数

+----------------------------------IBM 拡張----------------------------------+

次の表では、XL Fortran が実数データ型で表すことのできる 値の範囲を示しています。

Kind パラメーター ゼロ以外の近似絶対最小値 近似絶対最大値 近似精度 (10 進数)
4 1.175494E-38 3.402823E+38 7
8 2.225074D-308 1.797693D+308 15
16 2.225074Q-308 1.797693Q+308 31

XL Fortran は、デフォルトの kind 型付きパラメーターを 4 に設定します。 kind 型付きパラメーターは、実数値のバイト・サイズと同等です。 -qrealsize コンパイラー・オプションを使用して、 デフォルトの実サイズを 4 バイトまたは 8 バイトに変更してください。 -qrealsize オプションは デフォルトの複素数のサイズに影響することに注意してください。

XL Fortran は、REAL(4) および REAL(8) の数字を 内部的には ANSI/IEEE の 2 進浮動小数点形式で表します。この形式は、 符号ビット (s)、バイアス指数 (e)、および小数部 (f) で構成されています。 REAL(16) 表示は、REAL(8) 形式に基づいています。

REAL(4)
Bit no. 0....|....1....|....2....|....3.
        seeeeeeeefffffffffffffffffffffff

REAL(8)
Bit no. 0....|....1....|....2....|....3....|....4....|....5....|....6...
        seeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffff

REAL(16)
Bit no. 0....|....1....|....2....|....3....|....4....|....5....|....6...
        seeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffff
Bit no. .|....7....|....8....|....9....|....0....|....1....|....2....|..
        seeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffff

また、この ANSI/IEEE 2 進浮動小数点形式は、+infinity (+無限大)、-infinity (-無限大)、NaN (非数値) という 値も表します。 NaN は、さらに、静止 NaN または、信号 NaN に分類することができます。 NaN 値の内部表示に関する詳細については、「XL Fortran ユーザーズ・ガイド」の 『XL Fortran 浮動小数点処理』を参照してください。

+------------------------------End of IBM 拡張-------------------------------+

実数型指定子には、REAL キーワードか DOUBLE PRECISION キーワードが含まれていなければなりません。 DOUBLE PRECISION 値の精度はデフォルトの実数値の 2 倍です。 (単精度 という用語は、IEEE の 4 バイト表示を、倍精度 という用語は、IEEE の 8 バイト表示を意味します。) 実数型のエンティティーの宣言に関する詳細については、REALおよび DOUBLE PRECISIONを参照してください。

実リテラル定数の形式は、次のとおりです。

基本実定数は、順に、オプションの符号、整数部、小数点、および小数部から構成されています。 整数部と小数部はどちらも数字ストリングです。これらのいずれか一方を省略することはできますが、両方を同時に省略することは できません。 ユーザーは、定数の近似値を出すために XL Fortran が使用する桁数よりも多い桁数を使って基本実定数を書くことができます。 XL Fortran では、基本実定数は 10 進数として解釈されます。

実定数の形式は、次のとおりです。



              .-------.
              V       |
>>-+-+-----+----digit-+--exponent-----------------------+------->
   | +- + -+                                            |
   | '- - -'                                            |
   |          .-------.                                 |
   |          V       |                                 |
   +-+-----+----digit-+--.--+-----------+--+----------+-+
   | +- + -+                | .-------. |  '-exponent-' |
   | '- - -'                | V       | |               |
   |                        '---digit-+-'               |
   |                            .-------.               |
   |                            V       |               |
   '-+-----+--+-----------+--.----digit-+--+----------+-'
     +- + -+  | .-------. |                '-exponent-'
     '- - -'  | V       | |
              '---digit-+-'
 
>--+---------------+-------------------------------------------><
   '-_--kind_param-'
 
 

exponent



>>-+-E--+--+-----+--digit_string-------------------------------><
   +-D--+  +- + -+
   '-Q*-'  '- - -'
 
 

kind_param
数字ストリング またはスカラー整数定数名 のいずれかです。

digit_string は、10 の累乗を示します。 E は、デフォルトの実定数の型を指定します。 D は、デフォルトの DOUBLE PRECISION 型の 定数を指定します。

IBM 拡張の開始* XL Fortran では、QREAL(16) 型の定数を 指定します。 IBM 拡張の終了

exponentkind_param が共に指定された場合は、 指数文字は E でなければなりません。 D または Q を指定した場合は、kind_param を 指定することはできません。

指数および kind 型付きパラメーターが指定されない 実リテラル定数は、デフォルトの実定数型です。

実定数の例

例 1:

+0.
例 2:
+5.432E02_16   !543.2 in 16-byte representation
 
例 3:
7.E3

+----------------------------------IBM 拡張----------------------------------+

例 4:

3.4Q-301
! Extended-precision constant

+------------------------------End of IBM 拡張-------------------------------+

複素数

複素数型の指定子には、次のいずれかが含まれていなければなりません。

複素数型のエンティティーの宣言に関する詳細については、 COMPLEXおよび DOUBLE COMPLEXを参照してください。

+----------------------------------IBM 拡張----------------------------------+

次の表は、 複素数型の指定子に COMPLEX キーワードがある場合に XL Fortran が kind 型付きパラメーターおよび長さ指定について 表すことのできる値を示しています。

Kind 型付きパラメーター
COMPLEX(i)
長さ指定
COMPLEX*j
4
8
16
8
16
32

+------------------------------End of IBM 拡張-------------------------------+

すべての FORTRAN コンパイラーにおいて、複素定数の種類は、実数部分と虚数部分の定数の種類によって決まります。

+----------------------------------IBM 拡張----------------------------------+

XL Fortran では、kind 型付きパラメーターにより複素数エンティティーの各部分の精度が指定され、 長さ指定により複素数エンティティーの全体の長さが指定されます。

DOUBLE COMPLEX の値の精度は、 デフォルトの複素数の 2 倍となります。

複素数型のスカラー値は、複素数コンストラクターを使って構成することができます。 複素数コンストラクターの形式は次のとおりです。



>>-(----expression----,----expression----)---------------------><
 
 

複素数のリテラル定数は、それぞれの式が一対の初期化式と なっている複素数コンストラクターです。 複素数コンストラクターの各部分で、 変数と式を XL Fortran 拡張機能として使用できます。

+------------------------------End of IBM 拡張-------------------------------+

+---------------------------------Fortran 95---------------------------------+

Fortran 95 では、複素数コンストラクターの各部分に使用できるのは、 単精度符号付き整数または実リテラル定数だけです。

+-----------------------------End of Fortran 95------------------------------+

リテラル定数の両方の部分とも実数型である場合、 リテラル定数の kind 型付きパラメーターは精度の高い方の部分の kind パラメーターになり、 精度の低い方の部分の kind 型付きパラメーターは高い方の精度に変換されます。

両方の部分とも整数型である場合、 それらはデフォルトの実数型に変換されます。 一方が整数型で、もう一方が実数型である場合、 整数型の方が、実数型の精度に変換されます。

複素数型のエンティティーの宣言に関する詳細については、 COMPLEXおよび DOUBLE COMPLEXを参照してください。

+----------------------------------IBM 拡張----------------------------------+

複素数の各部分は、内部的に符号ビット (s)、バイアス指数 (e)、および小数部 (f) と表現されます。

COMPLEX(4)
(equivalent to COMPLEX*8)
Bit no. 0....|....1....|....2....|....3....|....4....|....5....|....6...
        seeeeeeeefffffffffffffffffffffffseeeeeeeefffffffffffffffffffffff

COMPLEX(8) (equivalent to COMPLEX*16)
Bit no. 0....|....1....|....2....|....3....|....4....|....5....|....6...
        seeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffff
Bit no. .|....7....|....8....|....9....|....0....|....1....|....2....|..
        seeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffff

COMPLEX(16) (equivalent to COMPLEX*32)
Bit no. 0....|....1....|....2....|....3....|....4....|....5....|....6...
        seeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffff
Bit no. .|....7....|....8....|....9....|....0....|....1....|....2....|..
        seeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffff
Bit no. ..3....|....4....|....5....|....6....|....7....|....8....|....9.
        seeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffff
Bit no. ...|....0....|....1....|....2....|....3....|....4....|....5....|
        seeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffff

+------------------------------End of IBM 拡張-------------------------------+

複素定数の例

例 1:

(3_2,-1.86)  ! Integer constant 3 is converted to default real
             ! for constant 3.0.

+----------------------------------IBM 拡張----------------------------------+

例 2:

(45Q6,6D45)  ! The imaginary part is converted to extended
             ! precision 6.Q45.
例 3:
(1+1,2+2)    ! Use of constant expressions. Both parts are
             ! converted to default real. 

+------------------------------End of IBM 拡張-------------------------------+

論理

+----------------------------------IBM 拡張----------------------------------+

次の表は、 XL Fortran が論理データ型を使用して表すことのできる値を示しています。

Kind パラメーター 内部 (16 進) 表現
1 .TRUE.
.FALSE.
01
00
2 .TRUE.
.FALSE.
0001
0000
4 .TRUE.
.FALSE.
00000001
00000000
8 .TRUE.
.FALSE.
0000000000000001
0000000000000000
注:
.TRUE. に対する 1、 および .FALSE. に対する 0 以外の内部表現は未定義です。

XL Fortran は、デフォルトの kind 型付きパラメーターを 4 に設定します。 kind 型付きパラメーターは、論理値のバイト・サイズと同等です。 -qintsize コンパイラー・オプションを使用して、 デフォルトの論理サイズを 2、4、または 8 バイトのいずれかに変更してください。 -qintsize オプションがデフォルトの整数サイズに対しても 同じように影響することに注意してください。 式やステートメントでの整数および論理データ・エンティティーを混用するには -qintlog を使用してください。

+------------------------------End of IBM 拡張-------------------------------+

論理型の指定子は、LOGICAL キーワードを 含んでいなければなりません。 論理型のエンティティーの宣言に関する詳細については、 LOGICALを参照してください。

論理型のリテラル定数の形式は、次のとおりです。



>>-+-.TRUE.--+--+---------------+------------------------------><
   '-.FALSE.-'  '-_--kind_param-'
 
 

kind_param
数字ストリング またはスカラー整数定数名 のいずれかです。

論理定数は、真または偽のいずれかの論理値をとることができます。

+----------------------------------IBM 拡張----------------------------------+

.TRUE. および .FALSE. の代わりに、 それぞれ省略形の T および F (ピリオドなし) を使用することもできます。 ただし、この省略形は、定様式入力で使用する 場合、あるいは DATA ステートメント、STATIC ステートメント、 またはタイプ宣言ステートメントの初期値として使用する場合に限られます。 kind 型付きパラメーターについては、省略形を指定することはできません。 T または F が名前付き定数として定義されている場合、 それは論理リテラル定数ではなく名前付き定数として処理されます。

+------------------------------End of IBM 拡張-------------------------------+

論理定数の例

 .FALSE._4
 .TRUE.

文字

文字型の指定子は、CHARACTER キーワードを 含んでいなければなりません。 型文字のエンティティーの宣言に関する詳細については、 CHARACTERを参照してください。

文字型のリテラル定数の形式は、次のとおりです。



>>-+---------------+--+-'--character_string--'-+---------------><
   '-kind_param--_-'  '-"--character_string--"-'
 
 

kind_param
数字ストリング またはスカラー整数定数名 のいずれかです。

+----------------------------------IBM 拡張----------------------------------+

XL Fortran は、ASCII の照合順序を表す kind 型付きパラメーター値 の 1 をサポートしています。

+------------------------------End of IBM 拡張-------------------------------+

文字リテラル定数は、二重引用符またはアポストロフィのいずれかによって区切ることができます。

character_string を構成する文字は、XL Fortran で 表現可能ならどのような文字でもかまいません。 ただし、改行文字 (¥n) は、ソース行の終わりを表す文字として 解釈されるので、使用しないでください。 区切り文字となるアポストロフィ (') や二重引用符 (") は、 その文字定数によって表されるデータの一部ではありません。 これらの区切り文字の間に組み込まれたブランクは意味を持ちます。

ストリングをアポストロフィによって区切る場合、 ストリング中でアポストロフィを表すには、間にブランクを入れずに アポストロフィを 2 つ続けて使用します。 ストリングを二重引用符で区切る場合、ストリング中で二重引用符を 表すには、間にブランクを入れずに二重引用符を 2 つ続けて使用します。 2 つの連続するアポストロフィまたは二重引用符は、1 文字として扱われます。

アポストロフィで区切られた文字リテラル定数内で二重引用符を使用して、二重引用符を表すことができます。 また、二重引用符で区切られた文字定数内でアポストロフィを使用して、1 つのアポストロフィを表すこともできます。

文字型のリテラル定数の長さは、区切り文字の間の文字数です。ただし 連続する一対のアポストロフィや二重引用符は、1 文字としてカウントされます。

長さがゼロの文字オブジェクトでは、ストレージを使用しません。

+----------------------------------IBM 拡張----------------------------------+

XL Fortran では、それぞれの文字オブジェクトが 1 バイトのストレージを必要とします。

C 言語での使用法と互換性を持たせるために、 XL Fortran は、文字ストリング内で次のエスケープ・シーケンスを認識します。

エスケープ 意味
¥b バックスペース
¥f 用紙送り
¥n 改行
¥r 改行
¥t タブ
¥0 ヌル
' アポストロフィ
(ストリングは終了しません)
" 二重引用符
(ストリングは終了しません)
 円記号
¥x x。ここで x は任意の文字

C との互換性のためにプロシージャー参照内の スカラー文字初期化式がヌル文字 (¥0) で終わるようにするためには、-qnullterm コンパイラー・オプションを使用してください (詳しい説明および例外については、「XL Fortran ユーザーズ・ガイド」の 『-qnullterm オプション』を参照してください)。

すべてのエスケープ・シーケンスは 1 つの文字を表します。

+------------------------------End of IBM 拡張-------------------------------+

これらのエスケープ・シーケンスを単一の文字として 扱いたくない場合は、-qnoescape コンパイラー・オプションを 指定してください。 (「XL Fortran ユーザーズ・ガイド」の 『-qescape オプション』を参照してください。) 円記号は、特別な意味を持たなくなります。

文字型のリテラル定数の最大長は、ステートメントに使用できる 文字の最大数によって決まります。

+----------------------------------IBM 拡張----------------------------------+

-qctyplss コンパイラー・オプションを指定すると、 文字定数は、ホレリス定数と同様に扱われます。 ホレリス定数については、 ホレリス定数を参照してください。-qctyplss コンパイラー・オプションの内容については、「XL Fortran ユーザーズ・ガイド」の 『-qctyplss オプション』を参照してください。

XL Fortran は、-qmbcs のコンパイラー・オプションによって、 文字リテラル定数、ホレリス定数、H 編集記述子、およびコメントの中の マルチバイト文字をサポートします。

Unicode の文字およびファイル名もサポートします。 環境変数 LANGUNIVERSAL に 設定され、-qmbcs コンパイラー・オプションが指定されている場合、 コンパイラーは Unicode 文字およびファイル名の読み取りや書き込みを行うことができます。

(詳細については、 「XL Fortran ユーザーズ・ガイド」を参照してください。)

+------------------------------End of IBM 拡張-------------------------------+

文字定数の例

例 1:

''                    ! Zero-length character constant.
例 2:
1_"ABCDEFGHIJ"        ! Character constant of length 10, with kind 1.

+----------------------------------IBM 拡張----------------------------------+

例 3:

'¥"¥2¥'¥A567¥¥¥¥¥''   ! Character constant of length 10 "2'A567¥¥'.

+------------------------------End of IBM 拡張-------------------------------+

文字サブストリング

文字サブストリングとは、文字ストリング (親ストリングと呼ばれる) の 連続した一部分で、スカラー変数名、スカラー定数、スカラー構造体コンポーネント、 または配列エレメントのことです。 文字サブストリングは、次の形式を持つサブストリング参照によって識別されます。



>>-+-scalar_variable_name-+------------------------------------->
   +-array_element--------+
   +-scalar_constant------+
   '-scalar_struct_comp---'
 
>--(--+-----------+--:--+-----------+--)-----------------------><
      '-int_expr1-'     '-int_expr2-'
 
 

int_expr1  と  int_expr2
それぞれサブストリングの最左端および最右端の文字位置を示します。 どちらの式もスカラー整数式で、サブストリング式と呼ばれます。

文字サブストリングの長さは、 MAX(int_expr2 - int_expr1 + 1,0) の 計算の結果です。

int_expr1int_expr2 以下の場合、 その値は次の条件を満たしていなければなりません。

length は親ストリングの長さです。 int_expr1 が省略されると、 デフォルト値は 1 になります。 int_expr2 が省略されると、 デフォルト値は length になります。

+----------------------------------IBM 拡張----------------------------------+

FORTRAN 77 は、長さ 0 の文字サブストリングを許可しません。 Fortran 90 およびそれ以上では、これらのサブストリングが許可されます。FORTRAN 77 の規則に従ってサブストリング境界に関するコンパイル時チェックを 実行するには、-qnozerosize コンパイラー・オプションを使用してください。Fortran 90 に対する準拠をチェックする 場合は、-qzerosize を使用してください。 サブストリング境界について実行時のチェックを行うには、-qcheck オプションと -qzerosize (または -qnozerosize) オプションの両方を使用します。 (詳細については、「XL Fortran ユーザーズ・ガイド」を参照してください。)

+------------------------------End of IBM 拡張-------------------------------+

配列セクションのサブストリングの扱いはこれとは異なります。 配列セクションおよびサブストリングの範囲を参照してください。

文字サブストリングの例
CHARACTER(8) ABC, X, Y, Z
ABC = 'ABCDEFGHIJKL'(1:8)   ! Substring of a constant
X = ABC(3:5)                ! X = 'CDE'
Y = ABC(-1:6)               ! Not allowed in either FORTRAN 77 or Fortran 90
Z = ABC(6:-1)               ! Z = ' valid only in Fortran 90

+----------------------------------IBM 拡張----------------------------------+

バイト

XL Fortran では、バイト型の指定子は BYTE キーワードです。 バイト型のエンティティーの宣言に関する詳細に ついては、BYTEを参照してください。

BYTE 組み込みデータ型は、それ自身の リテラル定数形式を持っていません。 BYTE データ・オブジェクトは、その使用方法に応じて、INTEGER(1)LOGICAL(1)CHARACTER(1) の いずれかのデータ・オブジェクトとして扱われます。 型なし定数の使用方法を参照してください。

+------------------------------End of IBM 拡張-------------------------------+

IBM Copyright 2003