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

Document created by Masaaki_Iyama Employee on Jun 22, 2015Last modified by Masaaki_Iyama Employee on Jun 22, 2015
Version 1Show Document
  • View in full screen mode

文書番号: JTEC001010

製品名: CA-Easytrieve Plus

バージョン: ALL

OS: z/OS, MSP, VOS3

 

Question

自動集計されるフィールドの出力桁数は?

CONTROLステートメントを使用すると数値フィールドの桁数が増える。
CONTROLステートメントを使用すると「B061 レポート行のオーバーフロー」エラーが発生する。

合計値の右側に「*」が出力される。

合計値の上位部に位取りのカンマがつかない。

 

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のデータを移送します。

Attachments

    Outcomes