Rational Developer for System z
Enterprise PL/I for z/OS, Version 3.8, プログラミング・ガイド

名前付き定数対静的変数

名前付き定数は、VALUE 属性を使って変数を宣言することによって定義できます。 INITIAL 属性を指定して静的変数を使い、 変数を変更しない場合は、VALUE 属性を使って変数を名前付き定数として宣言する必要があります。 コンパイラーは NONASSIGNABLE のスカラー STATIC 変数を、真の名前付き定数として扱いません。

コンパイラーは、コンパイル時に式が評価される時にはいつでも、 より最適化されたコードを生成するので、 名前付き定数を使って、読み易さを低下させずに効果的なコードを生成できます。 例えば次の例では、VERIFY 組み込み関数の 2 通りの使用法を用いて、 同一のオブジェクト・コードが生成されています。

dcl numeric char  value('0123456789');

jx = verify( string, numeric );

jx = verify( string, '0123456789' );

次の例は、VALUE 属性を使って、読み易さを低下させずに 最適なコードを取得できる方法を示しています。

意味のある名前が付けられていない最適なコードの例

dcl  x  bit(8) aligned;

select( x );
  when( '01'b4 )
   .
   .
   .
  when( '02'b4 )
   .
   .
   .
  when( '03'b4 )
   .
   .
   .
end;

意味のある名前が付けられた最適でないコードの例

dcl (  a1  init( '01'b4)
      ,a2  init( '02'b4)
      ,a3  init( '03'b4)
      ,a4  init( '04'b4)
      ,a5  init( '05'b4)
    ) bit(8) aligned static nonassignable;

dcl  x  bit(8) aligned;

select( x );
  when( a1 )
   .
   .
   .
  when( a2 )
   .
   .
   .
  when( a3 )
   .
   .
   .
end;

意味のある名前が付けられた最適なコードの例

dcl (  a1  value( '01'b4)
      ,a2  value( '02'b4)
      ,a3  value( '03'b4)
      ,a4  value( '04'b4)
      ,a5  value( '05'b4)
    ) bit(8);

dcl  x  bit(8) aligned;

select( x );
  when( a1 )
   .
   .
   .
  when( a2 )
   .
   .
   .
  when( a3 )
   .
   .
   .
end;

Terms of use | Feedback

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