有没有办法在 PCL-PR EXTPGM 中设置默认值?
Is there a way to set default value in PCL-PR EXTPGM?
注意这段代码:
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
?
如果您希望调用者能够在不传递参数的情况下调用您的程序,请在原型中的参数中添加 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();
注意这段代码:
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
?
如果您希望调用者能够在不传递参数的情况下调用您的程序,请在原型中的参数中添加 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();