Ibm midrange 过程原型中的参数声明和RPG中的接口

Ibm midrange 过程原型中的参数声明和RPG中的接口,ibm-midrange,rpgle,Ibm Midrange,Rpgle,我试图理解在RPG程序的过程原型(PR)和过程接口(PI)中声明参数变量的方式。为什么需要在PR和PI中定义参数变量?在两个地方都声明它是必要的,但为什么需要重新定义呢 对于同一模块中的过程,您不需要使用Dcl Pr。你只需要一个原型的过程,这是 在程序中的不同模块中 在您试图引用的服务程序中 同一模块内的过程不需要Dcl Pr。你只需要一个原型的过程,这是 在程序中的不同模块中 在您试图引用的服务程序中 这假设OP已打开,并且正在为最新版本的OS编译。旧版本甚至对模块的内部过程也需要PR。我通

我试图理解在RPG程序的过程原型(PR)和过程接口(PI)中声明参数变量的方式。为什么需要在PR和PI中定义参数变量?在两个地方都声明它是必要的,但为什么需要重新定义呢

对于同一模块中的过程,您不需要使用
Dcl Pr
。你只需要一个原型的过程,这是

  • 在程序中的不同模块中
  • 在您试图引用的服务程序中

  • 同一模块内的过程不需要
    Dcl Pr
    。你只需要一个原型的过程,这是

  • 在程序中的不同模块中
  • 在您试图引用的服务程序中

  • 这假设OP已打开,并且正在为最新版本的OS编译。旧版本甚至对模块的内部过程也需要PR。我通常现在也为程序定义一个过程接口,而不是使用
    *ENTRY PLIST
    。虽然没有必要为这些定义一个原型,但它确实使调用变得更好,因为我将所有原型放在一个单独的副本中,并且我可以在需要调用程序时复制适当的原型。是的,它在服务程序中非常有用。您只需将过程的原型放入调用程序中,然后就可以使用服务程序的过程(当该过程定义为“导出”时)。这假设OP已打开,并且正在为最新版本的OS编译。旧版本甚至对模块的内部过程也需要PR。我通常现在也为程序定义一个过程接口,而不是使用
    *ENTRY PLIST
    。虽然没有必要为这些定义一个原型,但它确实使调用变得更好,因为我将所有原型放在一个单独的副本中,并且我可以在需要调用程序时复制适当的原型。是的,它在服务程序中非常有用。您只需将过程的原型放入调用程序中,然后就可以使用服务程序的过程(当过程定义为“导出”时)。是的。IBM就是这样做的。我认为他们的大脑中有COBOL,程序也在两个地方定义。ANSI C以前也使用过原型和接口的声明。原型将由调用方使用,接口将由被调用的过程使用。调用者需要知道预期的正确数据形式,被调用的proc需要知道调用者将提供什么。由于这两个函数通常位于不同的程序中,因此需要两个单独的定义,因为表单必须在调用的两侧匹配。通常的问题是,为什么在一个独立的ILE RPG程序中需要这两个选项,答案是,这只适用于非当前版本。是的。IBM就是这样做的。我认为他们的大脑中有COBOL,程序也在两个地方定义。ANSI C以前也使用过原型和接口的声明。原型将由调用方使用,接口将由被调用的过程使用。调用者需要知道预期的正确数据形式,被调用的proc需要知道调用者将提供什么。由于这两个函数通常位于不同的程序中,因此需要两个单独的定义,因为表单必须在调用的两侧匹配。通常的问题是,为什么在一个独立的ILERPG程序中需要这两个选项,答案是,只有非当前版本才需要。