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

IBM2812: 不完全な TRANSLATE および VERIFY

このメッセージは、従来のコンパイラーでは OK だったけれども、新しいコンパイラーではさらに良い代替があるという、コーディング実践をアラートするものです。属性 STATIC INIT ではなく、属性 VALUE で名前付き定数を宣言することができるようになりました。

この変更は、特に次のようなコードで役立ちます。

   test: proc( c );

     dcl c char(20);

     dcl upper char(26) static init('ABCDEFGHIJKLMNOPQRSTUVWXYZ');
     dcl lower char(26) static init('abcdefghijklmnopqrstuvwxyz');

     c = translate( c, upper, lower );
   end;

名前付き定数 upperlower は STATIC INIT として宣言されているため、新旧どちらのコンパイラーもランタイムに変換テーブルを作成します。 これは、非常に負荷がかかります。 しかし、新しいコンパイラーでは、次の通知メッセージも発行されます。

IBM2812I I Argument number 2 to TRANSLATE built-in would lead to
                much better code if declared with the VALUE attribute.
     IBM2812I I Argument number 3 to TRANSLATE built-in would lead to
                much better code if declared with the VALUE attribute.

両方の宣言の STATIC INIT を VALUE に変更すると、これらのメッセージは出なくなり、コンパイラーはより良いコードを生成します。


Terms of use | Feedback

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