Rational Developer for System z
Enterprise PL/I for z/OS, Version 4.1, コンパイラーおよびランタイム 移行ガイド

IBM2402: ストレージ・オーバーレイ

このメッセージは、重要なコーディング・エラーである可能性があることをアラート するものです。

  IBM2402I E  <variable x> is declared as BASED on the ADDR of <variable y>,
              but <variable x> requires more storage than <variable y>.

このメッセージの重要度は、変数がプログラム内でどのように使用されているかによって異なります。 例えば、X が 100 バイトの構造体であり、Y が CHAR(200) BASED(ADDR(X)) として宣言されている場合、コンパイラーは「note that, in this example, the message is issued only when X is not subscripted.」というメッセージを出します。 プログラムに Y = ’’ というステートメントも含まれている場合は、重大な問題になります (代入により、他の目的でコンパイラーが使用している可能性のある 100 バイトのストレージが消されてしまうためです)。 この種の問題は必ず修正しなければなりません。

ただし、プログラムでは、以下のようなステートメント内でのみ Y を使用している場合があります。

この場合には、コードを変更する必要はありません。

ただしこの場合、このメッセージが出ないように Y を宣言することができます。 Y を X の後に宣言した場合には、Y を CHAR(STG(X)) BASED(ADDR(X)) として宣言できます。 これにより、このメッセージは発生しなくなり、コードに変更を加える必要はありません。 しかし、希望であれば、上記の代入ステートメントを以下のように単純化することもできます。


Terms of use | Feedback

This information center is powered by Eclipse technology. (http://www.eclipse.org)