CLLEからRPGLEプロシージャをコールしようとしています。 RPGLEプロシージャーが存在するので、extproc(* CL)タイプに変更することはできません。私は現在V7R1にいる。私は以下のコードを使用しています。 * BYVALを渡すと、パラメータが渡されません。もし私が* BYREFを渡すなら、それは働いています。 RPGLEサービスでCONSTというパラメータを定義しました。私が値渡しに追加の変更を加えなければならないかどうか教えてください。* CLLEのBYVALと* BYREF
PGM
DCLPRCOPT USRPRF(*OWNER) DFTACTGRP(*NO) ACTGRP(*NEW) +
BNDDIR(SAMSRV)
DCL VAR(&CLNBR) TYPE(*CHAR) LEN(9)
DCL VAR(&USER) TYPE(*CHAR) LEN(10)
DCL VAR(&IS_VLD) TYPE(*LGL)
CHGVAR VAR(&CLNBR) VALUE('01112201T')
CHGVAR VAR(&USER) VALUE('UUUUU ')
CALLPRC PRC('IsValidClient') PARM((&CLNBR *BYREF) +
(&USER *BYREF)) RTNVAL(&IS_VLD)
ENDPGM
私はいつもCONSTが値渡しに等しいという印象を受けました。したがって、CONSTは参照渡しですが、読み取り専用の参照です。答えは – Sekar
ありがとうございます。 'CONST'と' VALUE'は両方ともリテラルを渡すことができます... 'callp myproc( 'Hi');'しかし、彼らはそうするために異なるメカニズムを使います。 – Charles