Есть ли способ установить значение по умолчанию в PCL-PR EXTPGM? - PullRequest
0 голосов
/ 17 октября 2018

Запишите этот код:

DCL-S PGM1_PARM1 CHAR(10) INZ('param val ')
DCL-PR @PROGRAM1 EXTPGM('PGM1');
  PARAM1 CHAR(10);
END_PR;

@PROGRAM1(PGM1_PARM1);

Программа всегда будет вызываться с одним и тем же параметром.Я попытался добавить INZ к объявлению параметра в DCL-PR, но компилятор начал кричать на меня о недопустимом ключевом слове INZ.

Есть ли способ установить значение вызова по умолчанию на DCL-PR?

1 Ответ

0 голосов
/ 19 октября 2018

Если вы хотите, чтобы вызывающие абоненты могли вызывать вашу программу без передачи параметра, добавьте OPTIONS (* NOPASS) к параметру в прототипе.Чтобы проверить, был ли передан параметр, напишите в коде самой программы следующий код:

DCL-S PARAM1 CHAR(10) INZ('param val ');
DCL-PI @PROGRAM1;
  PARAM1_PASSED CHAR(10) OPTIONS(*NOPASS);
END_PI;

if %parms >= %parmnum(PARAM1_PASSED);
   PARAM1 = PARAM1_PASSED;
   ... or just ignore it if you don't care what they passed
endif;

Теперь вызывающие абоненты могут просто кодировать

@PROGRAM1();
...