データ部(data division)では,実行用プログラムが入力として受け取り,操作し,作り出し又は出力として書き出すデータについて記述する.
データ部は,節に細分される.節(section)は,ファイル節,作業場所節及び連絡節とする.
ファイル節(file section)では,データファイルの構造を定義する.各ファイルは,一つのファイル記述項とそれに続く一つ以上のレコード記述項によって定義する.レコード記述項は,ファイル記述項の直後に書く.
作業場所節(working-storage section)では,外部データファイルに属さず,内部的に処理され展開されるレコード及び従属するデータ項目,並びに値が原始プログラムで与えられ,実行用プログラムの実行中に変ることのないデータ項目について記述する.
連絡節(linkage section)は,呼ばれるプログラム中に書かれ,呼ぶプログラムと呼ばれるプログラムで参照されるデータ項目について記述する.連絡節の構造は,作業場所節と同じにする.
データ部の節の一般形式と原始プログラム中に書く順序は,次のとおりとする.
【書き方】
ファイル節は,原始プログラムのデータ部にある.ファイル節(file section)では,データファイルの構造を定義する.各ファイルは,一つのファイル記述項とそれに続く一つ以上のレコード記述項によって定義する.レコード記述項は,ファイル記述項の直後に書く.
順ファイル機能でのファイル節の一般形式を以下に示す.
【書き方】
COBOLプログラムでは,ファイル記述項がファイル節の中の最高レベルを表す.ファイル節の見出しに続けてファイル記述項を書く.ファイル記述項は,レベル指示語FD,ファイル名及び幾つかの独立な句の並びで構成し,レコードやブロックの大きさ,ラベルレコードの有無,ラベル項目の値,ファイルを構成するレコードの名前及び論理的な印字ページの行数を指定する.ファイル記述項自体は,分離符の終止符でとめる.
レコード記述(record description)は,レコードの性質を記述する一群のデータ記述項で構成する.
データ記述項は,レベル番号とそれに続くデータ名又はFILLER句及び幾つかの必要な独立した句の並びで構成する.レコード記述は,階層構造を有する.ある項に書く句は,それに従属する項があるかないかによって異なる.
ファイル節のデータ項目の初期値は,不定である.
ファイル記述項は,ファイルの物理的な構造,識別及び順ファイルに関連するレコード名の情報を与える.
【書き方】
(1) |
ファイル記述項の最初にレベル指示語FDを書き,その後にファイル名-1を書かなければならない. |
(2) |
ファイル名-1の後に書く句の順序は任意とする. |
(3) |
ファイル記述項の後に,少なくとも一つのレコード記述項を書かなければならない. |
(1) |
ファイル記述項は,ファイル名-1をファイル結合子に関連付ける. |
(2) |
BLOCK CONTAINS(ブロックの大きさ)句,LABEL RECORDS(ラベルレコード)句,LINAGE(行数)句については,以下で規定する. |
BLOCK CONTAINS(ブロックの大きさ)句は,ブロックの大きさを指定する.
【書き方】
(1) |
この句は,次の条件が一つ以上満足される場合を除き,書かなければならない.
| ||||||||||
(2) |
ブロックの大きさは,語RECORDS(レコード)を使って指定してよい.ただし,以下の場合には,語RECORDSを使ってはならない.
| ||||||||||
(3) |
CHARACTERS(文字)を書くときは,ブロックの大きさは,それに含まれる文字の種類に関係なく,ブロックの格納に必要な文字位置の個数で指定する.
| ||||||||||
(4) |
CHARACTERS指定で整数-2だけを書くと,ブロックの決まった大きさを示す.整数-1と整数-2の両方を書くと,それぞれが,ブロックの最小の大きさと最大の大きさを表す. | ||||||||||
(5) |
CHARACTERS指定で整数-1と整数-2は,必要な制御バイト(コンパイラが自動的に挿入する行制御用の領域及び日本語出力のための制御コード)とレコード形式がV形式の場合ブロック記述語 (4バイト) の大きさを含んでいなければならない. | ||||||||||
(6) |
RECORDS(レコード)を書くときは,ブロックの大きさは,ブロックに含まれるレコードの個数で指定する. | ||||||||||
(7) |
RECORDS指定の場合,コンパイラは,ブロックの大きさを表に従って決定する.ここで,nはBLOCK CONTAINS句で指定する整数-2である. |
表 ブロックの大きさ
レコード形式 |
ブロック長 |
固定長 |
レコード長×n+4 |
可変長 |
(最大レコード長+4)×n+4 |
なお,ブロック記述語はクラスがDAの場合のみ存在する.
(8) |
関連するファイル結合子が外部ファイル結合子ならば,そのファイル結合子に関連する実行単位中のすべてのBLOCK CONTAINS句は,整数-1及び整数-2に対して同じ値を持たなければならない. |
LABEL RECORDS(ラベルレコード)句は,ラベルの有無を指定する.LABEL RECORDS句は,廃要素であり,今後この要素は削除される予定である.新たに作成するプログラムにおいてこの要素を使用すべきではない.
【書き方】
(1) |
OMITTED(なし)は,ファイル又はその装置に,明にラベルが存在しないことを示す. |
(2) |
STANDARD(標準)は,ファイル又はその装置に,システム仕様に従う標準のラベルが存在することを示す. |
(3) |
このコンパイラでは,LABEL RECORDS句は,注釈として扱われる. |
LINAGE(行数)句は,論理的な1ページを構成する行数を指定する.更に,論理ページの上端や下端の余白の大きさ,ページ本体中で脚書き領域が始まる行位置をも指定する.
【書き方】
(1) |
データ名-1,データ名-2,データ名-3及びデータ名-4は,符号なし整数項目でなければならない. |
(2) |
データ名-1,データ名-2,データ名-3及びデータ名-4は,修飾してもよい. |
(3) |
整数-2は,整数-1以下でなければならない. |
(4) |
整数-3,整数-4は,ゼロであってもよい. |
(1) |
LINAGE句を使って,論理的な1ページを構成する行数を指定する.論理ページの大きさは,FOOTING(脚書き)指定以外の各指定に記述した値の合計とする.LINES AT TOP(上端余白行)指定又はLINES AT BOTTOM(下端余白行)指定を書かないと,これらの項目に対する値はゼロとみなされる.FOOTING指定を書かないと,ページあふれ条件と独立にページ終了条件が生じることはない.論理ページの大きさと物理ページの大きさとの間に,関連がある必要はない. |
(2) |
整数-1又はデータ名-1のデータ項目の値は,論理ページに書いたり行送りしたりできる行数を指定する.この値は正でなければならない.論理ページのこの部分をページ本体(page body)という. |
(3) |
整数-2又はデータ名-2のデータ項目の値は,ページ本体中で脚書き領域(footing
area)が始まる行位置を指定する.この値は正であり,かつ整数-1又はデータ名-1のデータ項目の値以下でなければならない.
|
(4) |
整数-3又はデータ名-3のデータ項目の値は,論理ページの上端部の余白の行数を指定する.この値はゼロであってもよい. |
(5) |
整数-4又はデータ名-4のデータ項目の値は,論理ページの下端部の余白の行数を指定する. |
(6) |
整数-1,整数-3及び整数-4は,OPEN OUTPUT文の実行によってファイルを開く時点で,論理ページの各部分を構成する行数を定める.整数-2を書くと,その時点でこの値を使って脚書き領域が定められる.これらの値は,そのプログラムの実行中にそのファイルに書き出されるすべての論理ページに対して適用される. | ||||||||||||||||
(7) |
データ名-1,データ名-3及びデータ名-4のデータ項目の値の規則は,次による.
| ||||||||||||||||
(8) |
データ名-2を書くと,OPEN OUTPUT文の実行によってファイルを開く時点で,データ名-2のデータ項目の値を使って,最初の論理ページの脚書き領域が定められる.ADVANCING PAGEのあるWRITE文を実行する時点,又はページあふれ条件になる時点で,このデータ項目の値を使って,次の論理ページの脚書き領域が定められる. | ||||||||||||||||
(9) |
LINAGE句を書くと,LINAGE-COUNTER(行数カウンタ)が自動的に作り出される.行数カウンタは,いかなる時点においても,現在のページ本体中の行位置を指す.行数カウンタの規則は,次による.
| ||||||||||||||||
(10) |
論理ページは,すきまなく次のページに連続しているものとする. | ||||||||||||||||
(11) |
このファイル記述項に関連するファイル結合子が外部ファイル結合子のとき,実行単位中でこのファイル結合子に関連するすべてのファイル記述項は,次の規則に従わなければならない.
| ||||||||||||||||
(12) |
印字ファイルに対してLINAGE句が省略された場合,物理ページの行数は,66として扱う. |
作業場所節(working-storage section)は,原始プログラムのデータ部中に位置する.作業場所節には,データファイルの一部でないレコード及び従属するデータ項目を記述する.
作業場所節は,節の見出しとそれに続くレコード記述項や独立データ項目のデータ記述項によって構成する.
作業場所節の一般形式は,次による.
【書き方】
互いに階層関係をもたない作業場所の項目で,それ以上分割する必要のないものは,レコードにまとめなくてもよい.その場合には,独立した基本項目として,分けて定義する.これらの各項目は,特別なレベル番号77で始まる別々のデータ記述項で定義する.
各データ記述項には,次のデータ句を書かなければならない.
(1) |
レベル番号77 |
(2) |
データ名 |
(3) |
PICTURE句又はUSAGE IS INDEX句 |
これ以外のデータ記述句は,書かなくてもよいが,必要ならば項目を完全に指定するために書く.
互いに決まった階層関係をもつ作業場所の要素は,レコード記述の書き方の規則に従ってレコードにまとめなければならない.他のデータ項目と階層関係をもたない作業場所節中のデータ要素は,一つの基本項目であるレコードとして記述できる.ファイル節(file section)のレコード記述に用いられる句は,すべて作業場所節のレコード記述に使用できる.
レコード記述は,固有のレコードの特性を記述する一連のデータ記述項から成る.各データ記述項は,レベル番号と必要ならばそれに続くデータ名又はFILLER句の指定,及び必要な一連の独立した句から成る.レコード記述項は,階層構造をとることができる.したがって,記述項中で用いる句は,従属する記述項の有無に依存して大きく変る.
指標データ項目以外の作業場所節の各データ項目に初期値を与えるときには,VALUE(値)句を用いる.指標データ項目又はVALUE句が書かれていない項目の初期値は,規定しない.
連絡節は,原始プログラムのデータ部に置かれる.連絡節は,呼ばれるプログラムに置かれ,呼ぶプログラム及び呼ばれるプログラムによって,参照されるデータ項目を記述する.
連絡節は,実行用プログラムがCALL文のもとで動き,呼ぶプログラムのCALL文がUSING指定をもつときだけ意味をもつ.
連絡節は,呼ぶプログラムを通して利用可能であり,かつ呼ぶプログラムと呼ばれるプログラムの両方で参照されるデータを記述するのに使用する.呼ばれるプログラムの連絡節で記述されるデータ項目と呼ぶプログラムで記述されるデータ項目の間の対応をとる機能は,本書の他の所で記述される.指標名の場合には,そのような対応はとられず,呼ばれるプログラム及び呼ぶプログラム中の指標を参照する.
連絡節の構造は,先に作業場所節に対して記述されたものと同じであり,節の見出しで始まり,独立データ記述項やレコード記述項が続く.
【書き方】
連絡節のデータ項目が,呼ばれるプログラムでないプログラムでアクセスされるならば,その結果は規定しない.
互いに階層関係をもたない連絡節の項目は,レコードにまとめる必要はなく,独立した基本項目として定義する.これらの各データ項目は,それぞれ特別なレベル番号77で始まり別々のデータ記述項で定義する.
各データ記述項には,次のデータ句を書かなければならない.
(a) |
レベル番号77 |
(b) |
データ名 |
(c) |
PICTURE句又はUSAGE IS INDEX句 |
これ以外のデータ記述句は,書かなくてもよいが,必要ならば項目を完全に指定するために書く.
互いに決まった階層関係を持つ連絡節のデータは,レコード記述の書き方の規則に従ってレコードにまとめなければならない.他のデータ項目と階層関係をもたない連絡節のデータは,一つの基本項目であるレコードとして記述してもよい.
連絡節の中では,条件名記述項(レベル番号88)以外でVALUE句を指定してはならない.