数字リテラル

数字リテラルは、数字、プラス符号、マイナス符号、および小数点から選択される文字列です。

数字リテラルの形成は、次の規則によって規定されています。


リテラルが数字リテラルの形成の規則に従っているものの引用符では囲まれている場合、それは文字定数です。

数字リテラルは、2 進、8 進、または 16 進表記でも指定できます。数字リテラルをこれらのいずれかの形式で指定するには、数字の前に次のいずれかのプレフィックスを付けます。

2 進 「B#」
8 進 「O#」
16 進 「X#」または「H#」

次に例を示します。

数字 2 進 8 進 16 進
3 B#11 O#3 X#3 または H#3
8 B#1000 O#10 X#8 または H#8
12 B#1100 O#14 X#C または H#C
128 B#10000000 O#200 X#80 または H#80
255 B#11111111 O#377 X#FF または H#FF

# の後ろの先頭のゼロは無視されます。例えば、X#00FF と X#FF は同じです。

コンパイラは、このようにして指定された各数字リテラルを符号なしの長い整数に変換します。ほとんどの場合、これは 32 ビットの符号なしの数字であるため、この表記で指定できる数字リテラルの最大値は 4294967295、つまり (2**32) -1 です。

LENGTH OF

LENGTH OF 式は、下付き文字または参照修飾語として使用する場合を除いて、数字リテラルを使用する場合に使用できます。コンパイラは、数字リテラルを符号化した場合と同様にこの式を処理します。 LENGTH OF 式は、次のように書きます。

LENGTH OF data-name

data-name は、数字リテラル、文字定数、または任意のタイプのデータ項目の名前です。data-name が表項目を指す場合、下付き文字を含めることができます。コンパイラは LENGTH OF 式の値を計算し、 LENGTH OF で参照されるデータ項目またはリテラルが使用する保存の現在のバイト数と同等の数字リテラルに置き換えます。. 次に例を示します。

77 my-item PIC x(10).
78 my-item-length value LENGTH OF my-item.

は、次のようになります。

77 my-item PIC x(10).
78 my-item-length value 10.

LENGTH OF 式は、この例で示すように、手続き部でも使用できます。

01 my-data.
03 my-table occurs 20 times.
05 my-element-1 pic x(10).
05 my-element-2 pic 99.

MOVE LENGTH OF my-element-1 TO data-size.
MOVE LENGTH OF my-table TO data-size.
MOVE LENGTH OF my-table(1) TO data-size.

この例では、コンパイラは最初の MOVE を MOVE 10 TO data-size として、2 番目の MOVE を MOVE 240 TO data-size として、3 番目の MOVE を MOVE 12 TO data-size として処理します。

注:この式 (表で使用される場合) は、ACUCOBOL-GT では、他の COBOL コンパイラ (IBM Enterprise COBOL など) とは機能が異なります。ACUCOBOL-GT は表全体のサイズを返しますが、IBM は表の 1 つの要素のサイズを返します。IBM 方式は、コンパイラの IBM 互換モードをオンにする -Cv を使用してプログラムをコンパイルすることによって使用できます。 -Cv コンパイラ オプションの詳細については、ACUCOBOL-GT の『ユーザーズガイド』の節『互換性オプション』を参照してください。

浮動小数点リテラル


  1. 浮動小数点リテラルには、次のフォーマットがあります。
    [ + ] k.m { E } [ + ] n
    [ - ]     { e } [ - ]

    上記の説明:


    • k.m は、少なくとも 1 桁の数字を表します。
    • n は、1 つまたは複数の桁を表します。
    • 小数点とカンマの機能が DECIMAL IS COMMA によって切り替わった場合、k.mk,m になります。

    次に、浮動小数点の数字の例をいくつか示します。

    -12.345e12
    .0123E-6
    123.E1
  2. 手続き部での浮動小数点リテラルは、内部で USAGE DOUBLE として保存されます。.
  3. 浮動小数点の値の正当な範囲は、対象のマシンによって決定されます。特定のマシンでの範囲から外れているリテラルを表す場合、ランタイムは警告メッセージを報告し、最も近い境界値 ゼロまたはそのマシンの最大浮動小数点値) を代入します。
  4. 一部のコンピュータでは、浮動小数点の計算で不正確な結果が得られることがあります。これはハードウェアによる制限であり、一部の浮動小数点の値は一部のマシンで正確に表すことができません。