Ibm midrange rpg as400标题打印2x?

Ibm midrange rpg as400标题打印2x?,ibm-midrange,rpg,Ibm Midrange,Rpg,标题打印在报告的开头和结尾。我认为我的LR是错误的。有什么帮助吗 ft1prlc if e disk fqsysprt o f 132 printer d heading1 c 'Salary Report' d heading2 c 'SSN Last Name Salary' c r

标题打印在报告的开头和结尾。我认为我的LR是错误的。有什么帮助吗

ft1prlc    if   e             disk
fqsysprt   o    f  132        printer
d heading1        c                   'Salary Report'
d heading2        c                   'SSN      Last Name    Salary'
c                   read      t1prlc                                 lr
c                   dow       *inlr=*off
c                   except    printline
c                   read      t1prlc                                 lr
c                   enddo
oqsysprt   H                           2
O                                              Heading1
O          h                           2
O                                              Heading2 
oqsysprt   e            printline      2
欢迎来到RPG

您看到在特定条件下如何设置异常打印吗?仅当EXCEPT操作指定PRINTLINE时,才会打印详细信息。如果您有另一个,比如PRINTLINE2,PRINTLINE将不会打印

你的航向线是什么?
提示:“H”行是以指示符为条件的,而不是像PRINTLINE这样的名称。

对于RPG,记录类型“H”和“D”之间没有任何真正的区别。两者的处理方式相同。要理解为什么要两次获得标题行,需要理解RPG逻辑循环。简而言之,逻辑循环从打印标题和细节行开始,然后再进行任何c-spec计算。然后,它在每次通过逻辑循环后打印任何标题和详细信息行。因此,我们:

  • 打印标题和详细信息
  • 检查*INLR。如果*打开,则结束
  • 执行详细计算
  • 返回到步骤1

  • 为了防止这种情况,您的F-spec应该指定一个溢出指示器。然后,应该使用相同的溢出指示器对您的O规格进行调节。

    此外,即使遵循该建议,您的标题也只会打印一次,因为您没有真正使用逻辑循环编程。现在,我不是说你应该使用逻辑循环编程。事实上,很少有人再这样做了。您应该使标题行与明细行属于同一execpt print组,但带有溢出指示器。这样,如果有分页符,你也会得到新的标题。