この方法は、集計表形式およびフリーフレーム形式で使用できます。
ここでは、フリーフレームで請求額が2,000,000円未満の場合に請求額のみを出力する制御脚書きパーティション、請求額2,000,000円以上の場合に値引き額と値引き後請求額を出力する制御脚書きパーティションを切り分けて出力する方法を例に説明します。
帳票様式定義画面で、数字項目の「月」、「日」、「数量」、「単価」、「金額」、およびテキスト項目の「商品」を定義します。
帳票様式定義画面で、フレームに制御脚書きパーティションを定義し(CF1)、固定リテラル項目の文字列「請求額」、および数字項目の「請求額」を定義します。
帳票様式定義画面で、フレームに制御脚書きパーティションを定義し(CF2)、固定リテラル項目の文字列「値引き額(請求額の10%)」「請求額」、数字項目の「値引き額」、および「値引き後請求額」を定義します。
データ定義画面の[データ定義]タブで「月」のオペランドに「BREAK」を指定します。
⇒「月」に対するデータが変わったことを検知します。
データ定義画面の[データ定義]タブで「金額」のオペランドに「MUL(数量, 単価)」を指定し、「請求額」のオペランドに「SUM(金額)」指定します。
⇒「金額」、および「請求額」を計算します。
データ定義画面の[データ定義]タブで「値引き額」のオペランドに「MUL(請求額, 0.1)」を指定し、「値引き後請求額」のオペランドに「SUB(請求額, 値引き額)」を指定します。
⇒「値引き額」、および「値引き後請求額」を計算します。
データ定義画面の[拡張定義]タブで、「DETAIL」段落を追加し、定義した明細パーティション(DE)を記述します。
また、「COMPUTE 金額 請求額」を記述します。
⇒1明細出力するたびに「金額」と「請求額」を計算します。
データ定義画面の[拡張定義]タブで、「CNTL-FOOT」段落を追加し、「月」、「( 請求額 < 2000000 )」および2)で定義した制御脚書きパーティション(CF1)を記述します。
⇒「月」が変わるタイミング、かつ、「請求額」が「2,000,000円未満」の場合に制御脚書きパーティション(CF1)を出力します。
データ定義画面の[拡張定義]タブで、「CNTL-FOOT」段落を追加し、「月」、「( 請求額 >= 2000000 )」および3)で定義した制御脚書きパーティション(CF2)を記述します。
また、「COMPUTE 値引き額 値引き後請求額」、「SET 請求額 TO 0」を記述します。
⇒「月」が変わるタイミング、かつ、「請求額」が「2,000,000円以上」の場合に制御脚書きパーティション(CF2)を出力します。この際、「値引き額」と「値引き後請求額」を計算し、請求額に0を設定します。
例)
データ項目名 | オペランド |
---|---|
月 | BREAK |
日 | |
商品 | |
数量 | |
単価 | |
金額 | MUL(数量, 単価) |
請求額 | SUM(金額) |
値引き額 | MUL(請求額, 0.1) |
値引き後請求額 | SUB(請求額, 値引き額) |
DETAIL DE COMPUTE 金額 請求額 CNTL-FOOT 月 ( 請求額 < 2000000 ) CF1 CNTL-FOOT 月 ( 請求額 >= 2000000 ) CF2 COMPUTE 値引き額 値引き後請求額 SET 請求額 TO 0
ポイント
この機能は、Windows用帳票サンプル「請求書2」、UNIX系OS用帳票サンプル「SEIKYU2」で使用しています。
制御頭書きパーティションを条件によって切り分けて出力することもできます。
例)
「項目A」の値によって制御頭書きパーティションを切り分けて出力する場合は、拡張定義で以下のように指定します。
「項目B」が変わるタイミングで制御頭書きパーティションを出力します。
CNTL-HEAD 項目B (項目A = 1 ) CH1
CNTL-HEAD 項目B (項目A = 2 ) CH2