Easytrieve Plus : キー・ブレイク時に合計値ではなく平均値を出力する方法は?
book
Article ID: 185726
calendar_today
Updated On:
Products
EASYPROCLIB
Easytrieve Report Generator
Easytrieve Report Generator for Common Services
Issue/Introduction
Question
キー・ブレイク時に合計値ではなく平均値を出力する方法は?
Environment
z/OS, MSP, VOS3, IBM, FUJITSU, HITACHI
Resolution
Answer
CONTROLステートメントで NOPRINT パラメータを指定し、レポート・プロシジャーで計算しDISPLAYで出力します。
CONTROLステートメントで、フィールド名の後にNOPRINTを指定すると、キー・ブレイクが発生しても合計行がプリントされません。
[CONTROLステートメントの記述]
CONTROL フィールド名 NOPRINT
FINAL NOPRINT
NOPRINTを指定すると合計行のプリントは行われませんがキー・ブレイク発生時点での合計値は内部で保持されており、 BEFORE-BREAK あるいは AFTER-BREAK プロシ ジャーで合計値を参照することができます。そこでこれらいずれかのプロシジャーで合計値を TALLY (合計件数をもったEASYPLUSシステム定義フィールド)で割ることで平均値を求め、 結果を DISPLAY ステートメントでレポートへ出力します。
記述例
(例) 部別支給額の平均を求め出力
REPORT
SEQUENCE BU
CONTROL FINAL NOPRINT BU NOPRINT
TITLE 1 '部別支給額一覧表'
LINE 1 BU SHIKYU
BEFORE-BREAK. PROC
W-SHIKYU = SHIKYU / TALLY
IF LEVEL = 1
DISPLAY POS 1 ' 部平均 =' POS 2 +3 W-SHIKYU '円'
ELSE
DISPLAY POS 1 '全社平均 =' POS 2 +3 W-SHIKYU '円'
END-IF
END-PROC
※LEVEL: コントロール・ブレイクのレベルを判断するキーワードです。この例では、部でブレイクした場合(LEVEL=1) と総合計(LEVEL=2) とでDISPLAYの内容(合計行見出し)を変えています。
※POS : 出力位置を指定するキーワードです。POSを指定することで簡単にLINE 1で指定されたフィールドの出力位置に合わせてプリントすることができます。(そのフィールドの左合わせになります。 POS 2 +3 W-SHIKYU の指定は、SHIKYUフィールドのSUMSPACEにより付加された桁数を考慮した出力位置の指定を行っています。)
[出力結果]
92年07月15日 部別支給額一覧表 1頁
部コード 支給額
05010 26,000
46,000
87,000
73,000
部平均 = 58,000円
05011 59,000
23,800
98,500
部平均 = 60,400円
全社平均 = 59,000円
Additional Information
Old Japanese Knowledge document ID: JTEC001014
Feedback
thumb_up
Yes
thumb_down
No