+----------------------------------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 オプションが、デフォルトの論理サイズに対しても同じように影響することに注意してください。
+--------------------------------IBM 拡張の終り-------------------------------+
整数のタイプ指定子は、INTEGER キーワードを含んでいなければなりません。整数のタイプ指定子のエンティティーの宣言に関する詳細については、 INTEGERを参照してください。
符号付き整数のリテラル定数の形式は、以下のとおりです。
.-------. V | >>-+-----+----digit-+--+---------------+----------------------->< +- + -+ '-_--kind_param-' '- - -' |
符号付き整数のリテラル定数は、オプションで符号を持ち、その後に小数点の付かない整数を表す 10 進数のストリングが続き、さらに必要な場合には kind 型付きパラメーターが続きます。符号付き整数のリテラル定数は、正、負、ゼロのいずれでもかまいません。無符号でゼロ以外の場合、その定数は正の値と見なされます。
kind_param を指定する場合、リテラル定数の大きさはその kind_param で許される値の範囲内で表現可能なものでなければなりません。
+----------------------------------IBM 拡張----------------------------------+
XL Fortran では、kind_param が指定されておらず、しかも定数の大きさをデフォルトの整数では表せない場合には、その定数は表現可能な形にプロモートされます。
XL Fortran は、内部的に 2 の補数表記で整数を表します。最左端のビットは数の符号です。
+--------------------------------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) ビット番号 0....|....1....|....2....|....3. seeeeeeeefffffffffffffffffffffff
REAL(8) ビット番号 0....|....1....|....2....|....3....|....4....|....5....|....6... seeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffff
REAL(16) ビット番号 0....|....1....|....2....|....3....|....4....|....5....|....6... seeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffff ビット番号 |....7....|....8....|....9....|....0....|....1....|....2....|.. seeeeeeeeeeefffffffffffffffffffffffffffffffffffffffffffffffffff
また、この ANSI/IEEE 2 進浮動小数点形式は、+無限大、-無限大、非数値 (NaN)(not-a-number) という値も表します。 NaN はさらに、静止 NaN (NaNQ) と信号 NaN (NaNS) に分類することができます。 NaN 値の内部表示に関する詳細については、「ユーザーズ・ガイド」の『XL Fortran 浮動小数点処理』を参照してください。
+--------------------------------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-' |
>>-+-E--+--+-----+--digit_string------------------------------->< +-D--+ +- + -+ '-Q*-' '- - -' |
digit_string は、10 の累乗を示します。 E は、デフォルトの実定数のタイプを指定します。 D は、デフォルトの DOUBLE PRECISION タイプの定数を指定します。
* XL Fortran では、Q は REAL(16) タイプの定数を指定します。
exponent と kind_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
+--------------------------------IBM 拡張の終り-------------------------------+
複素数タイプの指定子には、次のいずれかが含まれていなければなりません。
複素数タイプのエンティティーの宣言に関する詳細については、 COMPLEXおよび DOUBLE COMPLEXを参照してください。
+----------------------------------IBM 拡張----------------------------------+
次の表では、複素数タイプの指定子に COMPLEX キーワードが指定されている場合に、
XL Fortran が kind 型付きパラメーターおよび長さ指定について表すことのできる値を示しています。
Kind タイプ・パラメーター COMPLEX(i) |
長さ指定 COMPLEX*j |
---|---|
4 8 16 |
8 16 32 |
+--------------------------------IBM 拡張の終り-------------------------------+
すべての FORTRAN コンパイラーにおいて、複素定数の種類は、実数部分と虚数部分の定数の種類によって決まります。
+----------------------------------IBM 拡張----------------------------------+
XL Fortran では、kind 型付きパラメーターにより複素数エンティティーの各部分の精度が指定され、長さ指定により複素数エンティティーの全体の長さが指定されます。
DOUBLE COMPLEX の値の精度は、デフォルトの複素数の 2 倍となります。
複素数タイプのスカラー値は、複素数コンストラクターを使って構成することができます。複素数コンストラクターの形式は次のとおりです。
>>-(----expression----,----expression----)--------------------->< |
複素数のリテラル定数は、それぞれの式が一対の初期化式となっている複素数コンストラクターです。 複素数コンストラクターの各部分で、変数と式を XL Fortran 拡張機能として使用できます。
+--------------------------------IBM 拡張の終り-------------------------------+
+---------------------------------Fortran 95---------------------------------+
Fortran 95 では、複素数コンストラクターの各部分に使用できるのは、単精度符号付き整数または実リテラル定数だけです。
+------------------------------Fortran 95 の終り------------------------------+
リテラル定数の両方の部分とも実数タイプである場合、リテラル定数の kind 型付きパラメーターは精度の高い方の kind パラメーターを使用し、精度の低い方の kind 型付きパラメーターは高い方の精度に変換されます。
両方の部分とも整数タイプである場合、それらはデフォルトの実数タイプに変換されます。一方が整数タイプで、もう一方が実数タイプである場合、整数タイプの方が、実数タイプの精度に変換されます。
複素数タイプのエンティティーの宣言に関する詳細については、 COMPLEXおよび DOUBLE COMPLEXを参照してください。
+----------------------------------IBM 拡張----------------------------------+
複素数の各部分は、内部的には、次のように表現されます (符号ビット (s)、偏向指数 (e)、および小数部 (f))。
COMPLEX(4) (COMPLEX*8 に等しい) ビット番号 0....|....1....|....2....|....3....|....4....|....5....|....6... seeeeeeeefffffffffffffffffffffffseeeeeeeefffffffffffffffffffffff
COMPLEX(8) (COMPLEX*16 に等しい) ビット番号 0....|....1....|....2....|....3....|....4....|....5....|....6... seeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffff ビット番号 .|....7....|....8....|....9....|....0....|....1....|....2....|.. seeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffff
COMPLEX(16) (COMPLEX*32 に等しい) ビット番号 0....|....1....|....2....|....3....|....4....|....5....|....6... seeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffff ビット番号 .|....7....|....8....|....9....|....0....|....1....|....2....|.. seeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffff ビット番号 ...3....|....4....|....5....|....6....|....7....|....8....|....9 seeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffff ビット番号 ....|....0....|....1....|....2....|....3....|....4....|....5.... seeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffff
+--------------------------------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
+--------------------------------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 |
XL Fortran は、デフォルトの kind 型付きパラメーターを 4 に設定します。 kind 型付きパラメーターは、論理値のバイト・サイズと同じになります。 -qintsize コンパイラー・オプションを使用して、デフォルトの論理サイズを 2、4、または 8 バイトのいずれかに変更してください。 -qintsize オプションがデフォルトの整数サイズに対しても同じように影響することに注意してください。
+--------------------------------IBM 拡張の終り-------------------------------+
論理タイプの指定子は、LOGICAL キーワードを含んでいなければなりません。論理タイプのエンティティーの宣言に関する詳細については、 LOGICALを参照してください。
論理タイプのリテラル定数の形式は、次のとおりです。
>>-+-.TRUE.--+--+---------------+------------------------------>< '-.FALSE.-' '-_--kind_param-' |
論理定数は、真または偽のいずれかの論理値をとることができます。
+----------------------------------IBM 拡張----------------------------------+
.TRUE. および .FALSE. の代わりに、それぞれ省略形の T および F (ピリオドなし) を使用することもできます。ただし、この省略形は、定様式入力で使用する場合、あるいは DATA ステートメント、STATIC ステートメント、またはタイプ宣言ステートメントの初期値として使用する場合に限られます。 kind 型付きパラメーターについては、省略形を指定することはできません。 T または F が名前付き定数として定義されている場合、それは論理リテラル定数ではなく名前付き定数として処理されます。
+--------------------------------IBM 拡張の終り-------------------------------+
.FALSE._4 .TRUE.
文字タイプの指定子は、CHARACTER キーワードを含んでいなければなりません。文字タイプの宣言に関する詳細については、 CHARACTERを参照してください。
文字タイプのリテラル定数の形式は、次のとおりです。
>>-+---------------+--+-'--character_string--'-+--------------->< '-kind_param--_-' '-"--character_string--"-' |
+----------------------------------IBM 拡張----------------------------------+
XL Fortran では ASCII の照合順序を表すために kind 型付きパラメーター値の 1 をサポートしています。
+--------------------------------IBM 拡張の終り-------------------------------+
文字タイプのリテラル定数は、二重引用符またはアポストロフィのいずれかによって区切ることができます。
character_string を構成する文字は、XL Fortran で表現可能ならどのような文字でもかまいません。ただし、改行文字 (\n) は、ソース行の終わりを表す文字として解釈されるので、使用しないでください。区切り文字となるアポストロフィ (') や二重引用符 (") は、その文字定数によって表されるデータの一部ではありません。これらの区切り文字の間に組み込まれたブランクは意味を持ちます。
ストリングをアポストロフィによって区切る場合、ストリング中でアポストロフィを表すには、間にブランクを入れずにアポストロフィを 2 つ続けて使用します。ストリングを二重引用符で区切る場合、ストリング中で二重引用符を表すには、間にブランクを入れずに二重引用符を 2 つ続けて使用します。 2 つの連続するアポストロフィまたは二重引用符は、1 文字として扱われます。
アポストロフィで囲んだ文字タイプのリテラル定数内に二重引用符を入れて、二重引用符を表すことができます。また、二重引用符で囲んだ文字定数内にアポストロフィを入れて、 1 つのアポストロフィを表すこともできます。
文字タイプのリテラル定数の長さは、区切り文字の間の文字数です。ただし連続する一対のアポストロフィや二重引用符は、1 文字としてカウントされます。
長さがゼロの文字オブジェクトでは、ストレージを使用しません。
+----------------------------------IBM 拡張----------------------------------+
XL Fortran では、それぞれの文字オブジェクトが 1 バイトのストレージを必要とします。
C 言語での使用法との整合性を確保するために、
XL Fortran では、文字ストリング内で次のエスケープ・シーケンスを認識します。
エスケープ | 意味 |
---|---|
\b | バックスペース |
\f | 用紙送り |
\n | 改行 |
\t | タブ |
\0 | ヌル |
\' |
アポストロフィ (ストリングは終了しません) |
\" |
二重引用符 (ストリングは終了しません) |
\\ | バックスラッシュ |
\x | x。ここで x は任意の文字 |
C コンパイラーとの互換性確保のためにプロシージャー参照内のスカラー文字初期化式がヌル文字 (\0) で終わるようにするためには、-qnullterm コンパイラー・オプションを使用してください (詳しい説明および例外については、「ユーザーズ・ガイド」の『-qnullterm オプション』を参照してください)。
+--------------------------------IBM 拡張の終り-------------------------------+
これらのエスケープ・シーケンスを単一の文字として扱いたくない場合は、-qnoescape コンパイラー・オプションを指定してください。 (「ユーザーズ・ガイド」の『-qescape オプション』を参照してください。) バックスラッシュは、特別な意味を持たなくなります。
文字タイプのリテラル定数の最大長は、ステートメントに使用できる文字の最大数によって決まります。
+----------------------------------IBM 拡張----------------------------------+
-qctyplss コンパイラー・オプションを指定すると、文字定数は、ホレリス定数と同様に扱われます。ホレリス定数については、 ホレリス定数を参照してください。 -qctyplss コンパイラー・オプションの内容については、「ユーザーズ・ガイド」の『-qctyplss オプション』を参照してください。
XL Fortran は、-qmbcs のコンパイラー・オプションによって、文字タイプのリテラル定数、ホレリス定数、 H 編集記述子、および注釈の中のマルチバイト文字をサポートします。
Unicode の文字およびファイル名もサポートします。環境変数 LANG が UNIVERSAL に設定され、-qmbcs コンパイラー・オプションが指定されている場合、コンパイラーは Unicode の文字およびファイル名の読み取りや書き込みを行うことができます。
(詳細については、「ユーザーズ・ガイド」を参照してください。)
+--------------------------------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\\'
+--------------------------------IBM 拡張の終り-------------------------------+
文字サブストリングとは、文字ストリング (親ストリングと呼ばれる) の連続した一部分で、スカラー変数名、スカラー定数、スカラー構造体コンポーネント、または配列エレメントのことです。文字サブストリングは、次の形式を持つサブストリング参照によって識別されます。
>>-+-scalar_variable_name-+-------------------------------------> +-array_element--------+ +-scalar_constant------+ '-scalar_struct_comp---' >--(--+-----------+--:--+-----------+--)----------------------->< '-int_expr1-' '-int_expr2-' |
文字サブストリングの長さは、 MAX(int_expr2 - int_expr1 + 1,0) の計算の結果です。
int_expr1 が int_expr2 以下の場合、その値は次の条件を満たしていなければなりません。
length は親ストリングの長さです。 int_expr1 が省略されると、デフォルト値は 1 になります。 int_expr2 が省略されると、デフォルト値は length になります。
+----------------------------------IBM 拡張----------------------------------+
XL Fortran の以前のバージョンは、上記の規則 1 で記したように、FORTRAN 77 の制約に準拠します。 FORTRAN 77 の規則に従ってサブストリング結合に関するコンパイル時チェックを実行するには、-qnozerosize コンパイラー・オプションを使用してください。Fortran 90 に対する準拠をチェックする場合は、-qzerosize を使用してください。サブストリング結合について実行時のチェックを行うには、-qcheck オプションと -qzerosize (または -qnozerosize) オプションの両方を使用します。 (詳細については、「ユーザーズ・ガイド」を参照してください。)
+--------------------------------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) のいずれかのデータ・オブジェクトとして扱われます。 タイプなし定数の使用方法を参照してください。
+--------------------------------IBM 拡張の終り-------------------------------+