Rational Developer for System z
Enterprise COBOL for z/OS バージョン 4.1 言語解説書


算術ステートメントのオペランド

算術ステートメントの各オペランドのデータ記述は、同じである必要はありません。計算の途中で、コンパイラーが必要なデータ変換や小数点の位置合わせをします。

オペランドのサイズ

ARITH(COMPAT) コンパイラー・オプションが有効な場合は、各オペランドの最大サイズは 10 進数の 18 桁です。ARITH(EXTEND) コンパイラー・オプションが有効な場合は、 各オペランドの最大サイズは 10 進数の 31 桁です。

オペランドの合成 は、複数のオペランドを小数点の位置で合わせ、それらを互いに重ね合わせた結果 生成される仮想データ項目のことです。

ARITH(COMPAT) コンパイラー・オプションが有効な場合、オペランドの合成のサイズは、最大 30 桁となります。 ARITH(EXTEND) コンパイラー・オプションが有効な場合、オペランドの合成のサイズは、最大 31 桁となります。

次の表は、 各算術ステートメントにおいてオペランドの合成がどのようにして決められるかを示します。

表 1. オペランド合成の決定方法
ステートメント オペランド合成の決め方

SUBTRACT
ADD

GIVING という語の後のオペランドを除き、所定のステートメント内のすべてのオペランドを重ね合わせる
MULTIPLY 受け取りデータ項目をすべてを重ね合わせる
DIVIDE REMAINDER データ項目を除き、受け取りデータ項目をすべて重ね合わせる
COMPUTE 制約事項は適用されない

例えば、各項目がデータ部で次のように定義されているとします。

A  PICTURE 9(7)V9(5).
B  PICTURE 9(11)V99.
C  PICTURE 9(12)V9(3).

次のようなステートメントが実行されると、オペランドの合成は、 17 桁の 10 進数になります。

ADD A B TO C

これは次のような暗黙の記述になります。

COMPOSITE-OF-OPERANDS PICTURE 9(12)V9(5).

ADD ステートメントおよび SUBTRACT ステートメントでは、 オペランドの合成が 30 桁以下 (ARITH(COMPAT) コンパイラー・オプションを指定した場合)、 または 31 桁以下 (ARITH(EXTEND) コンパイラー・オプションを指定した場合) であれば、 実行時に有効数字が切り落とされないように、コンパイラーで十分なスペースが確保されます。

算術ステートメントにおいて、希望どおりの精度を最終的な結果で得るには、 十分な桁数と小数点位置を持つデータを定義することが重要です。詳細については、Enterprise COBOL プログラミング・ガイド」の中間結果のセクションを参照してください。

オーバーラップしたオペランド

算術ステートメントのオペランドがそのストレージの一部を共用する場合 (すなわちオペランドが重なる場合)、こうしたステートメントを実行すると予測不能な結果が生じます。

複数の演算結果

1 つの算術ステートメントが複数の演算結果を持つとき、実行は概念的には次のようにして行われます。

  1. ステートメントはすべての算術演算を行って複数の受け取り項目に入れる結果を出し、 その結果を一時的な記憶場所に収めます。
  2. 一連のステートメントで転送したり、この一時的な結果の値を それぞれの単一の受け取りフィールドと組み合わせます。 これらのステートメントは、 複数の結果がリストされている左から右の順序と同じ順序で記述されているものと考えることができます。

例えば、次のステートメントを実行するとします。

ADD A, B, C, TO C, D(C), E.

これは、以下の一連のステートメントの実行と同じことです。

ADD A, B, C GIVING TEMP.
ADD TEMP TO C.
ADD TEMP TO D(C).
ADD TEMP TO E.

上記の例で TEMP とは、コンパイラーの提供する一時的な結果フィールドです。 D (C) に対して加算演算が行われると、添え字 C には、 C の新しい値が入ります。


ご利用条件 | フィードバック

このインフォメーション・センターでは Eclipse テクノロジーが採用されています。(http://www.eclipse.org)