请注意以下代码:
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
?
答案 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();