%REM (戻り整数剰余)

%REM(n:m)

%REM は、オペランド nm で 除算した結果求められる剰余を戻します。これらの 2 つの オペランドは、小数点以下の桁数がない (ゼロの) 数値でなければなりません。 いずれかのオペランドがパック数値、ゾーン数値、または 2 進数値である場合、結果 はパック数値になります。 いずれかのオペランドが整数値である場合、結果は整数になります。 これ以外の場合、結果は符号なし数値に なります。浮動数値オペランドは使用できません。 結果には、被除数と同じ符号が付きます。 (%DIV (商の戻り整数部分)も参照してください。)

%REM と %DIV には、次の関係があります。

%REM(A:B) = A - (%DIV(A:B) * B)

これらのオペランドが、8 バイト整数フィールド、または符号なしフィールド 内に収められる定数である場合、定数の折り畳みがこの組み込み関数に適用されます。この場合、%REM 組み込み関数は定義仕様書でコーディングできます。

詳細については、算術演算または 組み込み関数を参照してください。

図 217. %DIV と %REM の例
 *..1....+....2....+....3....+....4....+....5....+....6....+....7...+....
D*Name++++++++++ETDsFrom+++To/L+++IDc.Keywords+++++++++++++++++++++++++
D A               S             10I 0 INZ(123)
D B               S             10I 0 INZ(27)
D DIV             S             10I 0
D REM             S             10I 0
D E               S             10I 0

 /FREE
    DIV = %DIV(A:B);  // DIV is now 4
    REM = %REM(A:B);  // REM is now 15
    E = DIV*B + REM;  // E is now 123
 /END-FREE