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展示的语法就是你如何得到你想要的。效果是一样的。调用方可以不带参数地调用,如果需要,过程中的第一个代码将加载默认值。