レベル番号

レベル番号のシステムは、基本項目と集団項目の編成を表わす。レコードは最も包括的なデータ項目であるため、レコードのレベル番号は 01 から始まる。それ以外のデータ項目には、01 より大きいレベル番号が付けられる。ただし、レベル番号は連続している必要はなく、49 を超えないものとする。1 つのレコードには最大 49 レベルまで指定できる。この規則の例外である特殊なレベル番号として、66、77、

MF 78、

および 88 がある (下記を参照)。使用する各レベル番号には記述項を書く。

集団には、それに続く集団項目および基本項目がすべて (その集団のレベル番号以下のレベル番号を検出するまで) 含まれる。集団項目に直接所属するすべての項目には、その集団項目のレベル番号よりも大きな同一のレベル番号を使用する必要がある

OSVSVSC2 。この規則は強制されない

正しい OSVSVSC2MF 正しくはないが許容される
01 A.
  05 C-1.
    10 D PICTURE X.
    10 E PICTURE X.
  05 C-2.
OSVSVSC2MF 
01  A.
  05 C-1.
    10 D PICTURE X.
    10 E PICTURE X.
 04 C-2.

レベルの概念が当てはまらない記述項が 4 種類ある。これらは次のとおり。

  1. RENAMES 句で作った基本項目または集団項目を指定する記述項。
  2. 作業場所節および連絡節で独立データ項目を指定する記述項。
  3. 条件名を指定する記述項。
  4. MF  定数名を指定する記述項。

データ項目を再編成するために RENAMES 句を用いて項目を記述する記述項には、特別なレベル番号 66 が指定されている。

他の項目を細分したのではなく、それ自体も細分されない、独立データ項目を指定する記述項には、特別なレベル番号 77 が指定されている。

条件変数の特定の値に関連付ける条件名を指定する記述項には、特別なレベル番号 88 が指定されている。

MF  特定の定数の値に関連付ける定数名を指定する記述項には、特別なレベル番号 78 が指定されている。

図 1. 階層構造のレベル番号の例
Example of Level-numbers Representing a Data Hierarchy

COBOL ソース コードで段落付けを行うのは読みやすくするためであり、文法的に必要なわけではない。

基本項目は定義上、後続の従属する記述項 (レベル番号が数値的に大きい記述項) が一切ない項目であり、関連付けられた記憶域を定義する必要がある (「PICTURE 句」および「USAGE 句」トピックを参照)。

なお、記憶域は、基本項目 (上図で「*」を付けたもの) および FILLER 項目 (上図で「#」を付けたもの) にのみ明示的に確保される (関連する PICTURE 句に従う) 点に注意すること。集団項目には、集団項目の従属項目および桁詰めに必要な FILLER バイトのサイズに基づいて、記憶域が暗黙的に関連付けられる (「SYNCHRONIZED 句」トピックを参照)。

上図では、分かりやすくするためにレベル番号を順番に並べたが、実際にはそのようにする必要はない。したがって、たとえば 01 の次の下位レベルを 05 として、その下位レベルを 10 としても構わない。

上図のデータ記述では、次のようにして記憶域を割り当てる。


Data Record Storage Allocation

詳細は次のとおり。

R-E-I レコード エントリ項目 (Record-Entry-Item)
M-G-I 主集団項目 (Major-Group-Item)
R-G-I 一般集団項目 (Regular-Group-Item)
S-G 従集団 (Sub-Group)
EI 基本項目 (Elementary-Item)
NEI 独立基本項目 (Noncontiguous Elementary-Item)