我可以在rpgleref源中使用/ free而不使用/ end-free吗?

时间:2012-06-06 11:46:35

标签: ibm-midrange rpgle rpg

我正在编写一组程序来创建,编写和编译一组SQLRPGLE程序。我的程序开头的很多代码都在我的每个程序中重复,所以我把它放到参考源中是有意义的...它大致是形式

    H some h specs
    D a load of d specs

    /free
       my nice free formatted code that I use everywhere

然后我的元程序出现并添加了大量代码。此时我的程序看起来像这样

    /copy *libl/qrpgleref,myRefPgm

      lots of nice rpg and sql

    /end-free

当我编译它时它不起作用 - 我认为这是因为程序无法正常匹配/ free和/ end-free ......是吗?或者我在这里错过了一些更微妙的东西?

干杯

3 个答案:

答案 0 :(得分:4)

我认为您的程序未编译的原因仅基于您提问中提供的示例,因为您的H和D规格与您的自由格式计算规格混合在一起。订单对RPG很重要,你不能搞砸。如果您复制的代码需要D和H规格,那么您有两个选择:

  • 为H,D和C(自由格式)规范创建单独/复制源成员。然后/将它们复制到适当位置的RPG程序中。
  • 创建* MODULE或* SRVPGM,然后仅将原型的D规格复制到RPG程序中。仅根据您在问题中提出的内容,我认为最佳解决方案是创建服务计划。为了更容易将服务程序绑定到RPG程序,我想创建一个绑定目录,然后在我的RPG程序中放置一个H规范:H BNDDIR( library / bnddir )。这样,我仍然可以在PDM中使用普通的14进行编译。

答案 1 :(得分:2)

我认为你可以,但为什么不添加/free/end-free,以防将来出现混乱或问题?

答案 2 :(得分:2)

根据IBM ILE RPGLE语言参考(SC09-2508-08)

  

/ COPY或/ INCLUDE指令包含的任何语句都是   考虑固定语法计算。 / COPY中的任何自由格式语句   会员必须通过 / FREE和 / END-FREE 指令进行分隔。

另请注意:

  

自由格式计算块在您指定时结束   / END-FREE。

我的建议是尽可能避免/复印本。