このメッセージは、重要なコーディング・エラーである可能性があることをアラート するものです。
IBM2402I E <variable x> is declared as BASED on the ADDR of <variable y>,
but <variable x> requires more storage tha <variable y>.
このメッセージの重要度は、変数がプログラム内でどのように使用されているかによって異なります。 例えば、X が 100 バイトの構造体であり、Y が CHAR(200) BASED(ADDR(X)) として宣言されている場合に、コンパイラーはこのメッセージを出します。 プログラムに Y = ’’ というステートメントも含まれている場合には、 重大な問題になります (代入により、他の目的でコンパイラーが使用している可能性のある 100 バイトのストレージが消されてしまうからです)。 この種の問題は、必ず訂正しなければなりません。
ただし、プログラムでは、以下のようなステートメント内でのみ Y を使用している場合があります。
この場合には、コードを変更する必要はありません。
ただしこの場合、このメッセージが出ないように Y を宣言することができます。 Y を X の後に宣言した場合には、Y を CHAR(STG(X)) BASED(ADDR(X)) として宣言できます。 これにより、このメッセージは発生しなくなり、コードに変更を加える必要はありません。 しかし、希望であれば、上記の代入ステートメントを以下のように単純化することもできます。