Rational Developer for System z
Enterprise PL/I for z/OS, Version 3.8, 言語解説書

算術データからビット・ストリングへの変換

  dcl A bit(1),
      D bit(5);
  A=1;         /* A has value '0'B     */
  D=1;         /* D has value '00010'B */
  D='1'B;      /* D has value '10000'B */
  if A=1 then go to Y;
         else go to X;

これは X への分岐になります。 なぜなら、下記の一連の処置が取られ、A への割り当てが行われるからです。

  1. 10 進定数の 1 の属性は FIXED DECIMAL(1,0) です。この定数は、 属性が FIXED BINARY(4,0) である一時記憶域に割り当てられ、0001B という値を取ります。
  2. 次に、この値が長さ (4) のビット・ストリングに変換されて、'0001'B になります。
  3. ビット・ストリングは A に割り当てられています。A は長さ 1 に 宣言されており、割り当てられる値は長さ 4 を獲得するので、右方で切り捨てが発生し、 最終的には A は '0'B の値を持ちます。

IF ステートメント内の比較演算では、'0'B と 1 が FIXED BINARY に変換され、 算術値として比較されます。 両者は等しくないので、A=1 の関係は の結果になります。

D への最初の割り当てでは、A への割り当て時と同じような一連の処置が行われます。ただし、割り当てられる値の右側にゼロが埋め込まれる点が異なっています。これは、D の長さが、割り当てられる値の長さより 1 だけ大きい長さとして宣言されているからです。


Terms of use | Feedback

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