2012-03-08 83 views
0

標題在報告開始和結束時打印。我認爲我的LR是錯的。任何幫助?RPG as400標題打印2x?

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 

回答

0

歡迎RPG!

您是否看到如何在特定條件下發生異常打印?僅當EXCEPT操作指定PRINTLINE時纔會打印詳細信息。如果您有另一種說法,例如PRINTLINE2,PRINTLINE將不會打印。

什麼是空調您的標題? 提示:'H'行用指示符來處理,而不是像PRINTLINE這樣的名字。

1

對於RPG,記錄類型「H」和「D」之間沒有任何真正的區別。兩者的處理都是一樣的。爲了理解你爲什麼得到標題行兩次,你需要了解RPG邏輯週期。簡而言之,在進行任何C-spec計算之前,邏輯循環首先打印標題行&。然後在每次邏輯週期後打印任何標題&。因此,我們有:

  1. 打印標題和細節
  2. 檢查* INLR。如果* ON,則結束。
  3. 執行詳細計算
  4. 回到步驟1

爲了防止這種情況,你的F-規格應指定溢出指示器。然後你的O規格應該使用相同的溢出指標進行調節。

+1

此外,即使遵循該建議,您的標題也只會打印一次,因爲您沒有真正使用邏輯循環編程。現在,我並不是說你應該使用邏輯循環編程。事實上,很少有人再做。您應該使您的標題行成爲與詳細信息行相同的執行列印組的組成部分,但應使用溢出指示符。這樣,如果有分頁符,您也會得到新的標題。 – 2012-03-21 17:53:07