この方法は、集計表形式およびフリーフレーム形式で使用できます。
集計表形式およびフリーフレームの帳票を使用してデータの集計を行うには、データ定義画面の[拡張定義]タブで設定を行う必要があります。
ここでは、集計表形式の売上集計表で、月ごとに小計、年ごとに合計を計算する方法を例に説明します。
帳票様式定義画面で、「年」、「月」、「日」、「製品名」、および「金額」を定義します。「年」、「月」、「日」、および「金額」は、数字項目として定義します。
帳票様式定義画面で制御脚書きパーティション(CF2)を定義し、数字項目として「小計」を定義します。
帳票様式定義画面で制御脚書きパーティション(CF1)を定義し、数字項目として「合計」を定義します。
データ定義画面の[データ定義]タブで、「年」のオペランドに「BREAK-1」を指定します。「1」は、制御レベルです。
⇒「年」に対するデータが変わったことを検知します。
データ定義画面の[データ定義]タブで、「月」のオペランドに「BREAK-2」を指定します。「2」は、制御レベルです。
⇒「月」に対するデータが変わったことを検知します。
データ定義画面の[データ定義]タブで、「小計」のオペランドに「SUM(金額)」を指定します。
⇒「月」ごとの小計を計算します。
データ定義画面の[データ定義]タブで、「合計」のオペランドに「SUM(小計)」を指定します。
⇒「年」ごとの合計を計算します。
データ定義画面の[拡張定義]タブで、「DETAIL」段落を追加し、「COMPUTE 小計」を記述します。
⇒1明細出力するたびに「金額」を「小計」に加算します。
データ定義画面の[拡張定義]タブで、「CNTL-FOOT」段落を追加し、「月」と2.で定義した制御脚書きパーティション名(CF2)を記述します。
「月」に対するデータが変わるタイミングで制御脚書きパーティション(CF2)を出力します。
データ定義画面の[拡張定義]タブで、9.の「CNTL-FOOT」段落に「COMPUTE 合計」を記述します。
⇒「小計」を出力するたびに「小計」を「合計」に加算します。
データ定義画面の[拡張定義]タブで、「CNTL-FOOT」段落を追加し、「年」と3.で定義した制御脚書きパーティション名(CF1)を記述します。
⇒「年」に対するデータが変わるタイミングで制御脚書きパーティション(CF1)を出力します。
例)
データ項目名 | オペランド |
---|---|
年 | BREAK-1 |
月 | BREAK-2 |
日 | |
製品名 | |
金額 | |
小計 | SUM(金額) |
合計 | SUM(小計) |
DETAIL COMPUTE 小計 CNTL-FOOT 月 CF2 COMPUTE 合計 CNTL-FOOT 年 CF1
ポイント
「小計」および「合計」はプログラムが自動計算して出力するので、入力データは必要ありません 。
制御レベルとは、制御切れを検出する項目が複数存在する場合の各項目の優先順序です。高い制御レベルの制御切れが発生した場合、その制御レベルより低い制御レベルの項目はすべて制御切れが発生します。この例の場合「年」の制御切れが発生した時点で、「月」についても制御切れが発生します。
制御切れとは、項目の値が変化することです。この例の場合、「月」が小計の制御切れを検出する項目、「年」が合計の制御切れを検出する項目になります。
CNTL-FOOTを記述する順序と制御レベルは、一致させる必要があります。
SUM関数を指定する項目は、[データ定義]タブで、BREAKを指定した項目よりも後ろに並べます。
「小計」は制御脚書きパーティション(CF2)が出力されたタイミングで、「合計」は制御脚書きパーティション(CF1)が出力されたタイミングで、それぞれ初期化されます。