Rational Developer for System z
COBOL for Windows バージョン 7.5 言語解説書


REDEFINES 文節

REDEFINES 文節によって、異なるデータ記述項目を使用してコンピューターの同じストレージ域を記述することができます。

フォーマット
構文図を読む構文図をスキップする>>-レベル番号--+------------+--REDEFINES--データ名-2-----------><
               +-データ名-1-+                         
               '-FILLER-----'                         
 

(レベル番号データ名-1、および FILLER は、REDEFINES 文節の一部ではありませんが、表現を明確にするためにのみこのフォーマットの中に加えたものです。)

指定する場合には、REDEFINES 文節は、データ名-1 または FILLER に続く最初の項目でなければなりません。データ名-1 または FILLER を指定しない場合には、REDEFINES 文節は、レベル番号に続く最初の項目である必要があります。

データ名-1FILLER
データ名-2 で識別されるデータ域に関する記述を示し、どちらか一方を選択します。 データ名-1再定義する 項目、すなわち REDEFINES のサブジェクト です。

データ名-1 およびその従属項目のいずれにも、VALUE 文節を含めることはできません。

データ名-2
再定義される 項目、すなわち REDEFINES のオブジェクト を示します。

データ名-2 のデータ記述項目には、 REDEFINES 文節を含めることができます。

データ名-2 のデータ記述項目には、 OCCURS 文節を含めることはできません。 ただし、データ名-2 は、 データ記述項目に OCCURS 文節が指定されている項目に従属しているということは可能です。このような場合には、REDEFINES 文節の中でデータ名-2 を参照するとき、この参照には添え字付けをすることはできません。

データ名-1 および データ名-2 のいずれにも、OCCURS DEPENDING ON 文節を含めることはできません。

データ名-1 およびデータ名-2 は、階層内でレベルが同一でなければなりませんが、レベル番号は同じでなくてもかまいません。データ名-1 およびデータ名-2 はいずれも、レベル番号 66 または 88 で定義することはできません。

データ名-1 およびデータ名-2 は、それぞれ任意の使用法を指定して記述することができます。

再定義は、データ名-1 から開始し、レベル番号がデータ名-1 のレベル番号以下になったところで終了します。データ名-1データ名-2 のレベル番号より低いレベル番号の項目が、これら項目の間にあってはなりません。次に例を示します。

05  A PICTURE X(6).
05  B REDEFINES A.
    10 B-1          PICTURE X(2).
    10 B-2          PICTURE 9(4).
05  C               PICTURE 99V99.

A が再定義されている項目で、B は再定義している項目です。再定義は B で開始し、2 つの従属項目 B-1B-2 を含んでいます。レベル 05 の項目 C が検出されると、再定義は終了します。

REDEFINES 文節を含むデータ記述項目で GLOBAL 文節が使用される場合、データ名-1 (再定義する項目) のみが GLOBAL 属性を処理します。 例えば、以下の記述では、項目 B のみが GLOBAL 属性を処理します。

05  A PICTURE X(6).
05  B REDEFINES A GLOBAL PICTURE X(4).

EXTERNAL 文節は、REDEFINES 文節と同じデータ記述項目上には指定することができません。

再定義されるデータ項目 (データ名-2) は、外部データ・レコードとして宣言された場合、再定義するデータ項目 (データ名-1) のサイズは再定義されるデータ項目のサイズより大きくすることはできません。再定義されるデータ項目が外部データ・レコードとして宣言されない場合は、そのような制約はありません。

以下の例は、再定義する項目 B は、再定義される項目 A より多くのストレージを占有できることを示しています。REDEFINED 文節のストレージのサイズはバイト数で決まります。項目 A は 6 バイトのストレージを占有し、項目 B はカテゴリーが国別のデータ項目であり、8 バイトのストレージを占有します。

05  A PICTURE X(6).
05  B REDEFINES A GLOBAL PICTURE N(4).

同一のストレージ域に対して何回でも再定義することが可能です。ストレージ域の新しい記述を行う項目は、再定義されるストレージ域の記述のすぐ後になければならず、 新しい文字位置を定義する項目を間に介在させることはできません。必要ではありませんが、複数の再定義すべてで、このストレージ域を定義した元の項目のデータ名を使用することができます。以下に例を示します。

 05  A               PICTURE 9999.
 05  B REDEFINES A   PICTURE 9V999.
 05  C REDEFINES A   PICTURE 99V99.

また、以下の例に示すように、複数の再定義で、直前の定義の名前を使用することもできます。

 05  A               PICTURE 9999.
 05  B REDEFINES A   PICTURE 9V999.
 05  C REDEFINES B   PICTURE 99V99.

FD 項目に従属するレベル 01 項目が複数書き込まれているときは、暗黙の再定義 とも言われる状態が発生します。 つまり、2 番目のレベル 01 の項目が、 1 番目の項目に対して割り振られていたストレージを暗黙のうちに再定義します。このようなレベル 01 の項目には、REDEFINES 文節を指定することはできません。

データ項目が、ファイル記述 (FD) 項目の複数の 01 レベル・レコードを暗黙に再定義する場合、再定義している項目または再定義されている項目に従属している項目には、 OCCURS DEPENDING ON 文節を含めることができます。


ご利用条件 | フィードバック

Copyright IBM Corporation 1996, 2008.
このインフォメーション・センターでは Eclipse テクノロジーが採用されています。(http://www.eclipse.org)