Ненужные значения присваиваются переменным CL после вызова программы - PullRequest
1 голос
/ 10 июня 2019

У меня есть несколько программ 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. Кто-нибудь может предложить возможные причины?

1 Ответ

7 голосов
/ 10 июня 2019

CL передает переменные по ссылке. Убедитесь, что &TARGIP и соответствующий ему параметр определены одинаково. Похоже, что GETFTPRPG определяет второй параметр иначе (возможно, дольше), чем ваша программа CL. Когда значение для &TARGIP изменяется, после 20 символов, оно перезаписывает значение &ATTEMP в памяти.

...