Easytrieve Plus : 自動集計されるフィールドの出力桁数は? CONTROLステートメントを使用すると数値フィールドの桁数が増える。 CONTROLステートメントを使用すると「B061 レポート行のオーバーフロー」エラーが発生する等。
search cancel

Easytrieve Plus : 自動集計されるフィールドの出力桁数は? CONTROLステートメントを使用すると数値フィールドの桁数が増える。 CONTROLステートメントを使用すると「B061 レポート行のオーバーフロー」エラーが発生する等。

book

Article ID: 185867

calendar_today

Updated On:

Products

EASYPROCLIB Easytrieve Report Generator Easytrieve Report Generator for Common Services

Issue/Introduction

Question
自動集計されるフィールドの出力桁数は?
CONTROLステートメントを使用すると数値フィールドの桁数が増える。
CONTROLステートメントを使用すると「B061 レポート行のオーバーフロー」エラーが発生する。
合計値の右側に「*」が出力される。
合計値の上位部に位取りのカンマがつかない。

Environment

z/OS, MSP, VOS3, IBM, FUJITSU, HITACHI

Resolution

Answer
レポート処理において、CONTROLステートメントを記述すると出力フィールドのうち自動集計されるフィールドに対しては、明細の桁数(フィールド定義で指定した桁数)にSUMSPACEの値を加算します。

<解説>
自動集計処理では、合計値のオーバーフローを回避するために桁数の調整が行われます。この調整に使用するのが SUMSPACE パラメータです。SUMSPACEパラメータでは、合計フィールドに対しあらかじめ定義された桁数に何桁増加するかを指定します。指定できる値は0~9まで、標準値は3です。つまりEASYPLUSの合計値の出力桁は、フィールド長よりも標準3桁余分にとっています。この3桁に納まりきれないとき(合計値がオーバーフローした時)には合計値の右側に * が出力されます。この場合、SUMSPACEパラメータで出力桁を調整します。または、そのフィールドをより桁数の大きいワーク・フィールドに転送し、そのワーク・フィールドを出力対象としてもかまいません。

[SUMSPACEの記述]
REPORT  [レポート名]  ・・・・・・  SUMSPACE リテラル  ・・・・・・・

※リテラル : 合計フィールドで増加したい桁数を0~9の範囲で指定する。省略値は3。

注意:SUMSPACEで加算された桁数部分には、位取りのMASK編集(カンマ編集)はされません。カンマ編集が必要な場合は、ワーク・フィールドを用いた方法が適切です。
「SUMSPACE 5」と指定した場合、
                         合計値編集形式                 出力結果
10513405 →    XXXXXZZ,ZZ9 -    → 10513,405
                                                                      ↓
                                                             カンマが出力されない

この場合、カンマを出力させるためには入力フィールドの桁数+5桁のワーク・フィールドを定義して入力データを移送し、このワーク・フィールドを出力フィールドとしてレポートのLINEステートメントに指定すればよい。

記述例
(例1) CONTROLレポート出力時のSUMSPACEを5桁にする。

FILE     FILEA
KEY-A         1      10     A
SURYO-1  11      10    N 0
SURYO-2  21       3     N 0

JOB
PRINT
REPORT   SUMSPACE 5
CONTROL   KEY-A
TITLE 1   KEY-A   ‘一覧表'
LINE 1   KEY-A   SURYO-1    SURYO-2

※上の例では、SUMSPACE 5の指定があるので、合計行でのSURYOの出力桁数は
SURYO-1 「定義した数(10) +5 +編集のための桁数(4) 」、
SURYO-2 「定義した数(3) +5 +編集のための桁数(1)」
になります。
SUMSPACEパラメータはすべての合計出力フィールドに対して機能するため、特定の項目のオーバーフローの回避方法としては適当ではありません。合計値がオーバーフローしない項目に対して必要以上の桁数を取ることになるからです。


(例2) ある特定のフィールドのみオーバーフローを起こしてしまった。

FILE     FILEA
KEY-A         1     10     A
SURYO-1  11     10    N 0
SURYO-2  21      3     N 0

W-SURYO-1    W    12    N 0
*
JOB
W-SURYO-1    =    SURYO-1
PRINT
*
REPORT
CONTROL   KEY-A
TITLE 1   KEY-A   ‘一覧表'
LINE 1   W-SURYO-1   SURYO-2

※SURYO-1の合計値はオーバーフローするので、新たに桁数の大きいワーク・フィールド(W-SURYO-1)を定義してSURYO-1のデータを移送します。

Additional Information

Old Japanese Knowledge document ID: JTEC001010