CLPでは四則演算は使えるがRPGの組込み関数 %REM のような剰余計算はないので
剰余(余り)を算出することはできない。
従ってCLPの中で自分で数学的に算出するしかない。
_
-
001.00 PGM
002.00 /*-------------------------------------------------------------------*/
003.00 /* CRTSRCMNU : テンプレート・サンプル CLP CPF9999 改訂版 */
004.00 /* */
005.00 /* 2018/02/01 作成 */
006.00 /*-------------------------------------------------------------------*/
007.00 DCL VAR(&USRLIBL) TYPE(*CHAR) LEN(2750)
008.00 DCL VAR(&POS) TYPE(*DEC) LEN(4 0)
009.00 DCL VAR(&SHO) TYPE(*DEC) LEN(4 0) /* 商 */
010.00 DCL VAR(&MVR) TYPE(*DEC) LEN(4 0) /* 余り */
:
0030.00 /*( 環境の取得 )*/
0031.00 RTVJOBA TYPE(&TYPE) USRLIBL(&USRLIBL)
:
0039.00 /*---------------------------*/
0040.00 CALLSUBR SUBR(INZSUBR)
0041.00 /*---------------------------*/
:
0096.00 /******************************/
0097.00 SUBR SUBR(INZSUBR)
0098.00 /******************************/
0099.00 CHGVAR VAR(&POS) VALUE(%SCAN(' ' &USRLIBL))
0100.00 CHGVAR VAR(&SHO) VALUE(&POS / 10)
0101.00 CHGVAR VAR(&MVR) VALUE(&POS - (&SHO * 10))
0102.00 IF COND(&MVR > 0) THEN(DO)
0103.00 CHGVAR VAR(&SHO) VALUE(&SHO + 1)
0104.00 ENDDO
0105.00 ENDSUBR
[解説]
変数 : &USRLIBL(ライブラリー・リスト)に含まれているライブラリーの数を
算出するには
0099.00 CHGVAR VAR(&POS) VALUE(%SCAN(' ' &USRLIBL))
によって10桁のブランクが出現する位置を調べておいて
0100.00 CHGVAR VAR(&SHO) VALUE(&POS / 10)
によって10バイトで割り算して
0101.00 CHGVAR VAR(&MVR) VALUE(&POS - (&SHO * 10))
によって余り: &MVR を算出する。
余りがあれば商: &SHO に + 1する
0102.00 IF COND(&MVR > 0) THEN(DO) 0103.00 CHGVAR VAR(&SHO) VALUE(&SHO + 1) 0104.00 ENDDO
_