COBOL2002 言語 拡張仕様編


4.2.1 ファイル管理記述項(FILE-CONTROL)(索引ファイル機能の拡張)

ここでは,ALTERNATE RECORD KEY句と,RECORD KEY句について説明する。

合成キーを使用する場合の索引ファイルのファイル管理記述項の書き方を次に示す。

形式

[図データ]

【標準仕様との関連】

COBOL2002 言語 標準仕様編」 「8.3.4 ファイル管理記述項

〈この項の構成〉

(1) ALTERNATE RECORD KEY句(索引ファイル機能の拡張)

形式

[図データ]

機能

索引ファイルのレコードに副レコードキーによるアクセス経路を指定する。このとき,合成キーを副レコードキーとして定義できる。

構文規則
  1. データ名1を指定した場合,合成キーを使用できない。通常の副レコードキーとして処理される。

    合成キーを使用する場合は,合成キー名1を指定する。

  2. 合成キー名1は,先頭が英字の31文字以内の英数字でなければならない(利用者定義語の規則に従う)。

  3. データ名2は,基本項目でなければならない。集団項目であってはならない。

  4. データ名2は,添字付けが必要な基本項目であってはならない。

  5. データ名2は,修飾してもよいが,部分参照してはならない。

  6. データ名2は,1〜8個まで指定できる。

  7. データ名2の項目の長さの合計は,255バイト以下でなければならない。

  8. 索引ファイルが可変長項目レコードを含むとき,データ名2のサイズは,そのファイルの最小レコードの範囲内に含まれていなければならない。

  9. データ名2は,再定義項目またはその従属項目であってもよい。ただし,領域が重なってはならない。

  10. データ名2は,ALTERNATE RECORD KEY句が書かれたファイル名に関連するレコード記述項中で定義されていなければならない。

  11. データ名2は,可変長項目の後にある項目であってはならない。

  12. データ名2は,英数字編集項目,日本語編集項目,ブール項目,アドレスデータ項目,指標データ項目,可変長項目,オブジェクト参照データ項目,外部10進項目,内部10進項目,外部浮動項目,数字編集項目,英字項目,日本語項目であってはならない。

  13. データ名2は,8バイトの2進項目であってはならない。

  14. 合成キーを構成するフィールドの順は,データ名2で指定された順に従う。

  15. データ名2の指定は,レコード記述項中の並びに関係しない。順不同である。

  16. データ名2がCOMP-X項目のときの規則については,「25.6.2 COMP-X項目」の「(6) COMP-X項目が2進項目として扱われる個所」と「25.6.2 COMP-X項目」の「(9) 索引ファイルとCOMP-X項目」を参照のこと。

一般規則
  1. 合成キー名1は,START文,READ文のKEY句だけで参照できる。

  2. データ名2は,レコード中での相対位置,長さおよびデータの属性をファイル生成のときに定義したものと同じにしなければならない。

  3. データ名2を記述する個数は,ファイル生成のときに定義したものと同じにしなければならない。

  4. ファイルに二つ以上のレコード記述項があるとき,データ名2はこれらのレコード記述項の一つだけに記述する必要がある。データ名2が二つのレコード記述項にわたっている場合の動作は保証しない。

  5. ファイルに二つ以上のレコード記述項があるとき,データ名2が記述されているレコード記述項以外のレコード記述項でもデータ名2と同じ文字位置が,暗黙的にキーとして参照される。

  6. 関連するファイル結合子が外部ファイル結合子のとき,その実行単位でそのファイル結合子に関連するすべてのファイル記述項では,データ名2に対して関連するレコード中の同じ相対位置に同じデータ記述項を指定しなければならない。

  7. レコードキーの一致,不一致の判定は,マニュアル「COBOL2002 言語 標準仕様編」のALTERNATE RECORD KEY句を参照のこと。

【標準仕様との関連】

COBOL2002 言語 標準仕様編」 「(5) ALTERNATE RECORD KEY句

(2) RECORD KEY句(索引ファイル機能の拡張)

形式

[図データ]

機能

索引ファイルのレコードに主レコードキーによるアクセス経路を指定する。このとき,合成キーを主レコードキーとして指定する。

構文規則
  1. データ名1を指定した場合は,合成キーを使用できない。通常のレコードキーとして処理する。

    合成キーを使用する場合は,合成キー名1を指定する。

  2. 合成キー名1は,先頭が英字の31文字以内の英数字でなければならない(利用者定義語の規則に従う)。

  3. データ名2は,基本項目でなければならない。

  4. データ名2は,添字付けが必要な基本データ項目であってはならない。

  5. データ名2は,修飾してもよいが,部分参照してはならない。

  6. データ名2は,1〜8個まで指定できる。

  7. データ名2の項目の長さの合計は,255バイト以下でなければならない。

  8. 索引ファイルが可変長項目レコードを含むとき,データ名2のサイズは,そのファイルの最小レコードの範囲内に含まれていなければならない。

  9. データ名2は,再定義項目またはその従属項目であってもよい。ただし,領域が重なってはならない。

  10. データ名2は,RECORD KEY句で書かれたファイル名に関連するレコード記述項中で定義されていなければならない。

  11. データ名2は,可変長項目の後にある項目であってはならない。

  12. データ名2は,英数字編集項目,日本語編集項目,ブール項目,アドレスデータ項目,指標データ項目,可変長項目,オブジェクト参照データ項目,外部10進項目,内部10進項目,外部浮動小数点数字項目,数字編集項目,英字項目,日本語項目,日本語集団項目であってはならない。

  13. データ名2は,8バイトの2進項目であってはならない。

  14. 合成キーを構成するフィールドの順は,データ名2で指定された順に従う。

  15. データ名2の指定は,レコード記述項中の並びに関係しない。順不同である。

  16. データ名2がCOMP-X項目のときの規則については,「25.6.2 COMP-X項目」の「(6) COMP-X項目が2進項目として扱われる個所」と「25.6.2 COMP-X項目」の「(9) 索引ファイルとCOMP-X項目」を参照のこと。

一般規則
  1. 合成キー名1は,START文,READ文のKEY句だけで参照できる。

  2. データ名2は,レコード中での相対位置,長さおよびデータの属性をファイル生成のときに定義したものと同じにしなければならない。

  3. データ名2を記述する個数は,ファイル生成のときに定義したものと同じにしなければならない。

  4. ファイルに二つ以上のレコード記述項があるとき,データ名2はこれらのレコード記述項の一つだけに記述する必要がある。データ名2が二つのレコード記述項にわたっている場合の動作は保証しない。

  5. ファイルに二つ以上のレコード記述項があるとき,データ名2が記述されているレコード記述項以外のレコード記述項でもデータ名2と同じ文字位置が,暗黙的にキーとして参照される。

  6. 関連するファイル結合子が外部ファイル結合子のとき,その実行単位でそのファイル結合子に関連するすべてのファイル記述項では,データ名2に対して関連するレコード中の同じ相対位置に同じデータ記述項を指定しなければならない。

  7. レコードキーの一致,不一致の判定は,マニュアル「COBOL2002 言語 標準仕様編」のRECORD KEY句に従う。

【標準仕様との関連】

COBOL2002 言語 標準仕様編」 「(14) RECORD KEY句