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

IBM2801: スケール付き FIXED BIN の導入

このメッセージは、PL/I 規則を誤って解釈している可能性があり、その結果、問題のソース となっている可能性があることをアラートするものです。

  IBM2801I I  FIXED DEC(p1,q1) operand will be converted to FIXED BIN(p2,q2).
              This introduces a non-zero scale factor into an integer operation
              and will produce a result with the attributes FIXED BIN(r,s).

このメッセージは、1 つのオペランドはスケール付きの FIXED DEC だが、もう 1 つのオペランドは スケールなしの FIXED BIN である算術演算に適用されます。 PL/I 規則では、RULES(IBM) コンパイラー・オプションを指定すると、算術演算の 1 つのオペランド が DECIMAL で、もう 1 つのオペランドが BINARY であると、結果は BINARY になります。 これは、DECIMAL オペランドがゼロ以外のスケール因数を持つ FIXED DEC で、BINARY オペランドがゼロのスケール因数を持つ FIXED BIN であっても適用されます。

例えば、X が FIXED DEC(5,1) で Y が FIXED BIN(15) の場合、式 X+Y の計算で、X は FIXED BIN(18,4) に変換され、結果は属性 FIXED BIN(20,4) を持つことになります。 小数部が .0 または .5 でない FIXED DEC(5,1) 値は FIXED BIN で正確に表すことができないため、 コンパイラーは、W レベル・メッセージ IBM1099I も出します。

このメッセージが出ないようにし、それが暗示する問題を避けるために、FIXED BIN オペランドに DECIMAL 組み込み関数を適用することができます。 例えば、X+DEC(Y) は、属性 FIXED DEC(8,1) を持つ結果を生成します。


Terms of use | Feedback

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