Ibm midrange 程序调用后分配给CL变量的垃圾值

Ibm midrange 程序调用后分配给CL变量的垃圾值,ibm-midrange,rpgle,Ibm Midrange,Rpgle,我有许多CL程序,目前正在将文件FTP到生产服务器 为了进行测试,我们引入了一个新的iSeries测试服务器,这些程序需要从这个新服务器上运行。但是,从测试服务器运行时的目标FTP地址应该不同。这些文件需要发送到相应的测试服务器 为此添加了一个简单的程序调用,如下所示: PGM PARM(&FTPERR) DCL VAR(&SUCCES) TY

我有许多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)
如上所述,GETFTPRPG程序是新引入的程序调用,它根据程序名和程序运行的服务器检索IP地址


这工作正常,但问题是程序中声明的其他变量是特定的,程序中声明的第一个十进制变量正在更改。在上面的示例中,&ATTEMP变量的值更改为04。有人能提出可能的原因吗?

CL通过引用传递变量。确保&TARGIP及其对应参数的定义相同。GETFTPRPG定义第二个参数的方式似乎不同,可能比CL程序长。当&targetip的值更改超过20个字符时,它将覆盖内存中&ATTEMP的值。

CL通过引用传递变量。确保&TARGIP及其对应参数的定义相同。GETFTPRPG定义第二个参数的方式似乎不同,可能比CL程序长。当&targetip的值更改超过20个字符时,它将覆盖内存中&ATTEMP的值。

我只是说,您可以在主机表条目中配置您的测试系统名称。在任何语言或系统中,您都应该使用名称,而不是IP。是时候现代化了。我只是说你可以在主机表条目中配置你的测试系统名称。在任何语言或系统中,您都应该使用名称,而不是IP。是时候现代化了。