算術演算
算術演算を次の表に示します。
演算 | 従来型の構文 | 自由形式構文 |
---|---|---|
絶対値 | %ABS (式の絶対値) | |
加算 | ADD (加算) | + 演算子 |
除算 | DIV (除算) | / 演算子または %DIV (商の戻り整数部分) |
除算の剰余 | MVR (剰余の転送) | %REM (戻り整数剰余) |
乗算 | MULT (乗算) | * 演算子 |
平方根 | SQRT (平方根) | %SQRT (式の平方根) |
減算 | SUB (減算) | - 演算子 |
ゼロにして加算 | Z-ADD (ゼロにして加算) | (許可されていない) |
ゼロにして減算 | Z-SUB (ゼロにして減算) | (許可されていない) |
算術演算の例については、図 1 を 参照してください。
算術演算の指定にあたっては次のことを忘れないでください。
- 算術演算を実行できるのは、数値 (数値サブフィールド、数値配列、数値 配列要素、数値テーブル要素、名前付き数値定数、数値形象定数、および 数値リテラルを含む) に対してだけです。
- 一般に、算術演算はパック 10 進数形式で実行されます。 このことは、
算術演算を実行する前に、フィールドが最初にパック 10 進数形式に変換
され、次に結果のフィールドに結果を入れる前に (必要があれば) 指定の
形式に戻されることを意味しています。
ただし、以下の例外に注意してください。
- すべてのオペランドが符号なしの場合には、符号なしの数値で算術演算が 行われます。
- すべてのオペランドが整数、または整数と符号なしの数字 の場合には、整数の数値で算術演算が行われます。
- いずれかのオペランドが浮動の場合、残りのオペランドは浮動に 変換されます。
ただし、DIV 命令は、その演算にパック 10 進数または浮動形式を 使用します。 整数および符号なしの数値演算の詳細については、整数および符号なしの演算を 参照してください。
- 小数点の位置合わせはすべての算術演算で行われます。 切り捨てが行われても、結果のフィールドの小数点の位置には影響がありません。
- 算術演算の結果、結果のフィールドに入っていたデータは置き換えられます。
- 演算項目 1 と演算項目 2 は、それらが結果のフィールドと同じである 場合を除いて、算術演算によっては変更されません。
- DIV および MVR で条件付け標識を使用する場合には、ユーザーの責任において DIV 命令が MVR 命令の直前に行われることを確認してください。DIV の条件付け標識によって直前の DIV 命令が実行されないときに MVR 命令が 実行されると、好ましくない結果が起こる場合があります。
- 算術演算での配列の使用方法については、演算での配列の指定を 参照してください。