Answer
数値フィールドで合計を出力したい項目と出力したくない項目がある場合の取り扱い方法は?
CONTROLステートメントを記述したのに合計が出力されない。
MASKパラメータで編集形式を指定しているフィールドを自動集計できるか?
A :
自動集計の対象となるフィールドは、数量数値フィールド(フィールド定義で数字マスクを指定したフィールド)で、LINEステートメントに指定されているフィールドです。レポート定義でSUMステートメントを使用した場合には、数量数値フィールドのうちSUMステートメントに指定されているフィールドが自動集計されます。Easytrieve Plusの自動集計機能で集計対象となるフィールドは以下のとおりです。
・SUMステートメントがない場合 → LINEステートメントに指定されている数量数値フィールド (Wタイプのワークフィールドを含む)
・SUMステートメントがある場合 → SUMステートメントに指定されている数量数値フィールド (Wタイプのワークフィールドを含む)
(この場合、SUMステートメントに指定されているフィールドだけが対象になります。 LINEステートメントに指定されていてもSUMステートメントに指定がないと合計 は集計されません。)
参考 : 以下のような場合には、SUMステートメントを使用します。
1.プログラム中で演算やデータ移送を行うので、数字マスクで小数点以下の桁数を指定したいがその項目については自動集計の必要はない。
2.数字マスクを指定しEasytrieve Plusの標準フォーマットで編集して出力したいが、その項目については、自動集計の必要はない。
3.サマリー・ファイルの作成で、集計項目が多くLINEステートメントで指定していくと、「B061 レポート行のオーバーフロー」エラーが発生する。(LINEでの項目指定はLINESIZEのチェックが入りますが、SUMで指定した場合には指定できる項目数に制限はなくなります。)
注意 : 数量数値フィールド とはフィールド定義をする際に、数字マスクを指定したフィールドをいいます。 数字マスク とは数字の0から18の指定です。MASKパラメータだけ指定したフィールドは含まれません。数値属性(N、P、U、B)で定義しても数字マスクを指定しないフィールドは自動集計されません。この場合には数字マスクとMASKパラメータを併用します。
記述例
(例1) SUMステートメントなし
FILE FILEA
FLD1 1 5 N 0
FLD2 6 5 N 0
FLD3 11 5 N 0
FLD4 16 5 N 0
FLD5 21 5 N 0
*
JOB
REPORT
CONTROL
TITLE '*** ~ ***'
LINE FLD1 FLD2 FLD3 FLD4 FLD5 ← すべての項目の総合計が出力される。
(例2) SUMステートメントあり
FILE FILEA
FLD1 1 5 N 0
FLD2 6 5 N 0
FLD3 11 5 N 0
FLD4 16 5 N 0
FLD5 21 5 N 0
*
JOB
REPORT
CONTROL
SUM FLD3 FLD4 FLD5 ← SUMステートメントで指定した項目だけが、自動集計される。
TITLE '*** ~ ***'
LINE FLD1 FLD2 FLD3 FLD4 FLD5
(例3) 数字マスクとMASKパラメータを併用したフィールド定義の例 (数字マスクが指定されていることでCONTROLにより自動集計されます。)
FLD-1 1 5 N 0 MASK '\\,\\9'
※数字マスクとMASKパラメータを併用した場合、出力編集形式はMASKパラメータが優先されます。