報告書作成

報告書作成(report writer)は特殊な目的の機能であり、出力報告書の編成や形式や内容に焦点を当てている。もちろん、標準のCOBOL言語を使用して報告書を作成することもできるが、報告書作成言語機能を利用すると、もっと簡潔に報告書を構成し作成できる。報告書作成機能を使用すると、通常はプログラマが行う手続き部のプログラミングの多くが、自動的に報告書作成制御システム(report writer control system : RWCS)によって行われるようになる。したがって、プログラマは、いろいろな手続きを書く負担が少なくなる。たとえば、データの転記、印刷する行の編集、1ページ中の行数を数える、ページ番号の付番、見出し行や脚書き行の作成、論理的なデータの切れ目の判定、合計カウンタの更新などを、いちいちコーディングしなくて済むようになる。これらの操作はすべて、原始プログラムのデータ部の報告書節中に記述する文に基づいて、報告書作成制御システムによって行われる。

標準COBOL定義の一部を構成するにもかかわらず、X/OpenのCOBOL言語定義では、報告書作成機能単位は明示的に除外されている。したがって、X/OpenのCOBOLに準拠する原始プログラム内ではこの機能単位を使用するべきではない。

OS/VS COBOLコンパイラは、ANSI'68標準に基いた報告書作成機能をサポートする (メインフレームLANGLVL(2)コンパイラオプションを使用する場合でも - これは普通ANSI'74サポートを必要とする)。しかし、コンパイラが2つのCOBOL標準をサポートしている場合が多くある。このため、他の方言でOS/VS COBOLをエミュレートするCOBOLシステムの使用を試みるべきではない。

この章では、これらのOS/VS COBOL拡張の多くはOSVSのマークで示してある。しかし、OS/VS COBOL 報告書作成の構文に関する本来の規則については、IBM OS/VS COBOL Language Referenceを参照すること。

報告書節

COBOLデータ部の報告書節(report section)には、報告書記述項(report description entry)がいくつか含まれる。それらの報告書記述項が、全体で1つの報告書の記述を構成する。

報告書記述項中の報告書名は、出力ファイルには直接は割り当てられない。その代わりに、報告書名はファイル節中のファイル名に関連付けられ、そのファイル名を指定したOPEN文が実行されるときに、そのファイルが出力ファイルに関連付けられる。同じファイル名に、2つ以上の報告書を関連付けることができる。ファイル内で別々の報告書を区別するには、CODE句を使用する。ファイル名によって参照される外部ファイル結合子に関しては、同じファイル名に対してプログラムが別であれば、別の報告書を指定できる。ファイル記述項には、そのファイルを使用するプログラムによって作成される各報告書用の報告書記述項の名前を指定しなければならない。

報告書記述項には、報告書に名前を付け、印刷ページの形式および各種の報告集団を印字する行位置の範囲に関する情報を指定するための、一連の句を記述する。報告書記述項中に識別コードを指定して、中間出力ファイル中の各報告書を個別に識別するようにできる。

各報告書記述項に続けて、01レベルの記述項をいくつか記述する。さらに、各01レベルの記述項に続けて、レコード記述に似た階層を記述する。各01レベルの記述項とその下位の記述項は、報告集団(report group)を表わす。各報告集団は、何行かの印字行から構成される。 報告集団は、1つの単位として扱われる。つまり、1つの報告集団は完全に1論理ページ内に収まるように印字され、ページをまたがって印字されることはない。

報告書の構造

報告書の構造を決める際に検討する重要なこととして、縦および横の間隔の取り方、データの操作、報告集団の論理的および物理的な行位置の範囲が挙げられる。

縦の位置決め

1つの報告集団には、複数の行を含めることができる。ページ上の行の縦の位置は、各行に対応するLINE NUMBER句によって指定する。NEXT GROUP句は、ある報告集団の最後の行を印刷した後、次の報告集団との間を何行空けるかを指定する。次の報告集団の最初のLINE NUMBER句は、その報告集団を位置付けるのにさらに余分に空ける間隔を指定する。

横の位置決め

報告書を作成する際に、報告書行上のデータ・フィールドの位置を指定することができる。それには、COLUMN NUMBER句を使用する。定義したすべてのフィールドの間は、報告書作成制御システムによって空白にされる。

データの操作

報告書作成機能を使用するときは、報告集団へのデータの移送は手続き部の文ではなく、報告書節中の句によって行われる。このような、データの操作に影響を及ぼす報告書節中の句には、SOURCE, SUM, VALUEがある。

SOURCE(源)句は、暗黙のMOVE(転記)文の送出し側のデータ項目を指定する。受取り側の印字用項目は、SOURCE句の指定を含めた報告集団項目の記述によって定義する。

SUM(合計)句は、合計カウンタを自動的に設定する。SUM句の右辺には、GENERATE(作成)文が実行されたときに合計カウンタに加算するデータ項目を指名する。合計カウンタの内容を受取り側の印字用項目(SUM句を含める報告集団項目の記述によって定義する)に転記することは、報告集団を印字するときに自動的に行われる。

VALUE(値)句は、印字項目に定数を設定する。報告集団を印字するたびに、VALUE句を指定した印字項目の内容として、設定した定数が表示される。

まとめると、報告集団中のデータ項目は、表示位置を示すCOLUMN NUMBER句を指定した場合にだけ表示される。印字用項目中に入れる値は、報告集団記述項中に記述するSOURCE句、SUM句、VALUE句によって設定する。報告集団の印字項目が、手続き部の文によって直接的に値を設定されることはない。

報告集団の配置

ページ上に何を表示するかを決定するために、報告書の物理構成と論理構成とが相互に関係する。

物理的な報告集団の配置

PAGE句はページの長さ、見出し領域と脚書き領域の大きさ、明細行を表示する領域の大きさを指定する。報告書作成制御システムは、LINE NUMBER句とNEXT GROUP句に基づいて、報告集団を位置付ける。また、必要なときには、改ページを行い、ページ頭書き(page heading)報告集団およびページ脚書き(page footing)報告集団を自動的に作成する。

論理的な報告集団の配置

明細(detail)報告集団を、何レベルかの入れ子状の制御集団(control group)から構成することができる。各制御集団の先頭には制御頭書き(control heading)報告集団を配置し、末尾には制御脚書き(control footing)報告集団を配置できる。

入れ子状の制御集団を定義したとき、制御階層(control hierarchy)中の制御データ項目(control data item)の値の変化を認識することを、制御切れ(control break)と言い、制御データ名(control data-name)に関連する頭書きと脚書を、それぞれ制御頭書きと制御脚書きと言う。

GENERATE文の実行中に、報告書作成制御システム(RWCS)は制御階層に基づいて、制御切れの発生を自動的に検査する。制御切れが発生すると、それよりも低いレベルのすべての制御切れが発生したものとみなされる。実際には低いレベルの制御データ項目の値は変わっていなくても、制御切れが発生したことになる。制御切れが発生すると、下記の処理が順に行われる。

  1. 最下位のレベルから制御切れが検出されたレベルまでの、すべての制御脚書き報告集団が順に表示される。

  2. 制御切れが検出されたレベルから最下位のレベルまでの、すべての制御頭書き報告集団が順に表示される。

  3. GENERATE文に指定した明細報告集団が表示される。

報告書作成手続き文

手続き部に記述する報告書作成文には、INITIATE, GENERATE, TERMINATE, SUPPRESS, USE BEFORE REPORTINGがある。

INITIATE(開始)文は、報告書作成制御システム(RWCS)に一連の初期化機能を自動的に実行させる。報告書の明細処理を行う前に、報告書の開始処理を行っておく。

データ名を指定したGENERATE文は、指定した明細報告集団の形式を整えて出力装置に書き出す。その他に、GENERATE文は上記の多くの暗黙の処理を報告書作成制御システム(RWCS)に実行させるきっかけとなる。

報告書名を指定したGENERATE文は、合計報告書を作成する。この型の文では、明細行はすべて自動的に抑制されて、 明細報告集団の処理の間に集計された合計だけが印字される。報告書名を指定したGENERATE文とデータ名を指定したGENERATE文は、報告書作成制御システム(RWCS)によってほぼ同様に処理される。違いは、報告書名を指定したGENERATE文では、明細行が印字されないことである。

TERMINATE(終了)文は、報告書の終了に関する機能をすべて自動的に実行するよう、報告書作成制御システム(RWCS)に指示する。報告書を収録したファイルを閉じる前に、TERMINATE文を実行しなければならない。.

SUPPRESS(抑制)文は、ある報告集団全体を実行時に印刷しないようにする。

BEFORE REPORTING指定をしたUSE(使用)文は、報告書作成制御システム(RWCS)によって自動的に実行される手続き内の特定の時点で、手続き部の文を実行できるようにする。USE BEFORE REPORTING手続き内の文は、SOURCE句によって参照されるデータ項目の内容を変更できる。したがって、自動的に作成される報告集団内で参照されるデータ項目の内容を制御することができる。

言語の概念

報告書ファイル

報告書ファイル(report file)は、順編成の出力ファイルである。報告書ファイルのファイル記述項には、REPORT句が含まれる。報告書ファイルへのレコードの書出しは、報告書作成制御システム(RWCS)によって行われる。

報告書ファイルは、ファイル管理記述項で名前を付け、ファイル記述項で仕様を記述する。報告書ファイル用のファイル記述には、REPORT句を含める。 報告書ファイルを参照し呼び出す文には、OPEN, GENERATE, INITIATE, SUPPRESS, TERMINATE, USE BEFORE REORTING, CLOSEがある。

特殊レジスタPAGE-COUNTER

予約語のPAGE-COUNTERは、ページカウンタの名前である。このページカウンタは、データ部の報告書節中の各報告書記述項ごとに生成される。このデータ項目は、暗黙のうちにPIC 9(6) BINARYと定義される。PAGE-COUNTERの値は報告書作成制御システム(RWCS)によって維持され、報告書のページに番号を振るためにプログラムによって使用される。PAGE-COUNTERを参照できるのは、報告書節のSOURCE句の中と手続き部の文の中だけである。(後述のPAGE-COUNTERに関する規則の節を参照。)

特殊レジスタLINE-COUNTER

予約語のLINE-COUNTERは、行数カウンタの名前である。この行数カウンタは、データ部の報告書節中の各報告書記述項ごとに生成される。このデータ項目は、暗黙のうちにPIC 9(6) BINARYと定義される。LINE-COUNTERの値は報告書作成制御システム(RWCS)によって維持され、報告書の 縦の位置付けを決めるために使用される。LINE-COUNTERを参照できるのは、報告書節のSOURCE句の中と手続き部の文の中だけである。LINE-COUNTERの値を変更できるのは、報告書作成制御システム(RWCS)だけである。(後述のLINE-COUNTERに関する規則の節を参照。)

特殊レジスタPRINT-SWITCH

予約語のPRINT-SWITCHは、レジスタの名前である。このレジスタの値を、USE BEFORE REPORTING宣言手続きの中でゼロ以外に設定できる。こうすると、対応する報告集団の印刷を抑制する効果がある。

添字付け

報告書節では、添字として、合計カウンタも特殊レジスタの LINE-COUNTER と PAGE-COU NTER も使用できない。

報告書作成機能単位における環境部

入出力節

入出力節に関する情報は、言語リファレンスプログラムの定義の章を参照のこと。

ファイル管理段落

ファイル管理段落に関する情報は、言語リファレンスプログラムの定義の章を参照のこと。

機能

ファイル管理記述項には、報告書ファイルに関連する物理属性を定義する。

追加の構文規則

  1. OPTIONAL指定は、拡張モードで開いた報告書に対してだけ適用できる。実行用プログラムを実行するときに、毎回必ずしも存在するとは限らない報告書ファイルには、OPTIONAL指定をする必要がある。

  2. 報告書ファイルは、順編成ファイルとする。SELECT句に指定した各報告書ファイルに関して、同じプログラムのデータ部のファイル記述項にREPORT句を含めなければならない。

入出力管理段落

入出力管理段落に関する情報は、 言語リファレンスプログラムの定義の章を参照のこと。

追加の構文規則

  1. RECORD指定を伴うSAME句中に、報告書ファイルを含めてはならない。

報告書作成機能単位におけるデータ部

ファイル記述項

ファイル記述項には、対象とするファイルに関する物理構造や識別やレコード名に関する情報を記述する。

ファイル記述項には、ファイル結合子や関連するデータ・レコードや関連するデータ項目の内部属性および外部属性を定義する。また、ファイル名が局所名であるか大域名であるかを、ファイル記述項に指定する。

一般形式

構文規則

  1. レベル指示語のFDは、報告書ファイル用のファイル記述項の始まりを示す。報告書ファイルのファイル名の前に置く。

  2. ファイル名-1に続く句は、どのような順序で書いてもよい。

  3. ファイル名-1のファイルは、順ファイルとする。

  4. 報告書ファイル用のファイル記述項の後ろに、レコード記述項を書くことはできない。

    レコード記述項を書いてもよい。

  5. REPORT句が含まれるファイル記述項の左辺を参照できる手続き文は、USE文、CLOSE文、OUTPUT指定またはEXTEND指定を伴うOPEN文だけである。

一般規則

  1. REPORT句を除いて、報告書ファイル用のファイル記述項内のすべての句は、順入出力モジュールで説明してある。

  2. REPORT句については、次の項で説明する。

REPORT句

REPORT句は、報告書ファイルを構成する報告書の名前を指定する。

一般形式

構文規則

  1. REPORT句中に指定した各報告書名を、同じプログラムの報告書節中の報告書記述項の左辺に指定しなければならない。報告書名を書く順序には意味はない。

  2. 1つの報告書名は、ただ1つのREPORT句の中だけに現れなければならない。 1つの報告書名が、2つのREPORT句の中に現れてもよい。

  3. REPORT句が含まれるファイル記述項の左辺を参照できる手続き文は、USE文、CLOSE文、OUTPUT指定またはEXTEND指定を伴うOPEN文だけである。

一般規則

  1. 1つのREPORT句の中に複数の報告書名があることは、そのファイルに複数の報告書が含まれることを意味する。

  2. INITIATE文を実行した後で同じ報告書ファイルに対してTERMINATE文を実行する前までの間、その報告書ファイルは報告書作成制御システム(RWCS)の制御下におかれる。報告書ファイルが報告書作成制御システム(RWCS)の制御下にある間は、その報告書ファイルを参照する入出力文を実行することはできない。

  3. 関連するファイル結合子が外部ファイル結合子である場合、そのファイル結合子に関連する実行単位中の各ファイル記述項において、そのファイル結合子を報告書ファイルとして記述する。

報告書節

報告書節は、原始プログラムのデータ部の中に位置する。報告書節には、報告書ファイルに書き出す報告書の仕様を記述する。各報告書の記述は報告書記述項で始め、その後ろに1つ以上の報告集団記述項を続ける。

一般形式

報告書記述項

報告書に名前を付けることに加えて、報告書記述項では報告書の各ページの 形式を定義する。具体的には、各型の報告集団を印字できる行位置の範囲を指定する。また、報告書記述項には制御データ項目も指定する。報告書を作成するときに、制御データ項目の値が変わるごとに、報告書の明細情報が制御集団という単位で処理される。

ファイル節のファイル記述項のREPORT句中の各報告書名は、報告書節の報告書記述項の左辺にする。さらに、報告書節中の各報告書はただ1つのファイル記述項だけに指名されているのでなければならない。

報告集団記述項

報告書記述項に続けて、 その報告書を構成する報告集団を記述する。各報告集団の先頭には、報告集団記述項を記述する。これは、レベル番号が01でTYPE句を含む記述項である。報告集団記述項の下位には、その報告集団の特性をさらに記述する、集団記述項および基本記述項を続けることができる。

報告書記述項

報告書記述項では、報告書に名前を付け、報告書中の各印刷行に付与する識別特性を指定し、報告書の物理構造と構成を記述する。

また報告書記述項には、報告書名が局所名であるか大域名であるかも指定する。

一般形式

構文規則

  1. 報告書名-1は、1つのREPORT句の中だけに指定する。

  2. 報告書名-1の後ろに続ける句の順序は重要ではない。

  3. LINE-COUNTER、PAGE-COUNTER、報告書節の中で定義するすべてのデータ名に指定できる修飾語のうちで、報告書名は最高位を占める。

一般規則

  1. CODE句、CONTROL句、PAGE句は、アルファベット順にそれぞれ説明する。

  2. 報告書記述項にGLOBAL句が含まれている場合、特殊レジスタのLINE-COUNTERとPAGE-COUNTERは大域名である。

PAGE-COUNTERに関する規則

  1. PAGE-COUNTERは、ページ数を表わす特殊レジスタを指す予約語である。この特殊レジスタは、報告書節中に指定した各報告書に対して自動的に作成される。(前述の 特殊レジスタPAGE-COUNTERの節を参照。)

  2. 報告書節では、PAGE-COUNTERを参照できるのはSOURCE句の中でだけである。手続き部では、整数値をとるデータ項目を置くことのできる場所ならば、どこでもPAGE-COUNTERを使用できる。

  3. 1つのプログラム中にPAGE-COUNTERが複数ある場合は、手続き部で参照するたびに、報告書名によってPAGE-COUNTERを修飾しなければならない。

    報告書節では、修飾しないでPAGE-COUNTERを参照すると、その記述がされている報告書記述項に対応する報告書の名前によって、暗黙的に修飾される。別の報告書のPAGE-COUNTERを参照するときは、対象とする報告書名でPAGE-COUNTERを明示的に修飾しなければならない。

  4. INITIAL文を実行すると、対象報告書のPAGE-COUNTERが報告書作成制御システム(RWCS)によって、1に設定される。

  5. 報告書作成制御システム(RWCS)によって改ページされるたびに、PAGE-COUNTERは自動的に1繰り上げられる。

  6. 手続き部の文によって、PAGE-COUNTERの値を変更できる。

LINE-COUNTERに関する規則

  1. LINE-COUNTERは、印字行の行位置(line number)を表わす特殊レジスタを指す予約語である。この特殊レジスタは、報告書節中に指定した各報告書に対して自動的に作成される。(前述の特殊レジスタLINE-COUNTER の節を参照。)

  2. 報告書節においては、LINE-COUNTERを参照できるのは、SOURCE句の中でだけである。手続き部では、整数値をとるデータ項目を置くことのできる場所ならばどこでもLINE-COUNTERを使用できる。ただし、LINE-COUNTERの内容を変更できるのは、報告書作成制御システム(RWCS)だけである。

  3. 1つのプログラム中にLINE-COUNTERが複数ある場合は、手続き部で参照するたびに、報告書名によってLINE-COUNTERを修飾しなければならない。

    報告書節では、修飾しないでLINE-COUNTERを参照すると、その記述がされている報告書記述項に対応する報告書の名前によって、暗黙的に修飾される。別の報告書のLINE-COUNTERを参照するときは、対象とする報告書名でLINE-COUNTERを明示的に修飾しなければならない。

  4. INITIATE文を実行すると、対象報告書のLINE-COUNTERが報告書作成制御システム(RWCS)によってゼロに設定される。また、改ページされるたびに、LINE-COUNTERの値が報告書作成制御システムによって自動的にゼロに設定し直される。

  5. LINE-COUNTERの値は、印字されることのない報告集団を処理しても、影響を受けることはない。また、本来なら印字されるがSUPPRESS文によって印字を抑制されている報告集団を処理しても、影響を受けることはない。

  6. 報告書行が印字されるとき、LINE-COUNTERの値は、その位置を示す行位置を表わしている。報告集団を印字した後のLINE-COUNTERの値は、報告集団に関する表示規則によって規定される。(後述の表示規則表を参照。)

CODE(コード)句

CODE句は、各報告書行がどの報告書に属するかを示す、2文字の定数を指定する。

一般形式

構文規則

  1. 定数-1は、2文字の英数字定数とする。

    定数-1は、特殊名段落中に指定した呼び名で置き換えられなければならない。詳細は、 OS/VS COBOL Language Referenceを参照。

  2. あるファイル中のどれかの報告書に対してCODE句を指定した場合、そのファイル中のすべての報告書にCODE句を指定しなければならない。

一般規則

  1. CODE句を指定すると、各報告書の論理レコードの最初の2文字の文字位置に定数-1が自動的に書き込まれる。

  2. 定数-1によって占められる文字位置は、印字行の記述には含まれないが、論理レコードの大きさには含まれる。

CONTROL(制御)句

CONTROL句は、報告書の制御階層のレベルを確立する。

一般形式

構文規則

  1. データ名-1は、報告書節に定義してあってはならない。データ名-1は、修飾してもよい。

  2. データ名-1をいくつか並べて指定する場合、それぞれを別のデータ項目にする。

  3. データ名-1の下位に、可変反復データ項目が含まれていてはならない。

一般規則

  1. データ名-1と語 FINALによって、制御階層のレベルを指定する。FINALを指定すると、それが最も高いレベルの制御であることを表わす。データ名-1をいくつか並べて指定すると、左から右に順々に制御レベルが低くなる。

  2. ある報告書に関して、GENERATE文が最初に実行されると、その報告書に関するすべての制御データ項目の値が、報告書作成制御システム(RWCS)によって保存される。それ以降、GENERATE文が実行されるたびに、制御データ項目の値が変わったかどうかが報告書作成制御システム(RWCS)によって検査される。 どれか制御データ項目の値が変わると、制御切れが発生する。この制御切れのレベルは、値の変化があった最もレベルの高い制御データ項目に対応する。後述のGENERATE文の節を参照。)

  3. 制御切れが発生したかどうか判定するために、報告書作成制御システム(RWCS)は、各制御データ項目の内容を、その報告書に関して前回GENERATE文が実行されたときに保存された各制御データ項目の内容と比較する。このとき、下記の規則が適用される。

    1. 制御データ項目が数字データ項目である場合、2つの数字作用対象に関する比較検査が適用される。

    2. 制御データ項目が指標付きデータ項目である場合、2つの指標付きデータ項目の比較検査が適用される。

    3. 制御データ項目が上記の3a.にも3b.にも該当しない場合、2つの文字作用対象に関する比較検査が適用される。

    (比較検査の詳細については、言語リファレンスプログラムの定義の章を参照。)

  4. FINALは、制御データ項目では表わせない報告書全体の制御切れを指定するときに、使用する。

PAGE(ページ)句

PAGE句は、ページの長さと 報告集団を表示する縦の範囲を指定する。

一般形式

構文規則

  1. HEADING, FIRST DETAIL, LAST DETAIL, FOOTING の各指定は、どのような順序で書いてもよい。

  2. 整数-1は、有効桁数が3桁を超えてはならない。

  3. 整数-2の値は、0以上とする。

  4. 整数-3の値は、整数-2の値以上とする。

  5. 整数-4の値は、整数-3の値以上とする。

  6. 整数-5の値は、整数-4の値以上とする。

  7. 整数-1の値は、整数-5の値以上とする。

  8. PAGE句を指定すると、各型の報告集団が表示される縦の範囲には、下記の規則が適用される。(後述のページ領域の節を参照。)

    1. 報告書頭書き報告集団を1ページに排他的に(明細行と共存しないように)表示する場合、整数-2から整数-1までの行位置の範囲に、その報告書頭書き報告集団が収まるように定義する。

      報告書頭書き報告集団を1ページに非排他的に(明細行と共存するように)表示する場合、整数-2から整数-3の1行上までの行位置の範囲に、その報告書頭書き報告集団が収まるように定義する。

    2. ページ頭書き報告集団を表示する場合、整数-2から整数-3の1行上までの行位置の範囲に、そのページ頭書き報告集団が収まるように定義する。

    3. 制御頭書き報告集団または明細報告集団を表示する場合、整数-3から整数-4までの行位置の範囲に、それらの報告集団が収まるように定義する。

    4. 制御脚書き報告集団を表示する場合、整数-3から整数-5の1行上までの行位置の範囲に、その制御脚書き報告集団が収まるように定義する。

    5. ページ脚書き報告集団を表示する場合、整数-5の1行下から整数-1までの行位置の範囲に、そのページ脚書き報告集団が収まるように定義する。

    6. 報告書脚書き報告集団を1ページに排他的に(明細行と共存しないように)表示する場合、整数-2から整数-1までの行位置の範囲に、その報告書脚書き報告集団が収まるように定義する。

      報告書脚書き報告集団を1ページに非排他的に(明細行と共存するように)表示する場合、整数-5の1行下から整数-1までの行位置の範囲に、その報告書脚書き報告集団が収まるように定義する。

  9. すべての報告集団は、1ページ内に表示しきれるように定義する。報告書作成制御システム(RWCS)は、複数行からなる報告集団をページをまたがって表示することは決してない。

一般規則

  1. 報告書ページ中の各型の報告集団の縦の位置付けは、PAGE句中に指定した整数の値によって決められる。

    1. 整数-1は、報告書ページの大きさを決めるものであり、1ページ中の有効な行数を表わす。

    2. HEADING 整数-2は、報告書頭書き報告集団またはページ頭書き報告集団を表示する最初の行位置を定義する。

    3. FIRST DETAIL 整数-3は、本体集団を表示する最初の行位置を定義する。報告書頭書きもページ頭書きも、整数-3の行位置以降には表示できない。

    4. LAST DETAIL 整数-4は、制御頭書き報告集団または明細報告集団を表示する最後の行位置を定義する。

    5. FOOTING 整数-5は、 制御頭書き報告集団を表示する最後の行位置を定義する。ページ脚書き報告集団および報告書脚書き報告集団は、整数-5の行位置よりも後に続かなければならない。

  2. PAGE句を指定するときにその指定要素を省略すると、下記のように暗黙的に値が設定される。

    1. HEADING指定を省略すると、整数-2の値として1が想定される。

    2. FIRST DETAIL指定を省略すると、整数-3の値は整数-2に等しいものとされる。

    3. LAST DETAIL指定とFOOTING指定を両方とも省略すると、整数-4および整数-5の値はともに整数-1に等しいものとされる。

    4. FOOTING指定をしLAST DETAIL指定を省略すると、整数-4の値は整数-5に等しいものとされる。

    5. LAST DETAIL指定をしFOOTING指定を省略すると、整数-5の値は整数-4に等しいものとされる。

  3. PAGE句を省略すると、報告書は不定な長さの単一のページから構成されることになる。

  4. 報告集団に関する表示規則は、その型ごとに分けて後述する。 (後述の表示規則表を参照。)

ページ領域

PAGE句によって設定されるページ領域を、表1-1にまとめる。

表 1-1: ページ領域

領域に表示される報告集団 領域の最初の行位置 領域の最後の行位置
NEXT GROUP NEXT PAGEを指定した報告書頭書き

LINE 整数-1 NEXT PAGEを指定した報告書脚書き
整数-2 整数-1
NEXT GROUP NEXT PAGEを指定しない報告書頭書き

ページ頭書き
整数-2 整数-3マイナス1
制御頭書き

明細
整数-3 整数-4
制御脚書き 整数-3 整数-5
ページ脚書き

LINE 整数-1 NEXT PAGEを指定しない報告書脚書き
整数-5プラス1 整数-1

報告集団記述項

報告集団記述項は、報告集団およびその中の個々の項目の特性を指定する。

一般形式

書き方 1

書き方 2

書き方 3

構文規則

すべての書き方
  1. 報告集団記述項は、報告書節にだけ記述できる。

  2. データ名句は、レベル番号の直後に書く。それ以外の句はどの順序で書いてもよい。

  3. 報告集団の記述は4レベル以内の階層から構成される。

    1. 報告集団を記述する最初の記述項は、書き方1とする。

    2. 書き方1の記述項の直後に、書き方2または書き方3の記述項を書くことができる。

    3. 書き方2の記述項の直後に、書き方3の記述項を少なくとも1つ書く。

    4. 書き方3の記述項では、基本データ項目を定義する。

  4. 報告書節では、USAGE句を使用するのは、印字項目の用途を宣言するためだけである。

    1. 書き方3の記述項内にUSAGE句を書く場合、その記述項では印字項目を定義する。

    2. 書き方1または書き方2の記述項内にUSAGE句を書く場合、その下位の記述項の少なくとも1つで印字項目を定義する。

  5. LINE NUMBER句が含まれる記述項の下位に、LINE NUMBER句を含む記述項を含めてはならない。

    しかし、LINE NUMBER NEXT PAGE句が含まれる記述項の下位に、NEXT PAGE指定を伴わないLINE NUMBER句を含む記述項を含めてもよい。

書き方 1
  1. データ名-1は以下の場合に必要である。

    1. GENERATE文によって、詳細報告集団を参照する。

    2. SUM文のUPON指定 によって、詳細報告集団を参照する。

    3. USE BEFORE REPORTING 文によって、詳細報告集団を参照する。

    4. 制御脚書き報告集団を、合計カウンタの修飾に使用する。

    データ名-1を書いた場合、それを参照できるのは、GENERATE文、SUM句のUPON指定、USE BEFORE REPORTING文、合計カウンタの修飾語だけである。

書き方 2
  1. レベル番号には02以上48以下の任意の整数を使用できる。

  2. 記述項には、少なくとも1つの選択句を含める。

  3. データ名-1は書いても書かなくてもよい。データ名-1を書いた場合、それを使用できるのは、合計カウンタを修飾するためだけである。
書き方 3
  1. レベル番号には02以上49以下の任意の整数を使用できる。

  2. 書き方3では、以下の規則がある。

    1. GROUP INDICATE句は、明細報告集団中にだけ書ける。

    2. SUM句は、制御脚書き報告集団中にだけ書ける。

    3. COLUMN NUMBER句が含まれるがLINE NUMBER句は含まれない記述項は、LINE NUMBER句が含まれる記述項の下位に属していること。

    4. データ名-1は書いても書かなくてもよく、またどの記述項に書いてもよい。データ名-1を書いた場合、それを参照できるのは、その記述項で合計カウンタを定義している場合だけである。

    5. VALUE句が含まれる記述項には、COLUMN NUMBER句も含めること。

  3. 書き方3の記述項で許されるすべての句の組合わせを、表に示す。この表は行に沿って左から右に読む。

    「必」は、その句が必須であることを示す。

    「可」は、その句を書いてもよいが、必ずしも必要ではないことを示す。

    「×」は、その句を書いてはならないことを示す。

    表 1-2: 書き方3で許される句の組合せ

    PIC COLUMN SOURCE SUM VALUE JUST BLANK WHEN ZERO GROUP INDICATE USAGE SIGN LINE
    × × × × × × ×
    × × × ×
    × × ×
    × × ×
    × × ×

一般規則

  1. 書き方1は、報告集団記述項用である。この記述項およびその下位のすべての記述項の内容によって、報告書が定義される。

  2. 報告書機能機能単位におけるBLANK WHEN ZERO句、JUSTIFIED句、PICTURE句はそれぞれ、中核におけるものと同じである。(言語リファレンスプログラムの定義の章を参照。)報告集団記述項のその他の句については、この後でアルファベット順に個々に説明する。

表示規則表

目的

下記の事項の仕様を表わす表と規則を以降に示す。

  1. 報告集団の各型ごとに、許されるLINE NUMBER句とNEXT GROUP句の組合わせ。

  2. それらの句を使用する際の必要条件。

  3. 報告書作成制御システム(RWCS)によるそれらの句の解釈。

構成

報告書頭書き報告集団、ページ頭書き報告集団、ページ脚書き報告集団、報告書脚書き報告集団に関しては、個々に表示規則表を示す。明細報告集団、制御頭書き報告集団、制御脚書き報告集団に関しては、本体集団の表示規則表の中に一緒に示す。(後述の本体集団の表示規則表の節を参照。)

表示規則表の第1欄と第2欄には、該当する報告集団の型に関する、LINE NUMBER句とNEXT GROUP句の可能なすべての組合わせを示す。したがって、LINE NUMBER句とNEXT GROUP句の1つの組合わせに関しては、表示規則表の該当する行を読めばよい。

表示規則表の適用規則の欄は、大きく2つの部分に分けてある。最初の部分には、報告書記述にページ句が含まれる場合の規則を示す。2番目の部分には、報告書記述にページ句が含まれない場合の規則を示す。適用規則の具体的な項目名と目的を下に示す。

  1. 上限と下限の規則

    これらの規則は、該当する報告集団を表示できるページ内の縦の範囲を規定する。

    ページ句を指定しなかった場合、印字される報告書は、報告集団別に縦の配置を規定しないものとみなされる。したがって、ページ句を省略した報告書記述に関しては、表の中に上限の規則も下限の規則も示されない。

  2. 改ページの規則

    改ページの規則は、本体集団に対してだけ適用される。したがって、改ページの規則は、本体集団用の表示規則表の中にだけ示してある。報告書作成制御システム(RWCS)は、実行時に改ページの規則を適用して、その報告書の現在の位置から指定された本体集団をそのページ内に表示しきれるかどうかを判定する。

    報告書記述項にページ句を指定しなかった場合は、本体集団であっても改ページ規則は適用されない。

  3. 印字開始行位置の規則

    印字開始行位置の規則は、報告書作成制御システム(RWCS)が、報告集団の最初の行を報告書媒体上のどこに表示するかを規定する。

    報告集団の2行目以降がある場合でも、報告書作成制御システム(RWCS)がそれを報告書媒体上のどこに表示するについては規定していない。報告集団の2行目以降をどこに表示するかは、一般的な規則によって定まる。(詳細については、LINE NUMBER句の一般規則を参照。)

  4. 次の報告集団の規則

    次の報告集団の規則は、NEXT GROUP句の使用方法を規定する。

  5. LINE-COUNTERの最終値設定の規則

    LINE-COUNTERの最終値設定の規則は、報告集団を表示した後で、報告書作成制御システム(RWCS)がLINE-COUNTERに設定する最終の値を規定する。

LINE NUMBER(行位置)句の表記法

表示規則表の第1欄には、LINE NUMBERの書き方を示す。これには記号を用いている。その意味は下記のとおり。

  1. "A" はNEXT PAGE指定をしないで、絶対的な行位置を指定することを意味する。この形式のLINE NUMBER句は、1つの報告集団記述項の中で連続して書いてもよい。

  2. "R" は相対的な行位置を指定することを意味する。この形式のLINE NUMBER句は、1つの報告集団記述項の中で連続して書いてもよい。

  3. "NP" はNEXT PAGE指定をして絶対的な行位置を指定することを意味する。この形式のLINE NUMBER句は、1つの報告集団記述項の中で連続して書いてもよい。ただし、NEXT PAGE指定は最初のLINE NUMBER句だけに付けること。

    NEXT PAGEは、行位置を示さずに指定してもよい。

記号を2つ並べて示してある場合は、一連のLINE NUMBER句を2組続けて書くことを示す。たとえば、 "A R" は一連の "A" (上記の1に規定)の直後に一連の"R"(上記の2に規定)を続けることを意味する。

LINE NUMBER句の表記法の部分適用

表示規則表中に"A R" が許されるものとして示してある場合、"A" も許される。この場合、同じ表示規則が適用される。

表示規則表中に "NP R" が許されるものとして示してある場合、"NP"も許される。この場合、同じ表示規則が適用される。

次の報告集団用の整数待避項目

次の報告集団用の整数待避項目は、報告書作成制御システム(RWCS)だけが扱えるデータ項目である。NEXT GROUP句に現在のページに適用できない絶対的な行位置を指定すると、その値は報告書作成制御システム(RWCS)によって、次の報告集団用の整数待避項目に記憶される。改ページ処理が終わった後で、報告書作成制御システム(RWCS)は次の報告集団用の整数待避項目に記憶されている値を使用して、次の本体集団の位置付けを行う。

報告書頭書き報告集団の表示規則

報告書頭書き報告集団中で許されるLINE NUMBER句とNEXT GROUP句のすべての組合わせに適用される表示規則を、表1-3に示す。

  1. 上限の規則

    報告書頭書き報告集団を表示できる最初の行位置は、ページ句の中のHEADING指定で設定した行位置である。

  2. 下限の規則

    1. 報告書頭書き報告集団を表示できる最後の行位置は、ページ句の中のFIRST DETAIL指定の整数-3の値から1を引いた値となる。

    2. 報告書頭書き報告集団を表示できる最後の行位置は、ページ句の中の整数-1に指定した行位置である。

  3. 印字開始行位置の規則

    1. 報告書頭書き報告集団の最初の印字行の行位置は、LINE NUMBER句の整数に指定した行位置である。

    2. 報告書頭書き報告集団の最初の印字行位置は、最初のLINE NUMBER句の整数に指定した値と、ページ句の中のHEADING指定の整数-2の値から1を引いた値とを加えた値となる。

    3. 報告書頭書き報告集団を表示しない。

    4. 報告書頭書き報告集団の最初の印字行位置は、LINE-COUNTERの内容(この場合は、ゼロ)と最初のLINE NUMBER句の整数の値とを加えた値となる。

  4. 次の報告集団の規則

    1. NEXT GROUP句に指定する整数は、報告書頭書き報告集団の最後の印字行の行位置よりも大きく、ページ句のFIRST DETAIL指定の整数-3に指定した行位置よりも小さくなければならない。

    2. NEXT GROUP句に指定する整数と報告書頭書き報告集団の最後の印字行の行位置との和は、ページ句のFIRST DETAIL指定の整数-3に指定した行位置よりも小さくなければならない。

    3. NEXT GROUP句にNEXT PAGE指定をすると、報告書の最初のページには、報告書頭書き報告集団だけを表示することを意味する。報告書の最初のページに位置している間は、報告書作成制御システム(RWCS)は他の報告集団を処理しない。

  5. LINE-COUNTERの最終値設定の規則

    1. 報告書頭書き報告集団を表示した後で、報告書作成制御システム(RWCS)は最終値として、NEXT GROUP句の整数をLINE-COUNTERに入れる。

    2. 報告書頭書き報告集団を表示した後で、報告書作成制御システム(RWCS)は最終値として、NEXT GROUP句の整数と報告書頭書き報告集団の最後の印字行の行位置との和をLINE-COUNTERに入れる。

    3. 報告書頭書き報告集団を表示した後で、報告書作成制御システム(RWCS)は最終値として、ゼロをLINE-COUNTERに入れる。

    4. 報告書頭書き報告集団を表示した後で、報告書作成制御システム(RWCS)は最終値として、報告書頭書き報告集団の最後の印字行の行位置をLINE-COUNTERに入れる。

    5. 印字項目が含まれない報告集団の処理によって、LINE-COUNTERが影響を受けることはない。

表1-3: 報告書頭書き報告集団の表示規則表

** 当てはまる規則***
PAGE句あり PAGE句なし
LINE NUMBER句* NEXT GROUP句 上限 下限 印字開始 行位置 LINE-COUNTERの最終値設定 印字開始行位置 LINE-COUNTERの最終値設定
AR 絶対 1 2a 3a 4a 5a 無効な組合わせ+
AR 相対 1 2a 3a 4b 5b 無効な組合わせ+
AR NEXT PAGE 1 2b 3a 4c 5c 無効な組合わせ+
AR 指定しない 1 2a 3a 規則なし 5d 無効な組合わせ+
R 絶対 1 2a 3b 4a 5a 無効な組合わせ++
R 相対 1 2a 3b 4b 5b 3b 5b
R NEXT PAGE 1 2b 3b 4c 5c 無効な組合わせ++
R 指定しない 1 2a 3b 規則なし 5d 3d 5d
指定しない 指定しない 規則なし 規則なし 3c 規則なし 5e 3c 5e

* この欄での表記法については、前述の LINE NUMBER句の表記法
** 欄1または2 の「指定しない」は、指定した句が報告集団記述項にまったくないことを示す。
*** 規則の欄の「規則なし」は、LINE NUMBER句とNEXT GROUP 句の組み合わせに対する規則がないことを示す。
+ LINE NUMBER句を参照。
++ NEXT GROUP句を参照。

ページ頭書き報告集団の表示規則

ページ頭書き報告集団中で許されるLINE NUMBER句とNEXT GROUP句のすべての組合わせに適用される表示規則を、表1-4に示す。

表1-4 : ページ頭書き報告集団の表示規則表

** 当てはまる規則***
PAGE句あり****
LINE NUMBER 句* NEXT GROUP 句 上限 下限 印字開始行位置 次の報告集団 LINE-COUNTERの最終値設定
AR 指定しない 1 2 3a 規則なし 4a
R 指定しない 1 2 3b 規則なし 4a
指定しない 指定しない 規則なし 規則なし 3c 規則なし 4b

* この欄での表記法については、前述のLINE NUMBER句の表記法を参照。
** 欄1または2 の「指定しない」は、指定した句が報告集団記述項にまったくないことを示す。
*** 規則の欄の「規則なし」は、LINE NUMBER句とNEXT GROUP 句の組み合わせに対する規則がないことを示す。
**** 報告書記述項にページ句を指定しない場合、ページ頭書き報告集団は定義できない。(後述のTYPE句の節を参照。)

表中の番号に対応させて、ページ頭書き報告集団の表示規則を以下に具体的に説明する。

  1. 上限の規則

    報告書頭書き報告集団と同じページ上にページ頭書き報告集団を表示する場合は、ページ頭書き報告集団を表示できる最初の行位置は、報告書頭書き報告集団を表示したときに設定されたLINE-COUNTERの最終値に1を加えた値となる。

    これ以外の場合は、ページ頭書き報告集団を表示できる最初の行位置は、PAGE句のHEADING指定に指定した行位置となる。

  2. 下限の規則

    ページ頭書き報告集団を表示できる最後の行位置は、ページ句の中のFIRST DETAIL指定の整数-3の値から1を引いた値となる。

  3. 印字開始行位置の規則

    1. ページ頭書き報告集団の最初の印字行の行位置は、LINE NUMBER句の整数に指定した行位置である。

    2. 報告書頭書き報告集団と同じページ上にページ頭書き報告集団を表示する場合は、ページ頭書き報告集団の最初の印字行位置は、報告書頭書き報告集団を表示したときに設定されたLINE-COUNTERの最終値にページ頭書き報告集団の最初のLINE NUMBER句の整数の値を加えた値となる。

      これ以外の場合は、ページ頭書き報告集団の最初の印字行位置は、ページ頭書き報告集団の最初のLINE NUMBER句の整数の値と、ページ句の中のHEADING指定の整数-2の値から1を引いた値とを加えた値となる。

    3. ページ頭書き報告集団を表示しない。

  4. LINE-COUNTERの最終値設定の規則

    1. ページ頭書き報告集団の最後の印字行が表示された行位置が、LINE-COUNTERの最終値となる。

    2. 印字項目が含まれない報告集団の処理によって、LINE-COUNTERが影響を受けることはない。

本体集団の表示規則

制御頭書き報告集団と明細報告集団と制御脚書き報告集団の中で許されるLINE NUMBER句とNEXT GROUP句のすべての組合わせに適用される表示規則を、表1-5に示す。表中の番号に対応させて、本体集団の表示規則を以下に具体的に説明する。

  1. 上限の規則

    本体集団を表示できる最初の行位置は、PAGE句の中のFIRST DETAIL指定で設定した行位置である。

  2. 下限の規則

    制御頭書き報告集団または明細報告集団を表示できる最後の行位置は、PAGE句の中のLAST DETAIL指定で設定した行位置である。

    制御脚書き報告集団を表示できる最後の行位置は、PAGE句の中のFOOTING指定で設定した行位置である。

  3. 改ページの規則

    1. LINE-COUNTERの値が最初の絶対LINE NUMBER句の整数の値よりも小さい場合、報告書の現在のページ上に本体集団が表示される。

      LINE-COUNTERの値が最初の絶対LINE NUMBER句の整数の値以上である場合、報告書作成制御システム(RWCS)は改ページ処理を実行する。ページ頭書き報告集団が定義されていれば報告書作成制御システムはその処理を行った後で、前のページに最後に本体集団を表示したときに次の報告集団用の整数待避項目が設定されたか否かを判定する(LINE-COUNTERの最終値の設定規則6 a.を参照)。

      次の報告集団用の整数待避項目が設定されていなければ、報告書の現在のページ上に本体集団が表示される。次の報告集団用の整数待避項目が設定されていれば、報告書作成制御システム(RWCS)は次の報告集団用の整数待避項目をLINE-COUNTERに転記し、次の報告集団用の整数待避項目をゼロに設定し直してから、この規則を再び適用する。

    2. 報告書の現在のページに既に本体集団が表示されている場合、報告書作成制御システム(RWCS)は試験的に合計値を算出する。この試験的な合計値は、LINE-COUNTERの値に報告集団のすべてのLINE NUMBER句の整数の値を加えたものである。試験的な合計値が本体集団の下限を表わす整数値を超えない場合は、現在のページ上に報告集団が表示される。試験的な合計値が本体集団の下限を表わす整数値を超える場合は、報告書作成制御システム(RWCS)は改ページ処理を実行する。ページ頭書き報告集団が定義されていれば、報告書作成制御システムはこれを処理してから、この規則を再び適用する。

      報告書の現在のページにまだ本体集団が表示されていない場合、報告書作成制御システム(RWCS)は、前のページ上に最後に本体集団を表示したときに次の報告集団用の整数待避項目が設定されたか否かを判定する(LINE-COUNTERの最終値の設定規則6 a.を参照)。

      次の報告集団用の整数待避項目が設定されていなければ、報告書の現在のページ上に本体集団が表示される。

      次の報告集団用の整数待避項目が設定されていれば、報告書作成制御システム(RWCS)は次の報告集団用の整数待避項目をLINE-COUNTERに転記し、次の報告集団用の整数待避項目をゼロに設定し直してから、試験的な合計値を算出する。

      この試験的な合計値は、LINE-COUNTERの値に1を加え、さらに本体集団のすべてのLINE NUMBER句のうち最初のものを除いた整数の値を加えたものである。>試験的な合計値が本体集団の下限を表わす整数値を超えない場合は、現在のページ上に報告集団が表示される。試験的な合計値が本体集団の下限を表わす整数値を超える場合は、報告書作成制御システム(RWCS)は改ページ処理を実行する。ページ頭書き報告集団が定義されていれば、報告書作成制御システム(RWCS)はこれを処理してから、そのページに本体集団を表示する。

    3. 報告書の現在のページに本体集団が既に表示されている場合、報告書作成制御システム(RWCS)は改ページ処理を実行する。ページ頭書き報告集団が定義されていれば、報告書作成制御システムはこれを処理してから、この規則を再び適用する。

      報告書の現在のページにまだ本体集団が表示されていない場合、報告書作成制御システム(RWCS)は、前のページ上に最後に本体集団を表示したときに次の報告集団用の整数待避項目が設定されたか否かを判定する(LINE-COUNTERの最終値の設定規則6 a.を参照)。

      次の報告集団用の整数待避項目が設定されていなければ、報告書の現在のページ上に本体集団が表示される。次の報告集団用の整数待避項目が設定されていれば、報告書作成制御システム(RWCS)は次の報告集団用の整数待避項目をLINE-COUNTERに転記し、次の報告集団用の整数待避項目をゼロに設定し直す。

      次いで、LINE-COUNTERの値が最初の絶対LINE NUMBER句の整数の値よりも小さければ、報告書の現在のページ上に本体集団が表示される。そうでなければ、報告書作成制御システムは改ページ処理を実行する。ページ頭書き報告集団が定義されていれば、それを処理してから、報告書作成制御システムはそのページ上に本体集団を表示する。

  4. 印字開始行位置の規則

    1. 本体集団の最初の印字行の行位置は、LINE NUMBER句の整数に指定した行位置である。

    2. LINE-COUNTERの値がPAGE句のFIRST DETAIL指定の行位置以上であり、かつ報告書の現在のページにまだ本体集団が表示されていないと、現在の本体集団の最初の印字行はLINE-COUNTERの値によって示される行の次の行となる。

      LINE-COUNTERの値がPAGE句のFIRST DETAIL指定の行位置以上であり、かつ報告書の現在のページに既に本体集団が表示されていると、現在の本体集団の最初の印字行は、LINE-COUNTERの値と現在の本体集団の最初のLINE NUMBER句の整数の値とを加えた行位置となる。

      LINE-COUNTERの値がPAGE句のFIRST DETAIL指定の行位置よりも小さいと、本体集団の最初の印字行位置は、FIRST DETAILに指定した行位置となる。

    3. 本体集団を表示しない。

    4. 本体集団の最初の印字行の行位置は、LINE-COUNTERの内容と最初のLINE NUMBER句の整数の値とを加えた値となる。

  5. 次の報告集団の規則

    絶対NEXT GROUP句に指定する整数は、PAGE句のFIRST DETAILに指定した整数の値以上であり、かつPAGE句のFOOTINGに指定した整数の値以下とする。

  6. LINE-COUNTERの最終値設定の規則

    1. 制御脚書き報告集団を表示したところで、その制御脚書き報告集団が一番高いレベルの制御切れに対応していない場合、その制御脚書き報告集団の最後の印字行が表示された行位置がLINE-COUNTERの最終値として設定される。

      これ以外の場合には、報告書作成制御システム(RWCS)は本体集団の最後の印字行の行位置とNEXT GROUP句の整数とを比較する。前者の方が後者よりも小さいと、報告書作成制御システム(RWCS)は最終値として、NEXT GROUP句の整数をLINE-COUNTERに入れる。前者の方が後者以上であると、報告書作成制御システム(RWCS)は最終値として、PAGE句のFOOTINGに指定された行位置をLINE-COUNTERに入れる。さらに、報告書作成制御システム(RWCS)はNEXT GROUP句の整数を次の報告集団用の整数待避項目に入れる。

    2. 制御脚書き報告集団を表示したところで、その制御脚書き報告集団が一番高いレベルの制御切れに対応しているのではない場合、その制御脚書き報告集団の最後の印字行が表示された行位置が、LINE-COUNTERの最終値として設定される。

      これ以外の場合には、報告書作成制御システム(RWCS)は試験的な合計値を算出する。この試験的な合計値はNEXT GROUP句の整数をその本体集団の最後の印字行の行位置に加えたものである。試験的な合計値がPAGE句のFOOTINGに指定された行位置よりも小さい場合は、報告書作成制御システム(RWCS)は最終値として、その試験的な合計値をLINE-COUNTERに入れる。試験的な合計値がPAGE句のFOOTINGに指定された行位置以上である場合は、報告書作成制御システム(RWCS)は最終値として、PAGE句のFOOTINGに指定された行位置をLINE-COUNTERに入れる。

    3. 制御脚書き報告集団を表示したところで、その制御脚書き報告集団が一番高いレベルの制御切れに対応しているのではない場合、その制御脚書き報告集団の最後の印字行が表示された行位置が、LINE-COUNTERの最終値として設定される。

      これ以外の場合には、報告書作成制御システム(RWCS)は最終値として、PAGE句のFOOTINGに指定された行位置をLINE-COUNTERに入れる。

    4. 制御脚書き報告集団の最後の印字行が表示された行位置が、LINE-COUNTERの最終値として設定される。

    5. 印字項目が含まれない本体集団の処理によってLINE-COUNTERが影響を受けることはない。

    6. 制御脚書き報告集団を表示したところで、その制御脚書き報告集団が一番高いレベルの制御切れに対応しているのではない場合、その制御脚書き報告集団の最後の印字行が表示された行位置が、LINE-COUNTERの最終値として設定される。

      これ以外の場合には、報告書作成制御システム(RWCS)は最終値として、最後の印字行が表示された行位置とNEXT GROUP句の整数との和を、LINE-COUNTERに入れる。

表 1-5: 本体集団の表示規則表

** 当てはまる規則***
PAGE句あり PAGE句なし
LINE NUMBER句* NEXT GROUP句 上限 下限 改ページ 印字開始行位置 次の報告集団 LINE-COUNTERの最終値設定 印字開始行位置 LINE-COUNTERの最終値設定
AR 絶対 1 2 3a 4a 5 6a 無効な組合わせ+
AR 相対 1 2 3a 4a 規則なし 6b 無効な組合わせ+
AR NEXT PAGE 1 2 3a 4a 規則なし 6c 無効な組合わせ+
AR 指定しない 1 2 3a 4a 規則なし 6d 無効な組合わせ+
R 絶対 1 2 3b 4b 5 6a 無効な組合わせ+
R 相対 1 2 3b 4b 規則なし 6b 4d 6f
R NEXT PAGE 1 2 3b 4b 規則なし 6c 無効な組合わせ+
R 指定しない 1 2 3b 4b 規則なし 6d 4d 6f
NP R 絶対 1 2 3c 4a 5 6a 無効な組合わせ+
NP R 相対 1 2 3c 4a 規則なし 6b 無効な組合わせ+
NP R NEXT PAGE 1 2 3c 4a 規則なし 6c 無効な組合わせ+
NP R 指定しない 1 2 3c 4a 規則なし 6d 無効な組合わせ+
指定しない 指定しない 規則なし 規則なし 規則なし 4c 規則なし 6e 4c 6e

* この欄での表記法については、前述のLINE NUMBER句の表記を参照。
** 欄1または2 の「指定しない」は、指定した句が報告集団記述項にまったくないことを示す。
*** 規則の欄の「規則なし」は、LINE NUMBER句とNEXT GROUP 句の組み合わせに対する規則がないことを示す。
+ LINE NUMBER句の節を参照。
++ NEXT GROUP句の節を参照。

ページ脚書き報告集団の表示規則

ページ脚書き報告集団中で許されるLINE NUMBER句とNEXT GROUP句のすべての組合わせに適用される表示規則を、表1-6に示す。

表 1-6 : ページ脚書き報告集団の表示規則表

** 当てはまる規則***
PAGE句あり****
LINE NUMBER句* NEXT GROUP句 上限 下限 印字開始行位置 次の報告集団 LINE-COUNTERの最終値設定
AR 絶対 1 2 3a 4a 5a
AR 相対 1 2 3a 4b 5b
AR 指定しない 1 2 3a 規則なし 5c
指定しない 指定しない 規則なし 規則なし 3b 規則なし 5d

* この欄での表記法については、前述のLINE NUMBER句の表記を参照。
** 欄1または2 の「指定しない」は、指定した句が報告集団記述項にまったくないことを示す。
*** 規則の欄の「規則なし」は、LINE NUMBER句とNEXT GROUP 句の組み合わせに対する規則がないことを示す。
**** 報告書記述項にPAGE句を指定しないと、ページ頭書き報告集団を定義することはできない。(TYPE句の節を参照。)

表中の番号に対応させてページ脚書き報告集団の表示規則を以下に具体的に説明する。

  1. 上限の規則

    ページ脚書き報告集団を表示できる最初の行位置は、PAGE句のFOOTING指定の整数-5に1を加えた値である。

  2. 下限の規則

    ページ脚書き報告集団を表示できる最後の行位置は、PAGE句の整数-1の値である。

  3. 印字開始行位置の規則

    1. ページ脚書き報告集団の最初の印字行の行位置は、そのLINE NUMBER句の整数に指定した行位置である。

    2. ページ脚書き報告集団を表示しない。

  4. 次の報告集団の規則

    1. NEXT GROUP句の整数は、ページ脚書き報告集団の最後の印字行を表示した行位置よりも大きくなければならない。さらに、NEXT GROUP句の整数は、PAGE句の整数-1に指定した行位置を超えてはならない。

    2. NEXT GROUP句の整数とページ脚書き報告集団の最後の印字行を表示した行位置との和は、PAGE句の整数-1に指定した行位置を超えてはならない。

  5. LINE-COUNTERの最終値設定の規則

    1. ページ脚書き報告集団を表示した後で、報告書作成制御システム(RWCS)は最終値として、NEXT GROUP句の整数を、LINE-COUNTERに入れる。

    2. ページ脚書き報告集団を表示した後で、報告書作成制御システム(RWCS)は最終値として、NEXT GROUP句の整数とページ脚書き報告集団の最後の印字行を表示した行位置との和を、LINE-COUNTERに入れる。

    3. ページ脚書き報告集団を表示した後で、報告書作成制御システム(RWCS)は最終値として、ページ脚書き報告集団の最後の印字行を表示した行位置を、LINE-COUNTERに入れる。

    4. 印字項目が含まれない報告集団の処理によってLINE-COUNTERが影響を受けることはない。

報告書脚書き報告集団の表示規則

報告書脚書き報告集団中で許されるLINE NUMBER句とNEXT GROUP句のすべての組合わせに適用される表示規則を、表1-7に示す。表中の番号と対応させて、報告書脚書き報告集団の表示規則を、以下に具体的に説明する。

  1. 上限の規則

    1. 報告書の現在のページ上にページ脚書き報告集団が表示されている場合、報告書脚書き報告集団を表示できる最初の行位置は、ページ脚書き報告集団を表示したときに設定されたLINE-COUNTERの最終値に1を加えたものとなる。

      これ以外の場合、報告書脚書き報告集団を表示できる最初の行位置は、PAGE句の整数-5に1を加えた値である。

    2. 報告書脚書き報告集団を表示できる最初の行位置は、PAGE句の中のHEADING指定で設定した行位置である。

  2. 下限の規則:

    報告書脚書き報告集団を表示できる最後の行位置は、PAGE句の中の整数-1に指定した行位置である。

  3. 印字開始行位置の規則

    1. 報告書脚書き報告集団の最初の印字行の行位置は、そのLINE NUMBER句の整数に指定した行位置である。

    2. 報告書の現在のページ上にページ脚書き報告集団が表示されている場合、報告書脚書き報告集団の最初の印字行の行位置は、ページ脚書き報告集団を表示したときに設定されたLINE-COUNTERの最終値と、報告書脚書き報告集団の最初のLINE NUMBER句の整数との和となる。これ以外の場合、報告書脚書き報告集団の最初の印字行の行位置は、報告書脚書き報告集団の最初のLINE NUMBER句の整数と、PAGE句のFOOTING指定の整数-5との和となる。

    3. 最初のLINE NUMBER句の中にNEXT PAGE指定があると、他の報告集団が表示されていないページ上に報告書脚書き報告集団を表示することを意味する。この場合、報告書脚書き報告集団の最初の印字行は、そのLINE NUMBER句の整数に指定した行位置に表示される。

    4. LINE IS NEXT PAGEが報告集団中の唯一のLINE句である場合、報告書脚書き報告集団の最初の印字行は、PAGE句のHEADING指定に指定した整数-2の行位置に表示される。

    5. 報告書脚書き報告集団の最初の印字行の行位置は、LINE-COUNTERの内容と最初のLINE NUMBER句の整数との和となる。

    6. 報告書脚書き報告集団を表示しない。

  4. LINE-COUNTERの最終値設定の規則

    1. 報告書脚書き報告集団の最後の印字行が表示された行位置が、LINE-COUNTERの最終値とし設定される。

    2. 印字項目が含まれない報告集団の処理によって、LINE-COUNTERが影響を受けることはない。

表 1-7: 報告書脚書き報告集団の表示規則表

** 当てはまる規則***
PAGE句あり PAGE句なし
LINE NUMBER句* NEXT GROUP句 上限 下限 印字開始行位置 次の報告集団 LINE-COUNTERの最終値設定 印字開始行位置 LINE-COUNTERの最終値設定
AR 指定しない 1a 2 3a 規則なし 4a 無効な組合わせ+
R 指定しない 1a 2 3b 規則なし 4a 3d 4a
NP R 指定しない 1b 2 3c 規則なし 4a 無効な組合わせ+
指定しない 指定しない 規則なし 規則なし 3e 規則なし 4b 3e 4b

* この欄での表記法については、前述のLINE NUMBER句の表記を参照。
** 欄1または2 の「指定しない」は、指定した句が報告集団記述項にまったくないことを示す。
*** 規則の欄の「規則なし」は、LINE NUMBER句とNEXT GROUP 句の組み合わせに対する規則がないことを示す。
+ LINE NUMBER句の節を参照。

COLUMN NUMBER(印字位置)句

COLUMN NUMBER(印字位置)句は、印字項目を印字行上に表示する位置を指定する。

一般形式

構文規則

  1. COLUMN NUMBER句は、報告集団内の基本項目に対してだけ、指定できる。COLUMN NUMBER句を指定する場合、LINE NUMBER句が含まれる記述項の中、またはその下位に属する記述項の中に書く。

  2. 1つの印字行内では、印字項目は左のものから右のものへ順に定義しなければならない。このとき、印字項目どうしの印字位置が重ならないようにすること。

    COLUMN NUMBER句中に、印字項目を書く順序に制約を設けない。

一般規則

  1. COLUMN NUMBER句は、SOURCE句の右辺、またはVALUE句の右辺、またはSUM句に定義した合計カウンタを印字行上に表示することを示す。COLUMN NUMBER句を指定しないと、項目は印字行上に表示されない。

  2. 整数-1は、印字項目の左端の文字位置の印字位置を示す。

  3. 報告書作成制御システム(RWCS)は、印字行上で印字項目が表示されないすべての印字位置を空白にする。

  4. 印字行の左端を、印字位置1とする。

DATA-NAME(データ名)句

DATA-NAME(データ名)句は、記述対象のデータ項目に名前を付ける。

一般形式

構文規則

  1. 報告書節では、データ記述項中に必ずしもデータ名-1を記述する必要はない。

一般規則

  1. 報告書節において、下記の場合にはデータ名-1を指定しなければならない。

    1. 手続き部で、GENERATE文またはUSE文によって参照される報告集団を、データ名-1が表わすとき。

    2. 手続き部または報告書節で、合計カウンタを参照するとき。

    3. SUM句のUPON指定中で、明細報告集団を参照するとき。

    4. 合計カウンタを修飾するために、データ名-1が必要なとき。

GROUP INDICATE(集団表示)句

GROUP INDICATE(集団表示)句は、制御切れまたは改ページの後で最初に明細報告集団を表示するときだけ、該当する印字項目を印字することを示す。

一般形式

構文規則

  1. GROUP INDICATE句を指定できるのは、印字項目を定義している明細報告集団の中だけである。

一般規則

  1. GROUP INDICATE句を指定すると、下記の場合を除いて、SOURCE句またはVALUE句は無視されて空白にされる。

    1. >報告書の明細報告集団を最初に表示するとき。

    2. 改ページの後で、明細報告集団を最初に表示するとき。

    3. 制御切れの後で、明細報告集団を最初に表示するとき。

  2. 報告書記述項にPAGE句もCONTROL句も指定しないと、GROUP INDICATEを指定した印字項目は、INITIATE文が実行された後で明細報告集団が最初に表示されるときに印字される。その後はSOURCE句またはVALUE句があっても、その項目は空白とされる。

レベル番号

レベル番号は、報告集団の階層構造内でデータ項目が占める位置を示す。

一般形式

構文規則

  1. レベル番号は、各データ記述項の最初の要素として必要である。

  2. RD記述項の下位に属するデータ記述項では、レベル番号は01から49の範囲内とする。

一般規則

  1. レベル番号01は、報告集団内の最初の記述項であることを示す。

  2. レベル指示語RDをもつ報告書記述項の下位に01レベルの記述項が複数あっても、それは同じ領域を暗黙的に再定義することを表わさない。

LINE NUMBER(行位置)句

LINE NUMBER(行位置)句は、報告集団に関する縦の位置を指定する。

一般形式

構文規則

  1. 整数-1および整数-2は、有効桁数が3桁を超えてはならない。

    PAGE句に指定した報告集団の型ごとの縦の範囲から外れるような値を、整数-1にも整数-2にも指定してはならない。(前述のPAGE句の節を参照。)

    整数-2の値は、ゼロであってもよい。

  2. LINE NUMBER句が含まれる報告集団記述項の下位に、LINE NUMBER句が含まれる報告集団記述項が属していてはならない。

  3. 1つの報告集団記述項の中では、すべての絶対LINE NUMBER句は、すべての相対LINE NUMBER句の前に置く。

  4. 1つの報告集団記述項の中では、一連の絶対LINE NUMBER句に指定する整数は、昇順になっていること。これらの整数の値は、連続していなくてもよい。

  5. 報告書記述項にPAGE句を指定しなかった報告書に関しては、その中のどの報告集団記述項においても、相対LINE NUMBER句だけしか指定できない。

  6. 1つの報告集団記述項においては、 NEXT PAGEは1回だけ指定できる。NEXT PAGEを指定する場合は、その報告集団記述項中の最初のLINE NUMBER句の中に書く。

  7. NEXT PAGE指定を伴うLINE NUMBER句は、本体集団または報告書脚書き報告集団の記述項中にだけ含めることができる。

  8. 印字項目(前述のCOLUMN NUMBER句の節を参照。) を定義する各記述項には、LINE NUMBER句を含めるかまたはLINE NUMBER句が含まれる記述項の下位に属させるかする。

  9. ページ脚書き報告集団中に指定する最初のLINE NUMBER句は、絶対LINE NUMBER句とする。

一般規則

  1. 報告集団の各印字行の行位置を指定するために、LINE NUMBER句を書く。

  2. 報告書作成制御システム(RWCS)は、LINE NUMBER句によって指定された縦の位置付けを行ってから、印字行を表示する。

  3. 整数-1は絶対行位置を表わす。絶対行位置は、印字行を表示する行位置を示す。

  4. 整数-2は、相対行位置を表わす。LINE NUMBER句が報告集団記述項中の最初のLINE NUMBER句ではない場合、印字行を表示する行位置は、その報告集団の前の印字行が表示された行位置と相対LINE NUMBER句の整数-2とを加えた値となる。整数-2がゼロであると、前の印字行と同じ行に、次の行が印字される。

    相対LINE NUMBER句が報告集団記述項中の最初のLINE NUMBER句である場合、印字行を表示する行位置は、別途定められた規則によって決められる。 (前述の表示規則表を参照。)

  5. NEXT PAGE句は、次のページの指定した行位置から、該当する報告集団を表示することを表わす。 (前述の表示規則表を参照。) NEXT PAGE指定には、必ずしも整数-1を指定しなくてよい。

NEXT GROUP(次の報告集団)句

NEXT GROUP(次の報告集団)句は、報告集団の最後の行を表示した後で行う行送りを指定する。

一般形式

構文規則

  1. NEXT GROUP句は、少なくとも1つのLINE NUMBER句を含んでいる報告集団記述項に指定する。

  2. 整数-1および整数-2は、有効桁数が3桁を超えてはならない。

  3. 報告書記述項にPAGE句を指定しなかった報告書に関しては、その中のどの報告集団記述項においても、相対NEXT GROUP句だけしか指定できない。

  4. ページ脚書き報告集団中に、NEXT GROUP句のNEXT PAGE指定を含めてはならない。

  5. 報告書頭書き報告集団またはページ頭書き報告集団の中に、NEXT GROUP句を指定してはならない。

一般規則

  1. NEXT GROUP句によって指定するページの位置付け操作は、その句が含まれる報告集団が表示された後で行われる。(前述の表示規則表を参照。)

  2. 報告書作成制御システム(RWCS)は、NEXT GROUP句からの行送り情報に加えて、TYPE句とPAGE句の情報とLINE-COUNTERの値を使用して、新しいLINE-COUNTERの値を決定する。(前述の表示規則表を参照。)

  3. 制御脚書き報告集団中に指定したNEXT GROUP句は、報告書作成制御システム(RWCS)によって無視される。ただし、最高のレベルの制御切れに対応する制御脚書き報告集団の場合は、無視されない。

  4. 本体集団のNEXT GROUP句は次の本体集団を指すため、次の本体集団が表示される位置に影響を与える。 報告書頭書き報告集団のNEXT GROUP句は、ページ頭書き報告集団が表示される位置に影響を与える。ページ脚書き報告集団のNEXT GROUP句は、報告書脚書き報告集団が表示される位置に影響を与える。(前述の表示規則表を参照。)

SIGN(符号)句

SIGN(符号)句は、演算符号の特性を明示的に記述する必要があるときに、その位置と表現形式を指定する。

一般形式

構文規則

  1. SIGN句を指定できるのは、PICTURE句に文字"S"が含まれる数字データ記述項だけである。

  2. SIGN句を適用する数字データ記述項は、明示的または暗黙的に、USAGE IS DISPLAYと記述されていること。

  3. 報告集団記述項にSIGN句を含めるときは、 SEPARATE CHARACTERを指定する。

一般規則

  1. SIGN句は、数字データ項目に対して演算符号の位置と表現形式を指定する。SIGN句は、PICTURE句に文字"S"が含まれる数字データ記述項に対してだけ適用される。PICTURE句内の"S" は演算符号が付いていることを表わすが、必ずしもその位置と表現形式を表わしているわけではない。

  2. PICTURE句に文字"S" が含まれるがSIGN句が指定されていない数字データ記述項に記述されているデータ項目には、演算符号は付いているが、必ずしもその位置と表現形式が明示されているわけではない。この場合、そのような数字データ項目には、一般規則3は適用されない。(省略時解釈の演算符号の表現については、言語リファレンスCOBOL言語の概念の章の文字の表現と基数の選定の節を参照。)

  3. 報告集団記述項中のSIGN句には、SEPARATE CHARACTERを指定する。符号位置は下記のようになる。

    1. 符号が付く位置は、LEADINGを指定したときは左端、TRAILINGを指定したときは右端となる。この演算符号の文字位置は、数字位置とは異なる。

    2. PICTURE文字列内の文字"S"は、標準データ形式におけるデータ項目の大きさに含められる。

    3. 正と負の演算符号は、それぞれ標準データ形式文字の"+" と "-" である。

  4. PICTURE句に文字"S" が含まれる数字データ記述項は、符号付き数字データ項目を表わす。SIGN句の付いているデータ項目に対して計算や比較のために変換が必要になると、この変換は自動的に行われる。

SOURCE(源)句

SOURCE(源)句は、報告集団記述項内に定義されている印字項目に転記される、送り側データ項目を識別する。

一般形式

構文規則

  1. 一意名-1はデータ部のどこに定義してあってもよい。一意名-1が報告書節内の項目である場合は、下記のどれかとする。

    1. PAGE-COUNTER

    2. LINE-COUNTER

    3. そのSOURCE句が含まれる報告書の一部を構成する合計カウンタ

  2. 一意名-1は、報告書作成制御システム(RWCS)によって印字項目に暗黙的に転記される送り側データ項目を示す。一意名-1は、MOVE文の送り側項目に関する規則に適合するように定義されていること。 (言語リファレンスプログラムの定義の章のMOVE文の節を参照。)

一般規則

  1. 報告書作成制御システム(RWCS)は、報告集団の印字行を編集してから表示する。(後述のTYPE句の節を参照。) この編集時に、SOURCE句によって指定された暗黙のMOVE文が、報告書作成制御システムによって実行される。

SUM(合計)句

SUM(合計)句は合計カウンタを設定し、合計の対象とするデータ項目を指定する。

一般形式

構文規則

  1. SUM句が含まれる報告集団記述項の左辺のデータ項目は、数字として定義されていること。一意名-1は、数字データ項目とする。一意名-1が報告書節内で定義されている場合、合計カウンタを参照しなければならない。

    UPON指定を省略した場合、SUM句の中にあり、それ自体が 合計カウンタである一意名は、そのSUM句が含まれる報告集団中またはその報告書の制御階層の中で、それよりも低いレベルの報告集団に定義されていること。

    UPON指定をした場合は、そのSUM句に含まれる一意名は、合計カウンタではならない。

  2. データ名-1は、そのSUM句が含まれる 制御脚書き報告集団が含まれる報告書中に記述された、明細報告集団の名前とする。データ名-1を報告書名で修飾してもよい。

  3. SUM句は、制御脚書き報告集団の記述中にだけ指定できる。

  4. データ名-2は、その報告書のCONTROL句中に指定したデータ名のどれかとする。データ名-2は、RESET指定が含まれる報告集団よりも低い制御階層に属してはならない。

    RESET指定中にFINALを含める場合、その報告書のCONTROL句にもFINALを指定しておく。

    この規則は強制しない。

  5. 合計カウンタの修飾語として最もレベルが高いのは、報告書名である。

一般規則

  1. SUM句は、合計カウンタを設定する。合計カウンタは、演算符号付きの数字データ項目である。報告書作成制御システム(RWCS)は、実行時に一意名-1の各データ項目の値を合計カウンタに加算する。この加算は算術文の規則に従って行われる。(言語リファレンスプログラムの定義の章の算術文作用対象の重なりの各節を参照。)

  2. 合計カウンタの大きさは、そのSUM句が含まれる基本項目の記述中のPICTURE句によって指定される、受取り側項目の文字数に等しい。

  3. 報告書の1つの基本項目には、合計カウンタは1つだけ設定される。1つの基本項目の記述中に何回SUM句を記述しても、設定される合計カウンタは1つである。

  4. 報告書の印字用の基本項目の記述項にSUM句を記述すると、合計カウンタが源データ項目となる。報告書作成制御システム(RWCS)は、MOVE文の規則に従って合計カウンタの内容を印字項目に転記してから、その印字項目を表示する。

  5. 報告書の基本項目の記述項にSUM句が含まれているとき、その左辺にデータ名を書くと、そのデータ名は合計カウンタの名前となる。このデータ名は、印字項目の名前ではない。

  6. 手続き部の文によって、合計カウンタの内容を変更してもよい。

  7. 一意名のデータ項目の値を合計カウンタに加える処理は、GENERATE文およびTERMINATE文の実行時に報告書作成制御システム(RWCS)によって行われる。合計カウンタへの加算には、縦の集計(subtotalling)、横の集計(crossfooting)、繰上げ(rolling forward)の3種類ある。縦の集計は、GENERATE文の実行中に制御切れの処理をした後で、明細報告集団を表示する前に行われる。(後述のGENERATE文の節を参照。) 横の集計と繰上げは、制御脚書き報告集団の処理中に行われる。 (後述のTYPE句の節を参照。)

  8. UPON指定をすると、明細報告集団を指名して、選択的に縦の集計を行うことができる。

  9. 報告書作成制御システム(RWCS)は、各加数を合計カウンタに加算する。加算が行われる時点は、加数の種類によって異なる。

    1. 加数が同じ 制御脚書き報告集団内に定義されている合計カウンタであるとき、合計カウンタにその加数を加算することを、横の集計と呼ぶ。

      横の集計は、制御切れが発生し制御脚書き報告集団が処理されるときに行われる。

      横の集計は、制御脚書き報告集団内で合計カウンタが定義されている順序に従って行われる。まず最初に、制御脚書き報告集団内に定義されている、最初の合計カウンタへの加数の加算が行われる。次いで、制御脚書き報告集団内に定義されている、2番目の合計カウンタへの加数の加算が行われる、というぐあいである。

      加数の1つが、そのSUM句が含まれるデータ記述項によって定義された合計カウンタである場合、加算にはその合計カウンタの加算前の値が使用される。

    2. 加数が、下位のレベルの制御脚書き報告集団で定義された合計カウンタであるとき、合計カウンタにその加数を加算することを、繰上げと呼ぶ。制御切れが発生し下位レベルの制御脚書き報告集団が処理されるときに、下位レベルの制御脚書き報告集団中の合計カウンタが、上位レベルの合計カウンタに足し込まれる。

    3. 加数が合計カウンタではないとき、合計カウンタにその加数を加算することを、縦の集計と呼ぶ。SUM句にUPON指定をした場合、指定した明細報告集団用のGENERATE文が実行されるときに、集計が行われる。SUM句にUPON指定をしなかった場合、そのSUM句が含まれる報告書に関してデータ名を指定したすべてのGENERATE文が実行されるたびに、合計カウンタではない加数が集計される。

  10. 2つ以上の一意名に同じ加数が指定されていると、その加数はSUM句の中で参照される回数だけ合計カウンタに加算される。2つ以上のデータ名に同じ明細報告集団を指定しても構わない。このような明細報告集団に対するデータ名を指定したGENERATE文が実行されるときに、UPON指定にそのデータ名が指定されている分だけ集計が行われる。

  11. 報告書名を指定したGENERATE文が実行されるときに行われる縦の集計については、別途説明する。(後述のGENERATE文の節を参照。)

  12. RESET指定を省略すると、合計カウンタが定義されている制御脚書き報告集団の処理を行ったきに、報告書作成制御システム(RWCS)はその合計カウンタの値をゼロに設定し直す。 RESET指定をすると、指定されたレベルの制御階層の処理を行ったきに、報告書作成制御システム(RWCS)はその合計カウンタの値をゼロに設定し直す。(後述のTYPE句の節を参照。)

    SUM句の値は初めに、その合計カウンタが含まれる報告書用のINITIATE文が実行される間に、報告書作成制御システムによってゼロに設定される。

TYPE(報告集団の型)句

TYPE(報告集団の型)句は、報告集団の種類とそれを編集表示する時点を指定する。

一般形式

構文規則

  1. RHは、REPORT HEADINGの省略形である。
    PHは、PAGE HEADINGの省略形である。
    CHは、CONTROL HEADINGの省略形である。
    DEは、DETAILの省略形である。
    CFは、CONTROL FOOTINGの省略形である。
    PFは、PAGE FOOTINGの省略形である。
    RFは、REPORT FOOTINGの省略形である。

  2. 報告書頭書き報告集団、ページ頭書き報告集団、 FINALを指定した制御頭書き報告集団、 FINALを指定した制御脚書き報告集団、ページ脚書き報告集団、報告書脚書き報告集団は、それぞれ、2回以上書くことはできない。

  3. ページ頭書き報告集団およびページ脚書き報告集団を指定できるのは、該当する報告書記述項にPAGE句を指定してある場合だけである。

  4. データ名-1、データ名-2、FINALを指定する場合、対応する報告書記述項の CONTROL句の中にも指定しておく。

    FINALに関しては、この規則を強制しない。

    報告書記述項のCONTROL句の中の各データ名およびFINALに、制御頭書き報告集団と制御脚書き報告集団を1つずつ指定できる。しかし、この指定はしなくても構わない。

  5. 制御脚書き報告集団、ページ頭書き報告集団、ページ脚書き報告集団、報告書脚書き報告集団では、SOURCE文およびUSE文によって、下記のどれかを参照してはならない。

    1. 制御データ項目が含まれる集団データ項目。

    2. 制御データ項目の下位に属するデータ項目。

    3. 制御データ項目の何らかの部分を再定義または再命名したデータ項目。

    ページ頭書き報告集団およびページ脚書き報告集団では、SOURCE文およびUSE文によって、制御データ名を参照してはならない。

  6. 手続き部に報告書名を指定したGENERATE文を書くときは、対応する報告書記述項には、明細報告集団を2つ以上含めてはならない。データ名を指定したGENERATE文を書かないときは、明細報告集団を記述しなくてもよい。

  7. 1つの報告書の記述の中には、最低1つの本体集団を記述する。

一般規則

  1. 明細報告集団は、GENERATE文による指示に基づいて、報告書作成制御システム(RWCS)によって処理される。明細報告集団以外の報告集団は、報告書作成制御システム(RWCS)によって自動的に処理される。

  2. REPORT HEADING指定は、 該当する報告書の最初の報告集団として、報告書作成制御システム(RWCS)によって処理される報告集団を1報告書につき1回だけ指定する。報告書頭書き報告集団は、その報告書の最初のGENERATE文の実行中に処理される。

  3. PAGE HEADING指定は、該当する報告書の各ページ上の最初の報告集団として、報告書作成制御システム(RWCS)によって処理される報告集団を指定する。ただし、下記の例外がある。

    1. 報告書頭書き報告集団または報告書脚書き報告集団を、排他的に表示するように指定されている場合、そのページ上では、ページ頭書き報告集団は処理されない。

    2. 報告書頭書き報告集団を、排他的に表示するように指定されていない場合、ページ頭書き報告集団は2番目の報告集団として処理される。

    (前述の表示規則表を参照。)

  4. CONTROL HEADING指定は、指定された制御データ名用の制御集団の開始時に、報告書作成制御システム(RWCS)によって処理される報告集団を指定する。ただし、FINALを指定した場合は、報告書に関する最初のGENERTAE文が実行される間に処理される。GENERATE文の実行中に制御切れが検出されると、報告書作成制御システム(RWCS)は、最も高いレベルの制御切れ以下のすべての制御頭書き報告集団を処理する。

  5. DETAIL指定は、対応するGENERTAE文が実行されるときに、報告書作成制御システム(RWCS)によって処理される報告集団を指定する。

  6. CONTROL FOOTING指定は、指定された制御データ名の制御集団の終わりに、報告書作成制御システム(RWCS)によって処理される報告集団を指定する。

    FINALを指定した場合、制御脚書き報告集団は該当する報告書の最後の本体集団として、報告書作成制御システム(RWCS)によって1報告書につき1回だけ処理される。GENERATE文の実行中に制御切れが検出されると、報告書作成制御システム(RWCS)は、最も高いレベルの制御切れ以下のすべての制御脚書き報告集団を処理する。報告書に関して最低1回GENERATE文が実行されていれば、TERMINATE文の実行中にすべての制御脚書き報告集団が表示される。(後述のTERMINATE文の節を参照。)

  7. PAGE FOOTING指定は、該当する報告書の各ページ上の最後の報告集団として、報告書作成制御システム(RWCS)によって処理される報告集団を指定する。ただし、下記の例外がある。

    1. 報告書頭書き報告集団または報告書脚書き報告集団を、排他的に表示するように指定されている場合、そのページ上では、ページ脚書き報告集団は処理されない。

    2. 報告書脚書き報告集団を、排他的に表示するように指定されていない場合、ページ脚書き報告集団は最後から2番目の報告集団として処理される。

    (前述の表示規則表の節を参照。)

  8. REPORT FOOTING指定は、該当する報告書の最後の報告集団として、報告書作成制御システム(RWCS)によって処理される報告集団を、1報告書につき1回だけ指定する。報告書に関して最低1回GENERATE文が実行されていれば、TERMINATE文の実行中に報告書脚書き報告集団が表示される。 (後述のTERMINATE文の節を参照。)

  9. 報告書頭書き報告集団、ページ頭書き報告集団、制御頭書き報告集団、ページ脚書き報告集団、報告書脚書き報告集団を処理するときに、報告書作成制御システム(RWCS)が実行する処理手順を、下に説明する。

    1. 報告集団のデータ名を参照するUSE BEFORE REPORTING手続きがあれば、そのUSE手続きが実行される。

    2. SUPRESS文が実行された状態にあるかまたは報告集団に印字項目が含まれていない場合、その報告集団の処理はそれ以上は行われない。

    3. SUPRESS文が実行されてなく報告集団に印字項目が含まれている場合、報告書作成制御システム(RWCS)は、印字行を編集して、該当する報告集団の型の表示規則に従ってその報告集団を表示する。(前述の表示規則表の節を参照。)

  10. 制御脚書き報告集団を処理するときに、報告書作成制御システム(RWCS)が実行する処理手順を、下に説明する。

    制御切れが検出されると、報告書作成制御システム(RWCS)は、一連の制御脚書き報告集団を作成する。これは、制御階層の一番低いレベルの報告集団から、制御切れが検出された最も高いレベルの報告集団に至る。ここで注意することは、ある制御データ名に関して制御脚書き報告集団が定義されていなくても、その報告書のSUM句のRESET指定の対象にその制御データ名が指定されていれば、報告書作成制御システム(RWCS)は下記の10f.の処理を実行する必要がある、ということである。

    1. 合計カウンタを横に集計する。具体的には、その報告集団において定義されている合計カウンタで、同じ報告集団の中のSUM句の作用対象にもなっているものをすべて、そのSUM句の合計カウンタに加算する。(前述のSUM句の節を参照。)

    2. 合計カウンタを繰上げ集計する。 具体的には、その報告集団において定義されている合計カウンタであって、それより上位レベルの制御脚書き報告集団の中のSUM句の作用対象にもなっているものをすべて、その上位レベルのSUM句の合計カウンタに加算する。(前述のSUM句の節を参照。)

    3. その報告集団のデータ名を参照するUSE BEFORE REPORTING手続きがあれば、そのUSE手続きを実行する。

    4. SUPRESS文が実行された状態にあるかまたはその報告集団に印字項目が含まれていない場合、報告書作成制御システム(RWCS)は次に下記の手順10e.を実行する。

    5. SUPRESS文が実行されてなく、その報告集団に印字項目が含まれている場合、報告書作成制御システム(RWCS)は、印字行を編集して、制御脚書き報告集団の表示規則に従ってその報告集団を表示する。

    6. 報告書作成制御システム(RWCS)は、制御階層のそのレベルを処理したときに設定し直す合計カウンタを、ゼロに設定する。 (前述のSUM句の節を参照。)

  11. データ名を指定したGENERATE文に応じて報告書作成制御システム(RWCS)が実行する明細報告集団の処理を、以下に説明する。

    報告書に明細報告集団を1つだけ記述した場合に、データ名を指定したGENERATE文に応じて報告書作成制御システム(RWCS)が実行する明細報告集団の処理を、下記の11a.から11e.に示す。これらの手順は、データ名を指定したGENERATE文が実行されているように実行される。

    報告書に明細報告集団を1つも記述しなかった場合に、データ名を指定したGENERATE文に応じて報告書作成制御システム(RWCS)が実行する明細報告集団の処理を、下記の11a.に示す。この手順は、報告書に明細報告集団を1つだけ記述した場合と同じように、データ名を指定したGENERATE文が実行されているように実行される。

    1. 報告書作成制御システム(RWCS)は、 明細報告集団用に指定されている、縦の集計を行う。(前述のSUM句の節を参照。)

    2. その報告集団のデータ名を参照するUSE BEFORE REPORTING手続きがあれば、そのUSE手続きを実行する。

    3. SUPRESS文が実行された状態にあるかまたはその報告集団に印字項目が含まれていない場合、その報告集団に関してはそれ以上何も行わない。

    4. データ名を指定したGENERATE文に基づいて明細報告集団を実行した場合、その報告集団に関しては、それ以上何も行わない。

    5. 上記の11c.も11d.も当てはまらない場合、報告書作成制御システム(RWCS)は印字行を編集して、明細報告集団の表示規則に従ってその報告集団を表示する。 (前述の表示規則表を参照。)

  12. 一般規則9, 10, 11に記したように、報告書作成制御システム(RWCS)は、制御頭書き報告集団、制御脚書き報告集団、明細報告集団を処理しているときに、それに割り込んで改ページ処理をすることができなければならない。改ページが必要と判断されたときは、報告書作成制御システム(RWCS)は改ページとそれに併うページ脚書き報告集団およびページ頭書き報告集団の処理を行ってから、その本体集団を表示する。

  13. 制御切れ処理の間に、報告書作成制御システム(RWCS)が制御切れを検出するために保存した制御データ項目を 「古い値」と呼ぶ。

    1. 制御切れに伴う制御脚書き報告集団の処理の間に、その制御脚書き報告集団に関連するUSE手続きまたはSOURCE句の中で制御データ項目を参照すると、古い値が使用される。

    2. TERMINATE文が実行されると、報告書作成制御システム(RWCS)は最も高いレベルの制御切れが検出されたとみなす。この時点で制御脚書き報告集団または報告書脚書き報告集団に関連するUSE手続きまたはSOURCE句の中で制御データ項目を参照すると、古い値が使用される。

    3. 上記以外の場合に、報告集団内またはそれに関連するUSE手続きでデータ項目を参照した場合はすべて、その報告集団を処理している時点でのそのデータ項目の現在の値が使用される。

USAGE(用途)句

USAGE(用途)句は、計算機の記憶領域内におけるデータ項目の形式を指定する。

一般形式

構文規則

  1. USAGE句は、任意のデータ記述項に書くことができる。

  2. USAGE句を集団項目用のデータ記述項の中に書いた場合、その下位に属する基本項目または集団項目用のデータ記述項の中にも、USAGE句を書くことができる。

  3. 報告集団項目用のUSAGE句には、USAGE IS DISPLAYだけが指定できる。

一般規則

  1. 集団項目のレベルにUSAGE句を書いた場合、その集団に属する各基本項目に対してそのUSAGE句が適用される。

  2. USAGE句は、計算機の記憶領域内でデータ項目が表現される形式を指定する。 USAGE句は、データ項目の使い方を制限するものではない。しかし、手続き部の文によっては、参照する作用対象の用途を制限するものがある。USAGE句は、データ項目の基数または文字表現の種類に影響を及ぼすことがある。

  3. USAGE DISPLAY句は、データの形式が標準データ形式であることを示す。

  4. 基本項目または基本項目を含む集団項目にUSAGE句を指定しないと、用途はDISPLAYとみなされる。

VALUE(値)句

VALUE(値)句は、報告書節中の印字項目の値を定義する。

一般形式

構文規則

  1. 符号付き数字定数に指定するPICTURE文字列は、符号付き数字用のものとする。

  2. VALUE句中の数字定数は、その項目のPICTURE句によって示される値の範囲に収まっていること。また、ゼロ以外の数字が切り捨てられるようではならない。VALUE句中の文字定数は、その項目のPICTURE句によって示される長さを超えてはならない。

一般規則

  1. VALUE句は、その項目またはその上位の項目に関するデータ記述中の他の句と矛盾するものであってはならない。さらに、下記の規則が適用される。

    1. 項目の項類が数字である場合、VALUE句中の定数-1は数字とする。

    2. 項目の項類が英字、英数字、英数字編集、数字編集である場合、VALUE句中の定数-1は文字定数とする。定数は、データ項目が英数字と定義されているものとして収められる。(言語リファレンスCOBOL言語の概念の章の標準桁寄せ規則の節を参照。) PICTURE句中の編集文字は、データ項目の長さを決定するためには用いられるが、データ項目の初期化には影響を及ぼさない。(言語リファレンスプログラムの定義の章のPICTURE句の節を参照。) したがって、編集項目用の値は、編集された形で指定すること。

    3. 項目にBLANK WHEN ZERO句やJUSTIFIED句が指定されていても、初期化には影響しない。

  2. 報告書節で、報告書の基本項目記述項にVALUE句が含まれているがGROUP INDICATE句は含まれていない場合、その印字項目は、その報告集団が表示されるたびに指定された値を取ることになる。GROUP INDICATE句も含まれている場合、その印字項目は、GROUP INDICATE句の条件が成り立つときだけ、指定された値で表示される。(区分化の章のGROUP INDICATE句の節を参照。)

報告書作成機能単位における手続き部

一般説明

COBOL原始プログラム中に、報告書作成機能のUSE BEFORE REPORTING文が含まれていると、手続き部には 宣言手続きが含まれる。USE BEFORE REPORTING文が含まれているときの、手続き部の一般形式を下に示す。

CLOSE(閉じる)文

CLOSE(閉じる)文は、リール/ユニットおよびファイルの処理を終了させる。さらに、適用可能な場合、巻戻しやロックや取外しを行うこともできる。

一般形式

構文規則

  1. CLOSE文の対象とするファイルは、すべて編成や呼出し法が同じである必要はない。

  2. CLOSE文に適用できる指定は、実現されている順ファイル機能の水準に依存する。(言語リファレンスプログラムの定義の章を参照。)

一般規則

以降の記述において別途断わらないかぎり、「リール」と「ユニット」は同じ意味であり、CLOSE文の中で同じように使用できる。順大容量記憶ファイルの扱いは、論理的にはテープやアナログ順媒体上のファイルと同じである。複数のテープ環境を持つファイルの扱いは、ファイルが1つのリールに完全に含まれている場合、論理的には順単一リール/ユニットファイルと同じである。

  1. CLOSE文は、開かれているファイルに対してだけ実行できる。

  2. 様々な記憶媒体に適用される種々のCLOSE文の効果を示すために、すべての 報告書ファイルを下記の種類に区分する。

    1. 非リール/ユニット: 巻戻しやリール/ユニットの概念が意味をもたない入出力媒体を使用したファイル。

    2. 順単一リール/ユニット: 1つのリール/ユニットに完全に格納される順ファイル。

    3. 順複数リール/ユニット: 複数のリール/ユニットにまたがって格納される順ファイル。

  3. CLOSE文の書き方とファイルの種類ごとに、実行結果をまとめて、表に示す。

    表 1-8 : CLOSE文の書き方とファイルの種類の関係

    CLOSE文の書き方 ファイルの種類
    非リール/ユニット 順単一リール/ユニット 順複数リール/ユニット
    CLOSE C C,G A,C,G
    CLOSE WITH LOCK C,E C,E,G A,C,E,G
    CLOSE WITH NO REWIND C,H B,C A,B,C
    CLOSE WITH REEL/UNIT F F,G F,G
    CLOSE REEL/UNIT FOR REMOVAL F D,F,G D,F,G

    上の表の中に示した記号の意味を、以降に説明する。

    1. 出力報告書ファイルに対する前のリール/ユニットの影響

      報告書ファイル中の現在のリール/ユニットよりも前にあるリール/ユニットが、すべて閉じられる。ただし、既にCLOSE REEL/UNIT文が実行されているものを除く。

    2. 現在のリールを巻き戻さない

      現在のリール/ユニットは、そのままの位置にとどめられる。

    3. 出力報告書ファイルを閉じる

      報告書ファイルにラベル・レコードを指定してある場合、作成者の標準ラベル方式に従ってラベルの処理が行われるラベル・レコードを指定しているのにラベル・レコードが存在しない場合、またはラベル・レコードを指定していないのにラベル・レコードが存在する場合、CLOSE文の動作はどうなるかわからない。作成者によって指定された終了手続きが実行される。報告書ファイルにラベル・レコードが指定されていない場合、ラベルの処理は行われないが、作成者によって指定された他の終了手続きは実行される。

    4. リール/ユニットを取り外す

      可能な場合は、現在のリールまたはユニットが巻き戻され、そのリールまたはユニットは実行単位から論理的に取り外される。しかし、その後でその報告書ファイルに対してREELまたはUNITを指定しないでCLOSE文を実行し、続いてその報告書ファイルに対してOPEN文を実行すると、その報告書ファイル内のリールまたはユニットを適切な順番で再び呼び出せる。

    5. ファイルをロックする

      この実行単位の実行中は、その報告書ファイルを再び開くことはできない。

    6. リール/ユニットを閉じる

      出力報告書ファイル(リール/ユニット媒体)

      下記の操作が行われる。

      1. 標準終了リール/ユニット・ラベル手続きが実行される。

      2. リール/ユニットの交換。現在のボリューム・ポインタは新しいリール/ユニットを指すように更新される。

      3. 標準開始リール/ユニット・ラベル手続きが実行される。

      4. そのファイルに対して次にWRITE文を実行すると、次の論理レコードはそのファイルの次のリール/ユニットに書き出される。

      出力報告書ファイル(非リール/ユニット媒体)

      このCLOSE文の実行は正常に終了したものと扱われる。実際には、ファイルは開かれたままであり、一般規則4に示された以外の処理は何も行われない。

    7. 巻き戻す

      現在のリールまたは類似の装置は、物理的始点に位置付けられる。

    8. 選択指定は無視される

      何も選択指定がされていないように、CLOSE文は実行される。

  4. CLOSE文が実行されると、ファイル名-1に関する入出力状態の値が更新される。

  5. 報告書ファイルの処理を終了するには、まずその報告書ファイルに関連する処理を開始されたすべての報告書をTERMINATE文を用いて終了させてから、CLOSE文を用いてその報告書ファイルを閉じる。

  6. REELもUNITも指定されていないCLOSE文の実行が正常に終了すると、報告書ファイルは開かれた状態ではなくなり、ファイル結合子との結び付きも切れる。

  7. 1つのCLOSE文に複数のファイル名-1を指定すると、その実行結果は、個々のファイル名-1に対して同じ順序でCLOSE文を別々に実行したのと同じことになる。

GENERATE(作成)文

GENERATE(作成)文は、 データ部の報告書節中に指定された報告書記述に従って報告書を作成するよう、報告書作成制御システム(RWCS)に指示する。

一般形式

構文規則

  1. データ名-1には、 明細報告集団の名前を指定する。この名前は、報告書名で修飾してもよい。

  2. 報告書名-1を指定できるのは、報告書の記述が下記の条件をすべて満たす場合だけである。

    1. CONTROL句を含む。

    2. 2つ以上の明細報告集団を含まない。

    3. 本体集団を最低1つ含む。

一般規則

  1. 報告書名-1を指定したGENERATE文に応じて、報告書作成制御システム(RWCS)は合計報告の処理を行う。ある報告書用に実行されるGENERATE文がすべて報告書名-1を指定した形のものである場合、作成される報告書を 合計報告書と呼ぶ。

  2. データ名-1を指定したGENERATE文に応じて、報告書作成制御システムは明細報告の処理を行う。その中には、指定された明細報告集団に特有の処理も含まれる。通常、データ名-1を指定したGENERATE文を実行することによって、報告書作成制御システム(RWCS)は指定された明細報告集団を表示する。

  3. 報告書に対する最初のGENERATE文を実行する間に、報告書作成制御システム(RWCS)は制御データ項目の値を保存する。同じ報告書に対する2回目以降のGENERATE文を実行する間に、報告書作成制御システム(RWCS)は保存した制御データ項目の値を使用して、制御切れの発生を検出する。制御切れの発生が検出されると、報告書作成制御システム(RWCS)は新しい制御データ項目の値を保存し、その値を使用して、さらに制御切れの発生を検出する。

  4. 報告書を表示する間、本体集団を表示するために改ページが必要になったときに、ページ頭書き報告集団およびページ脚書き報告集団が定義されていると、報告書作成制御システム(RWCS)によってそのための処理が自動的に行われる。(前述の表示規則表の節を参照。)

  5. 報告書に対する最初のGENERATE文を実行するときに、報告書作成制御システム(RWCS)は下記の報告集団を記してある順に処理する。ただし、報告書記述項中にそれらの報告集団が定義されていることを前提とする。報告書作成制御システム(RWCS)はまた、一般規則4.に記したように、ページ頭書き報告集団およびページ脚書き報告集団の処理も行う。各型の報告集団を処理するときに報告書作成制御システム(RWCS)が行う具体的な処理については、前述のTYPE 句の節を参照。

    1. 報告書頭書き報告集団を処理する。

    2. ページ頭書き報告集団を処理する。

    3. 制御頭書き報告集団を、最高レベルから最低レベルまですべて処理する。

    4. データ名-1を指定したGENERATE文が実行される場合は、指定された明細報告集団用の処理を実行する。報告書名-1を指定したGENERATE文が実行される場合は、明細報告集団用の処理に係わる手順の一部を実行する。(前述のTYPE句の節を参照。)

  6. 報告書に対する2番目以降のGENERATE文を実行するときに、報告書作成制御システム(RWCS)は下記の手順のうち適用できるものを実行する。報告書作成制御システム(RWCS)はまた、一般規則4.に記したように、ページ頭書き報告集団およびページ脚書き報告集団の処理も行う。各型の報告集団を処理するときに報告書作成制御システム(RWCS)が行う具体的な処理については、前述のTYPE句の節を参照。)

    1. 制御切れの検出。制御データ項目の値が変わったか否かを判定する規則は、比較条件の場合と同じである。制御切れが発生すると、下記の処理を行う。

      1. 制御切れを検出するために報告書作成制御システム(RWCS)が使用した制御データ項目の値を、制御脚書きに関連するUSE手続きおよびSOURCE句で使用できるようにする。(前述のTYPE句の節を参照。)

      2. 制御脚書き報告集団を、低いレベルから高いレベルへ向けて処理する。その対象となるレベルは、発生している制御切れの中の最も高いレベル以下のものである。

      3. 制御頭書き報告集団を高いレベルから低いレベルへ向けて処理する。その対象となるレベルは、発生している制御切れの中の最も高いレベル以下のものである。

    2. データ名-1を指定したGENERATE文が実行される場合は、指定された明細報告集団用の処理を実行する。報告書名-1を指定したGENERATE文が実行される場合は、明細報告集団用の処理に係わる手順の一部を実行する。 (前述のTYPE句の節を参照。)

  7. 報告書に対してGENERATE文を実行できるのは、その報告書に対するINITIATE文が実行された後で、TERMINATE文が実行される前までの間だけである。

INITIATE(開始)文

INITIATE(開始)文は、報告書作成制御システム(RWCS)に 報告書の処理を開始させる。

一般形式

構文規則

  1. 報告書名-1は、データ部の報告書節中の報告書記述項に定義されていること。

一般規則

  1. INITIATE文は、指定された各報告書に対して、下記の初期化処理を行う。

    1. すべての 合計カウンタをゼロに設定する。

    2. LINE-COUNTERをゼロに設定する。

    3. PAGE-COUNTERをゼロに設定する。

  2. INITIATE文は、報告書に関連するファイルを開くわけではない。したがって、INITIATE文を実行する前に、OPEN文をOUTPUTまたはEXTENDを指定して実行しなければならない。

  3. 報告書名-1に対するINITIATE文を実行した場合、対応してその報告書に対してTERMINATE文を実行する。その後でなければ、報告書名-1に対して次のINITIATE文は実行できない。

  4. 1つのINITIATE文に複数の報告書名-1を指定すると、その実行結果は、個々の報告書名-1に対して同じ順序でINITIATE文を別々に実行したのと同じことになる。

OPEN(開く)文

言語リファレンスプログラムの定義の章を参照のこと。

追加の構文規則

  1. 報告書ファイルは、順編成ファイルとする。

  2. 報告書ファイルに対するOPEN文に指定できる入出力モードは、OUTPUTまたはEXTENDだけである。

追加の一般規則

  1. 報告書ファイルに含まれる報告書に対するINITIATE文を実行する前に、その報告書ファイルに対してOPEN文を実行しなければならない。

SUPPRESS(抑制)文

SUPPRESS(抑制)文は、報告書作成制御システム(RWCS)に報告集団の表示を抑制させる。

一般形式

構文規則

  1. SUPPRESS文は、USE BEFORE REPORTING手続き内にだけ指定できる。

一般規則

  1. SUPPRESS文によって表示が抑制される報告集団は、USE手続きの中で指定されたものだけである。

  2. SUPPRESS文は、報告集団の表示を抑制する必要があるたびに実行しなければならない。

  3. SUPPRESS文が実行されると、報告書作成制御システム(RWCS)は下記の報告集団機能の処理を、しないようにする。

    1. 報告集団の印字行の表示。

    2. 報告集団中のすべてのLINE句の処理。

    3. 報告集団中のNEXT GROUP句の処理。

    4. LINE-COUNTERの更新。

  4. 特殊レジスタのPRINT-SWITCHに1を設定することによっても、 SUPPRESS PRINTINGの機能を実現できる。

    つまり、下記の2つの文は機能的に等しい。

         MOVE 1 TO PRINT-SWITCH

         SUPPRESS PRINTING 

TERMINATE(終了)文

TERMINATE(終了)文は、報告書作成制御システム(RWCS)に 報告書の処理を終了させる。

一般形式

構文規則

  1. 報告書名-1は、データ部の報告書節中の報告書記述項に定義されていなければならない。

一般規則

  1. TERMINATE文は、報告書作成制御システム(RWCS)にすべての制御脚書き報告集団を作成させる。この処理は低いレベルから高いレベルへと進められる。次いで、報告書脚書き報告集団が作成される。このとき、報告書作成制御システム(RWCS)は、最高レベルの制御データ項目の制御切れが発生したものとして、制御脚書き報告集団および報告書脚書き報告集団のSOURCE句およびUSE手続きで、一連の制御データ項目の古い値を使用できるようにする。

  2. INITIATE文とTERMINATE文の間にGENERATE文が実行されなかった場合、その報告書に関してTERMINATE文は、報告書作成制御システム(RWCS)に報告集団を何も作成させず、またそれに関連する処理を何もさせない。

  3. 報告書を表示する間、本体集団を表示するために改ページが必要になったときに、ページ頭書き報告集団およびページ脚書き報告集団が定義されていると、報告書作成制御システム(RWCS)によってそのための処理が自動的に行われる。(前述の表示規則表を参照。)

  4. 報告書に対してTERMINATE文を実行できるのは、その報告書に対するINITIATE文が実行された後、かつTERMINATE文が実行される前だけである。

  5. 1つのTERMINATE文に複数の報告書名-1を指定すると、その実行結果は、個々の報告書名-1に対して同じ順序でTERMINATE文を別々に実行したのと同じことになる。

  6. TERMINATE文は、報告書が関連するファイルを閉じるわけではない。したがって、報告書ファイルを閉じるために、CLOSE文を実行しなければならない。報告書の作成を開始したならば、対応する報告書ファイルをTERMINATE文で終了させてから、CLOSE文を実行しなければならない。

8 USE BEFORE REPORTING(報告の前に使用)文

USE BEFORE REPORTING(報告の前に使用)文は、データ部の報告書節中に指定された報告集団が表示される直前に実行する手続き部の文を指定する。

一般形式

構文規則

  1. USE BEFORE REPORTING文を記述する場合は、手続き部の宣言部分の節の見出しに続けて、それ自体で1つの完結文として書く。その節の後ろには、何も記述しなくてもよいし、使用する手続きを定義する段落をいくつか記述してもよい。

  2. 一意名-1は、報告集団を指していること。同じ手続き部内の複数のUSE BEFORE REPORTING文の中に、同じ一意名-1が現れてはならない。

  3. USE BEFORE REPORTING手続き中の段落内にGENERATE文、INITIATE文、TERMINATE文が現れてはならない。また、USE BEFORE REPORTING手続き中のPERFORM文の範囲内にGENERATE文、INITIATE文、TERMINATE文が現れてはならない。

  4. USE BEFORE REPORTING手続きは、どの制御データ項目の値を変えてもならない。

  5. USE BEFORE REPORTING文自体は、実行されない。この文は、USE手続きを呼び出す条件を定義するだけである。

一般規則

  1. プログラムの実行中に指定された報告集団が作成される直前に、 宣言手続きが呼び出される。該当する報告集団は、宣言の先頭のUSE BEFORE REPORTING文中の一意名-1に指定する。

  2. 宣言手続きの中から、通常の手続きを参照してはならない。

  3. 他の宣言節または通常の手続きからは、PERFORM文によってだけ、USE BEFORE REPORTING文に関連する手続き名を参照できる。

  4. USE BEFORE REPORTING文に指定した手続きは、該当する報告集団が作成される直前に、報告書作成制御システム(RWCS)によって実行される。(前述のTYPE句の節を参照。)

  5. 既に呼び出されているUSE手続きが、まだ呼び出し元の手順に制御を返さないうちに、そのUSE手続きを起動する文が実行されてはならない。

  6. プログラムが他のプログラム中に含まれている場合、以下に示す特別な規則が適用される。これらの規則の適用では、最初の限定的な指令だけが実行用に選択される。実行用に選択された指令は、その指令を実行するための規則に従っていなくてはならない。指令を選択する順序は、次の通りである。

    1. 限定的な条件を引き起こす文を持つプログラム中の指令。

    2. GLOBAL指定が指定され、限定的な指令を最後に実行したプログラムを直接含むプログラム中の指令。

    3. 規則6b を適用して選択された指令(最も外側のプログラムに適用されたものまでを含む)。限定的な指令が見つからない場合、何も実行されない。