Mor*_*ier 1 rpgle ibm-midrange
我有许多CL程序,这些程序当前正在将文件FTP发送到生产服务器。
我们已经引入了用于测试目的的新iSeries测试服务器,并且这些程序需要从该新服务器上运行。但是,从测试服务器运行时的目标FTP地址应该不同。文件需要发送到相应的测试服务器。
为此,添加了一个简单的程序调用,如下所示:
PGM PARM(&FTPERR)
DCL VAR(&SUCCES) TYPE(*CHAR) LEN(1)
DCL VAR(&FTPERR) TYPE(*CHAR) LEN(1)
DCL VAR(&TARGIP) TYPE(*CHAR) LEN(20) VALUE(' ')
DCL VAR(&ATTEMP) TYPE(*DEC) LEN(2 0) VALUE(0)
CALL PGM(GETFTPRPG) PARM('FTPMRCL' &TARGIP)
Run Code Online (Sandbox Code Playgroud)
从上面可以看出,GETFTPRPG程序是新引入的程序调用,它基于程序名和程序运行所在的服务器检索IP地址。
这很好,但是问题在于程序中声明的其他变量(具体来说,是程序中声明的第一个Decimal变量)正在更改。在上面的示例中,&ATTEMP变量的值更改为04。有人可以建议可能的原因吗?
CL通过引用传递变量。确保&TARGIP
和它对应的参数定义相同。似乎与GETFTPRPG
CL程序不同(可能更长)定义了第二个参数。&TARGIP
更改值后,如果超过20个字符,则它将覆盖&ATTEMP
内存中的值。