Ibm midrange 有没有办法在PCL-PR EXTPGM中设置默认值?
请注意此代码:Ibm midrange 有没有办法在PCL-PR EXTPGM中设置默认值?,ibm-midrange,rpgle,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 如果希望调用者能够在不传递参数的情况下调用您的程序,请在原
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
如果希望调用者能够在不传递参数的情况下调用您的程序,请在原型中的参数中添加选项(*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();
如果希望调用者能够在不传递参数的情况下调用您的程序,请向原型中的参数添加选项(*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();
我认为在RPGLE中不可能,但您可以使用*省略并测试被调用程序中的参数,如果参数地址为null,则使用存储在常量中的默认值……我查看Scott Klement(大师)原型手册,这是不可能的。看看@Nifriz谢谢。我是新来的。Scott Klement确实提供了很好的资源考虑提交RFE以实现该功能。我认为在RPGLE中不可能,但您可以使用*省略并测试被调用程序中的参数,如果参数地址为null,则使用存储在常量中的默认值……我查看Scott Klement(大师)原型手册,这是不可能的。看看@Nifriz谢谢。我是新来的。Scott Klement确实提供了大量资源,考虑提交RFE以实现该功能;PARAM1_传递字符(10)INZ('param');(完)代码>将从调用程序中传递相同参数的地方。@Ruslan您要使用的语法无效。Barbara展示的语法就是你如何得到你想要的。效果是一样的。调用方可以不带参数地调用,如果需要,过程中的第一个代码将加载默认值;PARAM1_传递字符(10)INZ('param');(完)代码>将从调用程序中传递相同参数的地方。@Ruslan您要使用的语法无效。Barbara展示的语法就是你如何得到你想要的。效果是一样的。调用方可以不带参数地调用,如果需要,过程中的第一个代码将加载默认值。