フリー・フォーマットでも四則演算は
_
四則演算 演算記号
足し算 +
引き算 –
掛け算 *
割り算 /
剰余 %REM
と剰余(余り)の算出だけは MVRではなく組込み関数 %REM を
使わねばならない。
しかしRPG解説書では %REM の使用サンプルがあまりにも
不親切なのでサンプル・ソースを紹介する。
[ TESTKSN : RPGソース]
ソースはこちらから
0001.00 H DFTNAME(TETSKSN) DATEDIT(*YMD/) BNDDIR('QC2LE') 0002.00 F********** 算術計算テスト ******************************************* 0003.00 F* 0004.00 F********************************************************************** 0005.00 0006.00 * CRTRPGMOD OBJ(QTEMP/TESTKSN) SRCFILE(R610SRC/QRPGLESRC) 0007.00 * DBGVIEW(*SOURCE) AUT(*ALL) 0008.00 * CRTPGM PGM(ASNET.COM/TESTKSN) MODULE(QTEMP/TESTKSN) ACTGRP(*NEW) 0009.00 * AUT(*ALL) 0010.00 0011.00 *-------------------------------------------------------------------* 0012.00 * 2020/08/24 : 作成 0013.00 *-------------------------------------------------------------------* 0014.00 *( 作業変数 ) 0015.00 D SUA S 4S 0 INZ(10) 0016.00 D SUB S 4S 0 INZ(5) 0017.00 D TOTAL S 4S 0 0018.00 D GOKEI S 4S 0 0019.00 0020.00 C*-------------------------------------------------------------------------+ 0021.00 /FREE 0022.00 TOTAL = SUA + SUB; // 足し算 0023.00 SUB = TOTAL - SUA; // 引き算 0024.00 GOKEI = SUA * SUB; // 掛け算 0025.00 SUB = GOKEI / SUA; // 割り算 0026.00 GOKEI = 102; 0027.00 SUB = %REM(GOKEI:SUA); // 余り 0028.00 /END-FREE 0029.00 C SETON LR 0030.00 C RETURN 0031.00 C****************************************************** 0032.00 C *INZSR BEGSR 0033.00 C****************************************************** 0034.00 C* 初期 CYCLE のみの実行 0035.00 C ENDSR
_
[解説]
余りの算出方法は
SUB(余り) = %REM(GOKEI / SUA);
ではなく
SUB(余り) = %REM(GOKEI : SUA);
が正しい記述である。( GOKEIを SUAで割った余りが SUB )
普通に考えれば %REM(GOKEI / SUA); のほうが
自然であるが IBM の規定によれば
SUB(余り) = %REM(GOKEI : SUA);
となる。不自然ではあるが定義であるので仕方がない。
_