Kun*_*oy 2 rpg rpgle ibm-midrange
在 rpgle /sqlrpgle 代码中,我遇到了 /INCLUDE 和 /COPY 等编译器指令,有人可以告诉我两者之间的核心区别是什么,因为它们似乎几乎做了同样的事情。
它们的不同之处在于 CRTSQLRPGI 的 RPGPPPOT 参数应用于它们的处理方式。查看文档
当值为*LVL1时,将调用RPG预处理器对RPG源进行预处理。所有 /COPY 语句都将被扩展,甚至嵌套的 /COPY 语句,并且条件编译指令将被处理。
当值为*LVL2时,将调用RPG预处理器对RPG源进行预处理。所有 /COPY 和 /INCLUDE 语句都会被扩展,并且条件编译指令将被处理。
如果您的 SQL 语句之一引用了在另一个成员中定义的主变量,或者像另一个成员中的变量一样定义,则可以对该成员使用 /COPY,对于其他成员使用 /INCLUDE,并使用 RPGPPOPT(*LVL1) 进行编译。这样,预处理器将了解该变量,而不必读取对其无用的 /INCLUDE 成员。