1
我想从CLLE调用RPGLE过程。由于RPGLE过程存在,我不能将其更改为extproc(* CL)类型。我目前在V7R1。我已经使用了下面的代码。如果我通过* BYVAL参数没有通过。如果我通过* BYREF它正在工作。我已经在RPGLE服务中将参数定义为CONST。请让我知道,如果我必须做任何额外的更改通过价值传递。* BYVAL和* BYREF CLLE
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