REDEFINES(再定義)句

機能

REDEFINES(再定義)句は、同一の計算機記憶領域を別のデータ記述項によって記述する。

一般形式

上記のレベル番号とデータ名-1

またはFILLER 

は形式を明確にするために示してある。レベル番号、データ名-1

およびFILLER

はいずれも、REDEFINES句の一部を構成するわけではない。

構文規則

  1. REDEFINES句を指定するときは、データ名-1

    またはFILLER

    の直後に書く。

    あるいは、PICTURE句またはUSAGE句の後ろにREDEFINES句を書くことができる。

  2. データ名-1とデータ名-2のレベル番号は、同じにする。ただし、66、

    78、

    および88は、いずれも使用できない。

  3. REDEFINES句は、ファイル節内の01レベルの記述項の中では使用できない。レベル指示語のFDまたはSDの下位に属する複数の01レベルの記述項は、同じ領域を暗黙的に再定義するからである。(この章のDATA RECORDS(データレコード)句節の一般規則2を参照。)

    この句を、ファイル節内の01レベルの記述項内で使用してもよい。

  4. データ名-2のデータ記述項に、REDEFINES句が含まれていてもよい。

    データ名-2は、REDEFINES句が含まれている記述項の下位に属していてもよい。データ名-2のデータ記述項には、OCCURS句が含まれていてはならない。しかし、OCCURS句が含まれているデータ記述項の下位に、データ名-2が属していても構わない。この場合、REDEFINES句の中でデータ名-2を参照するときに、添字または指標は指定できない。元の定義および再定義のどちらも、OCCURS句で指定される可変反復データ項目を含んでいてはならない。(この章のOCCURS(反復)句節を参照。)

    データ名-2のデータ記述項に、OCCURS句が含まれていてもよい。

    レベル番号が01の場合、元の定義と再定義は、OCCURS句で定義したサイズが可変の項目を含むことができる。

  5. データ名-2とデータ名-1のデータ記述項の間に、データ2およびデータ1のレベル番号よりも数値的に値の小さいレベル番号の記述項は置けない。

  6. 外部浮動小数点数データ項目または内部浮動小数点数データ項目を、REDEFINES句の左辺または右辺に置いてもよい。

  7. データ名-2が一意でない場合でも、データ名-2を修飾してはならない。この場合は、REDEFINES句の配置に関する規則上、データ名-2に曖昧さはないからである。

    データ名-2を修飾してもよいが、記述した修飾は無視される。

  8. 新しい文字位置の記述を与える項目は、VALUE句を持ってはならない。ただし、条件名の項目内では例外である。

  9. REDEFINES句は、字類オブジェクトのデータ項目に指定してはならない。

    REDEFINESを、字類オブジェクトのデータ項目に指定してもよい。

  10. データ名-2は、字類オブジェクトであってはならない。

    データ名-2は、字類オブジェクトでもよい。

  11. データ名-2は、ANY LENGTH句を使用して記述してはならない。

一般規則

  1. 再定義はデータ名-2から始まり、データ名-2のレベル番号以下のレベル番号が出てきたところで終わる。

  2. データ名-1のレベル番号が01でないときは、データ名-2によって参照されるデータ項目と同じ文字数を指定する。

    ただし、データ名-1の領域が、データ名-2の領域よりも小さくてもよい場合を除く。

    ただし、データ名-1の領域がデータ名-2の領域よりも大きくてもよい場合を除く。この場合、再定義する項目と再定義される項目の大きい方を収められるだけの記憶領域がとられる。

    REDEFINES句は記憶領域を再定義するのであって、記憶されているデータ項目を再定義するのではないことを、認識することが重要である。

  3. 同じ文字位置を、複数回、再定義できる。 再定義用の記述項は、再定義される領域を定義する記述項の直後に続ける。その間に、新しい領域を定義する記述項ははさめない。同じ領域を複数回再定義するときは、最初に領域を定義した記述項のデータ名を使用する。

    または、先行する再定義記述項のデータ名を使用してもよい。

  4. レベル指示語(FD またはSD)の下位に属する複数の01レベルの記述項は、同じ領域を暗黙的に再定義する。