Versions Compared

Key

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

...

最も単純なレポートは、ファイルの内容をすべてそのまま列挙する、という形のものでしょう。

これは次のように記述すれば作成できます。

     DEF_LINE    NAME(#ACCOUNT)

...

 FIELDS(#COMP #DIV #DEPT 
            #EXPEND #REVNU)
SELECT      FIELDS(#ACCOUNT)

...

 FROM_FILE(ACCOUNTS)
PRINT       LINE(#ACCOUNT)
ENDSELECT
ENDPRINT

...

作成結果は次のようになります。

 
 会社        部門         課               支出      収入 
  01          1           ADM              400       576  
  01          1           MKT              678        56  
  01          1           SAL              123      6784  
  01          2           ADM               46        52  
  01          2           SAL              978       456  
  01          3           ACC              456       678  
  01          3           SAL              123       679  
  02          1           ACC              843       400  
  02          1           MKT               23         0  
  02          1           SAL              876        10  
  02          2           ACC                0        43  
 
 
この例を若干変更するだけで、特定の会社についてのみ出力するなど、レポートの内容を変えることができます。
 この例を若干変更するだけで、特定の会社についてのみ出力するなど、レポートの内容を変えることができます。

     DEF_LINE    NAME(#ACCOUNT)

...

 FIELDS(#COMP #DIV #DEPT 
            #EXPEND #REVNU)
REQUEST     FIELDS(#COMP)
SELECT      FIELDS(#ACCOUNT)

...

 FROM_FILE(ACCOUNTS)

...

 
            WITH_KEY(#COMP)
PRINT       LINE(#ACCOUNT)
ENDSELECT
ENDPRINT

同様に、収入と支出の差が所定の値未満のものだけを出力するよう、条件を与えることも可能です。

     DEF_LINE    NAME(#ACCOUNT)

...

 FIELDS(#COMP #DIV 
            #DEPT #EXPEND #REVNU)
DEFINE      FIELD(#MAXLOSS)

...

 REFFLD(#REVNU)

...

 
            LABEL('

...

Allowable loss')
REQUEST     FIELDS(#MAXLOSS)
SELECT      FIELDS(#ACCOUNT)

...

 FROM_FILE(ACCOUNTS)

...

 
            WHERE('(

...

#REVNU -

...

 #EXPEND)

...

 *

...

LT #MAXLOSS')
PRINT       LINE(#ACCOUNT)
ENDSELECT
ENDPRINT

次の例では*ONCHANGE属性を使って、会社番号がすぐ上の行と異なる場合のみ印字するようにしています。

     DEF_LINE    NAME(#ACCOUNT)

...

 FIELDS((

...

#COMP *ONCHANGE)

...

 
            #DIV #DEPT #EXPEND #REVNU)
SELECT      FIELDS(#ACCOUNT)

...

 FROM_FILE(ACCOUNTS)
PRINT       LINE(#ACCOUNT)
ENDSELECT
ENDPRINT

 実際に作成されるレポートは、例えば次のようになります。 
実際に作成されるレポートは、例えば次のようになります。
 
      会社        部門         課              支出       収入 
       01          1           ADM              400       576  
                   1           MKT              678        56  
                   1           SAL              123      6784  
                   2           ADM               46        52  
                   2           SAL              978       456  
                   3           ACC              456       678  
                   3           SAL              123       679  
       02          1           ACC              843       400  
                   1           MKT               23         0  
                   1           SAL              876        10  
                   2           ACC                0        43