新規投稿 記事一覧 ホーム
●ご利用方法,ご利用に際しての規約はこちらをお読みください。
こちらからの投稿は、先頭に表示されているコメントへの返信になります。
CL内で割り算をする方法を教えて下さい。 ビンゴ さん [ 3月3日(火) 18時35分 ]

    CL内で割り算(余りまで求める)をしたいのですが、RPGで言う“DIV”、“MVR”の様
    な命令は存在するのでしょうか?
    存在しない場合はどの様に求めれば良いかご教授願います。

    RE:CL内で割り算をする方法を教えて下さい。 IKD さん [ 3月4日(水) 13時49分 ]

      CLP では DIV は / ですが MVR に相当するものはありません。
      下記に割り算と余りを計算するCLPを示します。
      ソースは http://218.44.135.18/QSYS,LIB/PGMRLIB.LIB/QCLSRC.FILE/DIVCL.MBR

      0001.00              PGM                                                   
      0002.00              DCL        VAR(&SU_A) TYPE(*DEC) LEN(4 0)             
      0003.00              DCL        VAR(&SU_B) TYPE(*DEC) LEN(4 0)             
      0004.00              DCL        VAR(&SHO) TYPE(*DEC) LEN(4 0)              
      0005.00              DCL        VAR(&AMARI) TYPE(*DEC) LEN(4 0)            
      0006.00              DCL        VAR(&CHAR4) TYPE(*CHAR) LEN(4)             
      0007.00                                                                    
      0008.00   /*( 10/2 の割り算 )*/                                            
      0009.00              CHGVAR     &SU_A   10                                 
      0010.00              CHGVAR     &SU_B    2                                 
      0011.00              CHGVAR     VAR(&SHO) VALUE(&SU_A / &SU_B)             
      0012.00              CHGVAR     VAR(&CHAR4) VALUE(&SHO)                    
      0013.00              SNDPGMMSG  MSG('10 / 2 = ' *CAT &CHAR4) MSGTYPE(*DIAG)
      0014.00                                                                    
      0015.00   /*( 8/3 の割り算の余り )*/                                       
      0016.00              CHGVAR     &SU_A    8                                 
      0017.00              CHGVAR     &SU_B    3                                 
      0018.00              CHGVAR     VAR(&SHO) VALUE(&SU_A / &SU_B)             
      0019.00              CHGVAR     &AMARI  VALUE(&SU_A - (&SU_B * &SHO))      
      0020.00              CHGVAR     VAR(&CHAR4) VALUE(&AMARI) 
      0021.00              SNDPGMMSG  MSG('8 % 3 = ' *CAT &CHAR4) MSGTYPE(*DIAG)
      0022.00              ENDPGM       

      RE:有り難う御座いました。 ビンゴ さん [ 3月4日(水) 14時54分 ]

        ご回答どうも有り難う御座いました。
        なるほど、納得しました。
        参照ソースはエラーで開けませんでしたが、記述して頂いたソースをサンプルに
        コーディングしてみます。
        助かりました。

お名前
パスワード
e-mailアドレス
タイトル
ホームページ
アドレス