+----------------------------------IBM 拡張----------------------------------+
XL Fortran では、タイプなし定数は組み込みタイプを持ちません。 16 進数、8 進数、2 進数、およびホレリス定数は、組み込みリテラル定数を使用する場合ならどのような状況においても使用できます。ただし、これらの定数はタイプ宣言ステートメントでの長さ指定には使用できません (タイプなしの定数は、CHARACTER タイプ宣言ステートメントの type_param_value では使用できます)。 16 進、8 進、2 進の各定数で認識される桁数は、その定数が使用されるコンテキストによって異なります。
16 進定数の形式は、次のとおりです。
>>-+-+-X-+--+-'--hexadecimal_number--'-+-+--------------------->< | '-Z-' '-"--hexadecimal_number--"-' | +-+-'--hexadecimal_number--'-+--+-X-+-+ | '-"--hexadecimal_number--"-' '-Z-' | '-Z--hexadecimal_number---------------' |
16 進定数の Znn...nn という形式は、スラッシュで区切ってデータ初期化値としてのみ使用できます。 16 進定数のこの形式が PARAMETER 属性で事前に定義した定数の名前と同じストリングである場合、XL Fortran は、そのストリングを名前付き定数として認識します。
2x 個の 16 進数が存在する場合、x バイトで表されます。
XL Fortran による定数の解釈方法については、タイプなし定数の使用方法を参照してください。
Z'0123456789ABCDEF' Z"FEDCBA9876543210" Z'0123456789aBcDeF' Z0123456789aBcDeF ! This form can only be used as an initialization value
8 進定数の形式は、次のとおりです。
>>-+-O--+-'--octal_number--'-+-+------------------------------->< | '-"--octal_number--"-' | '-+-'--octal_number--'-+--O-' '-"--octal_number--"-' |
8 進数の 1 桁は 3 ビットで、データ・オブジェクトは 8 ビットの倍数なので、8 進定数のビット数がデータ・オブジェクトに必要なビット数よりも大きくなる場合があります。たとえば、INTEGER(2) データ・オブジェクトは、最左端の桁が 0 または 1 の場合、6 桁の 8 進定数によって表されます。INTEGER(4) データ・オブジェクトは、最左端の桁が、0、1、2、3 のいずれかである場合、11 桁の定数によって表されます。INTEGER(8) は、最左端の桁が 0 または 1 の場合、22 桁の定数によって表されます。
XL Fortran による定数の解釈方法については、タイプなし定数の使用方法を参照してください。
O'01234567' "01234567"O
2 進定数の形式は、次のとおりです。
>>-+-B--+-'--binary_number--'-+-+------------------------------>< | '-"--binary_number--"-' | '-+-'--binary_number--'-+--B-' '-"--binary_number--"-' |
8x 個の 2 進数が存在する場合、x バイトで表されます。
XL Fortran による定数の解釈方法については、タイプなし定数の使用方法を参照してください。
B"10101010" '10101010'B
ホレリス定数の形式は、次のとおりです。
>>-n--H--character_string-------------------------------------->< |
ホレリス定数は、nH に続く、プロセッサーで表示可能な空ではない文字ストリングで構成されています。ここでは、n は、H の後に続く文字の数を示す符号なしの正の整数です。n には、kind 型付きパラメーターを指定することはできません。ストリング中の文字数は、1 〜 255 文字になります。
-qnoescape コンパイラー・オプションが指定されていない場合は、XL Fortran は、ホレリス定数内のエスケープ・シーケンスも認識します。ホレリス定数にエスケープ・シーケンスが含まれている場合、n は、ソース・ストリング内の文字数ではなく、そのストリングの内部表現での文字数を示します。 (たとえば、2H\"\" は、2 つの二重引用符を意味するホレリス定数を表します。)
XL Fortran は、文字定数、ホレリス定数、H 編集記述子、文字ストリング編集記述子、および注釈の中のマルチバイト文字をサポートします。このサポートは、-qmbcs オプションによって提供されます。ストリング全体を保持するには短すぎる変数にマルチバイト文字が入っている定数を割り当てると、マルチバイト文字の内部で切り捨てが起こることがあります。
Unicode の文字およびファイル名もサポートします。環境変数 LANG が UNIVERSAL に設定され、-qmbcs コンパイラー・オプションが指定されている場合、コンパイラーは Unicode の文字およびファイル名の読み取りや書き込みを行うことができます。
XL Fortran による定数の解釈方法については、タイプなし定数の使用方法を参照してください。
タイプなし定数のデータ型と長さは、タイプなし定数を使用するコンテキストによって決まります。 XL Fortran は、使用前には変換を行いません。
総称名への参照は、特定のプロシージャーによって解決されます。
タイプなし定数は、デフォルトの整数に変換されます。特定の組み込み関数が整数引き数をとる場合、その参照はその特定関数によって解決されます。特定の組み込み関数が存在しない場合は、その参照は総称関数によって解決されます。
タイプなし定数は、その引き数タイプとなります。ただし、コンパイラー・オプション -qport=typlssarg を指定した場合は、実引き数がデフォルトの整数に変換されます。選択された特定の組み込みプロシージャーはこのタイプを基にしています。
INTERFACE SUB SUBROUTINE SUB1( A ) REAL A END SUBROUTINE SUBROUTINE SUB2( A, B ) REAL A, B END SUBROUTINE SUBROUTINE SUB3( I ) INTEGER I END SUBROUTINE END INTERFACE CALL SUB('C0600000'X, '40066666'X) ! Resolves to SUB2 CALL SUB('00000000'X) ! Invalid - ambiguous, may ! resolve to either SUB1 or SUB3
その定数がホレリス定数でない場合はデフォルトの整数サイズとなりますが、データ型は想定されません。ホレリス定数を渡すためのデフォルトでは、文字実引き数と同様になります。ただし、コンパイラー・オプション -qctyplss=arg を使用すると、ホレリス定数は整数実引き数であるかのように渡されます。プロシージャー名を総称名または特定名として設定する方法に関する詳細は、プロシージャー参照の解決を参照してください。
定数は 16 進定数、2 進定数、および 8 進定数のデフォルト整数の場合と同様に渡されます。
定数がホレリス定数で、かつデフォルト整数のサイズ未満の場合、XL Fortran は右側にブランクを追加します。定数がホレリス定数で、かつ 8 バイトを超える場合、XL Fortran は、右側のホレリス定数を切り捨てます。プロシージャー名を総称名または特定名として設定する方法に関する詳細は、プロシージャー参照の解決を参照してください。
INT=B'1' ! Binary constant is default integer RL4=X'1' ! Hexadecimal constant is default real INT=INT + O'1' ! Octal constant is default integer RL4=INT + B'1' ! Binary constant is default integer INT=RL4 + Z'1' ! Hexadecimal constant is default real ARRAY(O'1')=1.0 ! Octal constant is default integer LOGICAL(8) LOG8 LOG8=B'1' ! Binary constant is LOGICAL(8), LOG8 is .TRUE.
+--------------------------------IBM 拡張の終り-------------------------------+