Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

7.48.2 ENDPRINT の使用例

...

例1:受注番号を入力するようユーザーに要求してから明細行の詳細を印刷する以下の2つのRDMLプログラムについて考えます。 

Code Block
    GROUP_BY  NAME(#ORDERDET)

...

 FIELDS(#ORDNUM #CUSTNUM #DATEDUE #ORDLIN #PRODUCT #QUANTITY #PRICE)
    REQUEST   FIELDS(#ORDNUM)

...


L1:

...

 FETCH     FIELDS(#ORDERDET)

...

 FROM_FILE(ORDHDR)

...

 WITH_KEY(#ORDNUM)

...

 NOT_FOUND(L1)

...

 ISSUE_MSG(*YES)
    

...

SELECT    FIELDS(#ORDERDET)

...

 FROM_FILE(ORDLIN)

...

 WITH_KEY(#ORDNUM)
    

...

UPRINT    FIELDS(#ORDERDET)

...


    ENDSELECT
    GOTO      L1

もう1つのRDMLプログラムは以下のとおりです。 

Code Block
     

...

 GROUP_BY  NAME(#ORDERDET)

...

 FIELDS(#ORDNUM #CUSTNUM #DATEDUE #ORDLIN #PRODUCT #QUANTITY #PRICE)
   

...

   REQUEST   FIELDS(#ORDNUM)
 L1:

...

  FETCH     FIELDS(#ORDERDET)

...

 FROM_FILE(ORDHDR)

...

 WITH_KEY(#ORDNUM)

...

 NOT_FOUND(L1)

...

 ISSUE_MSG(*YES)

...


      SELECT    FIELDS(#ORDERDET)

...

 FROM_FILE(ORDLIN)

...

 WITH_KEY(#ORDNUM)

...


      UPRINT    FIELDS(#ORDERDET)
 

...

    

...

 ENDSELECT
 

...

     ENDPRINT
      GOTO      L1   

両方のプログラムがほぼ同じであることに注意してください。どちらも受注番号の入力を要求し、注文頭書きの詳細を取得し、関連付けられた明細行の詳細をすべて印刷します。 

違いはENDPRINTコマンドにあります。 

最初のプログラムは、REQUESTコマンドで、ユーザーが[終了]または[メニュー]ファンクション・キーを使用するまで待機してから、ファンクションの終了時にENDPRINTコマンドを自動的に実行します。すなわち、要求されたすべての注文が1つの印刷/スプール・ファイルに出力されます。 

2番目のプログラムでは、各注文が印刷されるごとにENDPRINTが実行されるため、印刷 両方のプログラムがほぼ同じであることに注意してください。どちらも受注番号の入力を要求し、注文頭書きの詳細を取得し、関連付けられた明細行の詳細をすべて印刷します。 違いはENDPRINTコマンドにあります。 最初のプログラムは、REQUESTコマンドで、ユーザーが\[終了\]または\[メニュー\]ファンクション・キーを使用するまで待機してから、ファンクションの終了時にENDPRINTコマンドを自動的に実行します。すなわち、要求されたすべての注文が1つの印刷/スプール・ファイルに出力されます。 2番目のプログラムでは、各注文が印刷されるごとにENDPRINTが実行されるため、印刷/スプール・ファイルが閉じます。その後、次のUPRINTコマンドが実行されると、新しい印刷/スプール・ファイルが自動的に開きます。すなわち、各注文は、別々の印刷/スプール・ファイルに保管されます。 スプール・ファイルに保管されます。