Rational Developer for System z
Enterprise COBOL for z/OS バージョン 4.1 言語解説書


REDEFINES 節の考慮事項

領域を再定義する場合、常にその領域の記述はすべて有効です。つまり、再定義で前の記述が取り替えられることはありません。したがって、B REDEFINES C が指定されていた場合、 2 つのプロシージャー・ステートメント MOVE X TO B または MOVE Y TO C は、どちらもプログラム内の任意の地点で実行可能です。 最初の例では、B として記述されている領域は X の値とフォーマットを受け入れます。2 番目の例では、同じ物理領域 (ここでは C として記述されている) は Y の値とフォーマットを受け入れます。最初のステートメントの直後に 2 番目のステートメントが実行されると、当該ストレージ域で X の値が Y の値に置き換えられることに注意してください。

再定義するデータ項目の USAGE は、 再定義されるデータ項目の USAGE と同じである必要はありません。 ただし、同じでなくても、既存のデータのフォーマットや内容が変更されることはありません。以下に例を示します。

05  B                  PICTURE  99 USAGE DISPLAY VALUE 8.
05  C REDEFINES B      PICTURE S99 USAGE COMPUTATIONAL-4.
05  A                  PICTURE S99 USAGE COMPUTATIONAL-4.

B を再定義しても、ストレージ域内のデータのビット構成は変わりません。 したがって、次の 2 つのステートメントを実行した場合、異なる結果になります。

ADD B TO A
ADD C TO A

最初のステートメントを実行すると、値 8 が A に加えられます (なぜなら、BUSAGE DISPLAY を持っているからです)。 次のステートメントを実行すると、-3848 の値が A に加えられ (なぜなら、CUSAGE COMPUTATIONAL-4 を持っているからです)、このストレージ域のビット構成は、2 進値で -3848 となります。 この例は、再定義の使い方を誤ると、 予想外の結果または正しくない結果が生じることを示したものです。


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

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