有没有办法在PCL-PR EXTPGM中设置默认值?

时间:2018-10-17 14:31:42

标签: ibm-midrange rpgle

请注意以下代码:

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 :(得分:2)

如果希望调用者能够在不传递参数的情况下调用程序,请在原型中的参数上添加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();