非 10 進定数のデータ型の決定

2 進,8 進,16 進,およびホレリス定数は組込みデータ型を持っていません。これらの定数は,その使用方法に応じて,特定の数値型を取ることになります。

定数が 2 項演算子 (代入演算子を含む) との組み合わせで使われている場合,定数のデータ型は相手側の演算対象のデータ型となります。

定数のデータ型 定数の長さ (バイト数)
INTEGER(2) ICOUNT    
INTEGER(4) JCOUNT    
INTEGER(4) N    
REAL(8) DOUBLE    
REAL(4) RAFFIA, RALPHA    
RAFFIA = B'1001100111111010011' REAL(4) 4
RAFFIA = Z'99AF2' REAL(4) 4
RALPHA = 4HABCD REAL(4) 4
DOUBLE = B'1111111111100110011010' REAL(8) 8
DOUBLE = Z'FFF99A' REAL(8) 8
DOUBLE = 8HABCDEFGH REAL(8) 8
JCOUNT = ICOUNT + B'011101110111' INTEGER(2) 2
JCOUNT = ICOUNT + O'777' INTEGER(2) 2
JCOUNT = ICOUNT + 2HXY INTEGER(2) 2
IF (N .EQ. B'1010100') GO TO 10 INTEGER(4) 4
IF (N .EQ. O'123') GO TO 10 INTEGER(4) 4
IF (N. EQ. 1HZ) GO TO 10 INTEGER(4) 4

特定のデータ型 (通常は整数) が必須な状況では,定数はその型を取ります。

定数のデータ型 定数の長さ (バイト数)
Y(IX) = Y(O'15') + 3. INTEGER(4) 4
Y(IX) = Y(1HA) + 3. INTEGER(4) 4

非 10 進定数が実引数として使用された場合,次のように扱われます。

例:

定数のデータ型 定数の長さ (バイト数)
CALL APAC(Z'34BC2') INTEGER(4) 4
CALL APAC(9HABCDEFGHI) なし 9

2 進,8 進,または 16 進定数が他の文脈で使用された場合,基本整数型になります (基本整数型はコンパイラ・オプションで制御することができます)。以下の例では,基本整数型は INTEGER(4) です。

定数のデータ型 定数の長さ (バイト数)
IF (Z'AF77') 1,2,3 INTEGER(4) 4
IF (2HAB) 1,2,3 INTEGER(4) 4
I = O'7777' - Z'A39' 1 INTEGER(4) 4
I = 1HC - 1HA INTEGER(4) 4
J = .NOT. O'73777' INTEGER(4) 4
J = .NOT. 1HB INTEGER(4) 4
1 演算の中で 2 つの型なしの定数が使用された場合,両方の定数が基本整数型になります。

非 10 進定数の長さが,データ型の持つ長さと同じでない場合,次のように扱われます。