分配给 CL 变量的垃圾值 post 程序调用

Junk values being assigned to CL variables post program call

我有一些 CL 程序目前正在 FTP 将文件发送到生产服务器。

我们引入了一个新的 iSeries 测试服务器用于测试目的,这些程序需要来自这个新服务器 运行。但是,从测试服务器 运行ning 时的目标 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)

从上面可以看出,GETFTPRPG程序是新引入的根据程序名和程序所在服务器运行ning获取IP地址的程序调用。

这工作正常,但问题是程序中声明的其他变量(具体来说,程序中声明的第一个 Decimal 变量)正在更改。在上面的示例中,&ATTEMP 变量的值更改为 04。任何人都可以提出可能的原因吗?

CL 通过引用传递变量。确保 &TARGIP 和它对应的参数定义相同。看起来 GETFTPRPG 对第二个参数的定义与您的 CL 程序不同(可能更长)。当 &TARGIP 的值被更改时,超过 20 个字符,然后它将覆盖内存中 &ATTEMP 的值。