レベル番号

レベル番号のシステムは、基本項目と集団項目の編成を表わす。レコードは最も包括的なデータ項目であるため、レコードのレベル番号は 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.階層構造のレベル番号の例
階層構造のレベル番号の例

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

基本項目は定義上、従属する (レベル番号の大きい) 記述項が続かない項目である。基本項目には、記憶域を定義する必要がある (「PICTURE(形式)句」および「USAGE(用途)句」トピックを参照)。

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

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

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


データ レコードの記憶域の割り当て

詳細は次のとおり。

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)