MOD スカラー関数

MOD 関数は、最初の引数を 2 番目の引数で除算し、剰余を戻します。

構文図を読むビジュアルシンタックスダイアグラムをスキップするMOD( numeric-expression-1, numeric-expression-2)

スキーマは SYSIBM です。

剰余を計算するために使用される公式は次のとおりです。
   MOD(x,y) = x - FLOOR(x/y) * y
ここで、 x/y は、除算の切り捨てられた整数の結果です。 最初の引数が負の場合のみ、結果は負になります。

それぞれの引数は、いずれかの組み込み数値データ・タイプの値を戻す式であることが必要です。

引数を、文字ストリングまたはグラフィック・ストリングのデータ・タイプにすることもできます。 ストリング入力は、暗黙的に DECFLOAT(34) の数値にキャストされます。

結果は NULL 値になることがあります。いずれかの引数が NULL 値である場合、結果は NULL 値になります。

結果の属性は、以下のように引数に基づきます。

  • 両方の引数が短精度整数または長精度整数である場合、結果のデータ・タイプは長精度整数になります。
  • 両方の引数が整数であり、少なくとも 1 つの引数が 64 ビット整数である場合、結果のデータ・タイプは 64 ビット整数になります。
  • 1 つの引数が整数で、他の引数が 10 進数である場合、 結果のデータ・タイプは 10 進数の引数と同じ精度と位取りになります。
  • 両方の引数が 10 進数である場合、結果のデータ・タイプは 10 進数になります。 結果の精度は min(p-s,p'-s') + max(s,s') で、結果の位取りは max(s,s') になります。ここで、記号 ps は最初の引数の精度と位取りを示し、記号 p's' は 2 番目の引数の精度と位取りを示します。
  • 一方の引数が浮動小数点数で、もう一方が DECFLOAT でない場合、あるいは両方の引数が浮動小数点数である場合、結果のデータ・タイプは倍精度浮動小数点になります。

    演算は浮動小数点数で実行されます。 オペランドは、必要であれば、まずはじめに倍精度浮動小数点数に変換されます。 例えば、浮動小数点数と整数または 10 進数のいずれかが関係する演算は、整数または 10 進数を一時的に倍精度浮動小数点数に変換したそのコピーを使って行われます。 浮動小数点数演算の結果は、浮動小数点数の範囲内でなければなりません。

  • いずれかの引数が DECFLOAT の場合、結果のデータ・タイプは DECFLOAT(34) となります。

    いずれかの引数が特殊 10 進浮動小数点値の場合は、算術演算の一般規則が適用されます。 詳細は、「DECFLOATの算術演算の一般的なルール 」を参照してください。

    1 つの引数が DECFLOAT で、2 番目の引数がゼロの場合、結果は NaN となり、無効演算条件が戻されます。

例: M1M2 は 2 つのホスト変数であるとします。 M1M2 で除算した剰余を調べます。
   SELECT MOD(:M1,:M2)
     FROM SYSIBM.SYSDUMMY1;
以下の表は、M1M2 のさまざまな値について、この関数の結果を示しています。
M1 のデータ・タイプ M1 M2 のデータ・タイプ M2
結果
MOD(:M1,:M2)
INTEGER 5 INTEGER 2 1
INTEGER 5 DECIMAL(3,1) 2.2 0.6
INTEGER 5 DECIMAL(3,2) 2.20 0.60
DECIMAL(4,2) 5.50 DECIMAL(4,1) 2.0 1.50
DECFLOAT 1 DECFLOAT -無限 1
DECFLOAT -0 DECFLOAT INFINITY -0
DECFLOAT -0 DECFLOAT -無限 -0